1. RAW图像基础:理解Bayer阵列、RAW10/RAW12/RAW14格式、黑电平与饱和值
做ISP调试这些年,我见过不少新人一上来就对着RAW数据发懵。说实话,这很正常——RAW格式和我们平时看到的JPEG、PNG完全是两码事。它就像胶卷时代的底片,未经任何修饰,藏着传感器最原始的“秘密”。
这一章,我们就从最基础的东西聊起。你搞懂了RAW,后面的流水线调试才能顺起来。
1.1 为什么传感器输出的是RAW?
图像传感器(CMOS/CCD)本质上是个光电转换器件。每个像素点只能感知光的强度,也就是亮度信息,它分不清颜色。
那彩色照片怎么来的?
答案是在传感器表面覆盖一层彩色滤光片阵列(Color Filter Array, CFA)。每个像素上方只允许特定波长的光通过——红、绿、蓝中的一种。最经典的排列方式,就是Bayer阵列。
核心概念:RAW数据就是传感器直接输出的、未经任何处理的数字信号。它保留了每个像素的原始亮度值,以及Bayer阵列的颜色排列信息。
1.2 Bayer阵列:那个经典的棋盘格
Bayer阵列由Bryce Bayer在1976年发明。它的排列规则很简单:
- 一行是 R G R G ...
- 下一行是 G B G B ...
- 如此交替重复
你可能会问:为什么绿色像素占了一半?
因为人眼对绿色最敏感。传感器通过多采样绿色通道,来模拟人眼的亮度感知。红色和蓝色各占四分之一,刚好平衡。
我的经验:我在调试一款安防摄像头时,遇到过Bayer排列搞反的情况——把RGGB当成了BGGR。结果出来的图像颜色完全错乱,像打翻了调色盘。后来我养成了一个习惯:拿到RAW文件第一件事,就是确认Bayer的排列顺序。常见的四种排列:RGGB、BGGR、GRBG、GBRG。
下面这张图,帮你直观理解Bayer阵列的结构:
1.3 RAW位深:RAW10、RAW12、RAW14
位深决定了每个像素能记录多少级亮度。说白了,就是动态范围的粗细程度。
| 格式 | 位深(bit) | 最大码值 | 动态范围(理论) | 常见应用 |
|---|---|---|---|---|
| RAW10 | 10 | 1023 | 约60 dB | 低端手机、网络摄像头 |
| RAW12 | 12 | 4095 | 约72 dB | 主流安防、工业相机 |
| RAW14 | 14 | 16383 | 约84 dB | 高端单反、医疗影像 |
举个例子:RAW10每个像素用10个bit表示,取值范围0~1023。RAW14则是0~16383。多出来的位数,不是让你看到更亮或更暗,而是让亮度过渡更平滑,暗部细节更丰富。
注意:位深越高,数据量越大。一张1200万像素的RAW10图片约15MB,RAW14则要24MB。存储和带宽都要考虑进去。我在做车载摄像头项目时,就曾因为选了RAW14导致MIPI带宽不够,最后不得不降回RAW12。
1.4 黑电平与饱和值
这两个参数,是RAW数据校准的起点。搞不懂它们,后面的黑电平校正(BLC)就没法做。
黑电平(Black Level)
理想情况下,传感器完全遮光时输出应该是0。但实际不是——由于暗电流、电路噪声等因素,传感器在无光条件下也会输出一个非零值。这个值就是黑电平。
黑电平通常是一个固定的码值,比如64(对于RAW10)。ISP处理的第一步,就是把每个像素减去这个值,让真正的黑色回到0附近。
我的习惯:拿到一款新传感器,我会先拍一张全黑图(盖上镜头盖),然后统计所有像素的均值。这个均值就是黑电平的参考值。但要注意——不同增益下黑电平会漂移,所以很多传感器会内置黑电平校准(OB, Optical Black)区域。
饱和值(Saturation Value)
饱和值就是像素能记录的最大码值。对于RAW10,饱和值是1023;RAW12是4095;RAW14是16383。
当入射光强到一定程度,像素的电子阱被填满,再增加光量也不会让输出值变大——这就是饱和。饱和意味着信息丢失,高光区域会变成一片死白。
黑电平和饱和值之间的范围,就是传感器的有效动态范围。
1.5 一个完整的RAW像素值处理流程
从传感器读出到ISP处理,RAW数据大致经历这几步:
- 光电转换:光子打到像素上,产生电子,存储在电子阱中。
- 量化输出:ADC将电荷量转换为数字码值(如RAW12的0~4095)。
- 黑电平校正:减去黑电平值,消除暗电流影响。
- 增益放大:乘以一个增益系数,调整整体亮度。
- 后续ISP处理:去马赛克、白平衡、Gamma校正等。
关键点:黑电平校正必须在增益放大之前做。否则,黑电平会被一起放大,导致暗部偏色。我曾经在一个项目中调试了三天才发现是BLC和增益的顺序搞反了——嗯,这种低级错误,犯过一次就再也不会忘了。
1.6 本章小结
这一章我们聊了三个核心概念:
- Bayer阵列:传感器获取彩色信息的基础结构,RGGB排列最常见。
- RAW位深:RAW10/12/14决定了数据的精度和动态范围,选型时要平衡质量和带宽。
- 黑电平与饱和值:定义了RAW数据的有效范围,是ISP流水线校准的第一步。