[轉]圖解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的區別


概述

YUV模型是根據一個亮度(Y分量)和兩個色度(UV分量)來定義顏色空間,常見的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比較常見的YUV420分為兩種:YUV420P和YUV420SP。

我們在android平台下使用相機默認圖像格式是NV21屬於YUV420SP格式:
image

YUV采樣

我們最常見的YUV420P和YUV420SP都是基於4:2:0采樣的,所以如果圖片的寬為width,高為heigth,在內存中占的空間為width * height * 3 / 2,其中前width * height的空間存放Y分量,接着width * height / 4存放U分量,最后width * height / 4存放V分量。

YUV 4:4:4采樣,每一個Y對應一組UV分量,一個YUV占8+8+8 = 24bits 3個字節。
YUV 4:2:2采樣,每兩個Y共用一組UV分量,一個YUV占8+4+4 = 16bits 2個字節。
YUV 4:2:0采樣,每四個Y共用一組UV分量,一個YUV占8+2+2 = 12bits 1.5個字節。

YUV420P(YU12和YV12)格式

YUV420P又叫plane平面模式,Y , U , V分別在不同平面,也就是有三個平面,它是YUV標准格式4:2:0,主要分為:YU12和YV12
image
image

1. YU12格式

在android平台下也叫作I420格式,首先是所有Y值,然后是所有U值,最后是所有V值。

YU12:亮度(行×列) + U(行×列/4) + V(行×列/4)

image

2. YV12格式

YV12格式與YU12基本相同,首先是所有Y值,然后是所有V值,最后是所有U值。只要注意從適當的位置提取U和V值,YU12和YV12都可以使用相同的算法進行處理。

YV12:亮度Y(行×列) + V(行×列/4) + U(行×列/4)
YU12: YYYYYYYY UUVV    =>    YUV420P
YV12: YYYYYYYY VVUU    =>    YUV420P

image
YUV模型是根據一個亮度(Y分量)和兩個色度(UV分量)來定義顏色空間,常見的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比較常見的YUV420分為兩種:YUV420P和YUV420SP。

我們在android平台下使用相機默認圖像格式是NV21屬於YUV420SP格式## YUV420SP(NV21和NV12)格式

YUV420SP格式的圖像陣列,首先是所有Y值,然后是UV或者VU交替存儲,NV12和NV21屬於YUV420SP格式,是一種two-plane模式,即Y和UV分為兩個plane,但是UV(CbCr)為交錯存儲,而不是分為三個平面。
image

3. NV21格式

android手機從攝像頭采集的預覽數據一般都是NV21,存儲順序是先存Y,再VU交替存儲,NV21存儲順序是先存Y值,再VU交替存儲:YYYYVUVUVU,以 4 X 4 圖片為例子,占用內存為 4 X 4 X 3 / 2 = 24 個字節。
image

4.NV12格式

NV12與NV21類似,也屬於YUV420SP格式,NV12存儲順序是先存Y值,再UV交替存儲:YYYYUVUVUV,以 4 X 4 圖片為例子,占用內存為 4 X 4 X 3 / 2 = 24 個字節。
注意:在DVD中,色度信號被存儲成Cb和Cr(C代表顏色,b代表藍色,r代表紅色)
image

NV12: YYYYYYYY UVUV    =>YUV420SP
NV21: YYYYYYYY VUVU    =>YUV420SP

圖解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的區別


免責聲明!

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



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