主要就是针对YUV422格式的信号。
YUV信号有很多种,一般YUV420和YUV422用的比较多,而对Cmos sensor来说,大多都是YUV422.
YUV422格式,又分为很多小类,按照U、V的排列可以有YUYV,YVYU,UYVY,VYUY四种,其中,YUYVY一般又称作yuv2格式。
而这四种YUV422格式,每种又可以分为2小类,按Y和UV的排列可以有打包格式和平面格式。例如,一个640×480×2的YUV文件,打包格式就是YUYVYUYV这样一直排列下去,平面格式就是先640×480个Y排列完,然后是640×240个U,然后是640×240个V这样排列,如下图:
![YUV信号格式 - 加菲 - . YUV信号格式 - 加菲 - .](http://img762.ph.126.net/uCKzoHig4nj8X6sG7C5vdw==/4891753620254739600.jpg)
假如有一幅640×480的图片,用yuv422来表示,那么,采样方式就是每个像素采样Y信号,U,V信号隔一个采样,这样算下来,就有640×480个Y,640×240个U,640×240个V,一幅640×480大小的YUV图片占的总字节数为640×480×2个字节,每像素2个字节,也就是16位。
在内存种这样排列:Y0U0Y1V0 Y2U1Y3V1...
第一个像素的YUV值为:Y0 U0 V0
第二个像素的YUV值为: Y1 U0 V0
第三个像素的YUV值为: Y2 U1 V1
.....其他以此推类,也就是说每两个像素是共用了UV的;在一行上来看,每个像素的YUV值种Y值被采样,UV值采样0后,跳到3,然后5,所以每行上Y有640个,U,V各320个。
YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。表2.3中的YUY2到Y211都是打包格式,而IF09到YVU9都是平面格式。(注意:在介绍各种具体格式时,YUV各分量都会带有下标,如Y0、U0、V0表示第一个像素的YUV分量,Y1、U1、V1表示第二个像素的YUV分量,以此类推。)
¨ YUY2(和YUYV)格式为每个像素保留Y分量,而UV分量在水平方向上每两个像素采样一次。一个宏像素为4个字节,实际表示2个像素。(4:2:2的意思为一个宏像素中有4个Y分量、2个U分量和2个V分量。)图像数据中YUV分量排列顺序如下: Y0 U0 Y1 V0 Y2 U2 Y3 V2 … ¨ YVYU格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同: Y0 V0 Y1 U0 Y2 V2 Y3 U2 … ¨ UYVY格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同: U0 Y0 V0 Y1 U2 Y2 V2 Y3 … ¨ AYUV格式带有一个Alpha通道,并且为每个像素都提取YUV分量,图像数据格式如下: A0 Y0 U0 V0 A1 Y1 U1 V1 … ¨ Y41P(和Y411)格式为每个像素保留Y分量,而UV分量在水平方向上每4个像素采样一次。一个宏像素为12个字节,实际表示8个像素。图像数据中YUV分量排列顺序如下: U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 … ¨ Y211格式在水平方向上Y分量每2个像素采样一次,而UV分量每4个像素采样一次。一个宏像素为4个字节,实际表示4个像素。图像数据中YUV分量排列顺序如下: Y0 U0 Y2 V0 Y4 U4 Y6 V4 … ¨ YVU9格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个4 x 4的宏块,然后每个宏块提取一个U分量和一个V分量。图像数据存储时,首先是整幅图像的Y分量数组,然后就跟着U分量数组,以及V分量数组。IF09格式与YVU9类似。 ¨ IYUV格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个2 x 2的宏块,然后每个宏块提取一个U分量和一个V分量。YV12格式与IYUV类似。 ¨ YUV411、YUV420格式多见于DV数据中,前者用于NTSC制,后者用于PAL制。YUV411为每个像素都提取Y分量,而UV分量在水平方向上每4个像素采样一次。YUV420并非V分量采样为0,而是跟YUV411相比,在水平方向上提高一倍色差采样频率,在垂直方向上以U/V间隔的方式减小一半色差采样,如上图所示。