3. RK ISP 子系统架构:ISP Pipeline 核心模块详解
RK ISP(Image Signal Processor)是瑞芯微平台图像处理的核心硬件单元,负责将 Sensor 输出的 RAW 数据转换为高质量的 YUV/RGB 图像。ISP Pipeline 由一系列按序排列的硬件模块组成,每个模块完成特定的图像校正与增强任务。理解 Pipeline 的架构与各模块功能,是进行 Sensor 驱动开发和 RAW 数据采集性能调优的基础。
3.1 ISP Pipeline 整体流程
典型的 RK ISP Pipeline 从 Sensor 输出的 RAW 数据开始,依次经过以下主要模块处理,最终输出 YUV 图像。下图展示了 Pipeline 的核心数据流与模块间依赖关系。
3.2 各模块功能详解
下表总结了 ISP Pipeline 中每个核心模块的功能、输入/输出数据类型以及调优关注点。
| 模块 | 全称 | 功能描述 | 输入/输出 | 调优关注点 |
|---|---|---|---|---|
| DPCC | Defect Pixel Cluster Correction | 检测并校正坏点(死点、亮点、簇状坏点) | RAW → RAW | 坏点阈值、校正强度、动态检测灵敏度 |
| BLC | Black Level Correction | 消除 Sensor 暗电流引起的黑电平偏移 | RAW → RAW | 黑电平校准值、通道独立补偿 |
| LSC | Lens Shading Correction | 补偿镜头边缘亮度衰减(暗角) | RAW → RAW | 增益网格、校准精度、分辨率匹配 |
| AWB | Auto White Balance | 调整 R/G/B 通道增益,还原真实色温 | RAW → RAW | 色温估计、增益范围、收敛速度 |
| CCM | Color Correction Matrix | 通过 3x3 矩阵校正色彩串扰,还原真实色彩 | RAW → RAW | 矩阵系数、饱和度、肤色保护 |
| Gamma | Gamma Correction | 非线性亮度映射,适配显示设备特性 | RGB → RGB | Gamma 曲线、亮度动态范围 |
| Sharpen | Sharpness Enhancement | 增强图像边缘细节与纹理清晰度 | YUV → YUV | 锐化强度、噪声抑制、过冲控制 |
3.3 模块详细分析
3.3.1 DPCC(坏点校正)
DPCC 是 Pipeline 的第一个模块,负责检测并修复 Sensor 阵列中的缺陷像素。坏点分为静态坏点(出厂即存在)和动态坏点(温度、增益变化产生)。DPCC 通过比较当前像素与邻域像素的亮度差异来判断是否为坏点,并用邻域均值或中值替换。
- 静态坏点表: 在 Sensor 校准时生成,记录所有固定坏点坐标。
- 动态检测: 实时计算像素梯度,超过阈值则标记为坏点。
- 簇状校正: 支持 2x2、3x3 等簇状坏点检测,避免校正后出现块状伪影。
3.3.2 BLC(黑电平校正)
BLC 用于消除 Sensor 暗电流导致的像素值偏移。即使无光照,Sensor 也会输出非零值(黑电平)。BLC 从每个像素值中减去一个固定的偏移量,使黑色区域接近 0。
- 通道独立: R、Gr、Gb、B 四个通道的黑电平可能不同,需分别校准。
- 温度补偿: 黑电平随温度变化,高级方案支持动态补偿。
3.3.3 LSC(镜头阴影校正)
由于镜头光学特性,图像边缘亮度通常低于中心(暗角)。LSC 通过一个二维增益网格对每个像素进行增益补偿,使画面亮度均匀。
- 增益网格: 通常为 17x13 或 33x25 的网格点,每个点存储一个增益值。
- 插值: 非网格点像素通过双线性插值计算增益。
- 校准: 使用均匀光照下的灰卡图像生成增益网格。
3.3.4 AWB(自动白平衡)
AWB 模块根据图像统计信息估计当前光源色温,并调整 R 和 B 通道的增益,使白色物体在不同色温下呈现中性白。
- 色温估计: 基于灰度世界、完美反射或色温曲线(如 Planckian locus)算法。
- 增益范围: 通常限制在 [0.5, 2.0] 之间,防止过度校正。
- 收敛速度: 通过低通滤波器平滑增益变化,避免闪烁。
3.3.5 CCM(色彩校正矩阵)
CCM 通过一个 3x3 矩阵将 Sensor 的 RGB 色彩空间映射到标准色彩空间(如 sRGB)。矩阵系数由 Sensor 的光谱响应特性决定。
// CCM 矩阵示例(3x3)
[ R_out ] [ 1.72 -0.53 -0.19 ] [ R_in ]
[ G_out ] = [ -0.35 1.62 -0.27 ] [ G_in ]
[ B_out ] [ 0.04 -0.48 1.44 ] [ B_in ]
- 饱和度控制: 矩阵系数影响色彩饱和度,需在准确性与视觉偏好间平衡。
- 肤色保护: 部分 ISP 支持对肤色区域降低校正强度,避免肤色失真。
3.3.6 Gamma(伽马校正)
Gamma 校正对图像亮度进行非线性映射,以匹配人眼对亮度的非线性感知和显示设备的响应特性。标准 Gamma 值为 2.2。
- 查找表(LUT): 通常使用 256 或 1024 点的 LUT 实现。
- 动态范围: 调整 Gamma 曲线可改变暗部/亮部细节的可见度。
3.3.7 Sharpen(锐化)
Sharpen 模块通过增强高频分量(边缘、纹理)提升图像清晰度。常用算法包括非锐化掩模(Unsharp Mask)和拉普拉斯算子。
- 锐化强度: 控制边缘增强的幅度,过强会产生振铃伪影。
- 噪声抑制: 锐化前通常进行降噪处理,避免放大噪声。
- 边缘阈值: 只对梯度超过阈值的区域进行锐化,保护平坦区域。
3.4 Pipeline 模块依赖关系
ISP Pipeline 的模块顺序不可随意调换,因为前级模块的输出质量直接影响后级模块的效果。下图展示了模块间的依赖关系与数据流方向。
3.5 性能调优要点
在 RAW 数据采集场景中,ISP Pipeline 的每个模块都可能成为性能瓶颈。以下是针对各模块的调优建议:
| 模块 | 潜在瓶颈 | 调优策略 |
|---|---|---|
| DPCC | 动态坏点检测计算量大 | 缩小检测窗口、降低检测频率、优先使用静态坏点表 |
| BLC | 通道独立补偿增加内存访问 | 合并通道处理、使用查表法替代实时计算 |
| LSC | 增益网格插值消耗带宽 | 降低网格分辨率、使用硬件插值单元 |
| AWB | 色温统计需要全图扫描 | 降低统计窗口采样率、使用硬件统计模块 |
| CCM | 矩阵乘法延迟 | 使用定点数运算、SIMD 指令优化 |
| Gamma | LUT 访问延迟 | 预计算 LUT、使用硬件 LUT 引擎 |
| Sharpen | 卷积运算计算量大 | 降低卷积核大小、使用分离卷积、硬件加速 |