ISP Pipeline 基础:从 RAW 到 YUV 的三大域处理
做图像质量调优,第一件事就是搞懂 ISP Pipeline。说白了,就是搞清楚一张 RAW 图是怎么变成你屏幕上那张漂亮照片的。
我个人习惯把 ISP 分成三个域:RAW 域、RGB 域、YUV 域。每个域干的事不一样,踩的坑也不一样。今天咱们就一个一个过。
RAW 域处理:一切的基础
RAW 域是 ISP 的第一站。这时候数据还是 Bayer 格式,每个像素只记录一种颜色分量。说白了,就是传感器最原始的「底片」。
黑电平校正
黑电平校正,听着玄乎,其实很简单。传感器在完全无光的情况下,输出并不是 0,而是有一个底噪值。这个值就是黑电平。
我遇到过一台相机,暗部偏紫。查了半天,发现是黑电平校正没做对。R 通道和 B 通道的底噪不一样,导致暗部色偏。
去噪(原始域)
RAW 域去噪,我把它叫「保命去噪」。这时候去噪,能最大程度保留细节。一旦进了 RGB 域,噪声和信号就纠缠在一起,再想干净地去掉就难了。
常用的方法有:
- 空域去噪:双边滤波、非局部均值。适合去除固定模式噪声。
- 时域去噪:多帧融合。适合运动场景,但要注意鬼影。
- 变换域去噪:小波阈值。适合保留纹理。
去马赛克
去马赛克,就是把 Bayer 格式插值成完整的 RGB 图像。这一步做不好,后面全白搭。
常见的插值算法:
| 算法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 双线性插值 | 速度快 | 边缘锯齿严重 | 低端摄像头 |
| 边缘导向插值 | 边缘平滑 | 计算量大 | 手机相机 |
| 自适应插值 | 细节保留好 | 容易产生伪色 | 专业相机 |
| 深度学习插值 | 效果最好 | 功耗高、延迟大 | 旗舰机型 |
我个人习惯用边缘导向插值。效果和性能的平衡点最好。不过要注意,插值后一定要做伪色抑制,不然彩色边缘会让你头疼。
RGB 域处理:颜色的灵魂
进了 RGB 域,数据变成全彩色了。这时候主要干三件事:白平衡、颜色校正、Gamma。
白平衡
白平衡,说白了就是让白色物体在任何光源下都看起来是白的。人眼会自动适应,但相机不会。
常用的方法:
- 灰度世界法:假设场景平均是灰色。简单,但遇到大面积单色场景就翻车。
- 完美反射法:找场景中最亮的点作为白色参考。容易受高光影响。
- 色温估计法:通过 R/G、B/G 比值估计色温。我比较推荐这个,稳定。
颜色校正矩阵
颜色校正矩阵,就是用一个 3x3 的矩阵把相机 RGB 映射到标准 RGB。为什么需要这个?因为传感器的色彩响应和人眼不一样。
举个例子:
// 典型的颜色校正矩阵
[ R_out ] [ 1.8 -0.5 -0.3 ] [ R_in ]
[ G_out ] = [ -0.2 1.6 -0.4 ] [ G_in ]
[ B_out ] [ -0.1 -0.3 1.4 ] [ B_in ]
这个矩阵怎么来的?拍色卡,然后做最小二乘拟合。我建议至少用 24 色卡,覆盖常见色域。
Gamma 校正
Gamma 校正,本质上是做亮度映射。人眼对暗部变化敏感,对亮部不敏感。Gamma 曲线就是把亮部压缩、暗部拉伸。
标准 Gamma 2.2 曲线:
// Gamma 2.2 校正公式
L_out = L_in ^ (1/2.2)
但实际调优时,我很少用纯 2.2。为什么?因为不同显示设备的 Gamma 不一样。我一般会做分段 Gamma,暗部用 2.4,亮部用 2.0,中间平滑过渡。
YUV 域处理:最后的打磨
YUV 域,是 ISP 的最后一站。这时候数据已经转成亮度和色度分离的格式。Y 通道管细节,UV 通道管颜色。
边缘增强
边缘增强,就是让图像看起来更锐。常用的方法有 Unsharp Mask 和拉普拉斯算子。
我踩过最大的坑,就是边缘增强过度。拍出来的照片,边缘有一圈白边,俗称「光晕」。后来我学乖了,边缘增强只做 1-2 个像素的半径,强度控制在 0.3 以内。
降噪(YUV 域)
YUV 域的降噪,和 RAW 域不一样。这时候噪声已经和信号混在一起了,所以降噪要更小心。
- Y 通道降噪:主要做亮度降噪。用双边滤波,保留边缘。
- UV 通道降噪:主要做色度降噪。用中值滤波,去除彩色噪点。
色彩管理
色彩管理,就是把 YUV 数据映射到目标色域。比如 sRGB、DCI-P3、BT.2020。
这一步容易出问题的是色域裁剪。比如你把 DCI-P3 的数据硬塞进 sRGB,超出色域的颜色会被裁剪,导致颜色断层。
我建议用软裁剪,把超出色域的颜色映射到边界附近,而不是直接切掉。这样颜色过渡更自然。
小结
ISP Pipeline 的三个域,各有各的脾气。RAW 域保细节,RGB 域定颜色,YUV 域做打磨。每一步都环环相扣,前面错了,后面再怎么调也救不回来。
做调优,我的建议是:先调 RAW 域,再调 RGB 域,最后调 YUV 域。别跳步,也别回头。每一步都确认没问题了,再往下走。
嗯,这一章就到这。记住,ISP 调优没有银弹,只有不断试错和积累经验。