本文的主角是多媒體領域非常重要的一個概念:YUV。
簡介
YUV,是一種顏色編碼方法,跟RGB是同一個級別的概念,廣泛應用於多媒體領域中。
也就是說,影像中每1個畫素的顏色資訊,除了可以用RGB的方式表示,也可以用YUV的方式表示。
vs RGB
對比RGB,YUV有哪些不同和優勢呢?
體積更小
- 如果使用RGB
- 比如RGB888(R、G、B每個分量都是8bit)
- 1個畫素佔用24bit(3位元組)
- 如果使用YUV
- 1個畫素可以減小至平均只佔用12bit(1.5位元組)
- 體積為RGB888的一半
組成
RGB資料由R、G、B三個分量組成。
YUV資料由Y、U、V三個分量組成,現在通常說的YUV指的是YCbCr。
- Y:表示亮度(Luminance、Luma),佔8bit(1位元組)
- Cb、Cr:表示色度(Chrominance、Chroma)
- Cb(U):藍色色度分量,佔8bit(1位元組)
- Cr(V):紅色色度分量,佔8bit(1位元組)
相容性
根據上面的1組圖片,不難看出:
- Y分量對呈現出清晰的影像有著很大的貢獻
- Cb、Cr分量的內容不太容易識別清楚
此外,你是否感覺:Y分量的內容看著有點眼熟?其實以前黑白電視的畫面就是長這樣子的。
YUV的發明處在彩色電視與黑白電視的過渡時期。
- YUV將亮度資訊(Y)與色度資訊(UV)分離,沒有UV資訊一樣可以顯示完整的影像,只不過是黑白的
- 這樣的設計很好地解決了彩色電視機與黑白電視的相容性問題,使黑白電視也能夠接收彩色電視訊號,只不過它只顯示了Y分量
- 彩色電視有Y、U、V分量,如果去掉UV分量,剩下的Y分量和黑白電視相同
相互轉換
RGB和YUV之間是可以相互轉換的。
RGB轉YUV
待補充
YUV轉RGB
待補充
色度二次取樣
原理
人眼的視網膜上,分佈著兩種感光細胞:視杆細胞和視錐細胞。
-
視杆細胞
- 感知光線的強弱
- 沒有色彩識別功能
- 負責夜間非彩色視覺
-
視錐細胞
- 感知顏色
- 負責白天彩色視覺
- 如果你的視錐細胞發育不正常,數量太少,那感知顏色就會受阻,可能會導致你色弱
人眼中有上億個感光細胞,其中視杆細胞佔了95%,而視錐細胞僅佔5%。
因此,人眼對亮度的敏感程度要高於對色度的敏感程度,人眼對於亮度的分辨要比對顏色的分辨精細一些。
如果把影像的色度分量減少一些,人眼也絲毫感覺不到變化和差異。
概念
如果在色度分量上進行(相對亮度分量)較低解析度的取樣,也就是儲存較多的亮度細節、較少的色度細節,這樣就可以在不明顯降低畫面質量的同時減小影像的體積。上述過程稱為:色度二次取樣(Chroma Subsampling)。
取樣格式
取樣格式通常用A:B:C的形式來表示,比如4:4:4、4:2:2、4:2:0等,其中我們最需要關注的是4:2:0。
- A:一塊A*2個畫素的概念區域
- B:第1行的色度取樣數目
- C:第2行的色度取樣數目
- C的值一般要麼等於B,要麼等於0
上圖中,不管是哪種取樣格式,Y分量都是全水平、全垂直解析度取樣的,每一個畫素都有自己獨立的Y分量。
4:4:4
- 第1行採集4組CbCr分量,第2行採集4組CbCr分量
- 每1個畫素都有自己獨立的1組CbCr分量
- Y分量與CbCr分量的水平方向比例是1:1(每1列都有1組CbCr分量)
- Y分量與CbCr分量的垂直方向比例是1:1(每1行都有1組CbCr分量)
- Y分量與CbCr分量的總比例是1:1
- 1個畫素佔用24bit(3位元組),跟RGB888的體積一樣
- 沒有進行色度二次取樣
叉叉代表:亮度。
圓圈代表:色度。
4:2:2
- 第1行採集2組CbCr分量,第2行採集2組CbCr分量
- 水平方向相鄰的2個畫素(1行2列)共用1組CbCr分量
- Y分量與CbCr分量的水平方向比例是2:1(每2列就有1組CbCr分量)
- Y分量與CbCr分量的垂直方向比例是1:1(每1行都有1組CbCr分量)
- Y分量與CbCr分量的總比例是2:1
- 1個畫素平均佔用16bit(2位元組)
- 因為2個畫素共佔用32bit(4位元組 = 2個Y分量 + 1個Cb分量 + 1個Cr分量)
4:2:0
- 第1行採集2組CbCr分量,第2行共享第1行的CbCr分量
- 相鄰的4個畫素(2行2列)共用1組CbCr分量
- Y分量與CbCr分量的水平方向比例是2:1(每2列就有1組CbCr分量)
- Y分量與CbCr分量的垂直方向比例是2:1(每2行就有1組CbCr分量)
- Y分量與CbCr分量的總比例是4:1
- 1個畫素平均佔用12bit(1.5位元組)
- 因為4個畫素共佔用48bit(6位元組 = 4個Y分量 + 1個Cb分量 + 1個Cr分量)
儲存格式
儲存格式,決定了YUV資料是如何排列和儲存的。
分類
YUV的儲存格式可以分為3大類:
- Planar
- Y、U、V分量分開單獨儲存
- 名稱通常以字母p結尾
- Semi-Planar:Y分量單獨儲存,U、V分量交錯儲存
- 名稱通常以字母sp結尾
- Packed
- 或者叫Interleaved
- Y、U、V分量交錯儲存
4:4:4
Planar
- I444
Y Y Y Y
Y Y Y Y
U U U U
U U U U
V V V V
V V V V
- YV24
Y Y Y Y
Y Y Y Y
V V V V
V V V V
U U U U
U U U U
Semi-Planar
- NV24
Y Y Y Y
Y Y Y Y
U V U V U V U V
U V U V U V U V
- NV42
Y Y Y Y
Y Y Y Y
V U V U V U V U
V U V U V U V U
4:2:2
Planar
- I422
Y Y Y Y
Y Y Y Y
U U
U U
V V
V V
- YV16
Y Y Y Y
Y Y Y Y
V V
V V
U U
U U
Semi-Planar
- NV16
Y Y Y Y
Y Y Y Y
U V U V
U V U V
- NV61
Y Y Y Y
Y Y Y Y
V U V U
V U V U
Packed
- UYVY
U Y V Y U Y V Y
U Y V Y U Y V Y
- YUYV
Y U Y V Y U Y V
Y U Y V Y U Y V
- YVYU
Y V Y U Y V Y U
Y V Y U Y V Y U
4:2:0
Planar
- I420
- 大多數視訊解碼器以I420格式輸出原始圖片
Y Y Y Y
Y Y Y Y
U U
V V
- YV12
Y Y Y Y
Y Y Y Y
V V
U U
Semi-Planar
- NV12
Y Y Y Y
Y Y Y Y
U V U V
- NV21
Y Y Y Y
Y Y Y Y
V U V U