在计算机图形中广泛使用红,绿和蓝(RGB)颜色空间。红,绿,蓝是三种主要的相加色(不同的颜色加在一起形成所需的颜色)。用一个三维笛卡尔坐标系统(图1.1)来表示。图中所示的立方体对角线(到三基色的距离相等)代表了不同的灰阶。表1.1包含100%幅度,100%饱和度彩条信号(一种常用测试信号)的RGB值。
RGB颜色空间在计算机图形中使用最为普遍,因为彩色显示器使用 RGB来产生所需的颜色。所以,选用 RGB颜色空间简化了系统的构建和设计。而且,由于 RGB颜色空间使用了好几年,所以可以利用大部分现有的软件程序模块.然而,RGB颜色空间在处理"现实"图像时,它的效率并不是很高。要产生 RGB颜色立方体内的任意颜色,所有的 RGB三基色都必须有相同的带宽。这就直接导致了每个RGB 基色需要像素深度(Pixel depth)和显示分辨力都相同的帧存储器。而且,在 RGB颜色空间内处理一幅图像通常也不是最有效的方式。举个例子,我们要改变一个像素点的亮度或色度,我们必须从帧缓冲器中读出所有的 RGB颜色值,然后计算亮度或色度,然后对它们进行相应的更改,计算出新的 RGB值,写回帧缓冲器。如果系统访问的是直接以亮度和色度存储的图像,一些处理步骤就会更快了。
由于这些以及其它的原因,很多视频标准使用亮度和两个色差信号。其中最为普遍的是 YUV,YIQ,和 YCbCr颜色空间。尽管它们彼此关联,但还是有一些区别的。
YUV颜色空间YUV颜色空间在 PAL(Phase Alternation Line),NTSC(National Television System Committee)和SECAM(SequentielCouleur Avec Mémoire or Sequential Color with Memory)复合颜色视频标准中使用。黑白电视系统只使用亮度信号(Y);色度信号(U,V)以一种特殊的方式加入亮度信号,这样,黑白电视接收机能够显示正常的黑白图像而彩色电视接收机能够对对附加的色度信号进行解码从而显示彩色图像。伽马校正后的 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-255,U为 0到±112,V为 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-255,I为 0到±152,Q为 0到±134。I和 Q由 U 和 V旋转 33°得到。我们经常对这些方程式进行缩放,使之在现实中的 NTSC数字编解码器中更容易实现。
注意,对于 8比特的 YIQ和 R‘G’B‘的数字数据,为了避免上溢和下溢,它们的数值不能超出 0到 255阶的范围。
YCbCr颜色空间随着世界范围内的数字分量视频标准的发展,YCbCr 颜色空间作为ITU-R BT.601的一部分发展起来。YCbCr由 YUV颜色空间缩放和偏移得到。Y标称 8比特,范围为 16-235,Cb和 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为基础。
编码处理(RGB到PhotoYCC)假定CIE标准光源D 65,图像捕捉系统的光谱感光性和BT.709的色度-匹配功能成比例。这里的RGB和计算机图形中的RGB值不同,它可能为负值。PhotoYCC包含BT.709色域范围以外的彩色,这些用负值来编码。
RGB到PhotoYcc
线形 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
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?