1. ISP Pipeline 概述与 3A 算法定位
各位同学,咱们今天先聊聊 ISP 的整体框架。说白了,ISP 就是手机或相机里那个把「Raw 图」变成「你能看到的漂亮照片」的硬件+软件系统。我做了这么多年图像处理,见过不少工程师一上来就扎进 3A 算法里,结果连 Pipeline 里哪个模块在前哪个在后都搞不清楚——嗯,这其实挺要命的。
1.1 ISP 的基本流程
一个典型的 ISP Pipeline,从 Sensor 输出 Raw 数据开始,到最终输出 YUV 或 RGB 图像结束。我习惯把它分成三个阶段:
- 前端预处理:坏点校正、黑电平补偿、Lens Shading 校正。这些模块处理的是 Sensor 本身的物理缺陷。
- 中端核心处理:去马赛克(Demosaic)、降噪、锐化、色彩校正。这里决定了图像的细节和色彩还原度。
- 后端输出处理:Gamma 校正、色调映射、缩放、编码。最终输出给显示或存储。
你想想看,整个流程就像一条流水线。每个模块都在做一件事:把上一级的「瑕疵」尽量修复,同时不给下一级添乱。
核心观点:ISP Pipeline 的本质是「信号修复 + 信号增强」的串联链路。任何一个模块的参数错了,后面的模块再怎么调也救不回来。
我在一个项目中遇到过,某款 Sensor 的坏点校正参数没配好,结果 Demosaic 之后出现了大量伪彩色。当时排查了三天,最后发现是前端预处理阶段的一个阈值设错了。从那以后,我每次看 Pipeline 都会从前端开始捋一遍。
1.2 3A 算法在 Pipeline 中的位置
3A 算法——AE、AF、AWB——并不是 Pipeline 里的「处理模块」,而是「控制模块」。它们不直接处理像素,而是根据图像统计信息去调整其他模块的参数。
我画了一张图,帮你理解它们的位置关系:
从图上你能看到:3A 算法位于 Pipeline 的「旁路」位置。它们读取统计信息,然后反过来控制 Sensor 和 ISP 模块的参数。这就是所谓的「闭环控制」。
1.3 AE、AF、AWB 各自的作用
咱们一个一个说。
AE(自动曝光)
AE 的目标很简单:让图像亮度合适。但实际做起来没那么容易。它要控制三个东西:
- 曝光时间:决定了进光量,也影响运动模糊。
- 模拟增益:放大 Sensor 信号,但会放大噪声。
- 数字增益:进一步放大,但噪声也会被放大。
我建议你把 AE 理解成一个「亮度 PID 控制器」。它根据当前图像的亮度统计,去调整这三个参数,让亮度收敛到目标值。
经验之谈:AE 的收敛速度要小心。太快了画面会闪烁,太慢了用户觉得卡顿。我一般把收敛时间控制在 5-10 帧之间。
AF(自动对焦)
AF 负责让图像清晰。它通过移动镜头位置,找到对比度最高的那个点。
常见的 AF 算法有两种:
- 对比度检测 AF(CDAF):计算图像中某个区域的对比度值,找最大值。精度高,但慢。
- 相位检测 AF(PDAF):利用 Sensor 上的专用像素检测相位差,速度快,但需要硬件支持。
我记得有一次调试一个 PDAF 的模组,发现相位差数据总是偏大。查了半天,原来是 Sensor 的微透镜偏移没校准。嗯,这种坑踩过一次就记住了。
AWB(自动白平衡)
AWB 的任务是让白色物体在任何光源下都呈现白色。它通过调整 R/G/B 通道的增益,来消除光源色温的影响。
AWB 的核心是「色温估计」。常用的方法有:
- 灰度世界法:假设场景中所有颜色的平均值是灰色。
- 完美反射法:假设场景中最亮的点就是白色。
- 色温曲线法:根据已知光源的色温曲线做匹配。
你想想看,如果 AWB 没做好,拍出来的照片要么偏黄(白炽灯下),要么偏蓝(阴天)。用户一看就觉得「这手机拍照不行」。
1.4 3A 算法的协同关系
这三个算法不是孤立的。它们互相影响:
| 影响关系 | 说明 |
|---|---|
| AE → AWB | 曝光变化会影响色彩统计,AWB 需要重新收敛 |
| AE → AF | 曝光不足时对比度下降,AF 可能找不到焦点 |
| AF → AE | 对焦过程中画面模糊,AE 的亮度统计会受影响 |
| AWB → AE | 白平衡增益调整后,亮度统计值会变化 |
注意:3A 算法之间如果协调不好,会出现「震荡」现象。比如 AE 调整曝光 → AWB 重新收敛 → 亮度变化 → AE 再次调整 → 循环。我建议在工程实现中给每个算法设置不同的收敛速度,或者加入互锁机制。
1.5 本章小结
咱们这一章把 ISP Pipeline 的骨架搭起来了。你记住三点:
- ISP 是串联的流水线,每个模块都依赖前一级的输出质量。
- 3A 算法是旁路控制模块,不处理像素,只调整参数。
- AE、AF、AWB 各有分工,但必须协同工作。