RAW域黑电平校正与去马赛克算法实战 - 第1节
1.1 从单色到彩色:Bayer阵列的起源
数字图像传感器最初只能感知光的强度,说白了就是拍黑白照片。那怎么让一个像素点同时记录亮度和颜色呢?
1976年,柯达公司的Bryce Bayer提出了一个天才方案——在传感器表面覆盖一层彩色滤波阵列,让每个像素只采集红、绿、蓝中的一种分量。这就是Bayer阵列的起源。
我刚开始接触ISP pipeline时,总觉得这个设计太“浪费”了——每个像素丢掉2/3的颜色信息,后期还得靠算法猜回来。但做了几个项目后我才明白,这种牺牲换来了极高的感光效率和成本优势。你想想看,如果每个像素后面放三个光电二极管,芯片面积得翻三倍,良率直接崩盘。
核心思想:用空间分辨率换取色彩分辨率。人眼对亮度变化比对色度变化更敏感,Bayer阵列正是利用了这一点——绿色通道采样率是红/蓝的两倍,因为人眼对绿光最敏感。
1.2 常见Bayer模式:RGGB / GRBG / BGGR
Bayer阵列的基本单元是2×2的像素块。但不同厂商、不同传感器,排列顺序可能不一样。我遇到过不少新手,拿着GRBG的raw图用RGGB的算法去解,结果颜色全乱套了。
四种主流模式
| 模式名称 | 2×2排列 | 常见传感器 |
|---|---|---|
| RGGB | R G G B |
Sony IMX系列、OmniVision多数型号 |
| GRBG | G R B G |
部分Samsung传感器、安森美工业相机 |
| BGGR | B G G R |
部分CMOS传感器、老款CCD |
| GBRG | G B R G |
较少见,某些特殊应用 |
为什么会有这么多模式?其实没有技术上的优劣之分,纯粹是各家设计习惯不同。我个人习惯在代码里把模式检测做成可配置的,而不是硬编码——曾经有一次,供应商换了传感器型号没通知我们,结果产线上整批raw图都偏色,排查了两天才发现是Bayer模式变了。
避坑指南:拿到raw图后,第一件事就是确认Bayer模式。可以用纯色卡拍摄,看raw数据中哪个通道响应最高。我曾经用这个方法5分钟就定位了客户反馈的“偏绿”问题——其实是他们把GRBG当成了RGGB处理。
1.3 色彩滤波阵列(CFA)的作用
CFA(Color Filter Array)就是贴在传感器像素上的微型滤光片。每个滤光片只允许特定波长的光通过:
- 红色滤光片:透过600-700nm波段,阻挡绿光和蓝光
- 绿色滤光片:透过500-600nm波段,覆盖人眼最敏感区域
- 蓝色滤光片:透过400-500nm波段,负责短波信息
这里有个关键点:CFA不是“染色”,而是“过滤”。每个像素接收到的仍然是全光谱的光,只是被滤光片截断了大部分能量。所以Bayer raw图的每个像素值,代表的是该位置对应颜色的光强。
为什么绿色占一半?
人眼的明视觉响应曲线峰值在555nm(黄绿色)。说白了,我们的眼睛对绿色细节最敏感。Bayer阵列让绿色像素占50%,红蓝各占25%,就是模仿人眼的特性。我在做安防相机项目时验证过——如果把绿色比例降到1/3,人眼主观清晰度会明显下降,即使MTF曲线看起来差不多。
注意:CFA的存在会导致摩尔纹和伪色。因为每个像素只采样一种颜色,高频细节会产生混叠。这就是为什么去马赛克算法必须做抗混叠处理——后面章节我会详细讲。
1.4 Bayer阵列知识结构总览
下面这张图把本章的核心概念串起来了。我建议你把它当作思维导图来记——每次处理raw图时,脑子里先过一遍这个流程。
1.5 本章小结
到这里,Bayer阵列的基础就讲完了。记住三个核心点:
- Bayer阵列是单传感器彩色成像的基石——用空间换色彩,绿色通道加倍采样
- 四种常见模式必须能区分——拿到raw图先确认模式,否则后续处理全错
- CFA的本质是滤光——每个像素只记录一种颜色,丢失的信息靠算法重建