为什么我们选择的是色空间是YCbCr呢?
主要的原因是两个: 1.因为YCbCr是线性转换的,如果采用的是Lab等色彩空间,必须进行非线性转换,这样在设计上不容易处理,而线性转换的YCbCr则较为容易。2.我现在总结的调整资料主要都是基于DTV(数字电视)的,而其正是在YCbCr空间内进行的色彩处理。3.还有一点很重要,就是:通过YPbPr接口进行信号传输的时候,由于各个线缆的差异,都需要YCbCr空间进行相关的处理。
注1: 类型‘YCbCr’是用一个线性变换来表示的:
Y = 0.299*R + 0.587*G + 0.114*B
Cb = -0.169*R - 0.331*G + 0.500*B
Cr = 0.500*R - 0.419*G - 0.081*B
YCbCr以极坐标表示,则Chroma和Hue的计算公式如下:
Chroma = Sqrt(Cb^2+Cr^2)
Hue = Arctg(Cr/Cb)
下面我们给出了6种颜色的C与H的值:
| R | G | B | Y | Cb | Cr | C | H | |
Red | 255 | 0 | 0 | 76 | -43 | 128 | 135 | 109 | |
Yellow | 255 | 255 | 0 | 226 | -128 | 21 | 129 | 171 | |
Green | 0 | 255 | 0 | 150 | -84 | -107 | 136 | 52 | |
Cyan | 0 | 255 | 255 | 179 | 43 | -128 | 135 | 109 | |
Blue | 0 | 0 | 255 | 29 | 128 | -21 | 129 | 171 | |
Magenta | 255 | 0 | 255 | 105 | 84 | 107 | 136 | 52 |
那么现在我们就有了最基本的调整关系公式了。
在YCbCr空间中,一般情况下我们进行调整都是利用一个调整矩阵来实现的:
| Y' | |k1 k2 k3| | Y|
|Cb'| =|k4 k5 k6| * |Cb|
|Cr' | |k7 k8 k9| |Cr|
这里我们主要调整的就是这个矩阵的各个参数了,我们一般调整的物理参数主要有:Contrast,Cb_Gain,Cr_Gain,Hue这几种参数,那么这几个参数是如何作用的呢?下面一个一个来说吧:
Contrast:这个参数只需要调整第一行即可,一般的调整范围在(0~4)之间;
Cb_Gain:需要调整的是就是第二行了,范围大致也在(0~4);
Cr_Gain:这个与Cb_Gain类似,调整的是第三行,范围(0~4);
Hue:这个的调整是比较麻烦的,因为这个是在极坐标系内处理的,而从公式看,它又与Cb和Cr都有关系,但与Y无关。一般来说tan(Hue)=k6/k5=-k8/k9。调整的时候由于还要考虑到chroma的归一问题,所以还要进行如下限制:
k5^2+k6^2=1(不考虑cb_gain的时候)
k8^2+k9^2=1(不考虑cr_gain的时候)
这时候在上面的两个限制前提下,再加上tan(Hue)=k6/k5=-k8/k9,我们就可以按照Hue(0~360)来一度一度的进行调节了。
完了。有不懂的,可以留言啊。呵呵。