Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

颜色模型

颜色模型色彩空间是一个抽象的数学模型,它描述了如何用一组数值元组来表示颜色,通常是三个或四个值或颜色分量。从几何学上讲,色彩空间是一个坐标系,其中每种颜色都由一个点表示。

颜色模型的目的是以一种标准的、普遍接受的方式来规定颜色。不同的颜色模型适用于不同的应用场景。有些是面向硬件的(例如用于显示器的RGB模型),有些是面向感知的(例如更接近人类颜色感知的HSV和L*a*b*模型),还有一些是为特定任务(如打印)量身定制的(例如CMYK)。

理解不同色彩空间的特性在计算机视觉中至关重要,因为颜色表示的选择会显著影响图像分割、物体识别和特征提取等任务的算法性能。

RGB颜色模型

RGB(红、绿、蓝)颜色模型是一种加色模型,其中红、绿、蓝三种光以不同方式叠加,以重现各种颜色。该模型的名称来源于三种加色法基色(红、绿、蓝)的英文首字母。

此模型与显示硬件(如显示器和数码相机)有着根本的联系,这些硬件使用红色、绿色和蓝色的元件(发光体或传感器)来生成或捕捉颜色。如 Figure 1 所示,基色可以组合产生二次色:青色(绿+蓝)、品红色(红+蓝)和黄色(红+绿)。三种基色以最大强度组合会产生白色。

三种基色(红、绿、蓝)的加色混合。

Figure 1:三种基色(红、绿、蓝)的加色混合。

在几何上,RGB颜色模型被表示为一个三维笛卡尔坐标系中的单位立方体(Figure 2)。坐标轴对应R、G、B三个分量。原点(0,0,0)代表黑色,对角(1,1,1)代表白色。立方体的顶点代表基色和二次色。

对于数字图像,R、G、B值通常是量化的。在标准的24位彩色图像中,每个通道由8位表示,这意味着每种基色的强度范围可以从 {0,,255}\{0, \dots, 255\}。这总共允许 25631670256^3 \approx 1670 万种不同的颜色。

RGB色彩空间,表示为一个单位立方体。

Figure 2:RGB色彩空间,表示为一个单位立方体。

HSV 和 HSL 颜色模型

虽然RGB模型对硬件很方便,但对于人类的颜色感知来说却不太直观。我们通常不会用红、绿、蓝分量来描述颜色。**HSV(色相、饱和度、明度)HSL(色相、饱和度、亮度)**颜色模型旨在更符合感知。

  • 色相 (H): 代表纯色(例如,红、绿、黄)。它以围绕中心轴的角度(0° 到 360°)来衡量。

  • 饱和度 (S): 代表颜色的“纯度”或“鲜艳度”。范围从0(灰色调)到1(最纯的颜色)。

  • 明度 (V) / 亮度 (L): 代表颜色的明暗程度。

    • 明度范围从0(黑色)到1(纯饱和色)。

    • 亮度范围从0(黑色)到1(白色)。亮度为0.5时对应最纯的饱和色。

几何上,HSV空间通常表示为圆锥体或六棱锥,而HSL则表示为双圆锥或双六棱锥(Figure 3)。这些模型在图像处理中的一个关键优势是,它们将强度(V或L)与颜色信息(H和S)分离开来。这使得算法可以只对强度通道进行操作,而不影响颜色,这对于在彩色图像上进行直方图均衡化等任务非常有用。

HSV色彩空间,通常可视化为圆锥体。

Figure 3:HSV色彩空间,通常可视化为圆锥体。

从RGB到HSV的转换是一种非线性变换。假设R、G、B值被归一化到[0, 1]范围:

V=max(R,G,B)V = \max(R, G, B)
δ=Vmin(R,G,B)\delta = V - \min(R, G, B)
S={0,if V=0δV,if V>0S = \begin{cases} 0, & \text{if } V = 0 \\ \frac{\delta}{V}, & \text{if } V > 0 \end{cases}
H=60×{undefined,if δ=0GBδ(mod6),if V=RBRδ+2,if V=GRGδ+4,if V=BH = 60^\circ \times \begin{cases} \text{undefined}, & \text{if } \delta = 0 \\ \frac{G - B}{\delta} \pmod 6, & \text{if } V = R \\ \frac{B - R}{\delta} + 2, & \text{if } V = G \\ \frac{R - G}{\delta} + 4, & \text{if } V = B \end{cases}

色相的范围在 [0,360)[0^\circ, 360^\circ)。注意,如果 δ=0\delta=0,颜色是无彩色的(灰色调),此时色相未定义。

CMYK颜色模型

CMYK(青色、品红、黄色、黑色)模型是一种减色模型,用于彩色打印。它与加色RGB模型相对应。

在减色模型中,颜色是通过从白色表面(如纸张)开始并从中减去亮度来创建的。当光线照射到纸张上时,油墨中的颜料会吸收或“减去”某些波长的光。我们感知到的颜色是反射的光。

  • 青色吸收红光。

  • 品红色吸收绿光。

  • 黄色吸收蓝光。

理论上,将青色、品红和黄色以最大强度混合应该产生黑色。然而,在实践中,由于油墨中的杂质,结果是一种深沉的、浑浊的棕色。为了产生纯正的黑色调并节省油墨,添加了**黑色(Key)**分量,从而形成了CMYK模型。

CMYK色彩空间。

Figure 4:CMYK色彩空间。

从RGB到CMY的转换很简单(假设所有值都在[0, 1]范围内):

C=1RM=1GY=1BC = 1 - R \\ M = 1 - G \\ Y = 1 - B

从CMY到CMYK的转换更为复杂,并取决于要使用的黑色油墨量。

L*a*b* 色彩空间 (CIELAB)

L*a*b* (CIELAB) 色彩空间是一种感知均匀的色彩空间,这意味着数值上的变化对应于相似的感知颜色变化。这是相对于RGB和HSV的一个显著优势,在后两者中,相同的数值变化可能会根据颜色的不同产生非常不同的感知效果。

L*a*b* 空间由三个分量定义:

  • L*: 亮度分量,范围从0(黑色)到100(白色)。

  • a*: 绿-红轴,负值表示绿色,正值表示红色。

  • b*: 蓝-黄轴,负值表示蓝色,正值表示黄色。

CIELAB色彩空间。

Figure 5:CIELAB色彩空间。

由于其感知均匀性,L*a*b* 空间常用于高端色彩校正、工业颜色匹配,以及作为计算机视觉算法(如图像分割)的特征空间,因为L*a*b* 空间中两种颜色之间的欧氏距离能很好地近似它们的感知差异。

Y’CbCr 色彩空间

Y’CbCr 色彩空间广泛用于视频和图像压缩标准,如JPEG和MPEG。它是一系列色彩空间的统称,将图像分为一个亮度分量(Y’)和两个色度分量(Cb和Cr)。

  • Y’: 亮度分量,表示颜色的明亮程度。

  • Cb: 蓝色差异色度分量。

  • Cr: 红色差异色度分量。

Y’CbCr色彩空间。

Figure 6:Y’CbCr色彩空间。

Y’CbCr 的主要优点是它将亮度信息与颜色信息分开。人类视觉系统对亮度变化的敏感度远高于对颜色变化的敏感度。压缩算法利用这一点进行色度子采样,即以低于Y’分量的空间分辨率来存储Cb和Cr分量。这显著减少了存储图像所需的数据量,而感知损失却很小。这是Y’CbCr在数字视频和图像压缩中如此普遍的关键原因。