1 RGB色彩空间
RGB 是英文(RED,GREEN,BLUE)三个英文单词的缩写,它就是我们常说的三原色(红,绿,蓝)。 只要将这三种颜色按照一定的比例混合一起,就可以得到我们所需要的颜色了。
输出的颜色 = R + G + B;
RGB模型也称为加色法混色模型。它是以R、G、B三原色光互相叠加来实现混色的方法,适合于显示器等发光体的显示。很多显示器都使用R,G,B 三个原色,根据不同的比例达到我们所需要的色彩空间的。

图1
如图1所示:
- 黑色 = 0%红色 + 0%绿色 + 0%蓝色;
- 白色 = 100%红色 + 100%绿色 + 100%蓝色;
- 红色 = 100%红色 + 0%绿色 + 0%蓝色;
- 绿色 = 0%红色 + 100%绿色 + 0%蓝色;
- 蓝色 = 0%红色 + 0%绿色 + 100%蓝色;
- 黄色 = 100%红色 + 100%绿色 + 0%蓝色;
- 紫色 = 100%红色 + 0%绿色 + 100%蓝色;
- 青色 = 0%红色 + 100%绿色 + 100%蓝色;

图2
如图2所示:人眼能够观察到的颜色波长 为 380nm — 760nm 的可见光, 在这个区域之外的波长,人眼是不能分辨的。人类感知物体的颜色,是由于物体反射不同波长的组合,在人脑中产生相应的白,黑,红, 绿,蓝等等颜色。
RGB色彩空间是以直角坐标系的方式,将不同颜色在一个立体空间中展现出来,也称为RGB色彩空间

