Chapter 3 顏色空間(2)——YUV、YCbCr

  1. YUV
  2. YIQ
  3. YPbPr
  4. YCbCr
  5. xvYCC
  6. PhotoYCC

YUV

YUV顏色空間是從RGB顏色空間推導而來。

RGB和YUV的換算公式如下:

Y = 0.299 R + 0.587 G + 0.114 BU = -0.147 R - 0.289 G + 0.436 B = 0.492(B - Y)V = 0.615 R - 0.289 G + 0.436 B = 0.877(R - Y)

如果R(G,B)∈[0,255],則Y∈[0,255],U∈[-112,+112],V∈[-157,+157]。

如果用8位二進位表示,V的範圍會超出,這裡不同的系統的處理不同,不一一展開,只要保證將其值限定在[0,255]即可。

這樣理解其實很不直觀,下面上圖。下面是亮度圖(亮度從低到高)。

YUV_UV圖。

由圖可知,亮度和顏色無關,只是黑白灰的程度不同。而UV信息代表顏色。

將Y歸一化到[0,1],UV歸一化到[-0.5,0.5]。上圖是Y=0.5時,UV的色彩圖。UV的物理意義是色差信號(B、R相比於亮度的偏移量)。下面是對四個角落和中心點的分析,最後得到的角落的顏色只為了說明,並不是純色

Y = 0.5U = B - Y = B - 0.5V = R - Y = R - 0.5if (U = 0 and V = 0) so B = 0.5, R = 0.2we can calculate that G = 0.5its grayif (U = -0.5 and V = -0.5) so B = 0, R = 0we can calculate that G = 0.852its greenif (U = +0.5 and V = -0.5) so B = 1, R = 0we can calculate that G = 0.658its cyan(青)if (U = -0.5 and V = +0.5) so B = 0, R = 1we can calculate that G = 0.342its orangeif (U = +0.5 and V = +0.5) so B = 1, R = 1we can calculate that G = 0.148its magenta(洋紅)

YIQ

YIQ顏色空間是從YUV顏色空間推導而來。

YIQ和RGB、YUV的關係如下:

Y = 0.299 R + 0.587 G + 0.114 BI = 0.596 R - 0.275 G - 0.321 B = Vcos33 - Usin33Q = 0.212 R - 0.523 G + 0.311 B = Vsin33 + Ucos33

IQ是UV旋轉33°得到的。

如果R(G,B)∈[0,255],則Y∈[0,255],U∈[-152,+152],V∈[-134,+134]。

如果用8位二進位表示,I、Q的範圍會超出,這裡不同的系統的處理不同,不一一展開,只要保證將其值限定在[0,255]即可。

亮度圖都是一樣的,只展示色彩圖。

YIQ系統旨在利用人類色彩響應特性。I表示同相,Q表示正交。I代表從橙色到青色,Q代表從紫色到綠色。眼睛I範圍的變化比Q範圍更敏感,因此Q對於I而言需要較少的帶寬(這個是目的)。

YPbPr

YPbPr or YPbPr, also written as YPBPR, is a color space used in video electronics, in particular in reference to component video cables. YPbPr is the analog version of the YCbCr color space; the two are numerically equivalent but YPbPr is designed for use in analog systems whereas YCbCr is intended for digital video.

YPbPr是用在模擬系統的,並且RGB和YPbPr的轉換在SDTV和HDTV中是不同的。

SDTV:Y = 0.299 R + 0.587 G + 0.114 BPr = –0.169 R – 0.331 G + 0.500 BPb = 0.500 R – 0.419 G – 0.081 BHDTV:Y = 0.299 R + 0.587 G + 0.114 BPr = –0.115 R – 0.385 G + 0.500 BPb = 0.500 R – 0.454 G – 0.046 B

因為要主要介紹YCbCr,因此YPbPr只做簡單介紹,大家了解就好。

YCbCr

YCbCr顏色空間用於數字視頻系統中。這裡重點說明RGB和YCbCr的轉換,以及YCbCr的採樣方式

YCbCr和RGB的轉換有SDTV和HDTV的區別,並且有時RGB是studio RGB。

0-255範圍的RGB不特意標出,16-235範圍的RGB注為studio RGB。

YCbCr轉換成RGB要通過YPbPr進行。

SDTV:Y = 0.299 R + 0.587 G + 0.114 BPr = –0.169 R – 0.331 G + 0.500 BPb = 0.500 R – 0.419 G – 0.081 BY = round[219 Y + 16 ]Cb = round[224 Pb + 128]Cr = round[224 Pr + 128]R = Y + 1.402 PrG = Y – 0.714 Pr – 0.344 PbB = Y + 1.772 PbHDTV:Y = 0.299 R + 0.587 G + 0.114 BPr = –0.115 R – 0.385 G + 0.500 BPb = 0.500 R – 0.454 G – 0.046 BY = round[219 Y + 16 ]Cb = round[224 Pb + 128]Cr = round[224 Pr + 128]R = Y + 1.575 PrG = Y – 0.468 Pr – 0.187 PbB = Y + 1.856 Pb

直接轉換公式可能方便一些:

