YUV格式

1. 概述

YUV是一种像素格式,常见于视频编码与静态图像。与RGB格式相反,YUV分别由一个称为Y(相当于灰度)的“亮度”分量(Luminance or Luma)和两个称为 U(蓝色投影 Cb)和 V(红色投影 Cr)的“色度”分量(Chrominance or Chroma)表示,并由此得名。U(Cb)表示色度分量,是照片蓝色部分去掉亮度(Y)。V(Cr)表示色度分量,是照片红色部分去掉亮度(Y)。仅有 Y 分量而没有 UV 分量信息,一样可以显示完整的黑白(灰度)图像,解决了模拟信号电视黑白与彩色的兼容问题。YUV与YCbCr格式类似,但是有一些不同。

2. 采样方式

色度通道(UV)的采样率可以低于亮度通道(Y), 而不会显着降低感知质量。一种称为 “A:B:C” 的表示法用于描述相对于 Y 采样, U 和 V 的频率:

• 4:4:4 表示不降低色度(UV)通道的采样率。每个 Y 分量对应一组 UV 分量。

• 4:2:2 表示 2:1 水平下采样,没有垂直下采样。每两个 Y 分量共享一组 UV 分量。

• 4:2:0 表示 2:1 水平下采样,同时 2:1 垂直下采样。每四个 Y 分量共享一组 UV 分量。

如下图所示,黑色表示Y分量,空心表示UV分量:

3. 存储格式

YUV 在存储上通常分为平面格式(Planar),半平面格式(Semi-Planar)以及打包格式(Packed)

  1. 平面格式

平面格式有时也称为三面格式(Triplanar),即 Y, U, V 三个分量各自使用单独的数组保存,这种三平面分离的格式比较方便视频编码。

  1. 半平面格式

Y分量使用一个单独的平面,UV分量使用一个平面。

  1. 打包格式

在打包格式中,通常只有一个平面,所有亮度和色度数据交错。这类似于 RGB 像素格式,只是使用不同的颜色空间。打包格式在网络摄像头中非常流行。在硬件中,使用单独的平面效率低下,每个像素需要多次内存访问。打包格式更容易,因此使用起来更方便。另一方面,打包格式通常无法处理垂直子采样。否则,扫描线将具有不同的大小。因此,通常打包格式是水平子采样的,尤其是 2 倍(即 YUV 4:2:2)。

4. 分类

YUV图片按照采样方式不同分为YUV444、YUV422和YUV420,因为YUV420体积更小,因此实际中YUV420最常用。RBG格式图片转换为YUV420格式时,通常先转换为YUV444,然后再转换为YUV420;反之亦然。

  1. YUV420p

  • YU12(I420/IYUV)

YU12 即 I420,也叫 IYUV,属于 YUV420P 格式。三个平面,分别存储Y、U、V分量。每四个 Y 分量共享一组 UV 分量。U、V 平面的 strides, width 和 height 都是 Y 平面的一半,因此一个像素 12 bits,内存排列如下图所示:

  • YV12

YV12 与 YU12 几乎一样,仅改变了 U, V 平面的顺序。内存排列如下图所示:

  1. YUV420sp

  • NV12

NV12 属于 YUV420SP 格式。两个平面,分别存储 Y 分量 和 UV 分量。其中 UV 分量共用一个平面并且以 U, V, U, V 的顺序交错排列。每四个 Y 分量共享一组 UV 分量。UV 平面的 strides, width 与 Y 平面一样长,但 height 仅为 Y 平面的一半。因此一个像素 12 bits,内存排列如下图所示:

  • NV21

NV21与 NV12 几乎一样,仅改变了 U, V 平面的顺序,按照VUVU的方式交替排列。内存排列如下图所示:

5. YUV420的内存计算

Y = width x height;

U = width/2 x height/2;

V = width/2 x height/2;

YUV = width x height x 1.5;

相同分辨率下RGB格式内存,RGB格式每个像素用R、G、B三个元素表示:

RGB = width x height x 3;

因此,相对于RGB格式,YUV格式可以节省一半的存储。

6. 关于命名

YUV420p:420表示按照4:2:0的方式采样,p表示Planar,即平面格式。

YUV420sp:420表示按照4:2:0的方式采样,sp表示Semi-Planar,即半平面格式,Y用一个平面,UV用一个平面。

YU12:“YU”指的是平面顺序:先是Y,然后是U,再是V。“12”指的是像素深度,即每像素12位。YV12类似。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值