ISP Pipeline 总览:Rockchip ISP 整体架构、数据流走向、关键模块介绍

各位同学,大家好。今天我们正式开始啃 Rockchip ISP Pipeline 这块硬骨头。

说实话,我第一次接触 Rockchip 的 ISP 时,也被那一堆模块和复杂的流水线搞得有点懵。但后来我发现,只要抓住一条主线——数据流,整个架构就清晰了。

这一章,我们先从全局视角看一遍。不深入每个模块的细节,而是搞清楚:数据从哪来,经过谁,最后到哪去

1. 整体架构:一个典型的 3A + 图像处理流水线

Rockchip 的 ISP,说白了就是一个 硬件加速的图像处理引擎。它挂在系统总线上,接收来自 MIPI CSI 接口的原始 Bayer 数据,然后经过一系列硬件模块处理,最终输出 YUV 或 RGB 格式的图像。

我个人习惯把整个架构分成三块:

  • 前端输入:MIPI 接收、DPHY、CSI-2 协议解析
  • 核心处理:从 RAW 域到 RGB 域再到 YUV 域的全链路
  • 后端输出:缩放、裁剪、格式转换、DMA 输出

嗯,这里要注意:Rockchip 的 ISP 是 完全可编程 的。你可以通过寄存器配置每个模块的开关和参数。这也是它灵活的地方——同一个芯片,既能做安防摄像头,也能做手机拍照。

2. 数据流走向:一张图看懂

我画了一张数据流图,你一看就明白。

MIPI CSI DPC / BLC Demosaic AWB / AEC CCM Gamma / LSC YUV 转换 缩放 / 裁剪 DDR / 显示 数据流方向:RAW → RGB → YUV → 输出

你看,数据从左边进来,一路向右,再向下,最后输出到 DDR 或显示设备。每个方块代表一个硬件模块,箭头就是数据流的方向。

我曾经在一个项目中,因为没注意数据流的顺序,把 Gamma 校正放在了 Demosaic 前面,结果图像颜色完全不对。后来查了三天才发现是流水线顺序搞反了。所以,数据流的顺序是 ISP 设计的命根子

3. 关键模块介绍

下面我挑几个最关键的模块,简单说说它们的作用。后面章节会逐个深入。

3.1 MIPI CSI 接收

这是 ISP 的「嘴巴」。它负责从摄像头传感器接收 RAW 数据。支持 1/2/4 lane 的 MIPI DPHY,最高速率取决于芯片型号。

我记得有一次调试,发现图像有水平条纹。排查到最后,是 MIPI 时钟的 PLL 配置不对,导致数据采样错位。嗯,这种问题用示波器看眼图最直接。

3.2 DPC(坏点校正)与 BLC(黑电平校正)

传感器不可能完美,总有几个像素是坏的。DPC 就是把这些坏点找出来,用周围像素插值替换掉。BLC 则是去掉暗电流带来的固定偏置。

小技巧: 我建议你在调试 DPC 时,先拍一张全黑图,看看有没有亮点。如果有,那就是坏点没校正干净。

3.3 Demosaic(去马赛克)

Bayer 格式每个像素只有一种颜色(R/G/B)。Demosaic 就是通过插值算法,把缺失的另外两种颜色算出来。这是 ISP 里计算量最大的模块之一。

说白了,Demosaic 的好坏直接决定了图像的细节和边缘质量。Rockchip 的 ISP 支持多种插值算法,包括双线性、边缘导向等。我个人习惯在低光照场景下用边缘导向算法,效果更好。

3.4 AWB(自动白平衡)与 AEC(自动曝光)

这两个是 3A 的核心。AWB 负责让白色物体在任何光源下都显示为白色。AEC 则根据场景亮度调整曝光时间和增益。

注意: 我曾经遇到过一个坑:AWB 和 AEC 的统计窗口设置不当,导致画面一半亮一半暗。后来我把统计窗口缩小到画面中央区域,问题就解决了。所以,统计窗口的位置和大小一定要根据实际场景调整。

3.5 CCM(色彩校正矩阵)

传感器的色彩响应和人眼不一样。CCM 通过一个 3x3 矩阵,把传感器色彩空间映射到标准色彩空间(如 sRGB)。

这个矩阵的系数通常需要在实验室里用色卡标定。我建议你拿到新传感器后,第一件事就是做 CCM 标定,否则颜色会偏得离谱。

3.6 Gamma 校正与 LSC(镜头阴影校正)

Gamma 校正用于补偿显示设备的非线性响应。LSC 则用于校正镜头边缘亮度衰减(俗称暗角)。

嗯,这里有个经验:LSC 的校正系数通常存储在传感器的 OTP 中,但有些模组厂会忘记烧录。如果你发现图像四周发暗,先检查 LSC 系数有没有加载成功。

3.7 YUV 转换与缩放裁剪

最后一步,把 RGB 转换成 YUV(亮度和色度分离),然后根据输出分辨率进行缩放或裁剪。Rockchip 的 ISP 支持多种 YUV 格式,如 NV12、NV16、YUYV 等。

4. 总结一下

这一章我们走马观花看了一遍 Rockchip ISP 的全局。你记住三点:

  • 数据流是主线:RAW → RGB → YUV,顺序不能乱
  • 每个模块都可配置:通过寄存器控制开关和参数
  • 调试靠经验:遇到问题先查数据流,再查配置

下一章,我们会深入 MIPI 接收模块,看看数据是怎么从传感器「吃」进来的。到时候我会带你看具体的寄存器配置和时序图。


公众号:蓝海资料掘金营,微信deep3321