SDTV:Y = 0.257 R + 0.504 G + 0.098 B + 16Cb = –0.148 R – 0.291 G + 0.439 B + 128Cr = 0.439 R – 0.368 G – 0.071 B + 128R = 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)SDTV: [studio RGB]Y = 0.299 R + 0.587 G + 0.114 BCb = –0.172 R – 0.339 G + 0.511 B + 128Cr = 0.511 R – 0.428 G – 0.083 B + 128R = Y + 1.371(Cr – 128)G = Y – 0.698(Cr – 128) – 0.336(Cb – 128)B = Y + 1.732(Cb – 128)HDTV:Y = 0.183 R + 0.614 G + 0.062 B + 16Cb = –0.101 R – 0.338 G + 0.439 B + 128Cr = 0.439 R – 0.399 G – 0.040 B + 128R = 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)HDTV: [studio RGB]Y = 0.213 R + 0.715 G + 0.072 BCb = –0.117 R – 0.394 G + 0.511 B + 128Cr = 0.511 R – 0.464 G – 0.047 B + 128R′ = Y + 1.540(Cr – 128)G′ = Y – 0.459(Cr – 128) – 0.183(Cb – 128)B′ = Y + 1.816(Cb – 128)

比較複雜,只要記住過程和區分就好,公式不用記,沒意義。

CbCr顏色圖如下(和YUV顏色空間很像):

另外一個重點就是YCbCr的採樣頻率,主要有4:4:4,4:2:2,4:1:1,4:2:0。

下圖是YCbCr 4:4:4採樣模式。

採樣點的表示如圖所示。Cb,Cr的採樣同時進行。Y,Cb,Cr分別用8bits表示(消費類)或10bits(專業類)表示,因此每個樣本需要24bits或30bits。

下圖是YCbCr 4:2:2採樣模式。

每採樣兩個Y,採樣一個Cb和Cr,並且要在水平方向進行。Y,Cb,Cr分別用8bits表示(消費類)或10bits(專業類)表示,因此每個樣本需要16bits或20bits。它的數據存儲如下圖所示。

要顯示4:2:2的YCbCr數據,首先將其轉換為4:4:4的YCbCr數據,使用內插生成缺少的Cb和Cr樣本。

下圖是YCbCr 4:1:1採樣模式。

每採樣四個Y,採樣一個Cb和Cr,並且要在水平方向進行。Y,Cb,Cr分別用8bits表示(消費類)或10bits(專業類)表示,因此每個樣本需要12bits(這種採樣又稱YUV12,只在消費類視頻中使用)。它的數據存儲如下圖所示。

要顯示4:1:1的YCbCr數據,首先將其轉換為4:4:4的YCbCr數據,使用內插生成缺少的Cb和Cr樣本。

下圖是YCbCr 4:2:0採樣模式。

上圖為H.261,H.263和MPEG1所採用的4:2:0(逐行)。

上圖為H.264,MPEG4,MPEG4.2,SMPTE421M使用的4:2:0(逐行)。

隔行掃描的4:2:0抽取可以參看video demystified 44頁到46頁。

首先明確一點,4:2:0並不意味著只有Cb分量,沒有Cr分量。它指的是對於每行掃描線來說,只有一種色度分量以2:1的抽樣率存儲。相鄰的掃描線存儲不同的色度分量,也就是說一行是4:2:0的話,下一行就是4:0:2,下一行又是4:2:0,以此類推。對於每個色度分量來說,水平方向(每行抽取Cb或Cr)和豎直方向(每兩行抽取Cb和Cr)的抽樣率都是2:1,所以可以說色度的抽樣率是4:1。

要顯示4:2:0的YCbCr數據,首先將其轉換為4:4:4的YCbCr數據,使用內插生成新的Cb和Cr樣本。注意,某些方法不能準確地將4:2:0 YCbCr數據轉換為4:4:4格式,從而導致「色度錯誤」。

xvYCC

xvYCC是對基本YCbCr的色域進行擴展後得到的顏色空間,它使顏色數目多了1.8倍。它的顏色空間使用BT.709色度標準和D65參考白色(和sRGB,scRGB相同)。scRGB和xvYCC之間的轉換公式和RGB和YCbCr之間的轉換公式相同。

Y用8bits表示,範圍是–15/219到+238/219 ( –0.068493到+1.086758)。

CbCr用8bits表示,範圍是–15/224到+238/224( –0.066964到+1.062500)。

xvYCC了解即可,不重要。

PhotoYCC

PhotoYCC(美國柯達公司的一個商標)目的是建立一個與現實設備無關的顏色空間。它的顏色空間是建立在BT.601和BT.709之上的。

下面是RGB和PhotoYCC的轉換。了解即可,不重要。

Convert RGB to PhotoYCCFirst of all, execute gamma correction.(R,G,B is in 0-1)RGB is used to produce 3 signal, Y, C1, C2.Y = 0.213 R + 0.419 G + 0.081 BC1 = -0.131 R - 0.256 G + 0.387 B + 156C2 = 0.373 R - 0.312 G - 0.061 B + 137Convert PhotoYCC to RGB The decoding equations are not always the exact inverse of the encoding equations.R = 0.981 Y + 1.315(C2 – 137)G = 0.981 Y – 0.311(C1 – 156) – 0.669(C2 – 137)B = 0.981 Y + 1.601(C1 – 156)

PS:感謝@進攻型惡犬 的提醒,改正了筆誤。


推薦閱讀:

紐約時裝週春夏 2018流行色報告
喲喲選建水紫陶,我說攻略你說要!第一篇:顏色
【實操】如何培養色感來感知顏色的微小變化
生命的底色
(14)我終於可以準確說出一個顏色了

TAG:色彩管理 | 色彩學 | 顏色 |