【图像处理】-018 彩色模型及其相互转换

【图像处理】-018 彩色模型及其相互转换

1 彩色模型

  彩色模型(也称为彩色空间或彩色系统)的目的是在某些标准下通常可以接受的方式方便地对彩色加以描述。

1.1 RGB

  在RGB模型中,每种颜色出现在红绿蓝的原色光谱分量中。该模型基于笛卡尔坐标系。RGB原色位于正方体的3个角上,二次色青色、深红色和黄色位于另外3个顶点,黑色委员原点,白色位于最远的角上。在该模型中,灰度(RGB值相等)沿着连接这两点的直线从黑色延伸到白色。

【图像处理】-018 彩色模型及其相互转换

1.2 CMY和CMYK

  在上一篇中,我们知道颜料的原色是指该颜料从白光中吸收某些光谱,因此,颜料的原色实际上是光的二次色青色、深红色、黄色。当用白光照射涂了青色颜料的表面时,该表面将吸收红色光谱,不反射红光。也就是说,青色从反射的白光中减去红光,白光本身是有等量的红、绿、蓝光组成。
  大多数在纸上沉积彩色颜料的设备,要求输入CMY数据或在内部进行了RGB到CMY的转换。转换公式如下:
(1)[CMY]=[111][RGB] \begin{bmatrix} C \\ M \\ Y \end{bmatrix} =\begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}-\begin{bmatrix} R \\ G \\ B \end{bmatrix} \tag{1}
  CMY彩色模型主要用于产生硬拷贝输出,因此,从CMY到RGB的反向操作实际上没有实际意义。
  对于部分打印机,除了要CMY输入之外,还需要指定黑色分量,也就产生了CMYK彩色模型。

1.3 HSI

  当人观察一个彩色物体时,可以通过色调、饱和度和亮度来描述。色调是描述一种纯色的颜色属性,饱和度时一种纯色被白光稀释的程度的度量。亮度是一个主观的描述子,体现了无色的强度概念,并且是描述彩色感觉的关键因子之一。

  HSI彩色模型可以在彩色图像中从携带的彩色信息中消去强度分量的影响。HSI模型是开发基于彩色描述的图像处理算法的理想工具,这种彩色描述对人来说自然且直观。

2 色彩空间之间的相互转换

2.1 RGB与HSI相互转换

  既然RGB和HSI都是人类对颜色的一种直观的描述方式,对于同一种颜色描述,必然能够相互转换。

2.1.1 RGB转HSI

  给定一幅RGB彩色格式的图像,每个RGB像素的H分量可以由下式得到:
(2)H={θ,BG360θ,B>G H=\begin{cases} \theta, && B \leq G \\ 360-\theta,&&B > G \end{cases} \tag{2}
其中
(3)θ=arccos{12[(RG)+(RB)][(RG)2+(RB)(GB)]1/2} \theta=arccos \begin{Bmatrix} \frac{\frac{1}{2}\begin{bmatrix} (R-G)+(R-B) \end{bmatrix}}{\begin{bmatrix} (R-G)^{2}+(R-B)(G-B) \end{bmatrix}^{1/2}} \end{Bmatrix} \tag{3}
饱和度分量由下式给出:
(4)S=13(R+G+B)[min(R,G,B)] S=1-\frac{3}{(R+G+B)}\begin{bmatrix} min(R,G,B) \end{bmatrix} \tag{4}
强度分量由下式给出:
(5)I=13(R+G+B) I =\frac{1}{3}(R+G+B) \tag{5}

  假定RGB值已经归一化到区间[0,1][0,1]内,且角度θ\theta根据HSI空间的红轴来度量。色调可以通过将式2得到的所有值除以360°归一化到[0,1][0,1]范围内。如果给定的RGB的值在区间[0,1][0,1]内,则其他两个HSI分量已经在区间[0,1][0,1]内。

2.1.2 HSI转RGB

  在[0,1][0,1]内给出HSI值,通过下面的方法可以求出其对应的RGB值。这一套公式取决于H的值。在原色分隔中有3个间隔120°的扇区。

  首先,将H的值乘以360°,将色调值灰度到[0,360°][0,360\degree]内。

  RG扇区(0H<120°0\leq H < 120\degree):当H的值在该扇区内时,RGB分量由以下公式给出:
(6)B=I(1S)B=I(1-S) \tag{6}
(7)R=I[1+ScosHcos(60°H)]R=I\begin{bmatrix} 1+\frac{S cos H}{cos(60\degree -H)} \end{bmatrix} \tag{7}
(8)G=3I(R+B)G=3I-(R+B) \tag{8}

  GB扇区(120H<240°120\leq H < 240\degree):当H的值在该扇区内时,首先从H中减去120°,
(9)H=h120°H = h-120\degree \tag{9}
RGB分量由以下公式给出:
(10)R=I(1S)R=I(1-S) \tag{10}
(11)G=I[1+ScosHcos(60°H)]G=I\begin{bmatrix} 1+\frac{S cos H}{cos(60\degree -H)} \end{bmatrix} \tag{11}
(12)B=3I(R+B)B=3I-(R+B) \tag{12}

  GB扇区(240H<360°240\leq H < 360\degree):当H的值在该扇区内时,首先从H中减去240°,
(13)H=h240°H = h-240\degree \tag{13}
RGB分量由以下公式给出:
(14)G=I(1S)G=I(1-S) \tag{14}
(15)B=I[1+ScosHcos(60°H)]B=I\begin{bmatrix} 1+\frac{S cos H}{cos(60\degree -H)} \end{bmatrix} \tag{15}
(16)R=3I(R+B)R=3I-(R+B) \tag{16}

3 OpenCV中进行彩色模型转换

  在OpenCV中,有函数cvtColor可以进行彩色模型的转换。

转换标志 意义
COLOR_BGR2GRAY RGB空间转换成灰度图
COLOR_BGR2HSV RGB空间转换到HSV空间
COLOR_BGR2HLS RGB空间转换到HLS空间
COLOR_HLS2BGR HLS空间转换到BGR空间
COLOR_HSV2BGR HSV空间转换到BGR空间