【图像处理】-018 彩色模型及其相互转换
文章目录
1 彩色模型
彩色模型(也称为彩色空间或彩色系统)的目的是在某些标准下通常可以接受的方式方便地对彩色加以描述。
1.1 RGB
在RGB模型中,每种颜色出现在红绿蓝的原色光谱分量中。该模型基于笛卡尔坐标系。RGB原色位于正方体的3个角上,二次色青色、深红色和黄色位于另外3个顶点,黑色委员原点,白色位于最远的角上。在该模型中,灰度(RGB值相等)沿着连接这两点的直线从黑色延伸到白色。
1.2 CMY和CMYK
在上一篇中,我们知道颜料的原色是指该颜料从白光中吸收某些光谱,因此,颜料的原色实际上是光的二次色青色、深红色、黄色。当用白光照射涂了青色颜料的表面时,该表面将吸收红色光谱,不反射红光。也就是说,青色从反射的白光中减去红光,白光本身是有等量的红、绿、蓝光组成。
大多数在纸上沉积彩色颜料的设备,要求输入CMY数据或在内部进行了RGB到CMY的转换。转换公式如下:
(1)
[
C
M
Y
]
=
[
1
1
1
]
−
[
R
G
B
]
\begin{bmatrix} C \\ M \\ Y \end{bmatrix} =\begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}-\begin{bmatrix} R \\ G \\ B \end{bmatrix} \tag{1}
⎣⎡CMY⎦⎤=⎣⎡111⎦⎤−⎣⎡RGB⎦⎤(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
=
{
θ
,
B
≤
G
360
−
θ
,
B
>
G
H=\begin{cases} \theta, && B \leq G \\ 360-\theta,&&B > G \end{cases} \tag{2}
H={θ,360−θ,B≤GB>G(2)
其中
(3)
θ
=
a
r
c
c
o
s
{
1
2
[
(
R
−
G
)
+
(
R
−
B
)
]
[
(
R
−
G
)
2
+
(
R
−
B
)
(
G
−
B
)
]
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}
θ=arccos{[(R−G)2+(R−B)(G−B)]1/221[(R−G)+(R−B)]}(3)
饱和度分量由下式给出:
(4)
S
=
1
−
3
(
R
+
G
+
B
)
[
m
i
n
(
R
,
G
,
B
)
]
S=1-\frac{3}{(R+G+B)}\begin{bmatrix} min(R,G,B) \end{bmatrix} \tag{4}
S=1−(R+G+B)3[min(R,G,B)](4)
强度分量由下式给出:
(5)
I
=
1
3
(
R
+
G
+
B
)
I =\frac{1}{3}(R+G+B) \tag{5}
I=31(R+G+B)(5)
假定RGB值已经归一化到区间 [ 0 , 1 ] [0,1] [0,1]内,且角度 θ \theta θ根据HSI空间的红轴来度量。色调可以通过将式2得到的所有值除以360°归一化到 [ 0 , 1 ] [0,1] [0,1]范围内。如果给定的RGB的值在区间 [ 0 , 1 ] [0,1] [0,1]内,则其他两个HSI分量已经在区间 [ 0 , 1 ] [0,1] [0,1]内。
2.1.2 HSI转RGB
在 [ 0 , 1 ] [0,1] [0,1]内给出HSI值,通过下面的方法可以求出其对应的RGB值。这一套公式取决于H的值。在原色分隔中有3个间隔120°的扇区。
首先,将H的值乘以360°,将色调值灰度到 [ 0 , 360 ° ] [0,360\degree] [0,360°]内。
RG扇区(
0
≤
H
<
120
°
0\leq H < 120\degree
0≤H<120°):当H的值在该扇区内时,RGB分量由以下公式给出:
(6)
B
=
I
(
1
−
S
)
B=I(1-S) \tag{6}
B=I(1−S)(6)
(7)
R
=
I
[
1
+
S
c
o
s
H
c
o
s
(
60
°
−
H
)
]
R=I\begin{bmatrix} 1+\frac{S cos H}{cos(60\degree -H)} \end{bmatrix} \tag{7}
R=I[1+cos(60°−H)ScosH](7)
(8)
G
=
3
I
−
(
R
+
B
)
G=3I-(R+B) \tag{8}
G=3I−(R+B)(8)
GB扇区(
120
≤
H
<
240
°
120\leq H < 240\degree
120≤H<240°):当H的值在该扇区内时,首先从H中减去120°,
(9)
H
=
h
−
120
°
H = h-120\degree \tag{9}
H=h−120°(9)
RGB分量由以下公式给出:
(10)
R
=
I
(
1
−
S
)
R=I(1-S) \tag{10}
R=I(1−S)(10)
(11)
G
=
I
[
1
+
S
c
o
s
H
c
o
s
(
60
°
−
H
)
]
G=I\begin{bmatrix} 1+\frac{S cos H}{cos(60\degree -H)} \end{bmatrix} \tag{11}
G=I[1+cos(60°−H)ScosH](11)
(12)
B
=
3
I
−
(
R
+
B
)
B=3I-(R+B) \tag{12}
B=3I−(R+B)(12)
GB扇区(
240
≤
H
<
360
°
240\leq H < 360\degree
240≤H<360°):当H的值在该扇区内时,首先从H中减去240°,
(13)
H
=
h
−
240
°
H = h-240\degree \tag{13}
H=h−240°(13)
RGB分量由以下公式给出:
(14)
G
=
I
(
1
−
S
)
G=I(1-S) \tag{14}
G=I(1−S)(14)
(15)
B
=
I
[
1
+
S
c
o
s
H
c
o
s
(
60
°
−
H
)
]
B=I\begin{bmatrix} 1+\frac{S cos H}{cos(60\degree -H)} \end{bmatrix} \tag{15}
B=I[1+cos(60°−H)ScosH](15)
(16)
R
=
3
I
−
(
R
+
B
)
R=3I-(R+B) \tag{16}
R=3I−(R+B)(16)
3 OpenCV中进行彩色模型转换
在OpenCV中,有函数cvtColor
可以进行彩色模型的转换。
转换标志 | 意义 |
---|---|
COLOR_BGR2GRAY | RGB空间转换成灰度图 |
COLOR_BGR2HSV | RGB空间转换到HSV空间 |
COLOR_BGR2HLS | RGB空间转换到HLS空间 |
COLOR_HLS2BGR | HLS空间转换到BGR空间 |
COLOR_HSV2BGR | HSV空间转换到BGR空间 |