3、RAW图格式解析:RAW数据格式、Bayer模式、黑电平校正原理
说到RAW图,很多刚入行的朋友会觉得它就是个“半成品”。其实不然。我个人的理解是——RAW是传感器最诚实的表达。它还没被“美颜”,也没被“修图”,但恰恰是这种原始状态,藏着图像质量的命根子。
这一节,咱们就把它扒开看看。
3.1 RAW数据格式:传感器到底存了什么?
你想想看,相机按下快门那一瞬间,传感器上的每个像素点都在拼命收集光子。但传感器不关心颜色,它只认“光多光少”——也就是电压高低。这个电压经过ADC(模数转换器)变成数字值,存下来,就是RAW数据。
RAW格式说白了就是:每个像素只存一个数值,代表该像素感受到的光强度。没有去马赛克,没有白平衡,没有Gamma校正。干干净净。
关键点: RAW数据是线性的,且位深通常高于8bit。常见的位深有:
- 10-bit:1024级灰度,常见于早期手机传感器
- 12-bit:4096级灰度,主流安防和消费级相机
- 14-bit:16384级灰度,专业相机和高端工业相机
- 16-bit:65536级灰度,科学级/医疗级应用
我在项目中遇到过有人直接把10-bit RAW当成8-bit去处理,结果暗部全是色块。嗯,位深这事,千万别省。
3.2 Bayer模式:为什么传感器不直接拍彩色?
传感器本身是色盲的。它只能感知亮度,分不清红绿蓝。那彩色照片怎么来的?
答案是在传感器表面覆盖一层彩色滤光片阵列(CFA)。每个像素只允许特定波长的光通过。最常见的排列方式就是Bayer模式。
Bayer模式由Bryce Bayer在1976年发明。它的核心思想是:人眼对绿色最敏感,所以绿色像素占一半,红色和蓝色各占四分之一。
典型的Bayer排列长这样:
R G R G R G
G B G B G B
R G R G R G
G B G B G B
但别以为只有这一种。我整理了几种常见的Bayer变体:
| 模式名称 | 排列顺序 | 常见应用 |
|---|---|---|
| BGGR | 第一行 B G B G,第二行 G R G R | Sony、OmniVision传感器 |
| RGGB | 第一行 R G R G,第二行 G B G B | 三星、安森美传感器 |
| GRBG | 第一行 G R G R,第二行 B G B G | 部分安防传感器 |
| GBRG | 第一行 G B G B,第二行 R G R G | 部分工业相机 |
避坑指南: 我曾经因为搞错Bayer顺序,把RGGB当成BGGR去解,结果整张图偏紫。调了三天参数才发现是顺序问题。所以拿到RAW的第一件事——确认Bayer pattern。别信文档,自己画个4x4的像素值矩阵看一眼。
除了标准的Bayer,还有更复杂的CFA模式。比如X-Trans(富士)、Quad Bayer(高像素手机)、RGBW(低光增强)。但万变不离其宗——都是让每个像素只感光一种颜色,后续通过插值恢复全彩。
3.3 黑电平校正:为什么RAW图不是从0开始的?
这个问题很有意思。你打开一个RAW文件,发现最暗的像素值不是0,而是某个正数。比如12-bit RAW里,最暗可能是64,而不是0。
为什么会这样?
原因有两个:
- 传感器暗电流: 即使完全遮光,传感器内部的热噪声也会产生微弱电荷。这个底噪会叠加到信号上。
- ADC偏移: 模数转换器为了保证信号不削波,会人为加一个偏置电压。
这个“非零的起点”,就是黑电平(Black Level)。
黑电平校正的目的很简单:把真正的“黑”拉回到0。
校正公式也很直接:
校正后像素值 = 原始像素值 - 黑电平值
但这里有个坑——黑电平不是固定不变的。我遇到过的情况是:
- 不同增益下,黑电平会漂移
- 不同温度下,黑电平会变化
- 不同通道(R/Gr/Gb/B),黑电平可能不同
注意: 黑电平校正必须在去马赛克之前做。如果顺序搞反,插值会把黑电平误差扩散到整个画面,导致暗部偏色。我曾经见过一个案例,黑电平没校正好,暗部偏绿,调了半个月白平衡都拉不回来。
实际工程中,黑电平的获取方式有两种:
| 方式 | 原理 | 优缺点 |
|---|---|---|
| OB(Optical Black)像素 | 传感器边缘有一圈被金属遮挡的像素,读取它们的平均值作为黑电平 | 实时性好,但OB区域可能受温度梯度影响 |
| 暗场校准 | 在完全遮光条件下拍摄一张全黑RAW,统计全图最小值或均值 | 精度高,但需要离线校准,且温度变化后需重新校准 |
我个人习惯用OB像素做实时校正,同时定期做暗场校准来修正OB的偏差。双保险。
3.4 知识结构总览
下面这张图把本节的核心逻辑串起来了。你可以把它当作一个快速索引:
3.5 实战要点总结
最后,我把这一节最核心的几个实战要点列出来。你调试ISP时,这些地方最容易出问题:
- 拿到RAW先确认位深和Bayer顺序——用工具读一下文件头,或者直接看4x4像素矩阵
- 黑电平校正必须在去马赛克之前——顺序错了,暗部偏色跑不掉
- 黑电平不是常数——增益变化、温度变化都要重新校准
- OB像素和暗场校准结合使用——一个保实时,一个保精度
- 校正后检查暗部是否归零——盖上镜头盖拍一张,看最暗像素值是不是接近0
一个小技巧: 我习惯在调试阶段,把黑电平校正前后的RAW图各存一份。对比着看,能快速判断是黑电平问题还是其他ISP模块的问题。这个习惯帮我省了不少排查时间。