色彩转换

rgb yuv 转换中要注意上下界!


RGB颜色空间

   在计算机图形中广泛使用红,绿和蓝(RGB)颜色空间。红,绿,蓝是三种主要的相加色(不同的颜色加在一起形成所需的颜色)。用一个三维笛卡尔坐标系统(图1.1)来表示。图中所示的立方体对角线(到三基色的距离相等)代表了不同的灰阶。表1.1包含100%幅度,100%饱和度彩条信号(一种常用测试信号)的RGB值。


   RGB颜色空间在计算机图形中使用最为普遍,因为彩色显示器使用 RGB来产生所需的颜色。所以,选用 RGB颜色空间简化了系统的构建和设计。而且,由于 RGB颜色空间使用了好几年,所以可以利用大部分现有的软件程序模块.然而,RGB颜色空间在处理"现实"图像时,它的效率并不是很高。要产生 RGB颜色立方体内的任意颜色,所有的 RGB三基色都必须有相同的带宽。这就直接导致了每个RGB 基色需要像素深度(Pixel depth)和显示分辨力都相同的帧存储器。而且,在 RGB颜色空间内处理一幅图像通常也不是最有效的方式。举个例子,我们要改变一个像素点的亮度或色度,我们必须从帧缓冲器中读出所有的 RGB颜色值,然后计算亮度或色度,然后对它们进行相应的更改,计算出新的 RGB值,写回帧缓冲器。如果系统访问的是直接以亮度和色度存储的图像,一些处理步骤就会更快了。

    由于这些以及其它的原因,很多视频标准使用亮度和两个色差信号。其中最为普遍的是 YUVYIQ,和 YCbCr颜色空间。尽管它们彼此关联,但还是有一些区别的。

