图像传感器基础:CMOS vs CCD、像素与分辨率、帧率与曝光控制、Bayer阵列原理

图像传感器,说白了就是相机的「视网膜」。光信号进来,它负责转成电信号。我入行那会儿,CCD还是主流,CMOS被嫌弃噪声大。现在嘛,风水轮流转,CMOS几乎一统天下。但两种技术的内核,你都得吃透。

CMOS vs CCD:两种架构的博弈

先看一张对比表,把核心差异说清楚:

对比维度 CCD(电荷耦合器件) CMOS(互补金属氧化物半导体)
读出方式 逐行转移,统一输出 每个像素独立寻址读出
功耗 较高(需要多路高压时钟) 低(单电源,静态功耗几乎为零)
噪声 低(读出路径单一,一致性高) 较高(像素级放大器失配导致固定模式噪声)
速度 慢(串行读出,帧率受限) 快(并行读出,轻松上百帧)
集成度 低(需要外部驱动芯片) 高(ADC、DSP、接口可集成在同一晶圆)
成本 高(特殊工艺,良率低) 低(标准CMOS工艺,量大管饱)

我个人习惯,选型时先看应用场景。工业检测、天文摄影这些对噪声极度敏感的场景,老款CCD仍有优势。但消费电子、安防监控、车载视觉,CMOS是唯一选择。为什么?因为CMOS能跑高帧率,能集成ISP,能省电。我做过一个无人机项目,用CCD的话,电池撑不过10分钟,换成CMOS直接翻倍。

避坑指南: 我曾经在选型时忽略了一个细节——CCD的拖尾效应(Smear)。强光照射时,垂直方向会出现一条亮线。这在工业线阵相机里尤其致命。如果你做的是高速运动物体检测,务必确认传感器是否支持电子快门或全局复位。

像素与分辨率:不是越大越好

分辨率 = 水平像素数 × 垂直像素数。比如1920×1080,约200万像素。但像素数量只是故事的一半。

真正决定图像质量的是像素尺寸。单个像素越大,感光面积越大,信噪比越高。我见过不少新手,一味追求高像素,结果暗光下全是噪点。

举个例子:

  • 索尼IMX586:4800万像素,单像素0.8μm。白天细节丰富,晚上……嗯,需要像素合并。
  • 豪威OV64B:6400万像素,单像素0.7μm。更小,但支持4合1输出1600万像素,等效1.4μm。

这里有个关键概念——像素合并(Binning)。把相邻2×2的像素当成一个用,分辨率降为1/4,但感光面积增大4倍,信噪比提升约6dB。我调试车载摄像头时,夜间模式就靠这个。

经验之谈: 做嵌入式视觉系统,别只看分辨率数字。先算一下像元尺寸 × 像素数得到的总感光面积。同样200万像素,1/2英寸传感器比1/3英寸的暗光性能好得多。你想想看,物理定律摆在那儿,没法骗人。

帧率与曝光控制:时间维度的博弈

帧率(FPS)和曝光时间(Shutter Speed)是一对冤家。帧率决定时间分辨率,曝光时间决定亮度。两者乘积不能超过1——这是硬约束。

公式很简单:

最大帧率 ≤ 1 / (曝光时间 + 读出时间 + 消隐时间)

举个例子:你要拍60fps的视频,每帧可用时间约16.67ms。如果曝光时间设为10ms,剩下6.67ms给读出和消隐。如果传感器读出速度不够,帧率就上不去。

曝光控制有两种模式:

  1. 卷帘快门(Rolling Shutter):逐行曝光,逐行读出。成本低,但拍快速运动物体会出现「果冻效应」。我调试过一台高速贴片机视觉系统,用卷帘快门拍芯片,图像歪得像面条——后来果断换了全局快门。
  2. 全局快门(Global Shutter):所有像素同时曝光,同时读出。没有果冻效应,但像素内需要额外存储单元,填充率降低,暗光性能略差。
关键参数: 曝光时间、增益(Analog Gain / Digital Gain)、帧率三者构成三角关系。增益每提升6dB,噪声也提升约6dB。所以优先调曝光时间,实在不够才动增益。我习惯把自动曝光算法写成:先调曝光时间到目标亮度,如果曝光时间超过帧率限制,再逐步增加增益。

Bayer阵列原理:彩色世界的起点

单像素只能感知亮度,分不清颜色。怎么办?在像素表面覆盖彩色滤光片,让每个像素只响应一种颜色。最常见的模式就是Bayer阵列——RGGB。

为什么是RGGB,不是RGBG?因为人眼对绿色最敏感,所以绿色像素数量是红蓝的两倍。这样能更好地模拟人眼视觉特性。

看一张Bayer阵列的结构图:

Bayer阵列(RGGB模式) R G R G G B G B R G R G G B G B R(红色) G(绿色)×2 B(蓝色) 绿色像素占50%,红色和蓝色各占25%——模拟人眼对绿光最敏感的特性

Bayer原始数据是灰度的——每个像素只有一个颜色通道的值。要得到全彩图像,必须做去马赛克(Demosaicing),也叫插值。最简单的办法是双线性插值:缺失的绿色值用周围四个绿色像素平均,红蓝值用对角邻居平均。

但实际工程中没人用这么糙的方法。我常用的算法是:

  • 边缘导向插值:先检测边缘方向,沿边缘方向插值,避免锯齿。
  • 自适应插值:根据局部梯度调整插值权重,保留更多细节。
  • 基于机器学习的插值:训练一个轻量CNN,直接从Bayer数据恢复全彩。效果最好,但算力要求高。
注意: 去马赛克不是无损的。插值会引入伪色(False Color)和摩尔纹(Moiré Pattern)。我调试过一款安防相机,在拍密集格栅的建筑物时,画面出现彩虹条纹——后来加了光学低通滤镜(OLPF)才压下去。但OLPF会降低锐度,这是个取舍。

从传感器到图像:完整的数据流

把上面几个知识点串起来,看看一张照片从传感器到内存的完整路径:

图像传感器数据流 光信号 Bayer滤色 曝光+读出 ADC转换 原始Bayer数据 去马赛克 色彩校正 输出RGB图像 关键:曝光时间决定亮度,帧率决定时间分辨率,Bayer模式决定色彩采样方式 三者共同决定了原始数据的质量——后期算法只能补救,不能创造

嗯,到这里,图像传感器的基础知识就铺完了。CMOS和CCD的选型、像素与分辨率的权衡、帧率与曝光的博弈、Bayer阵列的原理——这些是后续所有图像处理算法的地基。地基不稳,上层建筑再漂亮也是空中楼阁。