yuv格式轉換是那個組織定義的 YUV格式詳解

2021-10-16 20:14:40 字數 4373 閱讀 8033

yuv格式通常有兩大類:打包(packed)格式和平面(planar)格式。

前者將yuv分量存放在同乙個陣列中,通常是幾個相鄰的畫素組成乙個巨集畫素(macro-pixel);

而後者使用三個陣列分開存放yuv三個分量,就像是乙個三維平面一樣。

表2.3中的yuy2到y211都是打包格式,而if09到yvu9都是平面格式。

(注意:在介紹各種具體格式時,yuv各分量都會帶有下標,

如y0、u0、v0表示第乙個畫素的yuv分量,y1、u1、v1表示第二個畫素的yuv分量,以此類推。)

mediasubtype_yuy2 yuy2格式,以4:2:2方式打包

mediasubtype_yuyv yuyv格式(實際格式與yuy2相同)

mediasubtype_yvyu yvyu格式,以4:2:2方式打包

mediasubtype_uyvy uyvy格式,以4:2:2方式打包

mediasubtype_ayuv 帶alpha通道的4:4:4 yuv格式

mediasubtype_y41p y41p格式,以4:1:1方式打包

mediasubtype_y411 y411格式(實際格式與y41p相同)

mediasubtype_y211 y211格式

mediasubtype_if09 if09格式

mediasubtype_iyuv iyuv格式

mediasubtype_yv12 yv12格式

mediasubtype_yvu9 yvu9格式

表2.3

yuv 取樣

yuv 的優點之一是,

色度頻道的取樣率可比 y 頻道低,同時不會明顯降低視覺質量。

有一種表示法可用來描述 u 和 v 與 y 的取樣頻率比例,這個表示法稱為 a:b:c 表示法:

4:4:4 表示色度頻道沒有下取樣。

4:2:2 表示 2:1 的水平下取樣,沒有垂直下取樣。對於每兩個 u 樣例或 v 樣例,每個掃瞄行都包含四個 y 樣例。

4:2:0 表示 2:1 的水平下取樣,2:1 的垂直下取樣。

4:1:1 表示 4:1 的水平下取樣,沒有垂直下取樣。對於每個 u 樣例或 v 樣例,每個掃瞄行都包含四個 y 樣例。與其他格式相比,4:1:1 取樣不太常用,本文不對其進行詳細討論。

圖 1 顯示了 4:4:4 中使用的取樣網格。燈光樣例用叉來表示,色度樣例則用圈表示。

圖 1. yuv 4:4:4 樣例位置

4:2:2 取樣的這種主要形式在 itu-r recommendation bt.601 中進行了定義。

圖 2 顯示了此標準定義的取樣網格。

圖 2. yuv 4:2:2 樣例位置

另一種形式用於 mpeg-1 以及 itu-t recommendations h.261 和 h.263。

圖 3 顯示了 mpeg-1 方案中使用的取樣網格,

圖 4 顯示了 mpeg-2 方案中使用的取樣網格。

圖 3. yuv 4:2:0 樣例位置(mpeg-1 方案)

圖 4. yuv 4:2:0 樣例位置(mpeg-2 方案)

與 mpeg-1 方案相比,在 mpeg-2 方案與為 4:2:2 和 4:4:4 格式定義的取樣網格之間進行轉換更簡單一些。

因此,在 windows 中首選 mpeg-2 方案,應該考慮將其作為 4:2:0 格式的預設轉換方案。

表面定義

4:4:4 格式,每畫素 32 位

4:2:2 格式,每畫素 16 位

4:2:0 格式,每畫素 16 位

4:2:0 格式,每畫素 12 位

首先,您應該理解下列概念,這樣才能理解接下來的內容:

表面原點。對於本文講述的 yuv 格式,原點 (0,0) 總是位於表面的左上角。

跨距。表面的跨距,有時也稱為間距,指的是表面的寬度,以位元組數表示。

對於乙個表面原點位於左上角的表面來說,跨距總是正數。

對齊。表面的對齊是根據圖形顯示驅動程式的不同而定的。

表面始終應該 dword 對齊,就是說,表面中的各個行肯定都是從 32 位 (dword) 邊界開始的。

對齊可以大於 32 位,但具體取決於硬體的需求。

打包格式與平面格式。yuv 格式可以分為打包 格式和平面 格式。

在打包格式中,y、u 和 v 元件儲存在乙個陣列中。

畫素被組織到了一些巨畫素組中,巨畫素組的布局取決於格式。

在平面格式中,y、u 和 v 元件作為三個單獨的平面進行儲存。

4:4:4 格式,每畫素 32 位

推薦乙個 4:4:4 格式,fourcc 碼為 ayuv。這是乙個打包格式,其中每個畫素都被編碼為四個連續位元組,其組織順序如下所示。

圖 5. ayuv 記憶體布局

標記了 a 的位元組包含 alpha 的值。

4:2:2 格式,每畫素 16 位

支援兩個 4:2:2 格式,fourcc 碼如下:

yuy2

uyvy

