第二章 图像传感器基础:CCD/CMOS工作原理、像素结构与Bayer阵列
图像传感器是ISP(Image Signal Processor)处理链路的起点,也是决定图像质量上限的物理层。无论是手机摄像头、安防IPC、车载摄像头还是工业相机,所有后续的ISP算法——去马赛克、降噪、白平衡、色彩校正——都是在传感器输出的原始数据(RAW域)上进行的。如果对传感器的光电转换特性、像素结构、读出电路和CFA(彩色滤波阵列)布局缺乏深入理解,ISP工程师将难以解释噪声来源、色彩偏差、暗角、坏点等问题的根因。本章将系统拆解CCD与CMOS传感器的核心差异、像素结构、Bayer阵列的采样逻辑以及光电转换的关键参数,为后续ISP算法章节奠定硬件基础。
2.1 核心原理:从光子到数字信号的物理链路
图像传感器的本质是一个将光信号转换为电信号的半导体器件阵列。其工作流程可以概括为:光子入射 → 光电效应产生电子-空穴对 → 电荷收集与存储 → 电荷转移/电压转换 → 模拟信号放大 → ADC量化 → 数字RAW数据输出。这一链路中的每一个环节都会影响最终图像质量,ISP工程师必须理解每个环节的物理约束。
2.1.1 光电二极管与电荷收集
现代CMOS传感器几乎全部采用背照式(BSI)或堆栈式(Stacked)结构,但核心的光电转换单元仍然是光电二极管(Photodiode, PD)。光电二极管通常是一个反向偏置的PN结,当光子能量大于半导体带隙(硅的带隙约1.12eV,对应波长约1100nm)时,光子被吸收并激发产生电子-空穴对。耗尽区内的电子被电场扫向N型区,形成光生电荷。
关键参数量子效率(Quantum Efficiency, QE)描述了入射光子转化为可收集电子的比例。QE受波长影响显著:硅材料对蓝光(450nm)的吸收深度较浅(约0.3μm),对红光(650nm)吸收深度较深(约3μm),对红外(850nm)则更深。因此,BSI结构通过将光电二极管置于硅片表面附近,显著提升了蓝光和绿光的QE,这也是BSI传感器在暗光下表现更好的原因之一。
2.1.2 CCD与CMOS的本质差异
CCD(电荷耦合器件)和CMOS(互补金属氧化物半导体)传感器虽然都基于光电效应,但读出架构完全不同。CCD采用电荷转移方式:光生电荷在像素间逐行转移,最终在输出端统一转换为电压。这种架构保证了电荷转移路径上的一致性,因此CCD的固定模式噪声(FPN)极低,且像素一致性极好。但CCD的缺点同样明显:需要多相时钟驱动、功耗高、读出速度慢、难以集成控制电路。
CMOS传感器则在每个像素内集成源极跟随器(SF)和行选开关(RS),实现主动像素(APS)读出。每个像素可以直接被寻址,读出速度远高于CCD,且功耗低、集成度高。但代价是像素内晶体管引入了额外的噪声源,且像素间SF的阈值电压失配会导致FPN。现代CMOS通过相关双采样(CDS)技术有效消除了复位噪声和SF的固定偏置。
| 对比维度 | CCD传感器 | CMOS传感器 |
|---|---|---|
| 读出方式 | 电荷逐行转移,统一输出 | 像素内电压读出,行列寻址 |
| 噪声特性 | FPN极低,读出噪声小 | FPN较高,需CDS校正 |
| 功耗 | 高(多相时钟驱动) | 低(单电源,无外部时钟) |
| 速度 | 慢(串行转移) | 快(并行列读出) |
| 集成度 | 低(需外部驱动芯片) | 高(可集成ADC、DSP、接口) |
| 应用场景 | 工业检测、天文、医疗 | 手机、安防、车载、消费电子 |
2.2 像素结构与读出电路
当前主流CMOS传感器采用4T像素结构(4个晶体管),其组成包括:传输管(TX)、复位管(RST)、源极跟随器(SF)和行选管(RS)。理解4T结构的工作时序是ISP调试中判断曝光和读出异常的基础。
2.2.1 4T像素的工作时序
4T像素的曝光过程分为四个阶段:复位(RST打开,FD节点复位到高电平)→ 曝光(TX关闭,PD积累光生电荷)→ 传输(TX打开,PD中的电荷转移到FD)→ 读出(RS打开,SF将FD电压缓冲输出到列线)。其中,电子快门(Electronic Shutter)的实现依赖于TX和RST的精确时序控制。
// 4T像素时序伪代码(以滚动快门为例)
// 行N的曝光时序
RST_N = HIGH; // 复位FD
TX_N = HIGH; // 清空PD(开始曝光)
delay(曝光时间);
TX_N = LOW; // 停止曝光,PD保留电荷
RST_N = LOW; // 结束FD复位
// 读出阶段
RS_N = HIGH; // 选通行N
// 先读复位电平(用于CDS)
V_reset = ADC_Read();
// 传输电荷
TX_N = HIGH;
delay(传输时间);
TX_N = LOW;
// 读信号电平
V_signal = ADC_Read();
// CDS输出
V_out = V_reset - V_signal;
在ISP调试中,如果发现运动物体出现拖影或变形,通常是因为滚动快门(Rolling Shutter)导致的果冻效应。此时需要评估是否启用全局快门(Global Shutter)模式,或者通过ISP的运动补偿算法进行缓解。
2.2.2 像素噪声源分析
像素级噪声是ISP降噪算法的主要处理对象。主要噪声源包括:
- 光子散粒噪声(Shot Noise):由光子的随机性引起,服从泊松分布,其标准差等于信号电子数的平方根。这是物理极限,无法消除,只能通过增加曝光量来提高信噪比。
- 复位噪声(kTC噪声):复位FD节点时,热噪声通过复位管引入,其大小为√(kTC)。CDS技术可以完全消除该噪声。
- 暗电流(Dark Current):即使无光照,热激发也会产生电子。暗电流随温度升高而指数增加(通常每升高7°C翻倍)。长曝光时暗电流会导致固定图案噪声(DSNU)。
- 读出噪声(Read Noise):包括SF的1/f噪声、列放大器的热噪声以及ADC的量化噪声。现代BSI传感器的读出噪声可低至1-2 e-。
2.3 Bayer阵列与彩色滤波阵列(CFA)
单色传感器只能输出灰度信息,要获得彩色图像,必须在像素表面覆盖彩色滤波阵列(CFA)。最经典的CFA布局是Bayer阵列,其排列规则为:每2×2像素单元中,包含1个红色(R)、2个绿色(G)和1个蓝色(B)像素。绿色像素占50%的原因是人眼对550nm附近的绿色光最为敏感,且绿色通道对亮度信息的贡献最大。
2.3.1 Bayer阵列的采样特性
Bayer阵列本质上是对彩色图像进行子采样:每个像素只采集一个颜色通道的信息,缺失的两个颜色通道需要通过去马赛克(Demosaic)算法插值得到。这种采样方式会导致混叠(Aliasing)和伪彩色(False Color)问题,尤其是在高频率细节区域(如细条纹、文字边缘)。
ISP工程师需要理解,Bayer阵列的奈奎斯特频率在R/B通道是G通道的一半。因此,在镜头设计时,通常会在传感器前放置光学低通滤波器(OLPF)来抑制高频混叠,但OLPF会降低图像锐度。现代高端手机通过算法(如AI去马赛克)来平衡这一矛盾。
2.3.2 CFA的变体与选择
除了标准RGGB Bayer阵列外,业界还存在多种CFA变体:
- RGBW(红绿蓝白):增加白色像素以提升低照度灵敏度,但需要复杂的色彩重建算法。
- RCCC(红绿蓝青):主要用于车载摄像头,对红绿灯和交通标志的响应更好。
- RYYCy(黄黄青):早期数码相机使用,现已少见。
- Quad Bayer(四合一):每个颜色通道包含2×2同色像素,可通过像素合并(Binning)提升暗光性能,或通过全分辨率输出提升细节。
选择CFA类型时,需要综合考虑目标场景、镜头光学特性、ISP算法复杂度以及成本。例如,安防摄像头倾向于使用RGBW以提升夜间全彩能力,而工业检测相机则更看重色彩还原精度,通常选择标准RGGB。
2.4 光电转换特性与关键参数
光电转换特性描述了传感器输出信号与入射光强之间的关系。理想情况下,这是一个线性过程:输出电子数 = 入射光子数 × QE。但实际传感器存在非线性、饱和、暗电流等限制。
2.4.1 光响应曲线与动态范围
传感器的光响应曲线(Photon Transfer Curve, PTC)是ISP调试的重要工具。通过测量不同曝光下的输出均值和方差,可以提取出以下关键参数:
| 参数 | 定义 | 典型值(BSI CMOS) | 对ISP的影响 |
|---|---|---|---|
| 满阱容量 (FWC) | 像素可存储的最大电子数 | 10,000 - 80,000 e- | 决定高光溢出阈值 |
| 转换增益 (CG) | 每个电子产生的电压变化 | 30 - 100 μV/e- | 影响ADC的量化噪声 |
| 读出噪声 | 无光照时的输出噪声 | 1 - 3 e- | 决定暗部信噪比下限 |
| 暗电流 | 单位时间热激发电子数 | 0.01 - 0.5 e-/s @25°C | 长曝光时产生暗部偏色 |
| 动态范围 | 20*log10(FWC/总噪声) | 60 - 75 dB | 决定HDR策略选择 |
2.4.2 非线性与响应度校正
传感器在接近满阱时会出现非线性响应,这会导致高光区域的色彩偏移。ISP中的镜头阴影校正(LSC)和色彩校正矩阵(CCM)通常假设传感器是线性的,因此需要先对传感器输出进行线性化校正。此外,不同像素的响应度差异(PRNU)需要通过增益校正来补偿。
2.5 实战场景:传感器选型与ISP参数初始化
假设你正在设计一款用于室内机器人导航的视觉系统,要求:分辨率500万像素、帧率30fps、工作照度范围1-1000 lux、需要全局快门以避免运动模糊。以下是选型和ISP初始化的完整分析过程。
2.5.1 传感器选型分析
根据需求,我们对比两款候选传感器:
- 传感器A:BSI堆栈式CMOS,1/2.3英寸,3.0μm像素,滚动快门,动态范围72dB,读出噪声1.5e-。
- 传感器B:FSI CMOS,1/2.7英寸,2.8μm像素,全局快门,动态范围65dB,读出噪声3.0e-。
由于机器人运动会产生果冻效应,传感器A的滚动快门在快速旋转时会导致图像严重变形,因此传感器B的全局快门是刚需。虽然B的噪声性能稍差,但可以通过ISP的时域降噪(3DNR)来弥补。最终选择传感器B。
2.5.2 ISP初始化参数设置
选定传感器B后,ISP初始化需要完成以下步骤:
- 读取OTP标定数据:包括每像素的增益校正系数、坏点坐标、镜头阴影校正表。
- 设置曝光与增益:根据目标照度范围,设置自动曝光(AE)的初始目标亮度为120(8bit),最大增益限制为16倍(对应ISO 3200)。
- 配置去马赛克算法:由于全局快门传感器在运动场景下使用,去马赛克应选择边缘导向插值,减少伪彩色。
- 设置降噪参数:在1 lux低照度下,启用强时域降噪(参考帧数4帧),空间降噪强度设为中等。
- 白平衡校准:在标准D65光源下进行白平衡,获得R/G和B/G增益。
// ISP初始化伪代码
isp_init();
isp_set_exposure(10.0f); // 10ms曝光
isp_set_gain(4.0f); // 4倍模拟增益
isp_set_demosaic_mode(EDGE_DIRECTED);
isp_set_3dnr_strength(0.8f);
isp_set_2dnr_strength(0.5f);
isp_load_lsc_table("sensorB_lsc.bin");
isp_load_otp_calibration();
2.5.3 调试结果与复盘
在实测中,传感器B在1 lux下的信噪比约为28dB,经过ISP处理后提升至35dB,满足机器人导航的识别需求。但发现一个问题:在强烈阳光直射下(>1000 lux),高光区域出现紫色伪影。分析原因是全局快门传感器的光晕(Blooming)效应导致电荷溢出到相邻像素。解决方案是启用ISP的高光压缩(Highlight Compression)功能,将高光区域的增益曲线进行软膝(Soft Knee)处理。
2.6 常见误区与总结
在ISP开发中,关于图像传感器存在几个常见误区,需要特别注意:
- 误区一:认为传感器分辨率越高图像越清晰。实际上,像素尺寸越小,满阱容量越小,信噪比越低。在暗光下,高像素密度反而导致画质下降。ISP工程师应关注像素尺寸而非单纯的分辨率。
- 误区二:忽略传感器温度对暗电流的影响。长曝光或高温环境下,暗电流会显著增加,导致暗部偏红或偏绿。ISP应具备基于温度传感器的暗电流补偿功能。
- 误区三:将Bayer阵列当作RGB图像处理。在RAW域进行白平衡、降噪和色彩校正时,必须考虑CFA的排列模式。例如,白平衡增益应分别作用于R、G、B通道,而不是对每个像素独立调整。
- 误区四:忽视镜头与传感器的匹配。镜头的相对照度(CRA)必须与传感器的微透镜设计匹配,否则会出现严重的边缘偏色(Color Cast)。ISP的LSC只能部分补偿,无法完全修复。