1. ISP Pipeline全景:从Sensor到显示器的图像处理链路

各位好,我是老周。做ISP调试这行十几年了,今天咱们聊聊ISP Pipeline的全貌。

说白了,ISP Pipeline就是一条图像处理的流水线。从Sensor捕捉到原始数据,到最终在屏幕上显示出来,中间经过的每一个处理环节,就是Pipeline上的一个节点。每个节点干一件事,环环相扣。

我刚开始接触ISP时,总觉得这玩意儿就是个黑盒子——RAW图进去,好看的图出来。后来踩了不少坑才明白,不理解Pipeline,你连问题出在哪个环节都找不到。

1.1 整体链路:从光子到像素

先看一张整体流程图,把Pipeline的骨架搭起来。

ISP Pipeline全景流程图 ISP Pipeline 全景流程图 Sensor RAW (Bayer) BLC 黑电平校正 AWB 自动白平衡 Demosaic 去马赛克 CCM 色彩校正 Gamma 伽马校正 RGB→YUV 色彩空间转换 NR 降噪 Sharpen 锐化 输出 YUV/RGB/JPEG 说明 实际Pipeline顺序和模块数量因芯片厂商而异,上图展示的是典型架构。 部分模块(如3A统计、LSC、HDR融合)未在图中展开,后续章节会详细讲解。

这张图我画了很多次。每次给新人讲,我都说:记住这个流向,从左到右,从上到下。Sensor出来的RAW图,经过BLC、AWB、Demosaic、CCM,然后转到YUV域做NR和Sharpen,最后输出。

核心要点:ISP Pipeline分为两大阶段——RAW域处理和YUV域处理。RAW域主要做校正和重建,YUV域主要做增强和压缩。分清楚这两个域,调试时能少走一半弯路。

1.2 各模块功能速览

下面这张表,我把Pipeline里最常见的模块列出来。每个模块干什么、输入输出是什么、调试时关注什么,一目了然。

模块 全称 输入 输出 调试关注点
BLC Black Level Correction RAW RAW 暗电流补偿,黑电平偏移
LSC Lens Shading Correction RAW RAW 镜头暗角,色偏校正
AWB Auto White Balance RAW RAW 色温估计,R/G增益
Demosaic 去马赛克 RAW RGB 伪色,拉链效应
CCM Color Correction Matrix RGB RGB 色彩还原,饱和度
Gamma 伽马校正 RGB RGB 亮度映射,对比度
RGB→YUV 色彩空间转换 RGB YUV 转换矩阵精度
NR Noise Reduction YUV YUV 降噪强度,细节保留
Sharpen 锐化 YUV YUV 过冲,振铃
JPEG Enc JPEG编码 YUV JPEG 压缩率,块效应

这张表我建议你打印出来贴在工位上。调试时遇到问题,先看是哪个域、哪个模块的活。

1.3 RAW域 vs YUV域:为什么这么分?

你可能会问:为什么非要把Pipeline分成两个域?

我个人习惯这么理解:RAW域处理的是传感器原生数据,YUV域处理的是人眼感知数据。

RAW域的数据是线性的,每个像素只记录一种颜色(R/G/B之一)。这个阶段做的BLC、LSC、AWB,本质上都是在校正传感器的物理缺陷。比如BLC去掉暗电流,LSC补偿镜头边缘进光量不足。

YUV域就不一样了。Y是亮度,UV是色度。人眼对亮度敏感,对色度不敏感。所以降噪和锐化主要放在Y通道做,UV通道可以适当降低分辨率。这是图像压缩的基础思路。

小技巧:调试时如果发现图像偏色,先查AWB和CCM,别急着动Gamma。如果发现图像噪点多,先查NR,但要注意NR太强会抹掉细节。我见过不少新手一上来就调Gamma,结果越调越乱。

1.4 3A统计:Pipeline的大脑

Pipeline里还有一套并行系统,叫3A统计。它不直接处理图像,但控制着整个Pipeline的参数。

  • AE(自动曝光):控制Sensor的曝光时间和增益,保证图像亮度合适。
  • AWB(自动白平衡):估计当前光源色温,调整R/G/B增益,让白色物体看起来是白的。
  • AF(自动对焦):通过对比度或相位检测,驱动镜头找到最清晰的位置。

3A统计模块会从图像中提取统计信息(比如亮度直方图、色温分布、对比度值),然后反馈给控制算法。算法算出新的参数,再写回Sensor或ISP寄存器。

嗯,这里要注意:3A是闭环系统。参数调不好,图像会闪烁、偏色、来回对焦。我曾经在一个项目中,AE收敛速度调慢了,结果用户拍照时画面忽明忽暗,被投诉了好几次。

1.5 调试工具链概览

做ISP调试,光靠眼睛看是不够的。你需要一套工具链来帮你量化问题。

工具类型 常见工具 用途
抓图工具 imx390_capture, raw2dng 从Sensor或ISP抓取RAW/YUV图
分析工具 Imatest, DxOMark MTF、SNR、色彩精度分析
调试工具 ISP Tuning Tool (各芯片厂商) 在线调参,实时预览效果
仿真工具 MATLAB, Python + OpenCV 离线算法验证,Pipeline仿真

我个人习惯先用抓图工具把RAW图抓下来,然后用MATLAB或Python做离线分析。这样不占硬件资源,还能反复调参。等离线参数调得差不多了,再上板验证。

避坑提醒:我曾经在项目里直接上板调参,结果每次改参数都要重新编译、烧录、重启,一天调不了几个参数。后来改成离线仿真,效率翻了好几倍。记住:能离线就别在线,能仿真就别上板。

1.6 本章小结

这一章我们把ISP Pipeline的骨架搭起来了。你至少要知道:

  • Pipeline分RAW域和YUV域,各模块的输入输出是什么
  • 3A统计是Pipeline的控制大脑
  • 调试工具链要抓图、分析、调参三步走

后面的章节,我们会一个一个模块深入进去。每个模块怎么调、常见问题怎么定位,我都会把实际项目中的经验拿出来讲。准备好了吗?