ISP YUV 域之 HueAndSaturation

色调 Hue

hue 的定义

hue 可以理解为占主导地位的纯色颜色,或两种纯色颜色的组合。简单来说,hue 就是颜色的“名字”,人们最常用黄色、橙色等概念来描述一个颜色。 Hue is the color portion of the model, expressed as a number from 0 to 360 degrees.

  • Red: 0 and 60 degrees。
  • Yellow: 61 and 120 degrees。
  • Green: 121 and 180 degrees。
  • Cyan: 181 and 240 degrees。
  • Blue: 241 and 300 degrees。
  • Magenta: 301 and 360 degrees。

色调恒常 Hue constancy

描述一个颜色的三个参数是 hue, lightness, chroma (saturation)。

色调恒常是指,当颜色的 lightness/saturation 改变时,色调的感知(sensation)保持不变。否则就是发生了色调漂移(hue shift)。

Tint = 在白色(或高亮白光)中加入纯色。

Tone = 在灰色(或中等白光)中加入纯色。

Shade = 在黑色(或无光)中加入纯色。

HSV 空间

Saturation

色饱和度是指彩色的纯度,即颜色掺入白光的程度,或指颜色的深浅程度。某彩色掺入的白光越多,其色饱和度就越低;掺入的白光越少,其色饱和度就越高。不掺入白光,即白光为零,则其色饱和度为 100 % ; 全为白光,则其色饱和度为零。

YCbCr 不是一种绝对色彩空间,是 YUV 压缩和偏移的版本。YCbCr 的 Y 与 YUV 中的 Y 含义一致,Cb 和 Cr 与 UV 同样都指色彩,Cb 指蓝色色度,Cr 指红色色度。在应用上很广泛,JPEG、MPEG、DVD、摄影机、数位电视等皆采此一格式。因此一般俗称的 YUV 大多是指 YCbCr。

在 YCbCr 空间来看,Cb 和 Cr 等于 128 时饱和度为 0,图像等效于灰度图。|Cr-128|和|Cr-128|越大则饱和度也越大,计算公式如下,

\[ f(cb, s) = (cb - 128) * s + 128 \]

\[ f(cr, s) = (cr - 128) * s + 128 \]

其中 s 即为饱和度系数,一般可以取 0~2,即允许一定程度的过饱和以增加颜色的鲜艳度。

论上饱和度调整也可以合并在 CCM 或 CSC 矩阵中,即饱和度调整与颜色校正 (CC) 和色彩空间变换 (CSC) 同步完成,所以在一些 ISP 设计中并不单独提供调整饱和度的步骤,这样做的好处是能够节省一个处理步骤,减少一个噪声来源。

合并 CCM、CSC 和饱和度的最终变换矩阵的过程如下,

\[ \begin{pmatrix} Y \\ Cb' \\ Cr' \end{pmatrix} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & s & 0\\ 0 & 0 & s \end{pmatrix} \begin{pmatrix} Y \\ Cb \\ Cr \end{pmatrix} \]

\[ \begin{pmatrix} Y \\ Cb' \\ Cr' \end{pmatrix} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & s & 0\\ 0 & 0 & s \end{pmatrix} \cdot C \cdot M \cdot \begin{pmatrix} R \\ G \\ B \end{pmatrix} \]

\[ \begin{pmatrix} Y \\ Cb' \\ Cr' \end{pmatrix} = D \cdot \begin{pmatrix} R \\ G \\ B \end{pmatrix} \]

其中 Cb,Cr 均已调整为中心值位于 0,C 是从 RGB 空间变换到 YCbCr 空间的变换矩阵,M 为 CCM 矩阵,而 D 就是合并了饱和度和 CCM 的色彩还原矩阵。当系统需要调整饱和度或 CCM 时,控制软件会根据当前的饱和度和 CCM 参数重新计算色彩还原矩阵。

参考文献

https://zhuanlan.zhihu.com/p/98832366
https://zhuanlan.zhihu.com/p/98833038
https://zhuanlan.zhihu.com/p/145178514