YCbCr空间中进行色彩调整的方法

为什么我们选择的是色空间是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的值:

 
RGBYCbCrCH
Red2550076 -43 128 135 109
Yellow2552550226 -128 21 129 171
Green02550150 -84 -107 136 52
Cyan0255255179 43 -128 135 109
Blue0025529 128 -21 129 171
Magenta2550255105 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)来一度一度的进行调节了。

完了。有不懂的,可以留言啊。呵呵。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值