颜色空间YUV简介
YUV概念:YUV是被歐洲電視系統(tǒng)所采用的一種顏色編碼方法(屬于PAL,Phase Alternation Line),是PAL和SECAM模擬彩色電視制式采用的顏色空間。其中的Y、U、V幾個字母不是英文單詞的組合詞,Y代表亮度,其實Y就是圖像的灰度值;UV代表色差,U和V是構(gòu)成彩色的兩個分量。在現(xiàn)代彩色電視系統(tǒng)中,通常采用三管彩色攝影機(jī)或彩色CCD攝影機(jī)進(jìn)行取像,然后把取得的彩色圖像信號經(jīng)分色、分別放大校正后得到RGB,再經(jīng)過矩陣變換電路得到亮度信號Y和兩個色差信號B--Y(即U)、R--Y(即V),最后發(fā)送端將亮度和色差三個信號分別進(jìn)行編碼,用同一信道發(fā)送出去。這種色彩的表示方法就是所謂的YUV色彩空間表示。采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有 Y信號分量而沒有U、V信號分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機(jī)與黑白電視機(jī)的相容問題,使黑白電視機(jī)也能接收彩色電視信號。
YUV顏色空間屬于非線性亮度/色度(luma/chroma)型顏色空間,用一個分量表示非色彩的感知,用兩個獨立的分量表示色彩的感知。
YUV主要用于優(yōu)化彩色視頻信號的傳輸,使其向后相容老式黑白電視。與RGB視頻信號傳輸相比,它最大的優(yōu)點在于只需占用極少的頻寬(RGB要求三個獨立的視頻信號同時傳輸)。其中"Y"表示明亮度(Luminance或Luma),也就是灰階值;而"U"和"V"表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。"亮度"是透過RGB輸入信號來建立的,方法是將RGB信號的特定部分疊加到一起。"色度"則定義了顏色的兩個方面----色調(diào)與飽和度,分別用Cr(V)和Cb(U)來表示。其中,Cr反映了GB輸入信號紅色部分與RGB信號亮度值之間的差異。而Cb反映的是RGB輸入信號藍(lán)色部分與RGB信號亮度值之同的差異。
采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機(jī)與黑白電視機(jī)的兼容問題,使黑白電視機(jī)也能接收彩色電視信號。
廣播、視頻和成像標(biāo)準(zhǔn)使用YUV色彩空間還有一個重要的原因,就是與人的視覺系統(tǒng)很有關(guān)系。人類的眼睛對低頻信號比對高頻信號具有更高的敏感度。事實上,人類的眼睛對明視度的改變也比對色彩的改變要敏感的多。因此對人類而言,Y分量比U分量重要,根據(jù)人眼的這一特征,在不使用任何復(fù)雜算法的前提下, 可以適當(dāng)?shù)貟仐塙和V分量以達(dá)到壓縮的目的,這就是部分取樣(subsampling)。
YUV與YCrCb的區(qū)別:YCrCb顏色空是由YUV顏色空間派生的一種顏色空間。YCbCr是在世界數(shù)字組織視頻標(biāo)準(zhǔn)研制過程中作為ITU-R BT.601建議的一部分,其實是YUV經(jīng)過縮放和偏移的翻版。YCrCb中的Y與YUV中的Y含義一致,Cb、Cr同樣都指色彩,只是在表示方法上不同。YCbCr中,Y是指亮度分量,Cb指藍(lán)色色度分量,而Cr指紅色色度分量。在YUV家族中,YCbCr是在計算機(jī)系統(tǒng)中應(yīng)用最多的成員,其應(yīng)用領(lǐng)域很廣泛,JPEG、MPEG均采用此格式。一般人們所講的YUV大多是指YCbCr。YCbCr有許多取樣格式。
YUV與RGB相互轉(zhuǎn)換的公式:
Y = 0.299R + 0.587G+ 0.114B
U = -0.147R -0.289G + 0.436B
V = 0.615R - 0.515G- 0.100B
R = Y + 1.14V
G = Y - 0.39U -0.58V
B = Y + 2.03U
YUV主要采樣格式: YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。
?(1)、YUV 4:4:4:無壓縮,YUV三個信道的抽樣率相同,因此在生成的圖像里,每個象素的三個分量信息完整(每個分量通常8比特),經(jīng)過8比特量化之后,未經(jīng)壓縮的每個像素占用3個字節(jié)。
下面的四個像素為: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的碼流為: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
(2)、YUV 4:2:2:壓縮33.3%,每個色差信道的抽樣率是亮度信道的一半,所以水平方向的色度抽樣率只是4:4:4的一半。對非壓縮的8比特量化的圖像來說,每個由兩個水平方向相鄰的像素組成的宏像素需要占用4字節(jié)內(nèi)存。
下面的四個像素為:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的碼流為:Y0 U0 Y1 V1 Y2U2 Y3 V3
映射出像素點為:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]
(3)、YUV 4:1:1: 壓縮50%,4:1:1的色度抽樣,是在水平方向上對色度進(jìn)行4:1抽樣。對于低端用戶和消費類產(chǎn)品這仍然是可以接受的。對非壓縮的8比特量化的視頻來說,每個由4個水平方向相鄰的像素組成的宏像素需要占用6字節(jié)內(nèi)存。
每個點保存一個8bit的亮度值(也就是Y值),每2x2個點保存一個Cr和Cb值, 圖像在肉眼中的感覺不會起太大的變化。所以,原來用RGB(R,G,B都是8bit unsigned)模型,1個點需要8x3=24bits,(全采樣后,YUV仍各占8bit)。按4:1:1采樣后,而現(xiàn)在平均僅需要 8+(8/4)+(8/4)=12bits(4個點,8*4(Y)+8(U)+8(V)=48bits), 平均每個點占12bits。這樣就把圖像的數(shù)據(jù)壓縮了一半。
下面的四個像素為: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的碼流為: Y0 U0 Y1 Y2 V2 Y3
映射出像素點為:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]
(4)、YUV4:2:0: 壓縮50%,4:2:0并不意味著只有Y、Cb而沒有Cr分量。它指得是對每行掃描線來說,只有一種色度分量以2:1的抽樣率存儲。相鄰的掃描行存儲不同的色度分量,也就是說,如果一行是4:2:0的話,下一行就是4:0:2,再下一行是4:2:0...以此類推。對每個色度分量來說,水平方向和豎直方向的抽樣率都是2:1,所以可以說色度的抽樣率是4:1。對非壓縮的8比特量化的視頻來說,每個由2x2個2行2列相鄰的像素組成的宏像素需要占用6字節(jié)內(nèi)存。絕大多數(shù)視頻編解碼器都采用這種格式作為標(biāo)準(zhǔn)的輸入格式。
下面八個像素為:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[Y5 U5 V5] [Y6 U6 V6] [Y7 U7 V7] [Y8 U8 V8]
存放的碼流為:Y0 U0 Y1 Y2 U2Y3
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Y5 V5 Y6 Y7 V7 Y8
映射出的像素點為:[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]
???????? YUV格式:通常有兩大類:打包(packedformats)格式和平面(planar format)格式。
打包格式將YUV分量存放在同一個數(shù)組中,通常是幾個相鄰的像素組成一個宏像素(macro-pixel),和RGB的存放方式類似,在這種格式下每個像素點的YUV數(shù)據(jù)混合放在一個矩陣中。
平面格式使用三個數(shù)組分開存放YUV三個分量,就像是一個三維平面一樣。
???????? 打包格式中的YUV是混合在一起的,對于YUV4:4:4和YUV4:2:2格式而言,用打包格式是很合適的,因此就有了UYVY、YUYV等。
平面格式是指每Y份量,U份量和V份量都是以獨立的平面組織的,即Y、U、V是分開存儲的,每個分量占一塊地方,其中Y為width*height,而U、V合占Y的一半,該中格式每個像素棧12bits。平面格式有I420(4:2:0)、YV12、IYUV等。
???????? 根據(jù)U、V的順序,分出2種格式:U前V后即YUV420P,也叫I420,V前U后,叫YV12(YV表示Y后面跟著V,12表示12bits)。另外,還有一種半平面格式(semi-planar),即Y單獨占一塊地方,但其后U、V又緊挨著排在一起,根據(jù)U、V的順序,又有2種,U前V后叫NV12;V前U后叫NV21。???????? YUV的表示法稱為A:B:C表示法:
???????? (1)、4:4:4 ,表示完全取樣,色度頻道沒有下采樣。
???????? (2)、4:2:2 ,表示2:1的水平采樣,沒有垂直下采樣。對于每2個U樣例或V樣例,每個掃描行都包含4個Y樣例。
???????? (3)、4:2:0 ,表示2:1的水平采樣,2:1的垂直下采樣。
???????? (4)、4:1:1 ,表示4:1的水平下采樣,沒有垂直下采樣。對于每個U樣例或V樣例,每個掃描行都包含4個Y樣例。
???????? 如果需要對YUV顏色空間有更進(jìn)一步了解,可以學(xué)習(xí)下libyuv庫。
????????
以上內(nèi)容主要整理自:
1.????????http://baike.baidu.com/item/YUV
2.????????http://www.chinadmd.com/file/tpoiow33o66zritpt3aucpsz_1.html
3.????????http://www.chinadmd.com/file/zzaevvxtpzpsc3ec6rppcoci_1.html
4. ? ? ? ?http://www.fourcc.org/yuv.php?
?
總結(jié)
- 上一篇: Ubuntu下内存泄露检测工具Valgr
- 下一篇: libyuv库的使用