2. 摄像头成像原理:传感器、镜头、ISP流水线、RAW数据格式与Bayer阵列
摄像头成像的本质是将外界光信号转换为数字电信号,再经过一系列数学运算还原为人眼可感知的图像。本章从物理层到数据层,系统拆解成像链路的五大核心模块:镜头、传感器、Bayer阵列、RAW数据格式与ISP流水线。理解这些底层原理,是后续使用Imatest进行客观评测、使用DxOMark进行画质排名的前提。
调试视角: 驱动工程师最常接触的是 RAW 域与 ISP 参数。传感器输出的 RAW 数据是“毛坯”,ISP 流水线是“精装修”。调试的目标是在功耗、帧率与画质之间找到最优解。
2.1 成像链路总览
下图展示了从入射光到最终YUV/JPEG输出的完整数据流。每个节点都对应驱动调试的关键寄存器或算法模块。
2.2 镜头:光学系统的第一道关口
镜头负责将外界景物聚焦到传感器感光面上。驱动调试中,镜头参数直接影响自动对焦(AF)与光学防抖(OIS)的算法策略。
| 参数 | 物理含义 | 对画质的影响 | 驱动调试关注点 |
|---|---|---|---|
| 焦距 (EFL) | 镜头光学中心到焦点的距离 | 决定视场角(FOV)与放大倍率 | AF曲线标定、无穷远位置 |
| 光圈 (F/#) | 焦距/入瞳直径 | 影响进光量与景深 | AE算法目标亮度设定 |
| 畸变 | 像高与实际像高的偏差 | 桶形/枕形失真 | ISP畸变校正表生成 |
| MTF | 调制传递函数 | 对比度与分辨率 | Imatest SFR测试基准 |
实战提示: 在Imatest中评估镜头解像力时,通常使用SFR(空间频率响应)测试卡。驱动工程师需要确保AF在测试距离下准确合焦,否则测出的MTF值会偏低,误判为镜头不良。
2.3 传感器:光电转换的核心
图像传感器(CMOS/CCD)将光子转换为电子,再通过ADC转换为数字信号。传感器性能直接决定RAW数据的信噪比与动态范围。
- 量子效率 (QE):入射光子转换为电子的比例,越高越灵敏。
- 满阱容量 (FWC):单个像素能容纳的最大电子数,决定高光饱和点。
- 读出噪声:像素复位与读出过程中引入的噪声,影响暗部信噪比。
- 暗电流:无光照时产生的热电子,随温度升高呈指数增长。
- 动态范围 (DR):满阱容量与读出噪声的比值,通常用dB表示。
2.4 Bayer阵列与CFA滤色
单个像素只能感知亮度,无法区分颜色。Bayer阵列在传感器表面覆盖一层彩色滤光片阵列(CFA),使每个像素只通过红、绿、蓝中的一种光。最常见的Bayer模式是RGGB,其中绿色像素数量是红/蓝的两倍,模拟人眼对绿色更敏感的特性。
常见误区: RAW数据不是“灰度图”,而是“拜耳图”。每个像素只包含一种颜色信息,必须经过ISP的去马赛克(Demosaic)算法插值出缺失的另外两个颜色通道,才能形成全彩图像。驱动调试时,如果ISP的Demosaic参数错误,会出现明显的彩色摩尔纹或伪色。
2.5 RAW数据格式
传感器输出的RAW数据是未经任何处理的原始拜耳数据。驱动工程师需要正确配置MIPI CSI-2接口的数据类型(DT)与位深,否则Imatest无法正确解析RAW文件。
| RAW格式 | 位深 | 每像素字节数 | 常见传感器 | Imatest支持 |
|---|---|---|---|---|
| RAW8 | 8-bit | 1 | 低端VGA传感器 | 是 |
| RAW10 | 10-bit | 1.25 (打包) | IMX219, OV5640 | 是 |
| RAW12 | 12-bit | 1.5 (打包) | IMX477, IMX335 | 是 |
| RAW14 | 14-bit | 1.75 (打包) | IMX490, 高端工业 | 是 |
| RAW16 | 16-bit | 2 | 特殊科学相机 | 是 |
// 驱动中配置RAW10格式的示例代码片段(伪代码)
sensor_reg_write(0x0100, 0x00); // 进入待机模式
sensor_reg_write(0x0112, 0x0A); // 设置输出位深: 0x0A = RAW10
sensor_reg_write(0x0113, 0x0A); // 设置MIPI数据类型: 0x2A = RAW10
sensor_reg_write(0x0100, 0x01); // 退出待机模式,开始输出
2.6 ISP流水线:从RAW到YUV
ISP(Image Signal Processor)是摄像头驱动调试的核心战场。RAW数据进入ISP后,经过一系列模块处理,最终输出YUV或RGB格式供上层应用使用。每个模块都有对应的寄存器或算法参数,直接影响Imatest测试结果。
2.7 本章小结
摄像头成像原理是驱动调试的底层语言。理解镜头-传感器-Bayer-RAW-ISP这条链路,才能准确判断Imatest测试结果中的异常是由哪个环节引起的。例如:
- RAW域出现竖条纹 → 检查传感器读出时序与MIPI通道对齐
- 彩色边缘伪色 → 检查Demosaic算法或镜头色差校正
- 整体偏色 → 检查AWB增益与CCM矩阵
- 暗部噪点过多 → 检查BLC与降噪强度