YUV颜色空间

    YUV颜色空间在 PALPhase Alternation Line),NTSCNational Television System Committee)和SECAMSequentielCouleur Avec Mémoire or Sequential Color with Memory)复合颜色视频标准中使用。黑白电视系统只使用亮度信号(Y);色度信号(UV)以一种特殊的方式加入亮度信号,这样,黑白电视接收机能够显示正常的黑白图像而彩色电视接收机能够对对附加的色度信号进行解码从而显示彩色图像。伽马校正后的 RGB(用 R'G'B'表示)和 YUV 的转换方程式为:

Y = 0.299R′ + 0.587G′ + 0.114B′

U = – 0.147R′ – 0.289G′ + 0.436B′

= 0.492 (B′ – Y)

V = 0.615R′ – 0.515G′ – 0.100B′

= 0.877(R′ – Y)

R′ = Y + 1.140V

G′ = Y – 0.395U – 0.581V

B′ = Y + 2.032U

对于范围为 0-255的数字 R‘G’B‘Y的范围为 0-255U 0±112V 0±157。我们经常对这些方程式进行缩放,使之在现实中的 NTSC PAL数字编解码器中更容易实现。

   注意,对于 8比特的 YUV R‘G’B‘的数字数据,为了避免上溢和下溢,它们的数值不能超出 0 255阶的范围。

   如果我们使用范围内所有的B‘-Y R’-Y数据,那么复合 NTSC PAL电平将超出(现在采用的)黑白电视发送接收机所支持的电平。实验证明,调制后的载波电平的偏移量在亮度信号白电平以上,黑电平以下的 20%范围内是允许的。我们选用了一个缩放因子,使得 75%幅度,100%饱和度的黄色和青色彩条刚好处在白电平上(100IRE)。

YIQ颜色空间

   YIQ颜色空间由 YUV颜色空间导出,在 NTSC复合彩色视频标准中选用。(“I”代表同相,“Q”代表正交,这是传递色度信息的调制方式。)R'G'B' YIQ转换的基本方程式是:

Y = 0.299R′ + 0.587G′ + 0.114B′

I =0.596R′ – 0.275G′ – 0.321B′

   =Vcos 33 ° – Usin 33 °

   =0.736(R′ – Y) – 0.268(B′ – Y)

Q = 0.212R′ – 0.523G′ + 0.311B′

   =Vsin 33 °+ Ucos 33 °

= 0.478(R′ – Y) + 0.413(B′ – Y)


R′ = Y + 0.956I + 0.621Q

G′ = Y – 0.272I – 0.647Q

B′ = Y – 1.107I + 1.704Q

   对于范围为 0-255的数字 R‘G’B‘Y的范围为 0-255I 0±152Q 0±134I Q U  V旋转 33°得到。我们经常对这些方程式进行缩放,使之在现实中的 NTSC数字编解码器中更容易实现。

   注意,对于 8比特的 YIQ R‘G’B‘的数字数据,为了避免上溢和下溢,它们的数值不能超出 0 255阶的范围。

YCbCr颜色空间

   随着世界范围内的数字分量视频标准的发展,YCbCr 颜色空间作为ITU-R BT.601的一部分发展起来。YCbCr YUV颜色空间缩放和偏移得到。Y标称 8比特,范围为 16-235Cb Cr的标称范围为 16-240

RGB-YCbCr方程式:SDTV(标清)

   标称范围为 16-235 8比特数字 R‘G’B‘(工作室 RGB)和YCbCr之间的基本转换方程式为:

Y601  = 0.299R′ + 0.587G′ + 0.114B′

Cb    = –0.172R′ – 0.339G′ + 0.511B′ + 128

Cr    = 0.511R′ – 0.428G′ – 0.083B′ + 128

R′     = Y601 + 1.371(Cr – 128)

G′    = Y601 – 0.698(Cr – 128) – 0.336(Cb – 128)

B′    = Y601 + 1.732(Cb – 128)

   当我们将 YCbCr转换为 R‘G’B‘时,R’G‘B’的标称范围是 16-235,由于 Y CbCr可能偶然超出 16-235 16-240范围(视频处理和噪声的缘故),此时 R‘G’B‘可能偏移到 0-15 236-255 范围内。注意,对于 8 比特的 YCbCr R'G'B'的数字数据,为了避免上溢和下溢,它们的数值不能超出 0 255阶的范围。

    1.2列出了 75%幅度,100%饱和度的彩条信号(一种常用的视频测试信号)的 YCbCr.

计算机系统的考虑

   计算机系统中的R'G'B'数值范围为 0-255,使用以下的方程式可能会更加方便:

Y601  = 0.257R′ + 0.504G′ + 0.098B′ + 16

Cb    = –0.148R′ – 0.291G′ + 0.439B′ + 128

Cr    = 0.439R′ – 0.368G′ – 0.071B′ + 128

R′     = 1.164(Y601 – 16) + 1.596(Cr – 128)

G′     = 1.164(Y601 – 16) – 0.813(Cr – 128) – 0.391(Cb – 128)

B′     = 1.164(Y601 – 16) + 2.018(Cb – 128)

   注意,对于 8比特的 YCbCr R‘G’B‘的数字数据,为了避免上溢和下溢,它们的数值不能超出 0 255阶的范围。

RGB-YCbCr方程式:HDTV(高清)

   标称范围为 16-235 8比特数字 R‘G’B‘(工作室 RGB)和 YCbCr之间的基本转换方程式为:

Y709 = 0.213R′ + 0.715G′ + 0.072B′

Cb  = –0.117R′ – 0.394G′ + 0.511B′ + 128

Cr  = 0.511R′ – 0.464G′ – 0.047B′ + 128

R′   = Y709 + 1.540(Cr – 128)

G′   = Y709 – 0.459(Cr – 128) – 0.183(Cb – 128)

B′   = Y709 + 1.816(Cb – 128)

   当我们将YCbCr转换为 R‘G’B‘时,R’G‘B’的标称范围是 16-235,由于 Y CbCr可能偶然超出 16-235 16-240范围(视频处理和噪声的缘故),此时 R‘G’B‘可能偏移到 0-15 236-255范围内。注意,对于 8比特的 YCbCr  R'G'B'的数字数据,为了避免上溢和下溢,它们的数值不能超出 0 255阶的范围。

 1.2列出了 75%幅度,100%饱和度的彩条信号(一种常用的视频测试信号)的 YCbCr.


计算机系统的考虑

   计算机系统中的R‘G’B‘数值范围为 0-255,使用以下的方程式可能会更加方便:

Y709  = 0.183R′ + 0.614G′ + 0.062B′ + 16

Cb    = –0.101R′ – 0.338G′ + 0.439B′ + 128

Cr    = 0.439R′ – 0.399G′ – 0.040B′ + 128

R′     = 1.164(Y709 – 16) + 1.793(Cr – 128)

G′     = 1.164(Y709 – 16) – 0.534(Cr – 128) – 0.213(Cb – 128)

B′     = 1.164(Y709 – 16) + 2.115(Cb – 128)

   注意,对于 8比特的 YCbCr R‘G’B‘的数字数据,为了避免上溢和下溢,它们的数值不能超出 0 255阶的范围。

PhotoYCC颜色空间

 PhotoYCC(伊斯门柯达公司商标)用来对 Photo CD图像数据编码。它的目标是成为一种显示器无关的色彩空间。为了达到最大的视频显示效率,该颜色空间以 ITU-RBT.601 BT.709为基础。

 编码处理(RGBPhotoYCC)假定CIE标准光源D 65,图像捕捉系统的光谱感光性和BT.709的色度-匹配功能成比例。这里的RGB和计算机图形中的RGB值不同,它可能为负值。PhotoYCC包含BT.709色域范围以外的彩色,这些用负值来编码。

RGBPhotoYcc

 线形 RGB数据(规格化到 0-1范围内)做非线性转换为 PhotoYCC,如下所示:

 R, G, B ³ 0.018

 R′ = 1.099 R0.45 – 0.099

 G′ = 1.099 G0.45 – 0.099

 B′ = 1.099 B0.45 – 0.099

 –0.018  < R, G, B  < 0.018

 R′ = 4.5 R

 G′ = 4.5 G

 B′ = 4.5 B

当 R, G, B £ –0.018

 R′ = – 1.099 |R|0.45 – 0.099

 G′  = – 1.099 |G|0.45 – 0.099

 B′ = – 1.099 |B|0.45 – 0.099

 范围为 0-255 R'G'B',可生成一个亮度信号,两个色度信号(C1 C2):

Y = 0.213R´ + 0.419G´ + 0.081B´

C1 = - 0.131R´ - 0.256G´ + 0.387B´ + 156

C2 = 0.373R´ - 0.312G´ - 0.061B´ + 137

 举个例子,20%的灰度值(RG B=0.2)刻录在 PhotoCD光盘上的值如下:

Y = 79

C1 = 156

C2 = 137

PhotoYCCRGB

 由于 PhotoYCC试图保留胶卷的动态范围,对 PhotoYCC解码需要选择一个对输出设备合适的颜色空间和范围。所以,解码方程式不一定就是编码方程式精确的反向方程式。下面的方程式生成的 RGB值适合驱动 CRT 显示器,并且假定解码图像和显示图亮度一致。

R´ = 0.981Y + 1.315(C2 - 137)

G´ = 0.981Y - 0.311(C1 - 156) - 0.669(C2 -137)

B´ = 0.981Y + 1.601 (C1 - 156)

 R‘G’B‘值必须处在 0-255之间。上面的方程式假定显示器的磷光粉和BT.709特性一致,并且视频信号亮度(V)和显示亮度(L)有以下的关系:

 V ³ 0.0812

L = ((V + 0.099) / 1.099)1/0.45

 V < 0.0812

L = V / 4.5

HLSHSV颜色空间

  HSLhue,saturation,intensity)和 HSVhue,saturation,value)颜色空间在操作颜色上更直观,它模仿人眼感知和诠释颜色的方式。当颜色需要手工配置时,人们开发了这种颜色空间,既然现在可以直观的选择颜色或者指定 Pantone(美国一家公司指定的配色系统)色,所以现在这种颜色空间很少用到了。我们讨论它是基于了历史的兴趣。HSLhue,lightness,saturation)和 HSI 类似;我们使用术语lightness 代替 intensity。HSV 色相,饱和度,明度

   HIS HSV的区别是亮度分量(I V)的计算方法,它决定了亮度(I V)和饱和度(S)的分布和动态范围。HSL颜色空间在传统的图像处理功能如卷积,均衡化,直方图等等上有优势,由于 I RGB的关联度相等,所以仅仅需要调整亮度值就可以了。HSV 颜色空间饱和度的动态范围更大,适合操作色度和饱和度(偏移彩色或调整颜色量)。

    1.12描绘了单六椎体HSV颜色模型。六椎体的顶端对应V=1,也就是最大intensity(亮度)处。六椎体的最下面的顶点为黑色,此处V=0H值相差 180 的颜色互为补色,该角度绕着纵轴(V)以红色为起点(角度为 0)。S值为一比例值,它的范围为 0(纵坐标V上)到 1(六椎体的侧表面上)。V=0点上S值可以是 0-1范围内的任意值。S=0V=1处为白色。S=0V处在 0-1之间时,该颜色为灰色。注意,当S=0时,H值可以是任意值。在艺术家看来,任何V=1S=1的颜色都为纯色(它的颜色由H来决定)。加入白色对应于减小饱和度(不会改变亮度V);假如黑色对应于减小亮度V(不会改变饱和度S)。调和色通过同时减小饱和度S和亮度V来生成。表 1.4 列出了 75%幅度,100%饱和度的HSV彩条。



 图 1.13 描述了双六椎体HSI颜色模型。六椎体的顶部对应于I=1,也就是白色。底部顶点对应于黑色,I=0H值相差 180度的颜色互为补色,该角度绕着纵轴(I)以红色为起点(角度为 0)(为了和HSV模型保持一致性,泰克公司的惯例蓝色为0度)。S值范围为0(纵坐标I上)到 1(六椎体的侧表面上)。灰度信号的S值都为 0,但是,色彩的最大饱和度在S=1I=0.5处。表1.5列出了 75%幅度,100%饱和度的HIS彩条。



