日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NV12等常用YUV数据格式

發(fā)布時間:2023/12/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NV12等常用YUV数据格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NV12等常用YUV數據格式

  • 1. YUV 采樣表示法
  • 2. YUV 格式
  • 3. 數據格式
    • 3.1 4:4:4 格式
    • 3.2 4:2:2 格式
    • 3.3 4:2:0 格式
  • 4. YUV數據轉換
  • 5. NV12轉RGB

Reference:

  • YUV數據格式
  • 圖解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的區(qū)別
  • 與 RGB 編碼方法類似,YUV 也是一種顏色編碼方法。其中“Y”表示明亮度(Luminance 或 Luma),也就是灰階值,U 和 V 表示的則是色度(Chrominance 或 Chroma),分別用 CrC_rCr?CbC_bCb? 來表示,作用是描述影像色彩及飽和度,用于指定像素的顏色。

    這樣分開的好處;

  • 可以避免相互干擾(沒有 UV 信息一樣可以顯示完整的圖像,因而解決了彩色電視與黑白電視的兼容問題);
  • 降低色度的采樣率而不會對圖像質量影響太大,降低了視屏是`信號傳輸時對頻寬(帶寬)的要求。
  • YUV 是一個比較籠統(tǒng)地說法,針對它的具體排列方式,可以分為很多種具體的格式。

    1. YUV 采樣表示法

    YUV 采用 A:B:C 表示法來描述 YYY, UUU, VVV 采樣頻率比例,下圖中黑點表示采樣像素點 YYY 分量,空心圓表示采樣像素點的 UVUVUV 分量。

    • 4:4:4 表示色度頻道沒有下采樣,即一個 YYY 分量對應著一個 UUU 分量和一個 VVV 分量。一個 YUV 占 8+8+8=24bits 3個字節(jié);
    • 4:2:2 表示 2:1 的水平取樣,垂直完全采樣。一個 YUV 占 8+4+4=16bits 2個字節(jié);
    • 4:2:0 表示 2:1 的水平取樣,垂直 2:1 采樣。一個 YUV 占 8+2+2=12bits 1.5個字節(jié);
    • 4:1:1 表示 4:1 的水平取樣,垂直完全采樣。 與其他格式相比,4:1:1 采樣不太常用。

    2. YUV 格式

  • 打包格式(packed formats): 打包格式中的 YUV 時混合在一起的。
  • 平面格式(planar formats): 每 YYY 分量、UUU 分量和 VVV 分量都是以獨立的平面組織的,也就是有三個平面。
  • 3. 數據格式

    3.1 4:4:4 格式

  • AYUV:這是一個打包格式,其中每個像素都被編碼為四個連續(xù)字節(jié),其組織順序如下所示,其中 AAA 標示了alpha通道。
  • 3.2 4:2:2 格式

  • YUY2:在 YUY2 格式中,數據可被視為一個不帶正負號的 char 值組成的數組,其中第一個字節(jié)存儲第一個 YYY 樣例,第二個字節(jié)存儲第一個 U(Cb)U(C_b)U(Cb?) 樣例,第三個字節(jié)存儲第二個 YYY 樣例,第四個字節(jié)存儲第一個 V(Cr)V(C_r)V(Cr?) 樣例,如下圖:
  • UYVY:此格式與 YUY2 相同,只是字節(jié)順序是與之相反的。
  • 3.3 4:2:0 格式

  • IMC1:所有 YYY 樣例都會作為不帶正負號的 char 值組成的數組首先存儲在內存中。后面跟著存儲所有 V(Cr)V(C_r)V(Cr?) 樣例,然后是所有 U(Cb)U(C_b)U(Cb?) 樣例。VVVUUU 平面與 YYY 平面具有相同的跨距(即存儲數組的寬度),從而遺留了如下圖所示的未使用的內存區(qū)域。

  • IMC3:此格式與 IMC1 相同,只是 UUUVVV 平面進行了交換:

  • IMC2:此格式與 IMC1 相同,只是 V(Cr)V(C_r)V(Cr?)U(Cb)U(C_b)U(Cb?) 行在半跨距邊界處進行了交錯。換句話說,就是色度區(qū)域中的每個完整跨距行都以一行 VVV 樣例開始,然后是一行在下一個半跨距邊界處開始的 UUU 樣例:

    此布局與 IMC1 相比,IMC2 能夠更加高效地利用存儲空間。它的色度存儲空間縮小了一半,因此整體存儲空間縮小了 25%。在各個 4:2:0 格式中,IMC2 是第二首選格式,排在 NV12 之后。

  • IMC4:此格式與 IMC2 相同,只是 U(Cb)U(C_b)U(Cb?)V(Cr)V(C_r)V(Cr?) 行進行了交換:

  • NV12: 所有 YYY 樣例都會作為由不帶正負號的 char 值組成的數組首先存儲在內存中,并且行數為偶數。YYY 平面后面緊接著一個由不帶正負號的 char 值組成的數組,其中包含了打包的 U(Cb)U(C_b)U(Cb?)V(Cr)V(C_r)V(Cr?) 樣例。

  • NV21: NV21 格式和 NV12 存儲格式基本相同,只是 UVUVUV 存儲位置互換。

  • YU12: 也叫做 I420 格式,首先是所有 YYY,然后是所有 UUU,最后是所有 VVV
    也就是為什么 UUUVVV 看到的是四幅圖像(如圖中U1、U2、U3 和 U4、U5、U6相比在Y上是上下兩行,而不是同一行,所以可以看到兩張):

  • YV12: YV12 格式與 YU12 基本相同,首先是所有 YYY 值,然后是所有 VVV 值,最后是所有 UUU 值。

  • 4. YUV數據轉換

  • 4:2:2 -> 4:2:0 的有損壓縮轉換:YYY 存儲數據不變,對 UUUVVV 分量在行垂直下采樣進行隔行抽樣。
  • 4:2:0 -> 4:2:2的補足轉換:YYY 存儲數據不變,對 UUUVVV 分量在行垂直下采樣進行隔行拷貝補足下一行色度數據。
  • 5. NV12轉RGB

    r = y + (140 * (v-128))/100; //r g = y - (34 * (u-128))/100 - (71 * (v-128))/100; //g b = y + (177 * (u-128))/100; //b

    總結

    以上是生活随笔為你收集整理的NV12等常用YUV数据格式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。