分类: 系统运维
2010-09-15 16:16:03
1)YUV444格式是完全没有删减最逼真的格式,每4个Y,配有4个V,4个U.每个pixel 32bit
2)YUV422格式则是UV减半的格式,既是4个Y搭2个U两个V。每个pixel 16bit
2-1 YUV2
如下YUV2格式中,数据可被视为一个不带正负号的 char 值组成的数组,其中第一个字节包含第一个 Y 样例,第二个字节包含第一个 U (Cb) 样例,第三个字节包含第二个 Y 样例,第四个字节包含第一个 V (Cr) 样例
2-2 UYVY
此格式与 YUY2 相同,只是字节顺序是与之相反的 — 就是说,色度字节和灯光字节是翻转的(图 7)。如果该图像被看作由两个 little-endian WORD 值组成的数组,则第一个 WORD 在 LSB 中包含 U,在 MSB 中包含 Y0,第二个 WORD 在 LSB 中包含 V,在 MSB 中包含 Y1。
3)YUV420格式则是UV减为1/4的格式,既是4个Y搭1个V,1个U,一般为16位或12位.
YUV2:这个格式又被写为YUYV,属于YUV422的一种
这里使用的是YUV2格式,像素数据的使用packed模式打包的,意思就是所有的Y/U/V数据都在一个数组内存储。存储的格式如下面的简图所示:
Y0 | U0 | Y1 | V0 | Y2 | U2 | Y3 | V2 | Y4 | U4 | Y5 | V4 | … |
如上图所示,Y0-U0-Y1-V0是一个宏像素,但是其中缺少U1和V1,这就是YUV422的原理,对于四个像素,只采样其中的两个像素的U和 V,这里是采样了偶数下标像素的U和V,所以需要用相邻的像素中的U和V来补全单数下标像素的U和V。这里简单的采用相邻补全的算法。既U1和V1将由 U0/U2和V0/V2的和的均值补全。采用这种算法速度很快,简单,但将丢失图像列上的U/V信息。
所以
单数下标的U/V的公式如下:
U1 = (U0+U2)/2
V1 = (V0+V2)/2
对于边界的处理,既每一行的最后一个像素的U和V,则直接取前一个像素的U,V