图像传感器基础:CMOS vs CCD,RAW图格式,Bayer Pattern与CFA
各位同学好,我是老周。今天咱们聊聊图像传感器——整个ISP流水线的起点。说白了,没有传感器,后面什么去噪、HDR全是空谈。
我入行那会儿,CCD还是主流,CMOS被嫌弃“噪声大、画质差”。现在呢?手机、相机、安防,清一色CMOS。为什么?咱们一步步拆开看。
CMOS vs CCD:一场技术路线的对决
这两种传感器,本质都是把光信号转成电信号。但实现方式完全不同。
| 对比项 | CMOS | CCD |
|---|---|---|
| 读出方式 | 每个像素独立放大、读出 | 整行电荷逐行转移、统一读出 |
| 功耗 | 低(约CCD的1/10) | 高(需要多路高压时钟) |
| 噪声 | 固定模式噪声(FPN)较明显 | 读出噪声低,画质干净 |
| 速度 | 快(可逐行/逐像素随机访问) | 慢(必须整帧串行读出) |
| 集成度 | 高(ADC、逻辑电路可集成在芯片上) | 低(需要外部驱动和ADC) |
| 成本 | 低(标准CMOS工艺) | 高(专用工艺,良率低) |
| 动态范围 | 中等(受限于像素内晶体管) | 较高(满阱容量大) |
我的经验:2015年做一款工业相机,客户坚持用CCD,说“画质好”。结果产线一跑,功耗压不住,散热器比镜头还大。后来换了背照式CMOS,画质接近,功耗降了80%。从那以后,除非特殊需求(比如天文、科研),我基本不再推荐CCD。
为什么CMOS能逆袭?核心原因就一个:工艺红利。CMOS传感器可以用和CPU、内存一样的标准半导体工艺生产,成本低、迭代快。CCD呢?专用产线,投资大、产能小,注定是小众市场。
RAW图格式:传感器看到的“原汁原味”
很多人问我:“RAW到底是个啥?”
说白了,RAW就是传感器输出的原始数据,没经过任何处理。你相机里拍的JPEG,那是ISP处理完的结果——白平衡、去噪、锐化、伽马校正,全给你做完了。RAW呢?就是一堆数字,每个数字代表某个像素感受到的光强。
RAW格式有几个关键参数:
- 位深:常见10bit、12bit、14bit。位深越大,亮度层次越丰富。我见过16bit的工业RAW,一张图几十MB。
- 黑电平:传感器在无光条件下的输出值。不是0,通常有几十到几百的偏移。做ISP第一步就是减掉这个偏移。
- 线性度:理想情况下,光强翻倍,输出值翻倍。但实际传感器在高光区会饱和,在暗区有噪声。
避坑指南:我曾经接手一个项目,RAW图暗部偏绿。查了半天,发现是黑电平校准没做对——不同通道的黑电平不一样。Bayer的R、G、B通道,黑电平可能有微小差异,必须分别校准。
Bayer Pattern与CFA:彩色世界的入口
单个像素只能感知亮度,分不清颜色。那彩色怎么来的?答案就是彩色滤波阵列(CFA)。
最常见的CFA就是Bayer Pattern。它把像素排成2x2的单元:
- 左上、右下:绿色(G)—— 占50%
- 右上:红色(R)—— 占25%
- 左下:蓝色(B)—— 占25%
为什么绿色多一倍?因为人眼对绿色最敏感。这个设计,说白了就是模仿人眼的视觉特性。
// 典型的Bayer Pattern排列(RGGB)
// 第一行:R G R G R G ...
// 第二行:G B G B G B ...
// 第三行:R G R G R G ...
// 第四行:G B G B G B ...
// 以此类推
除了RGGB,还有其他变种:
| Pattern | 排列方式 | 常见应用 |
|---|---|---|
| RGGB | 标准Bayer | 绝大多数消费级相机、手机 |
| RCCC | 1红3透明 | 安防、车载(弱光敏感) |
| RCCB | 1红2透明1蓝 | 安防(兼顾色彩和灵敏度) |
| Quad Bayer | 4x4单元,同色合并 | 高像素手机(像素合并提升弱光) |
注意:Bayer Pattern决定了后续去马赛克(Demosaic)算法的复杂度。Quad Bayer这类非标准Pattern,需要特殊的解马赛克流程。我见过团队直接拿标准Bayer算法去处理Quad Bayer,结果出现严重的伪色和摩尔纹。
知识结构图:传感器到RAW的完整链路
下面这张图,把从光信号到RAW数据的流程画清楚了。我建议你保存下来,后面讲去噪和HDR时还会反复用到。
RAW数据在硬件通路中的“模样”
你拿到一帧RAW数据,在内存里看到的是什么?
假设传感器是1920x1080,Bayer RGGB,12bit。那么:
- 每个像素占12bit(实际存储常用16bit对齐)
- 一帧RAW大小 = 1920 x 1080 x 2字节 ≈ 4MB
- 数据排列:第一行是R G R G...,第二行是G B G B...
嗯,这里要注意:RAW数据不是图像。你直接把它当灰度图显示,会看到密密麻麻的网格纹理——那就是Bayer Pattern的痕迹。
实战经验:调试ISP通路时,我习惯先dump一帧RAW出来,用Python脚本转成伪彩色图,检查有没有坏点、条纹、或者黑电平异常。这一步能发现很多传感器驱动的问题,比直接看ISP输出更高效。
CFA的变种与选型考量
不是所有场景都用标准Bayer。我列几个常见的变种,以及它们的适用场景:
- Quad Bayer:手机高像素传感器(48MP、64MP)的标配。4个同色像素合并成1个,弱光下提升灵敏度,白天输出高像素。但解马赛克算法要重写。
- RCCC:红+透明。安防监控常用,弱光性能好,但色彩还原差。适合只关心亮度细节的场景。
- RCCB:红+透明+蓝。比RCCC多一个蓝色通道,色彩稍好。车载摄像头常见。
- RGBW:标准Bayer里插入白色像素。提升弱光亮度,但容易引入色彩串扰。
踩过的坑:有一年做车载项目,选了RCCB传感器。结果发现白色像素的响应曲线和RGB不一样,导致自动白平衡怎么调都偏色。后来在ISP里加了一个“白像素补偿”模块,才搞定。选型时一定要确认CFA类型是否匹配你的ISP算法。
小结:这一章你该记住什么
好了,内容不少。我帮你划几个重点:
- CMOS是主流,CCD是情怀。除非特殊需求,别在CCD上浪费时间。
- RAW是传感器的“底片”。理解RAW的位深、黑电平、线性度,是ISP工程师的基本功。
- Bayer Pattern决定了色彩采样方式。标准RGGB占主流,但Quad Bayer、RCCC等变种越来越多,算法要跟上。
- CFA选型影响整个ISP链路。别只看传感器分辨率,CFA类型直接决定去噪、去马赛克、白平衡的策略。