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 里的「处理模块」,而是「控制模块」。它们不直接处理像素,而是根据图像统计信息去调整其他模块的参数。

我画了一张图,帮你理解它们的位置关系:

ISP Pipeline 与 3A 算法定位 Sensor Raw → 前端预处理 → Demosaic → 降噪 → 色彩校正 → Gamma → 输出 统计信息收集(Histogram / 亮度 / 对比度) AE 自动曝光 AF 自动对焦 AWB 自动白平衡 调整 Sensor 曝光时间 / 增益 / 镜头位置 / 白平衡增益 3A 算法是闭环控制:统计 → 计算 → 调整 → 再统计

从图上你能看到: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 的骨架搭起来了。你记住三点:

  1. ISP 是串联的流水线,每个模块都依赖前一级的输出质量。
  2. 3A 算法是旁路控制模块,不处理像素,只调整参数。
  3. AE、AF、AWB 各有分工,但必须协同工作。