上篇文章介绍了YUV的采样格式,本篇重点介绍YUV的存储方式。接下来将用图形式给出常见YUV图像的存储方式,并在存储方式后面附有取样每个像素点YUV的数据方法,图中,Cb、Cr的含义等同于U、V。
YUYV为YUV422采样的存储格式中的一种,相邻两个Y共用其相邻两个Cb、Cr。比如,对于像素点Y’00、Y’01 而言,其Cb、Cr值就都 取样为 Cb00、Cr00,其他像素点的YUV取值依次类推。
UYVY格式也是YUV422采样的存储格式的一种,只不过与YUYV不同的是,UV排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样。
YUV422P属于YUV422采样的一种,它是一种Plane模式,即平面模式,不需要将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y’00、Y’01 而言,其Cb、Cr值就都取样 Cb00、Cr00。
YU12和YV12属于YUV420采样格式,称为YUV420sp,是一种Plane模式,即将Y、U、V分量分别打包,依次存储。其每一个像素点YUV数据取样遵循YUV420采样格式的提取方式,即4个Y分量共用一组UV。
上图是YV12的排列方式,比如,上图中,Y’00、Y’01、Y’10、Y’11共用Cr00、Cb00,其他依次类推。
如果是YU12,同样先排列Y,然后排列U分量,最后为V分量,数据取样方式和YV12相同。
NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,UV(CbCr)为交错存储,而不是分为三个plane。图中是NV12的存储方式,其提取方式与上一种类似,即Y’00、Y’01、Y’10、Y’11共用Cr00、Cb00。NV21的存储方式Y和图示中一样,色度交错方式先Cr00(V),在Cb00(U)。
(6)I420(属于YUV420)
此时,YUV三个量分离,每一块数据单独存储在独立的plane里。此时YUV420叫做YUV420P或I420:
(7)YUV444P 数据存储(属于YUV444)
Y灰度值分量 , 存储在最上面,U 色度值分量 , 存储在中间 , V色度值分量 , 存储在最下面的数组中。