传感器与RAW图:CMOS传感器工作原理、Bayer阵列模式、RAW图格式与数据流

各位同学,今天我们来聊聊整个ISP流水线的起点——传感器和RAW图。说白了,没有传感器,后面的一切都是空中楼阁。我做了这么多年ISP,见过太多算法调得天花乱坠,结果传感器选型就翻车的案例。嗯,咱们从最基础的说起。

CMOS传感器工作原理

CMOS传感器,全称是互补金属氧化物半导体图像传感器。现在市面上99%的手机、相机、安防摄像头用的都是它。它的核心原理其实不复杂:光电转换。

每个像素点本质上是一个光电二极管。光子打进来,产生电子-空穴对,电子被收集起来形成电荷。电荷量跟入射光强度成正比。然后通过一个源极跟随器把电荷转换成电压,再经过模数转换器(ADC)变成数字信号。

我个人习惯把CMOS传感器的工作流程拆成四步:

  1. 复位:清空像素内的残留电荷,准备开始新一帧的曝光。
  2. 曝光:打开快门(电子快门或机械快门),让光进来,积累电荷。
  3. 读出:逐行扫描,把每个像素的电压值读出来。
  4. 转换:ADC把模拟电压转成数字码值,输出RAW数据。

关键指标:满阱容量(Full Well Capacity)决定了传感器能存多少电子,直接影响动态范围。转换增益(Conversion Gain)决定了每个电子能产生多少电压,直接影响信噪比。这两个参数是传感器选型的核心。

我在项目中遇到过一个问题:某款传感器标称动态范围80dB,但实际暗光下噪点特别多。后来一查,是它的转换增益设置得太低,导致读出噪声被放大了。所以看规格书不能只看峰值,要看实际工作条件下的表现。

Bayer阵列模式

CMOS传感器只能感知光的强度,分不清颜色。那彩色图像怎么来的?答案是:在像素表面覆盖彩色滤光片阵列(CFA)。最经典的就是Bayer阵列。

Bayer阵列的排列方式是:RGGB。也就是一个红色像素、两个绿色像素、一个蓝色像素,组成一个2x2的单元。为什么绿色有两个?因为人眼对绿色最敏感,多分配绿色像素可以提升视觉分辨率。

像素位置 颜色 占比 作用
(0,0) R 25% 红色通道采样
(0,1) G 25% 绿色通道采样
(1,0) G 25% 绿色通道采样
(1,1) B 25% 蓝色通道采样

你想想看,每个像素只记录一种颜色,那最终要得到全彩图像,就得靠后面的去马赛克(Demosaic)算法来插值补齐。这也是ISP流水线里计算量最大的模块之一。

我的经验:Bayer阵列的相位对齐非常关键。如果滤光片和像素位置有偏移,会出现颜色混叠,后期怎么调都调不回来。我曾经在产线上遇到过一批传感器,Bayer偏移了半个像素,结果整个画面边缘全是伪色。最后只能降级处理,损失不小。

除了标准的Bayer,现在还有一些变种:

  • Quad Bayer:4x4单元,每个颜色4个像素,用于高像素手机传感器。
  • RGBW:加入白色像素,提升暗光灵敏度。
  • RYYB:用黄色像素替换绿色像素,进光量更大,华为用过。

但不管怎么变,核心思想没变:用稀疏采样+插值重建全彩图像。

RAW图格式与数据流

传感器直接输出的数据就是RAW图。它没有经过任何ISP处理,是最原始的数据。RAW图的格式取决于传感器的ADC位数和Bayer排列。

常见的RAW格式:

  • 10-bit RAW:每个像素10位数据,常见于手机传感器。
  • 12-bit RAW:每个像素12位,动态范围更高,常见于相机和安防。
  • 14-bit RAW:专业相机用,数据量大,但后期空间大。

数据存储时,通常按Bayer模式排列。比如一个1920x1080的传感器,输出就是1920x1080的灰度数据,每个像素对应一个颜色通道。你看到的不是彩色图像,而是一张灰蒙蒙的图——这就是RAW。

注意:RAW图不是标准的图像格式,不能直接用图片查看器打开。它需要配合传感器的配置信息(黑电平、增益、Bayer模式等)才能正确解析。我见过有人直接把RAW当成灰度图去训练AI模型,结果模型学到的全是错误的颜色映射。

数据流是怎么走的?我画个图你就明白了。

CMOS传感器数据流 镜头 CMOS传感器 光电转换+ADC Bayer阵列 RGGB排列 RAW数据 10/12/14-bit 数据流说明: 1. 光线通过镜头聚焦到传感器表面 2. 传感器每个像素完成光电转换,输出模拟电压 3. ADC将模拟电压转换为数字码值(RAW数据) 4. 数据按Bayer阵列排列输出,每个像素只记录一种颜色 5. RAW数据进入ISP流水线,开始后续处理

RAW数据从传感器出来后,通常走MIPI接口(移动行业处理器接口)传输到ISP芯片。MIPI的速率决定了帧率上限。比如一个1200万像素的传感器,12-bit RAW,30fps,需要的带宽大约是:

12M × 12bit × 30fps = 4.32 Gbps

这还没算开销。所以MIPI通常用4-lane或8-lane来分摊带宽。我建议你在选型时,先算清楚带宽,不然帧率上不去,后面调算法都是白费。

RAW图的关键参数

参数 含义 典型值 影响
黑电平 无光输入时的输出码值 64(10-bit) 影响暗部细节和偏色
饱和电平 像素满阱时的输出码值 1023(10-bit) 决定高光截止点
增益 模拟/数字放大倍数 1x ~ 64x 影响亮度和噪声
行时间 每行像素的读出时间 10~30 μs 影响帧率和卷帘快门效应

避坑指南:我曾经在调试一款传感器时,发现暗光下画面偏绿。查了半天,原来是黑电平校准没做对。每个传感器的黑电平都不一样,甚至同一颗传感器不同温度下也会漂。所以ISP流水线的第一步,一定是做黑电平校正(BLC)。