第二章 图像传感器与RAW图:传感器工作原理、Bayer阵列格式、RAW图数据格式解析
做ISP调优,第一件事不是调参数,而是搞懂你手里那张RAW图到底是怎么来的。我见过太多工程师拿着RAW图就开始调颜色,结果发现偏色是因为传感器Bayer排布搞反了——这种坑,踩一次就够了。
这一章,咱们把图像传感器的底裤扒干净。从光子怎么变成电子,再到RAW图里每个像素存的是什么,一步步拆开看。
2.1 图像传感器工作原理
说白了,传感器就是个光子计数器。每个像素点就是一个微型光电二极管,光子打上去产生电子,电子数量转换成电压,再经过ADC变成数字值。这个过程叫光电转换。
目前主流传感器就两种:CCD和CMOS。我个人的经验是,工业机器视觉领域现在基本是CMOS的天下,原因很简单——速度快、功耗低、成本也下来了。
| 特性 | CCD | CMOS |
|---|---|---|
| 读出方式 | 逐行转移,统一输出 | 每个像素独立寻址 |
| 速度 | 较慢(<30fps常见) | 快(>100fps轻松) |
| 噪声 | 低,一致性高 | 较高,有固定模式噪声 |
| 功耗 | 高(需要多路电压) | 低(单电压供电) |
| 机器视觉适用性 | 高精度静态场景 | 高速、动态场景 |
2.2 Bayer阵列格式
单颗像素只能感知亮度,分不清颜色。那彩色图像怎么来的?答案是:在像素表面镀一层彩色滤光片(CFA),让每个像素只响应特定波长的光。
最经典的排列就是Bayer阵列。它用2x2的单元重复排列:一个红色(R)、两个绿色(G)、一个蓝色(B)。为什么绿色多一个?因为人眼对绿色最敏感,这么做能模拟人眼的亮度感知。
常见的Bayer排列有四种变体:RGGB、BGGR、GRBG、GBRG。区别只是R和B的位置不同。你想想看,如果ISP代码里默认是RGGB,但传感器输出的是BGGR,那解出来的颜色就全乱了。
2.3 RAW图数据格式解析
RAW图就是传感器直接输出的原始数据,没经过任何处理。每个像素存的就是那个像素的电压值经过ADC量化后的数字。注意,它还不是彩色图像——每个像素只有一种颜色分量。
RAW图的位深常见的有8bit、10bit、12bit、14bit。机器视觉领域,10bit和12bit最常用。位深决定了动态范围:每多1bit,动态范围多6dB。
| 位深 | 灰度级数 | 动态范围 | 常见场景 |
|---|---|---|---|
| 8bit | 256 | 48dB | 消费级摄像头 |
| 10bit | 1024 | 60dB | 工业相机、手机 |
| 12bit | 4096 | 72dB | 高端工业、医疗 |
| 14bit | 16384 | 84dB | 科学级、天文 |
RAW图在内存里的存储格式,我习惯用下面这个结构来理解:
// 假设一张 4x4 的 RAW 图,Bayer 排布为 RGGB
// 每个像素 12bit,用 2 字节存储(低 12 位有效)
内存布局(按行连续存储):
Row 0: [R0] [G0] [R1] [G1]
Row 1: [G2] [B0] [G3] [B1]
Row 2: [R2] [G4] [R3] [G5]
Row 3: [G6] [B2] [G7] [B3]
// 每个 [ ] 代表 2 字节(16bit),实际有效数据只有低 12bit
// 高 4bit 通常补 0,或者用于存储元数据
2.4 RAW图的关键元数据
一张RAW图光有像素数据是不够的,还得带上元数据,ISP才能正确解析。我列一下必须有的几个字段:
- 图像尺寸:宽 x 高,单位像素
- 位深:每个像素多少bit
- Bayer排布:RGGB/BGGR/GRBG/GBRG
- 黑电平:传感器在无光时的输出值,通常不为0
- 增益值:模拟增益和数字增益的倍数
- 曝光时间:积分时间,单位微秒或行数
这些元数据通常存在RAW文件的头部,或者通过传感器驱动接口单独传递。我遇到过最坑的一次,是某个传感器厂商把黑电平值写在了数据手册里,但实际芯片批次不同黑电平差了20个DN——从那以后,我每次换批次都会重新标定黑电平。
2.5 从RAW到ISP管线的第一步
拿到RAW图后,ISP管线做的第一件事不是去马赛克,而是预处理:
- 黑电平校正:减去黑电平值,让暗部归零
- 坏点校正:检测并替换死点/亮点
- 增益归一化:把不同增益下的数据统一到同一尺度
这三步做完,RAW图才算是“干净”的数据,可以进入后面的去马赛克、白平衡、颜色校正等模块。我个人习惯在预处理阶段就把直方图拉平,这样后面调参时能少很多麻烦。
np.fromfile('raw.raw', dtype=np.uint16).reshape(height, width),几秒钟就能定位问题。
嗯,这一章的内容就到这里。传感器怎么工作、Bayer阵列怎么排、RAW图里存的是什么——这些是ISP调优的地基。地基没打牢,上面盖的房子再漂亮也得塌。