一、介绍
YUV是一种表示颜色的模型,也可以叫做采样率。
YUV又可以叫为Y Cb Cr ,其中Y是指亮度分量,Cb (U)指蓝色色度分量,而Cr(V)指红色色度分量。
二、分类
首先我们看一张图片:
可以就看出,YUV分为 YUV420、YUV422、YUV444三大类
为什么分为这三类呢,是因为我们的眼睛对Y的敏感度远超U和V,这三中类型就是针对不同的人眼特性。
2.1YUV的占比
- YUV 420,由 4 个 Y 分量共用一套 UV 分量;
- YUV 422,由 2 个 Y 分量共用一套 UV 分量;
- YUV 444,不共用,一个 Y 分量使用一套 UV 分量;
2.2YUV排布方式
根据YUV三种分量在内存中的排布方式不一样,我们可以将YUV的三种类别再次进行细分;
- Planar (平面类格式):YUV 三个分量分开存放;
- Semi-Planar(半平面类格式) :Y 分量单独存放,UV 分量交错存放;
- Packed (打包类格式):YUV 三个分量全部交错存放;
2.3格式详解
(1)YUV420中的 I420(Planar)
依次序存放:先存放所有Y再存所有U最后存放所有V。
Y1 Y2 Y Y Y YY3 Y4 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YU1 U UU U UU U UV1 V VV V VV V V
其中Y1 Y2 Y3 Y4 共用 U1 V1;
(2)YUV420中的NV12(Planar)
依次序存放:先存放所有Y再存所有V最后存放所有U。
Y1 Y2 Y Y Y YY3 Y4 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YV1 V VV V VV V VU1 U UU U UU U U
其中Y1 Y2 Y3 Y4 共用 V1 U1;
(3)YUV420中的NV12(Semi-Planar)
依次序存放:先存放所有Y,然后UV依次存放,从U开始。
Y1 Y2 Y Y Y Y
Y3 Y4 Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U1 V1 U V U V
U V U V U V
U V U V U V
其中Y1 Y2 Y3 Y4 共用 V1 U1;
(4)YUV420中的NV21(Semi-Planar)
依次序存放:先存放所有Y,然后VU依次存放,从V开始。
Y1 Y2 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YV1 U1 V U V UV U V U V UV U V U V U
其中Y1 Y2 共用 V1 U1;
(5)YUV422中的I422(Planar)
依次序存放:先存放所有Y再存所有U最后存放所有V。
Y1 Y2 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YU1 U U U U UU U U U U U U U U U U U V1 V V V V VV V V V V V V V V V V V
其中Y1 Y2 共用 V1 U1;
(6)YUV422中的YV16(Planar)
依次序存放:先存放所有Y再存所有V最后存放所有U。
Y1 Y2 Y Y Y YY3 Y4 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YV1 V V V V VV V V V V V V V V V V VU1 U U U U UU U U U U U U U U U U U
其中Y1 Y2 共用 V1 U1;
(7) YUV422中的 NV16 (Semi-Planar)
依次序存放:先存放所有Y再依次存放UV,从U开始。
Y1 Y2 Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U1 V1 U V U V
U V U V U V
U V U V U V
U1 V1 U V U V
U V U V U V
U V U V U V
其中Y1 Y2 共用 V1 U1;
(8)YUV 422中的VYUY (Packed)
按照VYUY 格式依次排序
V1 Y1 U1 Y2 V Y U Y V Y U Y
V Y U Y V Y U Y V Y U Y
V Y U Y V Y U Y V Y U Y
V Y U Y V Y U Y V Y U Y
V Y U Y V Y U Y V Y U Y
V Y U Y V Y U Y V Y U Y
Y1 Y2 共用 V1 U1 ;
(9)YUV 422中的YUVY (Packed)
按照YUVY 格式依次排序
Y1 U1 V1 Y2 Y U V Y Y U V Y
Y U V Y Y U V Y Y U V Y
Y U V Y Y U V Y Y U V Y
Y U V Y Y U V Y Y U V Y
Y U V Y Y U V Y Y U V Y
Y U V Y Y U V Y Y U V Y
Y1 Y2 共用 V1 U1 ;
(10)YUV 422中的UYVY (Packed)
按照UYVY依次排序。
U1 Y1 V1 Y2 U Y V Y U Y V Y
U Y V Y U Y V Y U Y V Y
U Y V Y U Y V Y U Y V Y
U Y V Y U Y V Y U Y V Y
U Y V Y U Y V Y U Y V Y
U Y V Y U Y V Y U Y V Y
Y1 Y2 共用 V1 U1 ;
(11)YUV 444中的 I444(Planar)
依次序存放:先存放所有Y再存所有U最后存放所有V。
Y1 Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U1 U U U U U
U U U U U U
U U U U U U
U U U U U U
U U U U U U
U U U U U U
V1 V V V V V
V V V V V V
V V V V V V
V V V V V V
V V V V V V
V V V V V V
Y1 U1 V1组成一组YUV;
(12)YUV 444中的 YV42(Planar)
依次序存放:先存放所有Y再存所有U最后存放所有V。
Y1 Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
V1 V V V V V
V V V V V V
V V V V V V
V V V V V V
V V V V V V
V V V V V V
U1 U U U U U
U U U U U U
U U U U U U
U U U U U U
U U U U U U
U U U U U U
Y1 U1 V1组成一组YUV;
(13)YUV 444中的 NV24 (半Planar)
依次序存放:先存放所有Y然后UV依次存放,从U开始。
Y1 Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U1 V1 U V U V U V U V U V
U V U V U V U V U V U V
U V U V U V U V U V U V
U V U V U V U V U V U V
U V U V U V U V U V U V
U V U V U V U V U V U V
Y1 U1 V1组成一组YUV;
(14)YUV 444中的 NV42 (半Planar)
依次序存放:先存放所有Y然后VU依次存放,从V开始。
Y1 Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
V1 U1 V U V U V U V U V U
V U V U V U V U V U V U
V U V U V U V U V U V U
V U V U V U V U V U V U
V U V U V U V U V U V U
V U V U V U V U V U V U
Y1 U1 V1组成一组YUV;
(15)YUV444 中的 yuv444(packed)
YUV 依次排列;
Y1 U1 V1 Y U V Y U V Y U V Y U V Y U V
Y U V Y U V Y U V Y U V Y U V Y U V
Y U V Y U V Y U V Y U V Y U V Y U V
Y U V Y U V Y U V Y U V Y U V Y U V
Y U V Y U V Y U V Y U V Y U V Y U V
Y U V Y U V Y U V Y U V Y U V Y U V
Y1 U1 V1组成一组YUV;
三、关于YUV内存大小的计算
可能我的理解力不强,在网上看的很多计算都是迷茫的,所以这里按照我自己的理解来,我不知道这种方式是否标准。如果有错误请评论留言,我立即改正
3.1 YUV420大小的计算
根据YUV的比例,我们分成6块,由于Y代表整个图片亮度,所以我们将Y占用的长和宽就设定为图片的长(w)和宽(h)。
那么U 占用的空间就是1/4Y;
V 也是1/4Y;
所以YUV占用的内存大小就是 wh(1+ 1/4+ 1/4) = wh3/2;
3.2YUV422内存大小计算
还是按照YUV420的分析
Y = wh;
U = 1/2 Y;
V = 1/2 Y;
所以YUV422占用的大小是就是 wh*2
3.3YUV444内存大小计算
Y = wh;
U = Y ;
V = Y;
所以YUV444占用内存大小是 wh*3;
这种计算方式不知道对不对。请指正。
还要一个问题 YUV420的 Y:U:V = 4:1:1,为啥不叫411,而叫420.
emmm!
晚安各位。