1. 色彩空间基础:RGB、YUV、HSV 的定义与区别

做视频处理这么多年,我经常被问到同一个问题:「为什么视频领域偏爱 YUV,而不是直接用 RGB?」

这个问题看似简单,但背后藏着色彩空间的核心逻辑。今天我们就从最基础的三个色彩空间讲起,把这件事彻底说清楚。

1.1 什么是色彩空间?

说白了,色彩空间就是一套用数字描述颜色的规则。就像我们用经纬度描述地理位置一样,色彩空间用几个数值分量来定位一个颜色。

不同的色彩空间,就像不同的坐标系。同一个颜色,在不同的色彩空间里,数值表达完全不同。

核心概念:色彩空间 = 颜色坐标系 + 色域范围。坐标系决定了如何描述颜色,色域决定了能描述哪些颜色。

1.2 RGB 色彩空间

RGB 是最直观的色彩空间。红、绿、蓝三原色,按不同比例混合,就能得到几乎所有颜色。

我在项目中遇到过不少刚入行的同学,觉得 RGB 就是「真彩色」,其他都是「压缩的」。其实不是这样。RGB 只是最接近硬件显示器的表达方式——你的屏幕像素就是由红绿蓝三个子像素组成的。

RGB 的特点:

  • 加法混色:光越多越亮,三色全亮得到白色
  • 分量强相关:改变亮度需要同时调整 R、G、B 三个分量
  • 数据量大:每个像素 3 个分量,每个分量 8bit 就是 24bit
  • 不适合压缩:人眼对亮度敏感、对色度不敏感,但 RGB 把亮度和色度混在一起

我的经验:做图像处理时,RGB 适合做显示输出和简单算法。但一旦涉及视频编码、传输、存储,RGB 就变得非常低效。原因很简单——你想想看,人眼对亮度细节的敏感度远高于颜色细节,RGB 却把两者绑死了。

1.3 YUV 色彩空间

YUV 是视频领域的「老大哥」。它把颜色拆成两部分:亮度(Y)和色度(U、V)。

Y 分量代表亮度信息,也就是黑白图像。U 和 V 代表颜色信息,分别描述蓝色差和红色差。

YUV 的核心优势:

  • 亮色分离:Y 和 UV 独立,可以分别处理
  • 色度子采样:人眼对颜色不敏感,UV 可以降低分辨率
  • 兼容黑白设备:老电视只取 Y 分量就能显示黑白图像
  • 压缩效率高:YUV 420 比 RGB 节省 50% 的数据量

注意:YUV 不是一种固定的格式。YUV 420、YUV 422、YUV 444 的采样方式完全不同。我曾经在调试一个摄像头驱动时,因为把 YUV 422 当成 YUV 420 处理,画面颜色全乱了。嗯,这个坑我踩过。

1.4 HSV 色彩空间

HSV 是面向人类视觉感知的色彩空间。它用色相(Hue)、饱和度(Saturation)、明度(Value)来描述颜色。

为什么会有 HSV?因为 RGB 和 YUV 都是面向设备的,而 HSV 是面向人的。你想想看,我们说「把红色调淡一点」,在 HSV 里就是降低饱和度,非常直观。但在 RGB 里,你得同时调整 R、G、B 三个值,很麻烦。

HSV 的典型应用:

  • 图像编辑软件的颜色选择器
  • 颜色识别和分割(比如检测红色交通灯)
  • 颜色增强和调色

一句话总结:RGB 给显示器看,YUV 给编码器用,HSV 给人调色。

1.5 三大色彩空间对比

特性 RGB YUV HSV
分量含义 红、绿、蓝 亮度、蓝色差、红色差 色相、饱和度、明度
亮色关系 耦合 分离 部分分离
数据冗余 高 低(可子采样) 中
人眼适配 差 好(亮度优先) 好(感知均匀)
主要用途 显示、渲染 编码、传输、存储 调色、图像分割
转换复杂度 基准 线性变换,简单 非线性,稍复杂

1.6 为什么视频领域偏爱 YUV?

这个问题,我用一个实际场景来解释。

假设你要传输一段 1080p 的视频,每秒 30 帧。如果用 RGB 24bit,每帧的数据量是:

1920 × 1080 × 3 bytes = 6,220,800 bytes ≈ 6.2 MB
每秒数据量:6.2 MB × 30 = 186 MB/s

这个带宽,别说网络传输了,很多嵌入式设备的内部总线都扛不住。

换成 YUV 420 呢?Y 分量全分辨率,U 和 V 各取 1/4 分辨率:

Y: 1920 × 1080 × 1 byte = 2,073,600 bytes
U: 960 × 540 × 1 byte = 518,400 bytes
V: 960 × 540 × 1 byte = 518,400 bytes
合计:3,110,400 bytes ≈ 3.1 MB
每秒数据量:3.1 MB × 30 = 93 MB/s

数据量直接减半。而且人眼几乎看不出画质损失。这就是 YUV 的威力。

核心原因总结:

  1. 亮色分离——编码器可以对 Y 和 UV 采用不同的压缩策略
  2. 色度子采样——利用人眼特性,大幅降低数据量
  3. 兼容性好——黑白/彩色设备都能用同一路信号
  4. 编码效率高——H.264、H.265、VP9 等主流编码器都基于 YUV 工作

1.7 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它当作后续章节的导航图。

色彩空间知识体系 RGB 色彩空间 红绿蓝加法混色 YUV 色彩空间 亮度 + 色度分离 HSV 色彩空间 色相饱和度明度 线性变换 非线性变换 显示输出 屏幕渲染、图像处理 视频编码 H.264/H.265/VP9 调色分割 颜色识别、图像编辑 为什么视频偏爱 YUV? 亮色分离 → 色度子采样 → 数据量减半 → 编码效率高 兼容黑白设备 | 人眼感知优化 | 主流编码器原生支持 核心结论:RGB 给显示器,YUV 给编码器,HSV 给人调色 三者各有定位,视频领域选择 YUV 是工程最优解

1.8 本章小结

这一章我们理清了三个核心色彩空间:

  • RGB——硬件原生,适合显示,不适合压缩
  • YUV——亮色分离,支持子采样,视频编码的首选
  • HSV——感知均匀,适合人机交互和图像分割

我个人习惯在项目初期就确定色彩空间的选择。做显示相关,用 RGB;做视频编解码,用 YUV;做图像分析,用 HSV。选对了工具,后面能省很多调试时间。

一个小建议:刚开始接触色彩空间转换时,建议先手写一遍 RGB 到 YUV 的转换公式。别怕麻烦,写一遍比看十遍都管用。我曾经带过一个实习生,他花了一下午手算转换矩阵,之后调试颜色问题再也没出过错。