【秒懂音視訊開發】18_詳解YUV

M了個J發表於2021-04-27

本文的主角是多媒體領域非常重要的一個概念: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位元組)
  • CbCr:表示色度(Chrominance、Chroma)
    • Cb(U):藍色色度分量,佔8bit(1位元組)
    • Cr(V):紅色色度分量,佔8bit(1位元組)

YCbCr

當Y等於0.5時

相容性

原始影像

RGB

YCbCr

根據上面的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:4:4

叉叉代表:亮度。

圓圈代表:色度。

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:2

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分量)

4:2:0 MPEG-1

4:2:0 MPEG-2

儲存格式

儲存格式,決定了YUV資料是如何排列和儲存的。

分類

YUV的儲存格式可以分為3大類:

  • Planar
    • Y、U、V分量分開單獨儲存
    • 名稱通常以字母p結尾
  • Semi-Planar:Y分量單獨儲存,U、V分量交錯儲存
    • 名稱通常以字母sp結尾
  • Packed
    • 或者叫Interleaved
    • Y、U、V分量交錯儲存

4:4:4

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

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

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

相關文章