音视频日记 - YUV 格式详解

YUV 是一种彩色编码系统,主要用在视频、图形处理流水线中 (pipeline)。相对于 RGB 颜色空间,设计 YUV 的目的就是为了编码、传输的方便,减少带宽占用和信息出错。

人眼的视觉特点是对亮度更铭感,对位置、色彩相对来说不铭感。在视频编码系统中为了降低带宽,可以保存更多的亮度信息 (luma),保存较少的色差信息 (chroma)。

YUV 的相似概念

Y’UVYUVYCbCrYPbPr 几个概念其实是一回事儿。

由于历史关系,Y’UVYUV 主要是用在彩色电视中,用于模拟信号表示。

YCbCr 是用在数字视频、图像的压缩和传输,如 MPEGJPEG

今天大家所讲的 YUV 其实就是指 YCbCrY 表示亮度(luma),CbCr 表示色度(chroma)。

luminance 亮度,luma 是在视频编码系统中指亮度值;chrominance 色度,chroma 是在视频编码系统中指色度值。

Y’UV 设计的初衷是为了使彩色电视能够兼容黑白电视。对于黑白电视信号,没有色度信息也就是 (UV),那么在彩色电视显示的时候指显示亮度信息。

Y’UV 不是 Absolute Color Space,只是一种 RGB 的信息编码,实际的显示还是通过 RGB 来显示。Y’,U,V 叫做不同的 component。

YUV 后数字的含义

我们一般理解为 yuv444,yuv422,yuv420 的解释是后面三个数字分别对应前面三个字母。
拿 yuv422 来说:
y 对应 4,表示 4 个图形像素中,每个都有亮度值
u 对应 2,表示 4 个图形像素中,Cb 占用两个像素
v 对应 2,表示 4 个图形像素中,Cr 占用两个像素

但是对于 yuv420 解释就不对了,不能说 4 个图形像素中,Cr 占用 0 个像素吧?

我们通过下图来理解一下 yuv 各种格式后面数字的含义。图来源于 Chrominance Subsampling in Digital Images

YUV

如上图中所示,左侧一列,每一个小矩形是图形像素表示,黑框矩形是色度像素表示,小黑点是表示色度像素值 (Cb + Cr),表示图形像素和色度像素在水平和垂直方向的比例关系。比如,

- 4:4:0 水平方向是 1/1,垂直方向是 1/2,表示 1 个色度像素对应了 2 个图形像素。
- 4:2:2 水平方向是 1/2,垂直方向是 1/1,表示 1 个色度像素对应了 2 个图形像素。
- 4:2:0 水平方向是 1/2,垂直方向是 1/2,表示 1 个色度像素对应了 4 个图形像素。

右侧一列是二次采样模式记号表示, 是 J:a:b 模式,即 YUV 后数字表示的模式。图中实心黑色圆圈表示包含色度像素 (Cb + Cr),空心圆圈表示不包含色度像素。

对于 J:a:b 模式,定义了一个 J x 2 的矩形参考块
J 通常是 4,此参考块就是宽度有 4 个像素、高度有 2 个像素的矩形
a 表示参考块的第一行包含的色度像素样本数
b 表示在参考块的第二行包含的色度像素样本数

- 4:4:0 参考块第 1 行包含 4 个色度样本,第 2 行没有包含色度样本。
- 4:2:2 参考块第 1 行包含 2 个色度样本,第 2 行也包含 2 个色度样本,他们是交替出现。
- 4:2:0 参考块第 1 行包含 2 个色度样本,第 2 行没有包含色度样本。

存在的一个例外是 4:1:0,其在每个亮度平面分辨率为 4 x 4 的块内提供一个色度样本。

参考资料