【视频处理】YUV格式说明

YUV,是一种颜色编码方法,Y表示明亮度(Luminance、Luma),U和V则是色度、浓度(Chrominance、Chroma)。php

YUV,Y`UV,YCbCr,YPbPr等均可以称为YUV,彼此有重叠。数组

YUV和Y`UV一般用来描述模拟信号YCbCr与YPbPr则是用来描述数位的影像信号布局

YUV颜色编码方法相比于RGB的优点体如今两个方面:编码

将亮度信息与色彩信息分离,没有色彩信息能够显示完整的图像,很好地解决了彩色电视机与黑白电视的兼容问题;orm

YUV不像RGB要求三个独立的视频信号同时传输,用YUV方式传送占用极少的频宽。视频

YUV存储格式,主要描述像素的Y、U、V份量排列方式,分为两种格式:紧缩格式和平面格式。blog

紧缩格式(packed formats):将Y、U、V值储存成Macro Pixels阵列,和RGB的存放方式相似。内存

平面格式(planar formats):将Y、U、V的三个份量分别存放在不一样的矩阵中。get

YUV采样方式,主要描述像素Y、U、V份量采样比例,即表达每一个像素时,Y、U、V份量的数目,一般有三种方式:YUV4:4:4,YUV4:2:2,YUV4:2:0。it

用三个图直观地表示采集的方式,以黑点表示采样该像点的Y份量,以空心圆圈表示采用该像素点的UV份量。

YUV4:4:4采样,每个Y对应一组UV份量;YUV4:2:2采样,每两个Y共用一组UV份量;YUV4:2:0采样,每四个Y共用一组UV份量。

 

常见YUV格式说明:YV十二、IYUV、I420、NV十二、NV21 采样方式都是4:2:0,其存储格式都是平面格式,下面简要说明以上常见格式的内存布局。

YV12

  全部 Y 样例都会做为不带正负号的char值组成的数组首先显示在内存中。此数组后面紧接着全部 V (Cr) 样例。V 平面的跨距为 Y 平面跨距的一半,V 平面包含的行为 Y 平面包含行的一半。V 平面后面紧接着全部 U (Cb) 样例,它的跨距和行数与 V 平面相同。

 

IYUV和I420

   IYUV、I420和YV12的内存布局格式是同样的,只是U、V份量的顺序是相反的,IYUV和I420格式中,U份量紧跟Y份量后,V份量紧跟U份量后,如图所示。

 

NV12

  全部 Y 样例都会做为由不带正负号的char值组成的数组首先显示在内存中,而且行数为偶数。Y 平面后面紧接着一个由不带正负号的char值组成的数组,其中包含了打包的 U (Cb) 和 V (Cr) 样例,如图 所示。当组合的 U-V 数组被视为一个由 little-endian WORD值组成的数组时,LSB 包含 U 值,MSB 包含 V 值。NV12 是用于 DirectX VA 的首选 4:2:0 像素格式。预期它会成为支持 4:2:0 视频的 DirectX VA 加速器的中期要求。

 

NV21

  NV21和NV12的内存布局是同样的,只是U、V份量交错存储的顺序是相反的,NV21格式中,是以V-U的交错方式存储,如图所示。

 

参考资料:

http://www.fourcc.org/yuv.php

http://wenzongliang.iteye.com/blog/1902608

相关文章
相关标签/搜索