ISP Pipeline RAW→YUV:从Sensor RAW到用户可见画面的每一级处理
ISP Pipeline RAW→YUV从Sensor RAW到用户可见画面的每一级处理Sensor 输出的 RAW 数据距离人眼能看懂的图像中间隔着十几级 ISP 硬件处理单元。这篇不讲ISP 是什么这种入门概念直接从 Pipeline 的每一级往下挖——数据流怎么走、每一级做了什么事。ISP Pipeline 的宏观拓扑RAW 数据从 MIPI CSI-2 进入 ISP经过的是一个固定拓朴但可bypass的流水线。大体分为三段RAW域 → RGB域 → YUV域每一域内部有 3-5 级处理单元级与级之间通过 line buffer / tile buffer 连接而不是整帧 buffer——这是 ISP 区别于 GPU 后处理的关键特征ISP 是 streaming 架构不是 frame-based 架构。第一段RAW 域前处理BLCBlack Level CorrectionSensor 在无光条件下输出的 RAW 值不是 0——因为有暗电流。BLC 做的事每个 channel 减去一个 offset。寄存器级操作R、Gr、Gb、B 四条 channel 各自独立配置 offset通常 64-256 级有些 ISP 支持 per-column BLC逐列校正对卷帘 shutter 的暗电流不均匀补偿有用。DPCDefect Pixel CorrectionSensor 晶圆制程不可能做到每个像素完美。坏点分两类Static bad pixel出厂标定写入 OTP 或 mapped tableDynamic bad pixel运行中检测用邻居像素中值替换检测算法当前像素值与周围 8 邻域的统计值比较超出 threshold 就标记为坏点。threshold 值直接写寄存器跟 sensor gain 联调——gain 高了噪点大了threshold 要跟着抬否则好像素被误杀。LSCLens Shading Correction镜头中心透光率 边缘透光率画面四角偏暗luma shading还可能偏色color shading。校正方式预先拍一张均匀光照的灰卡生成一张 gain mesh 表通常 17×13 或 33×25 个网格点运行时按像素坐标插值乘以 gain。ISP 内部维护一个Gain LUT每个网格点的 R、G、B gain 分别存储。插值方式用 bilinear 就够了——bicubic 的精度提升在 LSC 场景下肉眼看不出来但带宽翻倍。AWB GainRAW域白平衡严格来说 AWB 在 RAW 域做的是gain 补偿——把 R、B channel 乘一个系数让灰卡在 RAW 域就趋近中性。G channel 通常不动1.0因为 Bayer 格式中 G 像素数量是 R/B 的两倍信噪比最高。R_gain G_avg / R_avgB_gain G_avg / B_avg。第二段RGB 域的重头戏——去噪、WDR、DemosaicDemosaicBayer 插值每个像素只有一种颜色R/G/B要变成每个像素都有三种颜色。最简单的双线性插值会产生明显的 zipper artifact拉链效应和 false color。商用 ISP 用Edge-directed或AHDAdaptive Homogeneity-Directed算法先在水平和垂直方向分别插值 G channel因为 G 信息最丰富用色差恒定原理R-G 差值在整个局部区域近似不变恢复 R 和 BAHD 的寄存器级关注点梯度计算的窗口大小3×3 vs 5×5、色差低通滤波的 cutoff 频率。窗口大了边缘模糊小了 false color 压不住。NR2D/3D 去噪这是一个 ISP 里最吃 tuning 功夫的模块。2D NR空域去噪对单帧做 bilateral filter 或 NLMnon-local means。参数Sigma_rrange sigma像素值域差异容忍度Sigma_ddomain sigma空间距离权重3D NR时域去噪前后帧做 motion-compensated temporal filter。运动大的区域2D NR 权重加大temporal 权重减小否则拖影静止区域temporal 权重加大信噪比翻倍这就是为什么低帧率下 3D NR 效果好——帧间差异小temporal filter 可以开得更强。寄存器级motion threshold是最敏感的——threshold 设低了运动物体拖尾设高了纯静态场景噪点压不住。一般分区域配置ROI背景区域 motion threshold 设高前景 ROI 设低。WDRWide Dynamic Range典型场景逆光人像、出入口车牌、隧道入口。多帧曝光融合DOL HDRSensor 出三帧短/中/长曝光ISP 合成一帧高动态图像。关键问题对齐Registration三帧间有运动不做对齐会出现 ghost artifact融合权重Fusion Weight每帧每个像素的权重根据曝光质量和 motion 检测决定DOL HDR 的寄存器参数Motion threshold超过这个值的像素被认为是 motion优先用短曝光帧的数据Fusion curve slope过渡区的斜率决定了 HDR 合成的平滑度Exposure ratio短/中/长曝光的曝光时间比通常 1:4:16 或 1:8:64另一个实现是Digital WDR行级单帧 WDRSensor 一行内不同 pixel 用不同曝光时间ISP 级不做多帧对齐但会引入 resolution 损失。低成本方案如某些海思低端芯片在用。第三段YUV 域后处理Gamma 校正将 linear RAW 转到 non-linear 空间适配显示设备和人眼感知特性。Gamma LUT256-entry8-bit或 1024-entry10/12-bit每个 entry 是输出值。曲线接近 power functionγ≈0.45。锐化Sharpness/Edge Enhancement用 unsharp mask LTI亮度瞬态改善 CTI色度瞬态改善。LTI 做亮度边缘的 overshoot 和 undershoot让边缘看起来更锐利。CTI 做色度边缘的过渡补偿让颜色边界更干净。寄存器参数Undershoot/overshoot 限幅防止过度锐化产生的 white ring / black ringCoring降噪抑制低于某个幅度的 edge 不处理防止锐化放大噪声LTI/CTI 分离开关亮度和色度分别配参数CSCColor Space ConversionYUV 域包含一个色彩空间转换矩阵YCbCr 从 BT.601/BT.709/BT.2020 之间的转换。矩阵系数写死在 ISP 固件或由驱动写入寄存器。ISP Pipeline 的数据流拓扑AE/AWB/AF 闭环3A 不是 ISP 的一级而是 ISP 的大脑3AAuto Exposure / Auto White Balance / Auto Focus是跨 ISP pipeline 的控制回路不是固定的某一级硬件单元。AE 控制环Sensor 输出的 RAW 数据经过 BLC 后ISP 内部有一个AE statistics engine——把画面分成 M×N 个窗口每个窗口统计平均亮度Y 分量、饱和像素比例。AE 算法根据这些统计值调整Sensor 的曝光时间exposure timeSensor 模拟增益analog gainISP 数字增益digital gain通常在 RAW 域的最后一级注意数字增益每提升 6dB信噪比下降 6dB——所以 AE 策略一定是先加曝光时间再加模拟增益最后才动数字增益。AWB 控制环同样从 RAW 域取 R/G/B 统计划窗统计色比R/G, B/G。AWB 算法在色温曲线上找最合理的色温点算出 R_gain 和 B_gain 反馈到 AWB Gain 单元。难点混合色温场景窗口内同时有日光和荧光灯单一色温模型搞不定。需要分区域 AWB不同 ROI 独立算色温按区域加权。AF 控制环从 Demosaic 后的 RGB 域取高频分量统计——对比度最大 合焦。常用的焦点评价函数Sobel 梯度幅值在 ROI 内的累加值FV, Focus Value。AF 策略三件套CDAF对比度检测爬山算法找 FV 峰值PDAF相位检测Sensor 内置 PD pixel 给出相位差一步到位Hybrid AFPDAF 快速接近 CDAF 精准收敛ISP Pipeline Tuning 的核心矛盾整个 ISP pipeline 就是一个tradeoff 迷宫参数调整收益代价去噪强度↑画面干净细节丢失、边缘模糊锐化强度↑画面锐利噪声放大、ringing artifactWDR 合成范围↑动态范围大motion ghost、噪声增加AE 目标亮度↑暗区可见亮区饱和、运动模糊3D NR 帧数↑SNR 提升motion 拖尾、memory 压力好的 ISP Tuning是在每对矛盾中找到场景最优解。这也是为什么同一颗芯片用在同一颗 Sensor 上不同厂商调出来的画质能差两个档次。硬件实现注记ISP pipeline 的硬件实现有两种主流架构Line-based streaming主流 SoC 方案每处理单元只缓存几行 pixelline buffer延迟 几行时间~几十 μs面积小、功耗低瓶颈需要所有单元的 line buffer 大小对齐最宽的处理窗口Tile-based processing高性能 ISP把帧切成 64×64 或 128×128 的 tile每 tile 独立处理允许更复杂的算法如 NLM延迟 若干 tile 时间~ ms 级面积更大但画质上限更高您感兴趣的话关注公众号。下一篇准备VI/VPSS 视频输入与预处理子系统讲讲如何把 ISP 输出的 YUV 分发到编码/显示/存储通路以及 VPSS 的缩放/裁剪/旋转硬件加速。