1、YUV模型分类:
是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式描述有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV422、YUV420等,
其中常见的YUV422包含YUVY ,UYVY,YUV422P等
比较常见的YUV420分为两种:YUV420P和YUV420SP
在DVD中,UV色度信号被存储成Cb和Cr(C代表颜色,b代表蓝色,r代表红色)
2、YUV采样比例:
YUV444 4:4:4采样,每一个Y对应一组UV分量,一个YUV占8+8+8 = 24bits 3个字节。
YUV422 4:2:2采样,每两个Y共用一组UV分量,一个YUV占8+4+4 = 16bits 2个字节。
YUV420 4:2:0采样,每四个Y共用一组UV分量,一个YUV占8+2+2 = 12bits 1.5个字节
下面用三个图来直观地表示采集的方式,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量:
3、YUV422格式:
常见的YUVY ,UYVY,YUV422P都是基于4:2:2采样的,
对于4:2:2采样的图,如果图片的宽为width,高为heigth,在内存中占的空间为width * height * 2,其中width * height的空间存放Y分量, width * height/ 2的空间存放U分量,width * height / 2的空间存放V分量3.1 YUYV422 (YUVY422)格式 :
相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y’00、Y’01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推,如下图所示(Cb、Cr的含义等同于U、V,下同):
3.2 UYVY422 格式 :
UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,如下图所示,还原其每个像素点的YUV值的方法与上面一样:
3.3 YUV422P 格式 :
YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如下图所示。
其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y’00、Y’01 而言,其Cb、Cr的值均为 Cb00、Cr00:
4、YUV420格式:
常见的YUV420P和YUV420SP都是基于4:2:0采样的,
对于4:2:0采样的图,如果图片的宽为width,高为heigth,在内存中占的空间为width * height * 3 / 2,其中前width * height的空间存放Y分量,接着width * height / 4存放U分量,最后width * height / 4存放V分量
4.1 YUV420P格式:
YUV420P又叫plane平面模式,Y , U , V分别在不同平面,也就是有三个平面,它是YUV标准格式4:2:0,
YUV420P主要分为:YU12和YV12:
4.1.1 YU12(I420)格式:
YU12在android平台下也叫I420格式,数据存储方式,首先是所有Y值,然后是所有U值,最后是所有V值,亮度(行×列) + U(行×列/4) + V(行×列/4),如下图所示:
4.1.2 YV12格式:
YV12格式与YU12基本相同,数据存储方式,首先是所有Y值,然后是所有V值,最后是所有U值。只要注意从适当的位置提取U和V值,YU12和YV12都可以使用相同的算法进行处理,亮度Y(行×列) + V(行×列/4) + U(行×列/4),如下图所示:
4.2 YUV420SP格式:
YUV420SP格式的图像阵列,数据存储方式,首先是所有Y值,然后是UV或者VU交替存储,NV12和NV21属于YUV420SP格式,是一种two-plane模式,即Y和UV分为两个plane,但是UV(CbCr)为交错存储,而不是分为三个平面。
主要分为:NV12和NV21:4.2.1 NV21格式:
android手机从摄像头采集的预览数据一般都是NV21,存储顺序是先存Y,再VU交替存储,NV21存储顺序是先存Y值,再VU交替存储:YYYYVUVUVU,以 4 X 4 图片为例子,占用内存为 4 X 4 X 3 / 2 = 24 个字节,如下图所示:
4.2.2 NV12格式:
NV12与NV21类似,也属于YUV420SP格式,NV12存储顺序是先存Y值,再UV交替存储:YYYYUVUVUV,以 4 X 4 图片为例子,占用内存为 4 X 4 X 3 / 2 = 24 个字节,如下图所示: