很早以前就知道RGB,三基色原理,即任何色彩都可以由红、绿、蓝混合而成,后来上了图像处理这门课才知道YUV(YCbCr)也是一种表示色彩的方式,只不过它是通过亮度和色度表示的。我猜想,如果色彩空间可以用三个独立的变量去表示,类似三维空间,那么通过建立不同的正交基,是完全可以对这个三维空间进行描述的,只是映射的方式不同而已,最重要的是找到有实际意义的物理表示。当对RGB进行压缩时,显然利用不上人类视觉系统对亮度比色度更敏感的特性,所以需要进行RGB向YUV的转换。可以说RGB是用来在LCD、CRT上显示用的,而YUV更便于视频信号的压缩、传输和存储。下面给出互换的公式:
RGB->YCbCr
Y = 0.299R + 0.587G + 0.114B
Cb = 0.564*(B-Y)
Cr = 0.713*(R-Y),
其中 Y 表示亮度, Cb Cr 表示色度。
YCbCr->RGB
R = Y + 1.402*Cr
G = Y - 0.344*Cb - 0.714*Cr
B = Y + 1.772*Cb
下面逐行色彩取样:
1、4:4:4
Y,Cb,Cr具有同样的水平和垂直取样率,每4个亮度像素,相应的就有4个Cb和4个Cr。
2、4:2:2
Y,Cb,Cr具有同样的垂直取样率,但水平取样率色度分量是亮度分量的一半,即水平方向上,每4个亮度像素,相应的就有2个Cb和2个Cr。
3、4:2:0
水平和垂直取样率色度分量都是亮度分量的一半,即水平垂直方向上,每4个亮度像素,相应的就有1个Cb和1个Cr。但这个命名始终没有搞清楚,“0”到底代表什么,据说是为了和“4:4:4“、”4:2:2”命名格式一致而沿用的。这种采用格式应用非常广泛,最适合进行数字压缩。