3. ISP Pipeline架构与数据流
Bosch 车载摄像头的 ISP 并不是一个“黑盒”,而是一条由多个硬件处理单元串联而成的流水线。理解这条流水线的模块划分、RAW 域与 YUV 域的处理顺序、各级延迟与带宽约束,是后续做图像质量调优、寄存器配置和问题定位的基础。本节以 Bosch 典型车载 ISP(如围绕 CV2/CV3 系列 SoC 的 ISP 子系统)为例,说明其架构与数据流。
一、RAW 域与 YUV 域的分界
ISP 流水线最核心的一条分界线是 RAW 域与 YUV 域。传感器通过 MIPI CSI-2 输出的是 Bayer 格式 RAW 数据,每个像素只有一个颜色分量(R、Gr、Gb 或 B),位深通常为 10/12/14/16 bit。RAW 域处理的目标是“把传感器原始信号还原成线性、干净、白平衡正确的 RGB 数据”,而 YUV 域处理的目标是“把 RGB 转换成适合人眼观看、适合编码与显示的亮度/色度数据”。
RAW 域典型模块顺序为:黑电平校正(BLC)→ 镜头阴影校正(LSC)→ 坏点校正(DPC)→ 去噪(RAW NR)→ 自动白平衡增益(AWB Gain)→ 去马赛克(Demosaic)→ 颜色校正矩阵(CCM)→ Gamma。其中 Demosaic 是 RAW 域与 RGB 域的转换点,CCM 与 Gamma 之后数据已接近 YUV 域。YUV 域典型模块顺序为:RGB→YUV 转换 → 色度降采样(4:2:2/4:2:0)→ 锐化/边缘增强 → 亮度/对比度调整 → 色调/饱和度调整 → 输出格式化。
需要特别注意的是:3A(AE/AWB/AF)统计量通常在 RAW 域采集,因为统计必须基于线性、未 Gamma 的数据才能正确反映真实曝光与色温。Bosch ISP 一般会在 BLC 之后、Demosaic 之前设置统计引擎(Statistics Engine),把直方图、均值、白点分布等写入寄存器供固件读取。
二、流水线延迟与带宽约束
ISP 流水线是逐行(line-based)处理的,每一级模块通常需要缓存若干行才能完成运算。例如 LSC 需要读取整幅增益表,DPC 需要 3×3 邻域,Demosaic 需要 5×5 邻域,因此单级延迟一般在 1~3 行之间。整条链路从 RAW 输入到 YUV 输出,典型延迟约为 10~30 行。对于 1080p@30fps,一行时间约 1/(30×1125)≈29.6μs,整链延迟约 0.3~0.9ms,这在车载 ADAS 场景中通常可接受,但在环视拼接等对同步要求高的应用中必须纳入考虑。
带宽方面,以 1920×1080、12bit RAW、30fps 为例,单通道 RAW 带宽约为 1920×1080×12×30 ≈ 746 Mbps。经过 Demosaic 后变为 RGB,若按 16bit 处理,带宽升至约 995 Mbps。因此 ISP 内部通常采用行缓冲 + 片上 SRAM 的方式减少对 DDR 的访问,只有需要跨帧或大范围邻域运算的模块(如 3D 降噪、LSC 大表)才会访问外部内存。带宽估算的实用公式为:带宽 = 宽 × 高 × 位深 × 帧率 × 通道数,配置寄存器前应先用该公式核对 MIPI 与 DDR 余量。
三、硬件加速单元与寄存器接口
Bosch ISP 中,BLC、LSC、DPC、Demosaic、CCM、Gamma 等均由专用硬件加速单元(HW Accelerator)实现,固件只负责计算参数并写入寄存器。典型寄存器接口包括:
- 模块使能寄存器:如
ISP_BLC_EN、ISP_LSC_EN,用于旁路或开启某级。 - 参数寄存器:如
ISP_BLC_OFFSET_R/Gr/Gb/B、ISP_CCM_00~22(3×3 矩阵)、ISP_GAMMA_LUT[i]。 - 统计寄存器:如
ISP_STAT_HIST[i]、ISP_STAT_MEAN,供 3A 算法读取。 - 状态/中断寄存器:如
ISP_FRAME_DONE、ISP_ERR_STATUS,用于帧同步与异常检测。
固件配置的一般流程是:先写参数寄存器,再写使能寄存器,最后等待 ISP_FRAME_DONE 中断确认生效。若在帧传输过程中修改参数,可能造成当前帧部分行使用旧参数、部分行使用新参数,出现“撕裂”现象,因此参数更新通常安排在帧消隐期(vertical blanking)完成。
四、调试数据抓取方法
调试 ISP 时,最有效的手段是抓取各节点的中间数据。Bosch ISP 一般提供以下抓取方式:
- RAW dump:在 BLC 之后、Demosaic 之前抓取,保存为
.raw文件,用工具查看 Bayer 图案与黑电平是否正确。 - 统计量读取:通过 I2C/SPI 读取直方图与均值寄存器,判断曝光与白平衡收敛情况。
- YUV 输出抓取:在 ISP 输出端抓取 YUV422 数据,用 YUV 查看器检查锐化、色度、Gamma 效果。
- 寄存器快照:在异常帧触发时保存全部 ISP 寄存器,用于对比正常帧与异常帧的配置差异。