YUV图像存储结构


4:4:4 Formats,32 Bits per Pixel

推荐使用基于FOURCC编码的AYUV4:4:4格式. 这是一个packed格式, 每个象素编码为4个连续的字节, 按以下序列排列:

Fig.1 AYUV 内存布局

4:2:2 Formats, 16 Bits per Pixel

现在最常用的有两种 4:2:2 格式, 使用FOURCC编码:

YUY2
UYVY
这两个都是 packed 格式, 每个逻辑象素是由两个实际象素编码成4个连续的字节. 这就使水平方向的(减象素)downsampling.

YUY2
对于YUY2格式,样本数据可以被看成一个unsigned char的数组,第一个字节是Y样本,第二个是第一个U(Cb)样本,第三个是第二个Y样本,第四个是第一个V(Cr)样本。如图Fig.2。

Fig.2 YUY2 内存布局
YUY2是被Microsoft DirectX? Video Acceleration (DirectX VA)所推荐的4:2:2格式。

UYVY
这个格式和YUY2是基本一样的,不同的是字节顺序正好相反(图3)。

Fig.3 UYVY 内存布局

4:2:0 Formats, 12 Bits per Pixel

这里推荐两种4:2:0 16-bits per pixel的格式,使用FOURCC编码:

IMC1

IMC3

这两种FOURCC编码都是平面格式,色度通道在水平和垂直方向作了2次采样。

IMC1

所有的Y样本以unsigned char的数组形式出现在内存的最开始。接下来是所有的V(Cr)样本,再下来是U(Cb)样本。V和U平面和Y平面有一样的移动幅度,结果造成了未使用的空间。如图4:


Figure 4. IMC1 内存布局

IMC3

这个格式和IMC1基本相同,不同在他们的U和V位置交换了。

Figure 5. IMC3 内存布局

4:2:0 Formats, 12 Bits per Pixel

这里介绍4种4:2:0 12-bpp的格式,使用FOURCC编码:

IMC2

IMC4

YV12

NV12

所有的这些格式,色度通道在水平和垂直方向都作了2次采样。

IMC2

这种格式和IMC1也是基本相同,不同的是U(Cb)和V(Cr)采样交叉存取。也就是说,色度区域的每行都以U样本开始,到一半的时候V样本开始,也就是U和V各25%的地址空间。在所有的4:2:0的格式中,IMC2是第二个最佳的格式,第一的是NV12。

Figure 6. IMC2 内存布局

IMC4

和IMC2类似,不同的是U(Cb)和V(Cr)交换了位置。

Figure 7. IMC4 内存布局

YV12

所有的Y样本以unsigned char的数组形式出现在内存的最开始。接下来就是所有的V(Cr)样本,步幅是Y的一半,而且有一半Y的行数。接下来是所有的U(Cb)样本,和V有同样的行数。如图8:

Figure 8. YV12 内存布局

NV12
所有的Y样本以unsigned char的数组形式出现在内存的最开始,并且为偶数行。U和V的样本成对出现的紧跟Y平面紧跟其后,如图9。NV12是DirectX VA首选的4:2:0格式。

Figure 9. NV12 内存布局

« 收到Ubuntu Dapper的光盘了 韩乔生语录 »

0 Responses to YUV图像存储结构

    There are currently no comments.

Name (*)

Email Address (*)

Web Address