色彩空间
色彩空间(Color Space)是指在三维空间中对颜色进行数学表示和描述的模型。它提供了一种标准化的方式来定义和区分不同的颜色,使得颜色可以被准确地捕捉、表示、转换和显示。常见的色彩模型包括 RGB、YUV、HSL 等等。
像素
屏幕画面是由一个一个像素组成,比如常见的 1920×1080,意思就是一行有 1920 个像素,有 1080 行,也就是一共有 1920 * 1080 = 2073600 个像素。而像素的表示通过色彩空间表示,比如 RGB,RGB 是由红绿蓝组成,通过混合红绿蓝,可以组合出很多不同的颜色。
RGB
RGB(红绿蓝)是一种常用的色彩模型,用于在电子显示设备上生成颜色。它是“加色法”模型的代表,意味着通过将红色、绿色和蓝色光的不同强度组合在一起,可以创造出各种颜色。
常见的 RGB 格式有:
格式 | 描述 | 每个像素分量 | 位深度 | 示例用途 |
---|---|---|---|---|
RGBA | RGB 格式外加一个透明度分量(Alpha),用于表示像素的透明度。 | R、G、B、A各自为一个字节 | 32位(8位×4) | 图像编辑、视频处理、Web 图形 |
ARGB | 类似于 RGBA,但 Alpha 通道在最前面。 | A、R、G、B | 32位(8位×4) | Windows 系统中的图像处理、图形渲染 |
BGRA | 类似于 RGBA,但颜色通道顺序为蓝色、绿色、红色,Alpha 在最后。 | B、G、R、A | 32位(8位×4) | 图像处理、视频编解码、游戏开发 |
RGB565 | RGB 格式的压缩版本,其中红色用 5 位、绿色用 6 位、蓝色用 5 位存储。 | 5位红色、6位绿色、5位蓝色 | 16位(5+6+5) | 嵌入式系统、低带宽图像显示、显示屏驱动 |
RGB888 | 又叫做 True Color,即每个颜色分量占 8 位,共 24 位,通常用于高质量显示。 | R、G、B各自为 8 位 | 24位(8位×3) | 高清显示器、图像处理、视频渲染 |
RGB101010 | 每个分量使用 10 位存储,常用于需要更高色彩精度的显示或图像处理。 | R、G、B各自为 10 位 | 30位(10位×3) | 高动态范围(HDR)图像处理、电影制作 |
RGB121212 | 每个分量使用 12 位存储,用于专业级图像处理,提供更精细的色彩表达。 | R、G、B各自为 12 位 | 36位(12位×3) | 高动态范围(HDR)图像制作、专业摄影 |
RGBF32 | 使用浮点数存储每个颜色分量,适用于需要极高精度的图像处理。 | R、G、B各自为 32 位浮点数 | 96位(32位×3) | 科学计算、图像编辑、专业渲染 |
YUV
YUV 代表亮度(Y)、蓝色亮度(U)和红色亮度(V)。它主要用于模拟视频信号。YUV 的发明源于工程师们希望在黑白基础设施中实现彩色电视。他们需要一种既能兼容黑白电视又能添加色彩的信号传输方法。亮度分量作为黑白信号已经存在;他们在此基础上增加了 UV 信号作为解决方案。
下图为上世纪80年代的黑白电视机
UV 表示法之所以被选作色度的表示方式,而非直接使用 R 和 B 信号,是因为 U 和 V 是色差信号。换言之,U 和 V 信号指示电视在不改变某点亮度的前提下调整其颜色。或者,U 和 V 信号告诉显示器通过牺牲另一种颜色来使某一颜色更亮,并指示应调整的程度。U 和 V 值越高(或负值时越低),该点的色彩饱和度(即鲜艳度)就越强。U 和 V 值越接近零,颜色调整的幅度就越小,这意味着红、绿、蓝三色光将更加均匀地亮起,从而产生一个更灰的点。这就是使用色差信号的好处,即不是直接告诉颜色中有多少红色,而是指示它比绿色或蓝色多出多少红色。
下图为 YUV 与 RGB 的对比
应用
YUV色彩空间在许多视频相关的领域中得到广泛应用:
- 视频压缩和编码:视频压缩算法(如MPEG、H.264、HEVC等)通常使用YUV色彩空间。这是因为亮度和色度信息可以分开压缩,且Y分量的压缩对视觉效果影响较小。许多视频格式(如MP4、AVI)也使用YUV作为色彩空间。
- 电视广播:传统的电视广播(如PAL、NTSC)和数字电视系统常常使用YUV色彩空间。特别是在电视信号处理中,YUV有助于区分亮度信息和色彩信息,便于对信号进行传输和处理。
- 视频传输和处理:YUV是视频信号传输的标准格式,许多数字视频接口(如HDMI、VGA)以及视频处理设备都支持YUV信号。
- 图像处理:在图像处理领域,YUV也被用来进行色彩调整、色调映射、色彩增强等操作。通过分离亮度和色度,可以更精确地调整图像的细节和颜色。
色度子采样(Chroma Subsampling)
色度子采样是一种通过降低色度信息的分辨率而非亮度信息来编码图像的技术,利用了人眼视觉系统对颜色差异的敏感度低于对亮度差异的特点,这种方法在不显著影响画面质量的前提下降低了带宽需求。这使得在有效减少文件大小(最多可达 50%)的同时,保持图像清晰度。在 YUV 格式中,亮度仅占信号的 1/3,因此减少色度数据量有很大帮助。
YUV 4:4:4
全彩深度通常称为 4:4:4。第一个 4 表示每个像素都有一个亮度分量(Y),第二个 4 表示每个像素都有一个 U 色度分量,第三个 4 表示每个像素都有一个 V 色度分量。由于每个像素都有对应的 Y、U、V 值,因此没有任何压缩或子采样。
YUV 4:2:2
4:2:2,第一个 4 表示每个像素都有一个亮度分量(Y),第二个 2 表示每两个像素共享一个 U 色度分量,第三个 2 表示每两个像素共享一个 V 色度分量。
4:2:2 相比 4:4:4 减少了色度信息的存储需求,但亮度信息(Y)没有压缩,因此仍能保持较高的图像质量。色度信息的采样率是亮度的50%,这使得图像总带宽减少了 33%。
YUV 4:2:0
4:2:0 表示第一个 4 表示每个像素都有一个亮度分量(Y),第二个 2 表示每两个像素共享一个 U 色度分量,第三个 0 表示每四个像素共享一个 V 色度分量(即每两个像素共享一个色度分量)。
4:2:0 格式大大压缩了色度信息的采样频率,减少了数据量,整体图像带宽减少了 50%。由于人眼对亮度信息更为敏感,而对色度的敏感度较低,因此这种采样方式在视觉效果上对大部分观众影响不大,但能显著降低存储空间和带宽需求。
下表为常见的 YUV 格式
格式 | 描述 | 位深度 | 示例用途 |
---|---|---|---|
YUV420 | Y分量、U分量、V分量的采样率为4:2:0,即每4个Y采样点对应1个U和1个V采样点 | 8位、10位等 | 视频压缩(如H.264、HEVC),视频流传输 |
YUV422 | Y分量、U分量、V分量的采样率为4:2:2,即每2个Y采样点对应1个U和1个V采样点 | 8位、10位等 | 高清视频传输,数字电视广播 |
YUV444 | Y分量、U分量、V分量的采样率为4:4:4,即每个Y采样点都有一个对应的U和V采样点 | 8位、10位、12位等 | 专业视频编辑,色彩精度要求较高的应用 |
YUV420P | YUV420的平面存储格式,每个分量(Y、U、V)分开存储 | 8位、10位等 | 视频压缩(如H.264、HEVC) |
YUV422P | YUV422的平面存储格式,每个分量(Y、U、V)分开存储 | 8位、10位等 | 高清视频传输 |
YUV444P | YUV444的平面存储格式,每个分量(Y、U、V)分开存储 | 8位、10位、12位等 | 高质量图像和视频处理 |
YUV420SP | YUV420的半平面存储格式,U和V共享同一平面,交替排列 | 8位、10位等 | 移动设备、硬件编码(如MPEG-4、H.264) |
NV12 | YUV420的半平面格式,Y分量单独存储,UV分量交替存储 | 8位、10位等 | 视频编码、硬件加速(如H.264、HEVC) |
NV21 | YUV420的半平面格式,Y分量单独存储,VU分量交替存储 | 8位、10位等 | 视频编码、硬件加速(如H.264、HEVC) |
YUV422SP | YUV422的半平面格式,U和V分量共享同一平面,交替存储 | 8位、10位等 | 高清视频传输、数字电视 |
YUV444SP | YUV444的半平面格式,U和V分量共享同一平面,交替存储 | 8位、10位、12位等 | 高质量视频处理、视频编码 |
RGB 与 YUV 的互转公式
RGB 转 YUV:
- Y = 0.299R + 0.587G + 0.114B
- U = 0.492 (B-Y)
- V = 0.877 (R-Y)
YUV 转 RGB
- R = Y + 1.140V
- G = Y - 0.395U - 0.581V
- B = Y + 2.032U