1.13 双六面体HSI颜色模型。为了保持一致性,从泰克的绿色为0度转换而来我们用双六面体而不是两个六面体来描述该模型

色度图

 正常视力(the 1931 CIE Standard Observer)人眼所看到的色域如图 1.14所示。该图和它潜在的数学表达式在 1960 1976 进行了更新;然而,NTSC电视制式仍旧以1931规格为基础。

   颜色感知通过观看三个标准 CIEInternational Commission on Illumination CommissionInternationale de I‘Eclairage)基色:700 nm波长的红色,546.1nm的绿色和435.8nm 的蓝色。这些基色及由这些基色混合而成的其他光谱纯色处在曲线的外边沿(叫做光谱轨迹),如图 1.14所示。

   光谱轨迹的端点(红色和蓝色处)有一条直线联结,代表紫色,它由红色和蓝色组成。处在该闭合边界内的所有颜色都能由混合不同颜色的光来合成。颜色越靠近边界,它的饱和度越高。边界内的颜色越靠近中心(白色),饱和度越低。色度图内的每一个点代表唯一的颜色,可用小 xy坐标值来标识。

    CIE 系统中,红色,绿色和蓝色的亮度转换成所谓的三色激励值(tristimulus values),用大写字母 XYZ来表示。这些值代表了基色的相对大小。