图3
2 YUV色彩空间
YUV色彩模型是一种主要用于电视系统以及模拟视频领域的颜色编码方法,Y表示亮度也就是灰度值,“U”和“V” 表示的则是色度,用来描述影像色彩及饱和度,用于指定像素的颜色。亮度信息Y与色度信息U、V相互独立。当没有UV通道,可只显示Y通道的灰度分量图。(例如,黑白电视, 黑白照片等)
图4
YUV 可以认为是在RGB 空间上旋转(矩阵乘法)所得到的。它不再使用RGB独立通道,而是使用YUV 亮度,色度概念实现色彩显示。这样做的好处是:
- 可以很容易的得到黑白影响,而不影响彩色输出。举例:当广播的是彩色的电视信号,每个家庭的彩色电视机和黑白电视机都是可以接收这个信号的。
- 另外,YUV利用的人眼视觉特点,可以实现图像数据压缩。举例:YUV422, YUV411, YUV420 等。 原因是:如果传输RGB信号 (8bit)为例: 每4个pixel需要96bit (R[7:0],G[7:0],B[7:0] )x 4。 但使用YUV411 只需要 Y[7:0] x 4 + U[7:0] + V[7:0], 48bit。 这样就比RGB 少传输一半的数据。当然在显示的时候,也能看出图像上的损失。但是在广电系统来说,总体上还是可以接受的。
另外,即使使用YUV444 得到和RGB同样的bit流(96bit),但是在后期实现图像压缩的时候,也有大量的文章可以做,比如量化UV,使得总体的传输数据减少。
图5 raw 图像 YUV 图像
3 YUV 与 RGB色彩空间 的转换公式
RGB 转 YUV:
- Y = 0.299R + 0.587G + 0.144B
- U = -0.147R – 0.289G + 0.436B = 0.492(B – Y)
- V = 0.615R – 0.515G – 0.100B = 0.877(R – Y)
YUV转RGB:
- R = 1.000Y + 0.000U + 1.140V
- G = 1.000Y – 0.395U – 0.581V
- B = 1.000Y + 2.032U + 0.001V
图6 YUV <==> RGB 转换公式
当RGB 取值范围在 0 — 255 之间时:
- Y 的范围: 0 — 255
- U的范围:-112 — +112
- V的范围:-157 — + 157
从上例中可以看出,Y的范围是 8’h00 — 8’hff; U 的范围是 8’h70 — 8’h90; V 的范围是 9’h09d — 9’h163。 所以YUV 适合模拟视频信号,对于数据视频存储就不是非常合适了(无法使用8bit 存储)。
4 YCbCr 与 RGB色彩空间 的转换公式
YCbCr 与YUV的算法非常类似,这两者也经常会被混淆。 但YCbCr非常适合数值视频的存储(只是修改了矩阵的相关系数 + 偏移) 。 YCbCr 是ITU-R BT.601协议的一部分,在8bit数字视频信号存储时:
- Y 的范围:16 — 235
- U的范围:16 — 240
- V的范围:16 — 240
SDTV 标准 下的公式为:ITU-R BT.601
RGB 转 YCbCr: RGB 为【16,235】
-
- Y = 0.299R + 0.587G + 0.144B
- Cb = -0.172R – 0.339G + 0.511B + 128
- Cr = 0.511R – 0.428G – 0.083B + 128
YCbCr转RGB:
-
- R = 1.000Y + 1.371 (Cr – 128)
- G = 1.000Y – 0.698(Cr – 128)- 0.336(Cb – 128 )
- B = 1.000Y + 1.732 (Cb – 128)
上述SDTV公式中 RGB 的取值范围16 — 235 (studio RGB), 但是在计算机系统中,RGB的取值范围是: 0 — 255, 因此形成了另外一种公式:
RGB 转 YCbCr: RGB 为【0,255】
-
- Y = 0.257R + 0.504G + 0.098B + 16
- Cb = -0.148R – 0.291G + 0.439B + 128
- Cr = 0.439R – 0.368G – 0.071B + 128
YCbCr转RGB:
-
- R = 1.164(Y – 16) + 1.596 (Cr – 128)
- G = 1.164(Y – 16) – 0.813(Cr – 128)- 0.391(Cb – 128 )
- B = 1.164(Y – 16) + 2.018 (Cb – 128)
HDTV 标准 下的公式为:ITU-R BT.709
RGB 转 YCbCr: RGB 为【16,235】
-
- Y = 0.213R + 0.715G + 0.072B
- Cb = -0.117R – 0.394G + 0.511B + 128
- Cr = 0.511R – 0.464G – 0.047B + 128
YCbCr转RGB:
-
- R = 1.000Y + 1.540 (Cr – 128)
- G = 1.000Y – 0.459(Cr – 128)- 0.183(Cb – 128 )
- B = 1.000Y + 1.816 (Cb – 128)
上述SDTV公式中 RGB 的取值范围16 — 235 (studio RGB), 但是在计算机系统中,RGB的取值范围是: 0 — 255, 因此形成了另外一种公式:
RGB 转 YCbCr: RGB 为【0,255】
-
- Y = 0.183R + 0.614G + 0.062B + 16
- Cb = -0.101R – 0.338G + 0.439B + 128
- Cr = 0.439R – 0.339G – 0.040B + 128
YCbCr转RGB:
-
- R = 1.164(Y – 16) + 1.793 (Cr – 128)
- G = 1.164(Y – 16) – 0.534(Cr – 128)- 0.213(Cb – 128 )
- B = 1.164(Y – 16) + 2.115 (Cb – 128)
4 YPbPr 格式
YPbPr 格式是模拟视频传输的格式, 它常见与模拟的录像机,DVD 机,电视机等消费量电子产品中。很多时候使用YPbPr 表示逐行, YCbCr 表示隔行,但YPbPr美国标准仅仅是标识模拟视频分量接口,支持525i, 625i, 525p, 625p, 720i, 720p等,并没有区分逐行还是隔行。

图7-1

图7-2
标准SMPTE-240M是1988年制定的高清电视标准,定义了YPbPr。实际上,YPbPr是从YUV派生的模拟信号
图8
更多视频格式的相关知识,请参照视频教程。