ISP Image Signal Processing Pipeline 技术文档
一、概述
ISP (Image Signal Processor) 是相机系统中将 RAW 传感器数据转换为人类可观赏图像的核心硬件/软件 Pipeline。其质量直接决定最终图像的颜色、噪声、清晰度、动态范围等关键指标。
本文档聚焦于 ISP 调试(Tuning) 视角,涵盖每个模块的原理、调试参数、典型问题及 Debug 方法。
二、完整 ISP Pipeline 框图
Sensor RAW (Bayer)
│
├── 1. Black Level Compensation (BLC)
├── 2. Linearization (线性化)
├── 3. Lens Shading Correction (LSC)
├── 4. Dead Pixel Correction (DPC)
├── 5. Green Equilibrium / Cross-talk Reduction
├── 6. Digital Gain (DG)
├── 7. Denoise 1 (前降噪 - NR1)
├── 8. AWB (Auto White Balance) Gain
├── 9. Demosaic (去马赛克 / CFA Interpolation)
│
└── RGB Domain
│
├── 10. Color Correction Matrix (CCM)
├── 11. Gamma Correction
├── 12. Tone Mapping (Global / Local)
├── 13. Denoise 2 (后降噪 - NR2 亮度/色度)
├── 14. Sharpening / Edge Enhancement
├── 15. Saturation / Hue / Brightness Control
│
└── YUV Domain (or RGB output)
│
├── 16. Contrast Enhancement
├── 17. Chroma Suppression
├── 18. Skin Tone Protection
└── 19. JPEG / H264 Encoder
三、各模块详解
1. Black Level Compensation (BLC)
目的:去除 Sensor 的暗电流偏移,使纯黑场景下像素值为 0。
原理:
- Sensor 输出 RAW 数据通常带有固定偏移量(如 64@10bit,或 1024@14bit)。
- BLC 将每个像素减去该偏移值:
Pixel_out = Pixel_raw - BLC_offset
调试参数:
| 参数 | 说明 |
|---|---|
| R/Gr/Gb/B 通道 BLC 偏移 | 各通道可单独设置(sensor 模拟增益不同通道偏移可能不同) |
| BLC 随增益补偿 | 高增益时暗电流放大,需动态调整 |
常见问题:
- BLC 不准 → 低光下偏色(暗部偏绿/偏紫)
- BLC 偏移过低 → 暗部被裁为负值后再 clamp → 细节丢失
Debug 方法:
- 拍摄全黑场景(盖上镜头盖),检查 RAW 各通道均值是否接近 0
- 使用 histogram 观察暗部是否有被截断的痕迹
2. Linearization (线性化)
目的:某些 Sensor(如 HDR sensor)使用非线性响应模式,需要反量化回线性域。
调试要点:
- 需要 sensor 提供的响应曲线 LUT
- 线性化后数据必须严格线性,否则后续 CCM 和白平衡不准
3. Lens Shading Correction (LSC)
目的:补偿镜头光学造成的四周亮度衰减(Lens Shading / Vignetting)和颜色偏差(Color Shading)。
原理:
- 用 2D 增益网格(Mesh)乘以 RAW 值:
P_out = P_in * Gain(x, y) - 通常分 Luma Shading(亮度)和 Color Shading(R/B 通道相对 G 的衰减)
调试参数:
| 参数 | 说明 |
|---|---|
| Mesh 网格尺寸 | 常见 3×3, 5×5, 9×9, 17×17 |
| R/G/B 各通道增益表 | 不同色通道独立 LUT |
| 插值方式 | Bilinear / Bicubic |
| Shading 随 Zoom 变化 | 变焦镜头需多组 LUT 插值 |
常见问题:
- 过校正 → 四周发亮 / 出现彩色光环
- 欠校正 → 四周偏暗 / 四角偏色(角落偏绿最常见)
Debug 方法:
- 拍摄均匀灰卡(D50 光源),检查 RAW 四角与中心的 R/G/B 比例
- 用 Flat-Field 分析工具(如 Imatest / IE)自动生成校正表
- 输出 shading 校正前后的亮度截面图(Line Profile)
4. Dead Pixel Correction (DPC)
目的:修复 Sensor 的坏点(Stuck Pixel / Dead Pixel)。
类型:
- Static DPC:出厂标定的固定坏点表
- Dynamic DPC:运行时检测并修复
常用算法:
- 中值滤波(Median Filter)
- 相邻像素插值(考虑边缘方向)
- 梯度检测法(避免误检边缘)
调试参数:
| 参数 | 说明 |
|---|---|
| 检测阈值 | 像素与邻域的差异多大视为坏点 |
| 校正强度 | 替换比例 (0~1) |
| 保护边缘梯度阈值 | 防止把真实边缘当成坏点 |
常见问题:
- 阈值过低 → 正常像素被误修 → 模糊
- 阈值过高 → 坏点残留
- 动态 DPC 在 ISO 不同时需不同阈值
5. Green Equilibrium / Cross-talk Reduction
目的:平衡 Bayer 中 Gr 和 Gb 通道差异(由于 sensor 像素布局不对称导致 Gr/Gb 响应不同)。
调试方法:
- 拍摄均匀灰卡,调整 Gr/Gb gain 使两者平衡
- 有些平台用 LUT 做像素级微调
6. Digital Gain (DG)
目的:应用 AWB 和 AE 的增益到 RAW 数据上。
注意:
- 增益会放大噪声 → 需拆分模拟增益(AG) 和数字增益(DG)
- 优先提高模拟增益(噪声低于数字增益)
- DG 通常限制最大值(如 4× ~ 8×)
7. Pre-denoise (NR1)
目的:在 demosaic 之前减少 RAW 域的噪声,防止噪声被 demosaic 放大。
常用算法:
- 双边滤波(Bilateral Filter)
- 非局部均值(NLM)
- 小波降噪
调试参数:
| 参数 | 说明 |
|---|---|
| 降噪强度 (Str) | ISO 分档设定 |
| 边缘保护阈值 | 保护细节不过度平滑 |
| 滤波窗口大小 | 大窗口去噪强但细节损失大 |
8. Auto White Balance (AWB)
目的:使白色物体在任何光源下呈现白色。
原理:
- 估计光源色温,施加 R/G/B 增益使 R=G=B 在灰色区域
Gain_R = G_avg / R_avg,Gain_B = G_avg / B_avg
常见算法:
- Gray World(灰世界法)
- White Patch(白点法)
- Gamut Mapping(色域映射法)
- 色温曲线法(CCT Curve / Planckian Locus)
调试参数:
| 参数 | 说明 |
|---|---|
| AWB 色温区间 | 2500K ~ 7500K 典型 |
| R/G 和 B/G 目标值 | 各色温下 gray 区域的 R/G、B/G 比值 |
| AWB 收敛速度 | 防止快速切换场景时色温突变 |
| 颜色权重 | 对特定颜色(如肤色)降低权重 |
| 锁定机制 | 低光下锁定 AWB 防止漂移 |
Debug 方法:
- 拍摄各色温下的灰卡(D65、D50、CWF、A 光),检查 R/G、B/G 比值
- 检查不同光源下中性色区域的色差 ∆C
- 检查跳变场景(从室内到室外)的收敛速度
9. Demosaic (CFA Interpolation)
目的:从 Bayer 模式恢复出每个像素的完整 RGB 值。
常用算法:
| 算法 | 质量 | 计算量 |
|---|---|---|
| Bilinear | 低 | 极低 |
| Edge-directed | 中 | 低 |
| AHD (Adaptive Homogeneity-Directed) | 高 | 中 |
| ML-based (NN) | 极高 | 高 |
调试参数:
| 参数 | 说明 |
|---|---|
| 边缘方向检测阈值 | 影响锯齿(Zipper) 和伪色(False Color) |
| 色差平滑强度 | 抑制紫边/Purple Fringing |
常见问题:
- Zipper Artifact(锯齿状边缘)
- False Color(伪色,尤其是高频纹理区域)
- Aliasing(摩尔纹)
10. Color Correction Matrix (CCM)
目的:将 Sensor 的色彩空间映射到标准色彩空间(sRGB / BT.709)。
原理:
[R'] [a11 a12 a13] [R]
[G'] = [a21 a22 a23] * [G]
[B'] [a31 a32 a33] [B]
调试参数:
| 参数 | 说明 |
|---|---|
| CCM 3×3 系数矩阵 | 各光源下不同(如 D65 一组,A 光一组) |
| 饱和度调整因子 | 在 CCM 之后乘饱和度系数 |
| CCM 切换点 | 色温区间之间的插值策略 |
常见问题:
- CCM 过强 → 颜色过于饱和,噪声放大
- CCM 不准 → 色偏,尤其是记忆色(肤色、天空、草地)偏差
- 不同光源下颜色不一致
Debug 方法:
- 拍摄 24 色卡(X-Rite ColorChecker),计算各色块 ∆E(∆E < 3 为优秀)
- 使用 Imatest ColorCheck 或 IE 分析 CCM 精度
- 检查肤色是否自然(尤其在混合光源下)
11. Gamma Correction
目的:将线性域数据映射到感知均匀域(sRGB Gamma ≈ 2.2),同时压缩暗部/扩展亮部以适配 8bit 编码。
典型曲线:
- sRGB Gamma:
Vout = Vin^(1/2.2)线性段 + 指数段 - 自定义 Gamma LUT:可调节暗部对比度
调试参数:
| 参数 | 说明 |
|---|---|
| Gamma 值 | 1.8~2.6 可调 |
| 暗部斜率 | 影响暗部可见度 |
| Clip 点 | 高光裁切阈值 |
12. Tone Mapping (HDR 处理)
目的:压缩高动态范围场景以适应低动态范围输出设备。
类型:
- Global Tone Mapping:整图一条曲线
- Local Tone Mapping:基于局部区域自适应(Retinex 等)
常用算法:
- Reinhard 全局映射
- Photographic Tone Reproduction
- 直方图均衡化/自适应直方图均衡化 (CLAHE)
调试参数:
| 参数 | 说明 |
|---|---|
| 曝光值 (EV) 偏移 | 整体亮度调整 |
| 压缩强度 | HDR 压缩比 |
| 局部对比度增强强度 | 防止 halo 伪影 |
Debug 方法:
- 拍摄高动态场景(如窗边逆光),观察暗部/亮部细节恢复
- 检查 Halo 伪影(高对比边缘处光晕)
13. Post-denoise (NR2)
目的:RGB/YUV 域的亮度降噪(Luma NR)和色度降噪(Chroma NR)。
关键区别:
- Luma NR:保留边缘,去除亮度噪声(Grain)
- Chroma NR:去除色斑(Color Blotches),可做较强处理
常用算法:
- 3D NR(多帧时空降噪)→ 运动检测是关键
- 2D NR(单帧空域降噪)
- 边缘保护降噪(EPD / Bilateral)
调试参数:
| 参数 | 说明 |
|---|---|
| Luma NR 强度 | ISO 分档 |
| Chroma NR 强度 | 通常比 Luma 更强 |
| 边缘保护阈值 | 低阈值保护细节 |
| 时域滤波权重 | 多帧融合系数 |
| 运动掩码 | 运动区域降噪减弱 |
常见问题:
- 天空等高亮区域的 Color Noise 残留
- 低光下过度降噪导致 “塑料感”
- 运动拖影(多帧 NR 未做好运动补偿)
14. Sharpening / Edge Enhancement
目的:补偿光学和降噪造成的清晰度损失。
常用算法:
- Unsharp Mask (USM):
Sharp = Orig + alpha * (Orig - Blurred) - Coring:抑制小幅度噪声被当边缘增强
- 多尺度增强(Laplacian Pyramid / DOG)
调试参数:
| 参数 | 说明 |
|---|---|
| Sharpening 强度 | ISO 分档(高 ISO 时降低锐化) |
| Coring 阈值 | 低于此值不锐化(防噪声放大) |
| 边缘 Overshoot 限制 | 防止白边/黑边 (Overshoot/Undershoot) |
| 锐化半径 | 小半径锐化细节,大半径锐化轮廓 |
常见问题:
- Overshoot(边缘白边/黑边)
- 噪声被误锐化(尤其是高 ISO)
- 锐化不均匀(某些区域过锐,某些模糊)
15. Saturation / Hue / Brightness Control
目的:最终颜色调校,满足视觉偏好。
调试参数:
| 参数 | 说明 |
|---|---|
| Global Saturation | 整体饱和度 |
| Per-channel Hue | 各色相角度微调 |
| Skin Tone Protection | 肤色区域降低饱和度调整 |
| Memory Color 增强 | 天空更蓝、草地更绿、肤色更自然 |
16. Contrast Enhancement
目的:增强图像对比度,改善视觉通透感。
常用方法:
- S 曲线(Tone Curve)
- 直方图均衡化(HE / AHE / CLAHE)
- Local Contrast Enhancement
调试参数:
| 参数 | 说明 |
|---|---|
| S-curve 节点 | 暗部/中间调/亮部分别调整 |
| 对比度强度 | 防过度处理导致灰阶断裂 |
| 暗部提升 | 改善暗部细节(同时注意噪声) |
17. Chroma Suppression
目的:抑制低亮度区域的色度噪声(防止彩色噪点)。
原理:
- 根据亮度 (Y) 值动态降低 Cb/Cr 增益
- 低亮度 → 强抑制;高亮度 → 弱抑制/不抑制
调试参数:
| 参数 | 说明 |
|---|---|
| 抑制阈值 | 在哪个亮度以下开始抑制 |
| 抑制斜率 | 抑制强度随亮度下降的变化率 |
18. Skin Tone Protection
目的:确保肤色自然,不因降噪/饱和度/锐化等处理而失真。
常用方法:
- 在 YUV/HSL 空间中划定肤色区域
- 对该区域降低降噪强度、降低饱和度调整幅度
- 肤色检测 → 生成权重图 → 应用保护
四、3A 算法 (AE / AWB / AF)
4.1 Auto Exposure (AE)
| 参数 | 说明 |
|---|---|
| Target Brightness | 目标亮度 (Y target) |
| AE 收敛速度 | 防止亮暗切换时闪烁 |
| 曝光模式 | 优先光圈/快门/增益 |
| Flicker 检测 | 50Hz/60Hz 防频闪 |
| 权重矩阵 | 不同区域测光权重 |
4.2 Auto Focus (AF)
| 类型 | 说明 |
|---|---|
| CDAF (Contrast Detection) | 计算对比度,找到峰值位置 |
| PDAF (Phase Detection) | 用相位差传感器快速测距 |
| Hybrid AF | CDAF + PDAF 混合 |
4.3 Auto White Balance (AWB)
五、调试流程与方法
5.1 标准调试流程
阶段 1:RAW 域基础调试
├── BLC → 检查全黑 RAW 各通道均值
├── LSC → 灰卡检查均匀性
├── DPC → 坏点标定
└── NR1 → Raw 域降噪参数
阶段 2:颜色调试
├── AWB → 各光源下灰卡白平衡精度
├── CCM → 24 色卡 ∆E 优化
├── Gamma → 亮度映射曲线
└── Saturation/Hue → 视觉调校
阶段 3:画质精细调校
├── NR2 → 各 ISO 下噪声/细节平衡
├── Sharpening → MTF 调校
├── Tone Mapping → HDR 场景
└── Skin Tone → 肤色保护
阶段 4:场景验证
├── 室内/室外/夜景/逆光
├── 运动场景(拖影评估)
└── 极端光源(混合光/低光)
5.2 常用调试工具
| 工具 | 用途 |
|---|---|
| Imatest Master | MTF / SNR / Color Check / uniformity |
| DxO Analyzer | 全流程画质分析 |
| Image Engineering (IE) | 标准化测试图表分析 |
| Chromeleon | 显示屏校色/分析 |
| ISP 厂商调试工具 | Qualcomm Chromatix / Mediatek IA / Amlogic / … |
六、常见 Debug 问题及排查方向
| 问题现象 | 排查模块 | 原因方向 |
|---|---|---|
| 暗部偏绿/偏紫 | BLC / AWB | BLC 偏移不准 / AWB 低光漂移 |
| 四角偏暗 | LSC | Shading 补偿不足 |
| 四角偏色(角落绿) | LSC Color Shading | Color Shading 表不够密 |
| 颜色整体偏淡 | CCM / Saturation | CCM 矩阵色彩分离不够 / 饱和度低 |
| 颜色过于饱和 | CCM / Saturation | CCM 系数过大 |
| 低光彩色噪点 | NR2 Chroma / Chroma Suppression | 色度降噪强度不够 |
| 天空水波纹色块 | Demosaic / NR2 | 色度降噪不足 / demosaic 伪色 |
| 边缘白边/黑边 | Sharpening | Overshoot 限制不够 |
| 人脸发黄/发红 | AWB / CCM / Skin Tone | AWB 不准 / CCM 肤色分离不好 |
| 运动拖影 | NR2 3DNR / 曝光时间 | 运动掩码强度不够 / 曝光太长 |
| JPEG 压缩条纹 | Chroma Suppression / Encoder | 色度信息未做抑制直接压缩 |
| 高亮过曝 | Tone Mapping / AE | HDR 压缩不够 / AE target 太高 |
| 暗部提亮后噪声爆炸 | NR1 / NR2 / Gamma | 降噪强度不足 / Gamma 抬升暗部噪声 |
| 混合光源下偏色严重 | AWB / CCM | 多光源 AWB 决策不准 / CCM 插值不连续 |
七、关键 KPI 指标
| 指标 | 描述 | 优秀值 |
|---|---|---|
| ∆E (Color Accuracy) | 24 色卡平均色差 | < 3 |
| MTF50 (Sharpness) | 调制传递函数 50% 处 LP/PH | > 2000 (取决于 sensor) |
| SNR (Signal-Noise Ratio) | 信噪比 | > 40dB @ 100 lux |
| Shading Uniformity | 四角 vs 中心亮度比 | > 90% |
| AWB Accuracy (∆C) | 中性色色差 | < 0.02 (u’v’) |
| Dynamic Range | 动态范围 | > 60dB (HDR > 100dB) |
八、ISP Pipeline 调试核心原则
- 域的顺序不可逆:RAW 域的处理必须在 demosaic 之前完成,RGB 域的 CCM/Gamma 必须在 YUV 域处理之前
- 噪声和细节的平衡:降噪和锐化互为逆操作,需要在各个 ISO 下找到最优平衡点
- 先硬件后软件:模拟增益优先于数字增益,光学校正优先于算法补偿
- 光源分治:不同色温/光照条件需独立调优,插值过渡需平滑
- 记忆色优先:肤色、天空、草地的调校优先级高于纯客观指标
- 端到端验证:单个模块最优不意味着全局最优,需要反复迭代全局 Pipeline
更多推荐

所有评论(0)