1.14 CIE 1931色度图显示的是不同的颜色区域

 1.14中的坐标轴由下面的三色激励值得到:


x =X/(X + Y + Z)

   =red/(red + green + blue)

y =Y/(X + Y + Z)

   = green/(red + green + blue)

z =Z/(X + Y + Z)

   = blue/(red + green + blue)

 坐标轴 x,y,z称为色度坐标轴(chromaticity coordinates),通常,它们的和为 1。所以,z可以用 x y来表示,这就意味着仅仅使用xy就能表示一种颜色,所以色度图可以使二维的。

   通常,信源或显示器指定threexy)坐标来定义所使用的三基色。Threexy)坐标生成的三角形包含了信源或显示器能再生的色域。如图 1.15 所示,作为对比,途中还显示了 NTSCPAL,和油墨,染色的色域。注意,没有一组三基色能再现所有可能的彩色,这就是为什么彩色电视机不能完完全全再现现实颜色的原因。

   此外,信源或显示器通常指定所用的白色的 the(x,y) 坐标,因为纯白色不一定能被捕获或再生。我们将白色定义成捕获或再生的三基色颜色值相等的颜色,它还是会有一小部分颜色在里边的。注意,标准 CIE 1931 色度图内不包含亮度信号,但它是一个和(xy)平面正交的坐标轴,颜色越浅,色度的范围就越小。


