YUV格式介紹


最近在做視頻采集方面的程序,使用vlc對采集到的視頻進行播放,但是視頻的顏色格式貌似有問題導致無法播放,以下為VLC WIKI關於YUV格式的翻譯,

原文地址:https://www.cnblogs.com/ichenwin/articles/10316627.html

wiki原文地址:https://wiki.videolan.org/YUV/

 

YUV是視頻應用中使用的一類像素格式。YUV實際上是所有“YUV”像素格式共有的顏色空間的名稱。 與RGB格式(紅 - 綠 - 藍)相對應,YUV顏色用一個稱為Y(相當於灰度)的“亮度”分量和兩個“色度”分量表示,分別稱為U(藍色投影)和V(紅色投影) , YUV由此得名。YUV也可以稱為YCbCr,雖然這些術語的含義略有不同,但它們往往會混着並互換使用。本文介紹了VLC媒體播放器環境中最有用的YUV像素格式。 除非另有說明,否則每個成員的用一個八位字節(8位)存儲。

平面格式

平面(或有時“三平面”)格式對3種顏色分量中的每一種使用單獨的矩陣。 換句話說,存在一個亮度像素值表和用於色度分量的兩個單獨的表。 這在像素的存儲器中的分離表示對於視頻編碼更方便。

一、平面格式

平面(或有時稱“三平面”)格式對3種顏色分量中的每一種使用單獨的矩陣。 換句話說,存在一個亮度像素值表和用於色度分量的兩個單獨的表。 在存儲器中將像素分離表示,這對於視頻編碼更方便。

1. YUV 4:2:0 (I420/J420/YV12)

(1). I420

首先它有一個“亮度”平面Y,然后是U色度平面,最后是V色度平面。

兩個色度平面(藍色和紅色投影)在水平和垂直維度以2為倍數進行下采樣。也就是說,對於2x2像素塊,有4個Y樣本,而只有1個U樣本和 1 V樣本。

對於4個像素,此格式需要4 * 8 + 8 + 8 = 48位,因此其位深度是12。

目前,I420是VLC中最常見的格式。 大多數視頻解碼器也以I420格式輸出原始圖像。

以下符號說明:每個字母(Y/U/V)代表一位。

  • 對於一個 I420 像素存儲的位格式: YYYYYYYY UU VV
  • 對於50個像素的 I420 幀: YYYYYYYY*50 UU*50 VV*50 (or Y*8*50 U*2*50 V*2*50 for short)
  • 對於n個像素的 I420 幀: Y*8*n U*2*n V*2*n

 

(2). J420

J420可以說和I420完全相同,但具有全范圍(“數字”,0-255)亮度(Y)分量而不是有限范圍(“模擬”,16-240)。 色度平面與I420完全相同。

(3). YV12

YV12和I420也幾乎完全相同,但U和V平面的順序是相反的。 從名字來看,“YV”表示平面順序:先存放Y,然后是V(最后是U)。 “12”指的是像素位深度:每像素12位,與I420相同。

2. YUV 4:2:2 (I422/J422)

(1). I422

與I420一樣,I422有一個亮度平面Y和2個色度平面U,V。

不過,在I422中,色度平面(藍色和紅色投影)僅在水平維度上進行下采樣,仍然是2倍。因此,在色度平面中存在與亮度平面中相同的行數。

對於2x2像素塊,每個有4個Y樣本和2個U和2個V樣本。 深度為4 * 8 + 2 * 8 + 2 * 8 =每4像素64位,因此每像素16位,位深度是16。

一些視頻編解碼器支持I422(可選)以獲得更高質量的視頻編碼。

(2). J422

J422與I422幾乎完全相同,但具有全范圍(“數字”,0-255)亮度(Y)分量而不是有限范圍(“模擬”,16-240)。 色度平面與I422完全相同。

3. YUV 4:4:4

(1). I444

類似I420和I422,I444具有一個亮度平面Y和2個色度平面U和V。但色度平面未被下采樣:每個像素有3個八位字節值。 因此深度為每像素24位(與RGB24或RGB32一樣)。

一些視頻編解碼器支持I444。

 

二、 打包格式

在打包格式中,通常只有一個平面,所有亮度和色度數據都是交錯的。 這類似於RGB像素格式,僅使用的是不同色彩空間。打包格式在網絡攝像頭中非常流行。 在硬件中,使用單獨的平面是低效的:每個像素需要幾次存儲器訪問。 打包格式更容易,因此使用起來更簡單。另一方面,打包格式通常不能處理垂直下采樣。 否則掃描線將具有不同的尺寸。 因此,通常,打包格式使用水平方向下采樣,步長因子為2(即YUV 4:2:2)。

1. UYVY

也叫Y422或UYNV。

在UYVY中,色度樣本被下采樣2倍。

若使用UYVY,在連續的2個像素中,由U開始,然后是第一個像素的亮度,然后是V,然后是第二個像素的亮度。UUUUUUUU YYYYYYYY VVVVVVVV YYYYYYYY

2. YUY2

也叫YUYV,V422或YUNV。

在YUY2中,色度樣本被下采樣2倍。

若使用YUY2,在連續的2個像素中,從第一個像素的亮度開始,然后是U,然后是第二個像素的另一個亮度,然后再次是V.

YUY2和UYVY之間的轉換是通過成對交換字節來實現的。

3. YVYU

YVYU和YUY2類似,但U和V順序是顛倒的。

4. VYUV

待定

三、半平面格式

半平面格式,有兩個平面而不是三個平面,一個平面用於亮度,一個平面用於兩個色度分量。 它們有時也被稱為雙平面格式。

(1).NV12

與I420相似,NV12具有一個“亮度”平面Y和一個交錯存着U和V的平面。

在NV12中,色度平面(藍色和紅色)在水平和垂直維度中被下采樣2倍。

對於2x2像素塊,有4個Y樣本、1個U和1個樣本。

這是NV12的圖形表示。 每個字母代表一位:

  • 對於一個 NV12 像素: YYYYYYYY UVUV
  • 2個 NV12 像素: YYYYYYYYYYYYYYYY UVUVUVUV
  • 50個 NV12 像素: Y*8*50 (UV)*2*50
  • n個 NV12 像素: Y*8*n (UV)*2*n


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM