Keep on going, never give up.

YUV编码格式排列图示

声明:本文为转载文章,非天缘原创,天缘仅作修改完善,原文地址参见文末链接。

YUV是一种颜色编码方法,Y表示明亮度(Luminance、Luma),U和V则是色度、浓度(Chrominance、Chroma)。YUV,Y`UV,YCbCr,YPbPr等都可以称为YUV,彼此有重叠。YUV和Y`UV通常用来描述模拟信号,YCbCr与YPbPr则是用来描述数位的影像信号。

YUV颜色编码方法相比于RGB的优势体现在两个方面:

  • 将亮度信息与色彩信息分离,没有色彩信息可以显示完整的图像,很好地解决了彩色电视机与黑白电视的兼容问题;
  • YUV不像RGB要求三个独立的视频信号同时传输,用YUV方式传送占用极少的频宽。

YUV存储格式,主要描述像素的Y、U、V分量排列方式,分为两种格式:

  • 紧缩格式(packed formats):将Y、U、V值储存成Macro Pixels阵列,和RGB的存放方式类似。
  • 平面格式(planar formats):将Y、U、V的三个分量分别存放在不同的矩阵中。

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

一、YUV444、YUV422、YUV420图例

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

YUV4:4:4采样,每一个Y对应一组UV分量;YUV4:2:2采样,每两个Y共用一组UV分量;YUV4:2:0采样,每四个Y共用一组UV分量(UV间隔采样)。

从上图中可以看出:

  • YUV444采样时矩阵SIZE为W*H*3(Y、U、V数量相等,都为1),理论上W和H无特殊限制。
  • YUV422采样矩阵SIZE为W*H*2(Y数量为1,U和V数量都等于0.5,和为2),理论上W应为偶数,H无限制,否则SIZE就可能不是2。
  • YUV420采样矩阵SIZE为W*H*1.5(Y数量为1,U和V数量相当,都为0.25),理论上W和H都应为偶数,否则SIZE就可能不是1.5

常见YUV格式说明:YV12、IYUV、I420、NV12、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.cnblogs.com/dwdxdy/p/3713968.html

参考资料:

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

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

YUV相关对应关系:

http://zh.wikipedia.org/wiki/YUV

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.