1.15 CIE 1931色度图显示的是不同的色域

   1953 NTSC标准的色度和参考白光(CIE 光源 C)是:

R x r = 0.67       y r = 0.33

G x g = 0.21    yg = 0.71

B x b = 0.14      y b = 0.08

白光: x w = 0.3101y w = 0.3162

   现在所使用的NTSC480i,和 480p视频系统使用一组不同的RGB磷光粉,导致产

生的RGB三基色的色度和参考白光(CIE 光源 D 65)有些细微的不同。

R:   x r = 0.630   y r = 0.340

G:   x g = 0.310  y g = 0.595

B:   x b =0.155   y b = 0.070

白光:   x w = 0.3127y w = 0.3290

   PALSECAM576i 576p视频系统的色度和参考白光(CIE B白光D 65)为:

R:   x r = 0.64   yr = 0.33

G:   x g =0.29  y g = 0.60

B:   x b =0.15   y b = 0.06

白光:    x w = 0.3127       y w = 0.3290

   HDTV所使用的色度和参考白光(CIE 光源D65)以BT.709为基础:

R:    x r = 0.64 y r = 0.33

G:    x g =0.30y g = 0.60

B:    x b = 0.15   y b = 0.06

白光:    x w = 0.3127y w = 0.3290 

   由于不同的视频标准使用不同的色度和参考白光,所以当信源和显示器值不匹配时可能会产生一些小错误;例如在 HDTV上显示480i  480p节目或再 NTSC电视上播放 HDTV节目。这些小小的颜色错误可以简单的通过在显示器上使用 3 × 3 矩阵乘法器来修正,

其它颜色空间

 当在一个非 RGB颜色空间(如 YIQYUVYCbCr)内处理信息时,我们需要注意不要使它们的值的组合所生成的 RGB 颜色无效。此处的术语无效指的是 RGB分量超出规格化的 RGB范围(111)。

   举个例子,给出范围为规格化值(111)的 RGB,得出的 YCbCr 值为(235128128)。如果我们处理 Cb  Cr 使它产生的 YCbCr的值为(2356473),相对应的规格化 RGB 值变为(0.61.290.56---注意绿色已经超出了规格化值 1

   通过这个例子,很明显,有很多 YCbCr的组合会产生无效的 RGB 值;我们必须对这些 YCbCr值进行处理,使它们产生有效的RGB值。图 1.16展示了 YCbCr颜色空间转换成的规格化RGB




1.16 三维YCbCr空间转换成的受限RGB

 使用恒定亮度和恒定色调处理(不改变亮度信号 Y,同时 CbCr被限制在最大有效值内,并且和限幅前的颜色有相同的色调)将产生最好的结果恒定色度准则对应于直接将无效的 CbCr组合移向 CbCr 原点(128128),直到它们落在有效YCbCr颜色的表面。

   当将非 RGB颜色空间转换为 RGB颜色空间是,我们必须注意,由于数字电路的有限精度,我们必须包含色度逻辑以便不会发生上溢和下溢的问题。8比特的 RGB值,小于 0的必须设为 0,大于 255的必须设为 255

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值