YUV颜色编码系统最初是为了兼容黑白电视与彩色电视而设计的。早期的电视广播系统使用的是单色(黑白)信号,当彩色电视出现后,为了使新的彩色信号能够与旧的黑白接收设备兼容,同时又不会占用过多的带宽,人们发明了YUV颜色编码系统。在这个系统中,亮度信息(Y)保留了与黑白电视相同的频段,而色度信息(U和V)则被压缩并添加到同一个信道中,这样黑白电视就可以继续正常工作,而彩色电视则能解码出完整的色彩信息。
1.YUV的基本概念
YUV 颜色编码采用的是 亮度 和 色度 来指定像素的颜色。
- Y (Luma): 表示亮度或灰度值,即图像的明暗程度。这部分信息对于人眼来说是最敏感的,因此在视频传输中保留较高的分辨率。
- U 和 V (Chrominance): 代表色度或色差信息,用于描述图像的颜色。U 通道可以理解为蓝色差(B - Y),即蓝色分量与亮度分量的差异,V 通道可以理解为红色差(R - Y),即红色分量与亮度分量的差异。这两个通道的信息量相对较少,因为人眼对色彩的变化不如对亮度的变化敏感。
2.YUV的特点
- 兼容性: YUV 编码的一个重要特点是它能够与早期的黑白电视系统兼容。由于黑白电视只接收亮度信号,所以当彩色电视信号以 YUV 格式发送时,黑白电视仍然可以接收到亮度信息并正常显示图像。
- 压缩效率: 在视频压缩中,由于人眼对亮度比对颜色更敏感,因此可以对 U 和 V 通道进行较低分辨率的采样,这有助于减少数据量,提高压缩效率。
- 多种采样格式: YUV 支持多种采样格式,比如 4:4:4, 4:2:2, 4:2:0 等,这些数字表示亮度和色度采样的比例。例如,在 4:2:0 采样格式下,水平方向上每四个亮度样本对应一个色度样本,垂直方向上也是如此,这样可以进一步减少数据量。
- 转换: YUV 与 RGB 之间可以相互转换。大多数视频编码标准(如 H.264, HEVC 等)都是基于 YUV 格式进行压缩的,但在显示时通常需要转换成 RGB 格式。
3.RGB与YUV互相转换
YUV 和 RGB 是两种不同的颜色空间表示方法。RGB 是基于红、绿、蓝三种颜色的混合来表示颜色,而 YUV 则是将亮度(Y)与色度(U 和 V)分离,这种颜色空间常用于视频压缩中以减少带宽需求。
RGB 转 YUV
从 RGB 到 YUV 的转换可以通过以下公式实现:
- Y = 0.299R + 0.587G + 0.114B
- U = -0.147R - 0.289G + 0.436B
- V = 0.615R - 0.515G - 0.100B
这里的 R, G, B 分别代表红色、绿色和蓝色的分量值,范围通常是 0 到 255。转换后的 Y, U, V 值也需要进行适当的缩放和偏移处理,以确保它们落在合适的范围内。例如,U 和 V 经常会被偏移 128(对于 8 位表示来说),这样它们的取值范围就变成了 16 到 240。
YUV 转 RGB
从 YUV 到 RGB 的转换可以使用以下公式:
- R = Y + 1.13983V
- G = Y - 0.39465U - 0.58060V
- B = Y + 2.03211U
同样地,这些计算结果可能需要被限制在 0 到 255 的范围内,以确保输出的颜色值有效。如果 Y, U, V 的值已经被偏移过(比如 U 和 V 被偏移了 128),那么在应用上述公式之前,应该先对 U 和 V 进行相应的调整(即减去 128)。
4.YUV的采样格式
YUV 格式根据采样方式的不同,可以分为多种类型。这些不同的采样方式主要影响的是亮度(Y)和色度(U、V)分量的采样率,从而影响图像的质量和数据量。以下是几种常见的 YUV 采样格式:
4:4:4 (YUV 4:4:4)
- 每个像素都有一个完整的 Y、U、V 分量。
- 亮度和色度的采样率相同,没有压缩。
- 数据量最大,质量最高,但占用存储空间大。
4:2:2 (YUV 4:2:2)
- 每两个水平相邻的像素共享一个 U 和 V 分量。
- 亮度采样率为全分辨率,色度采样率为水平方向的一半。
- 常用于广播级视频和专业视频设备。
4:2:0 (YUV 4:2:0)
- 每四个像素(2x2 块)共享一个 U 和 V 分量。
- 亮度采样率为全分辨率,色度采样率为水平和垂直方向的一半。
- 最常用的视频压缩格式,广泛应用于 MPEG、H.264/AVC、H.265/HEVC 等标准。
总结:
- 444 格式提供最高的色彩保真度,适用于高质量的图像处理和编辑。
- 422 格式在保证较高图像质量的同时,减少了数据量,适用于高清视频传输。
- 420 格式是最常见的格式,广泛应用于视频压缩标准中,如MPEG-2、H.264/AVC、HEVC等。
5.YUV的存储方式
根据存储方式的不同,YUV 格式可以分为 计划(Planar)、 半计划(Semi-Planar)和 交错(Packed) 三种种主要类型。
- P 表示 Planar(计划存储):每个分量(Y、U、V)分别存储在一个独立的平面中。
- SP 表示 Semi-Planar(半计划存储):Y 分量存储在一个平面中,U 和 V 分量交错存储在另一个平面中。
- Packed:所有分量(Y、U、V)交错存储在一起,形成一个连续的数据流。
1. 4:4:4 采样
每个像素都有一个完整的Y、U、V值。
444P (Planar)
- I444:
Y Y Y Y
Y Y Y Y
U U U U
U U U U
V V V V
V V V V
- YV24:
Y Y Y Y
Y Y Y Y
V V V V
V V V V
U U U U
U U U U
444SP (Semi-Planar)
- NV24:
Y Y Y Y
Y Y Y Y
U V U V U V U V
U V U V U V U V
- NV42:
Y Y Y Y
Y Y Y Y
V U V U V U V U
V U V U V U V U
444Packed (Packed)
Y U V Y U V
Y U V Y U V
Y U V Y U V
Y U V Y U V
2. 4:2:2 采样
每两个水平相邻的像素共享一组U和V值。
422P (Planar)
- I444(YUV422P):
Y Y Y Y
Y Y Y Y
U U
U U
V V
V V
- YV16:
Y Y Y Y
Y Y Y Y
V V
V V
U U
U U
422SP (Semi-Planar)
- NV16:
Y Y Y Y
Y Y Y Y
U V U V
U V U V
- NV61:
Y Y Y Y
Y Y Y Y
V U V U
V U V U
422Packed (Packed)
- UYVY:
U Y V Y U Y V Y
U Y V Y U Y V Y
- YUYV:
Y U Y V Y U Y V
Y U Y V Y U Y V
- YVYU:
Y V Y U Y V Y U
Y V Y U Y V Y U
3. 4:2:0 采样
每四个像素(2x2像素块)共享一组U和V值。
420P (Planar)
- I420(YUV420P):
Y Y Y Y
Y Y Y Y
U U
V V
- YV12:
Y Y Y Y
Y Y Y Y
V V
U U
420SP (Semi-Planar)
- NV12:
Y Y Y Y
Y Y Y Y
U V U V
- NV21:
Y Y Y Y
Y Y Y Y
V U V U
6.YUV与RGB转换
- BT.601标准——标清数字电视(SDTV)

- BT.709标准——高清数字电视(HDTV)

- BT.2020标准——超高清数字电视(UHDTV)

