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. 数据流走向:一张图看懂
我画了一张数据流图,你一看就明白。
你看,数据从左边进来,一路向右,再向下,最后输出到 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 则是去掉暗电流带来的固定偏置。
3.3 Demosaic(去马赛克)
Bayer 格式每个像素只有一种颜色(R/G/B)。Demosaic 就是通过插值算法,把缺失的另外两种颜色算出来。这是 ISP 里计算量最大的模块之一。
说白了,Demosaic 的好坏直接决定了图像的细节和边缘质量。Rockchip 的 ISP 支持多种插值算法,包括双线性、边缘导向等。我个人习惯在低光照场景下用边缘导向算法,效果更好。
3.4 AWB(自动白平衡)与 AEC(自动曝光)
这两个是 3A 的核心。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