兩個都是打包格式,其中每個巨畫素都是編碼為四個連續位元組的兩個畫素。這樣會使得色度水平下取樣乘以係數 2。

yuy2

在 yuy2 格式中,資料可被視為乙個不帶正負號的 char 值組成的陣列,

其中第乙個位元組包含第乙個 y 樣例,第二個位元組包含第乙個 u (cb) 樣例,

第三個位元組包含第二個 y 樣例,第四個位元組包含第乙個 v (cr) 樣例,

如圖 6 所示。

圖 6. yuy2 記憶體布局

如果該影象被看作由兩個 little-endian word 值組成的陣列,

則第乙個 word 在最低有效位 (lsb) 中包含 y0,在最高有效位 (msb) 中包含 u。

第二個 word 在 lsb 中包含 y1,在 msb 中包含 v。

yuy2 是用於 microsoft directx? video acceleration (directx va) 的首選 4:2:2 畫素格式。

uyvy

此格式與 yuy2 相同,只是位元組順序是與之相反的 — 就是說,色度位元組和燈光位元組是翻轉的(圖 7)。

如果該影象被看作由兩個 little-endian word 值組成的陣列,

則第乙個 word 在 lsb 中包含 u,在 msb 中包含 y0,第二個word 在 lsb 中包含 v,在 msb 中包含 y1。

圖 7. uyvy 記憶體布局

4:2:0 格式,每畫素 16 位

imc1

imc3

兩個 fourcc 碼都是平面格式。色度頻道在水平方向和垂直方向上都要以係數 2 來進行再次取樣。

imc1

所有 y 樣例都會作為不帶正負號的 char 值組成的陣列首先顯示在記憶體中。

後面跟著所有 v (cr) 樣例,然後是所有 u (cb) 樣例。v 和 u 平面與 y 平面具有相同的跨距,

從而生成如圖 8 所示的記憶體的未使用區域。

圖 8. imc1 記憶體布局

imc3

此格式與 imc1 相同,只是 u 和 v 平面進行了交換:

圖 9. imc3 記憶體布局

4:2:0 格式,每畫素 12 位

imc2

imc4

yv12

nv12

在所有這些格式中,色度頻道在水平方向和垂直方向上都要以係數 2 來進行再次取樣。

imc2

此格式與 imc1 相同,只是 v (cr) 和 u (cb) 行在半跨距邊界處進行了交錯。

換句話說,就是色度區域中的每個完整跨距行都以一行 v 樣例開始,然後是一行在下乙個半跨距邊界處開始的 u 樣例(圖 10)。

此布局與 imc1 相比,能夠更加高效地利用位址空間。

它的色度位址空間縮小了一半,因此整體位址空間縮小了 25%。

在各個 4:2:0 格式中,imc2 是第二首選格式,排在 nv12 之後。

圖 10. imc2 記憶體布局

imc4

此格式與 imc2 相同,只是 u (cb) 和 v (cr) 行進行了交換:

圖 11. imc4 記憶體布局

yv12

所有 y 樣例都會作為不帶正負號的 char 值組成的陣列首先顯示在記憶體中。

此陣列後面緊接著所有 v (cr) 樣例。v 平面的跨距為 y 平面跨距的一半,v 平面包含的行為 y 平面包含行的一半。

v 平面後面緊接著所有 u (cb) 樣例,它的跨距和行數與 v 平面相同(圖 12)。

圖 12. yv12 記憶體布局

nv12

所有 y 樣例都會作為由不帶正負號的 char 值組成的陣列首先顯示在記憶體中,並且行數為偶數。

y 平面後面緊接著乙個由不帶正負號的 char 值組成的陣列,其中包含了打包的 u (cb) 和 v (cr) 樣例,

如圖 13 所示。當組合的 u-v 陣列被視為乙個由 little-endian word 值組成的陣列時,lsb 包含 u 值,msb 包含 v 值。

yuv格式轉換是那個組織定義的 YUV資料格式

概要 yuv格式類別 打包 packed 格式 將每個畫素點的y,u,v分量交叉排列並以畫素點為單元連續的存放在同一陣列中,通常幾個相鄰的畫素組成乙個巨集畫素 macro pixel 平面 planar 格式 使用三個陣列分開連續的存放y,u,v三個分量,即y,u,v分別存放在各自的陣列中。yuv取...

YUV格式到RGB格式的轉換

yuyv格式到rgb格式的轉換 yuyv格式如下 y0u0y1v0 y2u1y3v1.說明 乙個y代表乙個畫素,而乙個y和uv組合起來構成乙個畫素,所以第0個畫素y0和第乙個畫素y1都是共用第0個畫素的u0和v0。而每個分量y,u,v都是占用乙個位元組的儲存空間。所以y0u0y1v0相當於兩個畫素,...

YUV 格式與 RGB 格式的相互轉換公式

cr vcb u 0.257r 0.504g 0.098b 160.439r 0.368g 0.071b 128 0.148r 0.291g 0.439b 128y 0.257r 0.504g 0.098b 16cr v 0.439r 0.368g 0.071b 128cb u 0.148r 0.2...