YUV采样格式

YUV 4:4:4采样,每一个Y对应一组UV分量。
 
YUV 4:2:2采样,每两个Y共用一组UV分量。

YUV 4:2:0采样,每四个Y共用一组UV分量。


4:4:4 表示色度频道没有下采样。
 
4:2:2 表示 2:1 的水平下采样,没有垂直下采样。对于每两个 U 样例或 V 样例,每个扫描行都包含四个 Y 样例。

4:2:0 表示 2:1 的水平下采样,2:1 的垂直下采样。


常见的YUV码流的存储方式,并在存储方式后面附有取样每个像素点的YUV数据的方法,其中,Cb、Cr的含义等同于U、V。

1.YUVY 格式 (属于YUV422)

    start + 0  : Y'00    Cb00    Y'01    Cr00    Y'02    Cb01    Y'03    Cr01

    start + 8  : Y'10    Cb10    Y'11    Cr10    Y'12    Cb11    Y'13    Cr11

    start + 16 : Y'20    Cb20    Y'21    Cr20    Y'22    Cb21    Y'23    Cr21

    start + 24 : Y'30    Cb30    Y'31    Cr30    Y'32    Cb31    Y'33    Cr31

    YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,

    对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。

2.UYVY 格式 (属于YUV422)

    start + 0  : Cb00    Y'00    Cr00    Y'01    Cb01    Y'02    Cr01    Y'03

    start + 8  : Cb01    Y'10    Cr10    Y'11    Cb11    Y'12    Cr11    Y'13

    start + 16 : Cb20    Y'20    Cr20    Y'21    Cb21    Y'22    Cr21    Y'23

    start + 24 : Cb30    Y'30    Cr30    Y'31    Cb31    Y'32    Cr31    Y'33

    UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,
    
    还原其每个像素点的YUV值的方法与上面一样。


3.YUV422P 格式 (属于YUV422)

    start + 0  : Y'00    Y'01    Y'02    Y'03

    start + 4  : Y'10    Y'11    Y'12    Y'13

    start + 8  : Y'20    Y'21    Y'22    Y'23

    start + 12 : Y'30    Y'31    Y'32    Y'33

    start + 16 : Cb00    Cb01

    start + 18 : Cb10    Cb11

    start + 20 : Cb20    Cb21

    start + 22 : Cb30    Cb31

    start + 24 : Cr00    Cr01

    start + 26 : Cr10    Cr11

    start + 28 : Cr20    Cr21

    start + 30 : Cr30    Cr31

    YUV422P也属于YUV422的一种,它是一种Plane模式,即打包模式,
    
    并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,
    
    最后存储所有的V(Cr)分量,如上图所示。
    
    其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,
    
    即两个Y共用一个UV。比如,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00。


4. YV12,YU12格式 (属于YUV420)

    start + 0  : Y'00    Y'01    Y'02    Y'03

    start + 4  : Y'10    Y'11    Y'12    Y'13

    start + 8  : Y'20    Y'21    Y'22    Y'23

    start + 12 : Y'30    Y'31    Y'32    Y'33

    start + 16 : Cr00    Cr01

    start + 18 : Cr10    Cr11

    start + 20 : Cb00    Cb01

    start + 22 : Cb10    Cb11

    YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,
    
    依次存储。其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,
    
    即4个Y分量共用一组UV。
    

    注意,上图中,Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00,其他依次类推。


5. NV12、NV21(属于YUV420)

    start + 0  : Y'00    Y'01    Y'02    Y'03

    start + 4  : Y'10    Y'11    Y'12    Y'13

    start + 8  : Y'20    Y'21    Y'22    Y'23

    start + 12 : Y'30    Y'31    Y'32    Y'33

    start + 16 : Cb00    Cr00    Cb01    Cr01

    start + 20 : Cb10    Cr10    Cb11    Cr11


    NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种类似,即Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00。

YUV主要的采样格式


主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值),每 2x2 个点保存一个 Cr 和Cb 值, 图像在肉眼中的感觉不会起太大的变化。
    
    所以, 原来用 RGB(R,G,B 都是 8bit unsigned) 模型, 4 个点需要 8x3=24 bites。而现在仅需要 8+(8/4)+(8/4)=12bites, 平均每个点占12bites。这样就把图像的数据压缩了一半。

    (1) YUV 4:4:4

YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3


(2) YUV 4:2:2

每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。

下面的四个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

存放的码流为:Y0 U0 Y1 V1 Y2 U2 Y3 V3

映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]


    (3) YUV 4:1:1

4:1:1的色度抽样,是在水平方向上对色度进行4:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存。

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

存放的码流为: Y0 U0 Y1 Y2 V2 Y3

映射出像素点为:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]

(4)YUV4:2:0

4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存。

下面八个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

[Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8]

存放的码流为:    Y0 U0 Y1 Y2 U2 Y3

                Y5 V5 Y6 Y7 V7 Y8

映射出的像素点为:[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]

[Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]


各种YUV格式

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间隔的方式减小一半色差采样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值