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阵列的结构:

Bayer阵列结构(2×2重复单元) R G G B 说明: 每个2×2单元包含:1个R + 2个G + 1个B像素。 绿色通道占50%,红色和蓝色各占25%。

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。

当入射光强到一定程度,像素的电子阱被填满,再增加光量也不会让输出值变大——这就是饱和。饱和意味着信息丢失,高光区域会变成一片死白。

黑电平和饱和值之间的范围,就是传感器的有效动态范围。

RAW数据动态范围示意(以RAW12为例) 黑电平 (如64) 饱和值 (4095) 有效动态范围 (64 ~ 4095)

1.5 一个完整的RAW像素值处理流程

从传感器读出到ISP处理,RAW数据大致经历这几步:

  1. 光电转换:光子打到像素上,产生电子,存储在电子阱中。
  2. 量化输出:ADC将电荷量转换为数字码值(如RAW12的0~4095)。
  3. 黑电平校正:减去黑电平值,消除暗电流影响。
  4. 增益放大:乘以一个增益系数,调整整体亮度。
  5. 后续ISP处理:去马赛克、白平衡、Gamma校正等。

关键点:黑电平校正必须在增益放大之前做。否则,黑电平会被一起放大,导致暗部偏色。我曾经在一个项目中调试了三天才发现是BLC和增益的顺序搞反了——嗯,这种低级错误,犯过一次就再也不会忘了。

1.6 本章小结

这一章我们聊了三个核心概念:

  • Bayer阵列:传感器获取彩色信息的基础结构,RGGB排列最常见。
  • RAW位深:RAW10/12/14决定了数据的精度和动态范围,选型时要平衡质量和带宽。
  • 黑电平与饱和值:定义了RAW数据的有效范围,是ISP流水线校准的第一步。