本文基于《数字图像处理》(冈萨雷斯第三版)的原网站的证明并添加了一点自己的理解,如果想要获取作者的证明原始文件请访问这里。
RGB转换到HSI的几何方法公式
假设RGB模型的
R,G,B
值的取值范围为
[0,1]
。
HSI模型的三个分量:强度(
I
),色调(
H
),饱和度(
S
)的计算公式如下:
I=13(R+G+B)
S=1−3[min(R,G,B)](R+G+B)
H={θ,360−θ,B≤GB>G
式中:
θ=arccos{12[(R−G)+(R−B)][(R−G)2+(R−B)(G−B)]12}
证明
HSI模型采用三棱锥还是圆锥或者圆柱都没有影响,因为它们之间可以直接相互映射,所以三者是等价的。这里用三角形来证明。
假设RGB值已经归一化。归一化方法为:
r=RR+G+B(1)
g=GR+G+B(2)
b=BR+G+B(3)
即求出各个基色的强度所占的比例。注意到
r,g,b
实际上代表了各个三原色的强度占总体的比例,所以显然满足如下条件:
r+g+b=1
另外仔细观察上图中的正三棱锥上的面
PBPGPR
,该平面上的任意一点都代表了
R
值
G
值
B
值满足比例条件的色点。比如该平面上的点
(0.5,0.2,0.3)
代表的所
R:G:B=0.5:0.2:0.3
的点。
另外给出几条假设和显然的前提条件:
(1)点
w
的坐标是
(13,13,13)
,因为正三角形。
(2)设三角形
PBPGPR
上点的坐标为
(r,g,b)
。
(3)设连接坐标原点和W的向量为&w&,同样的有
p,pR,pB,pR
。
(4)图中的直线
PRQR,PBQB,PGQG
两两相交于W。
(5)设
r0=RI,g0=GI,b0=BI
。从图Fig.4.46(a)中可以看出对于直线
PRQR
上的任意一点都有
g0=b0
,对于直线
PBQB,PGQG
也有类似的结论。
(6)对于三角形
PRQRPG
中的任意一点都有
g0>b0
,对于其他5个区域也有类似的结论。
(7)
|WQR||PRQR|=13,|WQG||PGQG|=13,|WQB||PBQB|=13
,等边三角形的性质。
(8)RG扇区是三角形
WPRPG
所围成的区域。对于GB和BR扇区有类似结论。
I
的证明
按照定义,
I=13(R+G+B)
,使其取值范围也在[0,1],没有什么好说的。
H
的证明
默认使用待求色点和r轴的夹角作为H。对于点
p
,显然有下式成立:
(p⃗ −w⃗ )∗(pR→−w⃗ )=∥p⃗ −w⃗ ∥∗∥pR→−w⃗ ∥∗cosH(4)
将p点坐标
(r,g,b)
带入有:
∥p⃗ −w⃗ ∥=[(r−13)2+(g−13)2]+(b−13)2]1/2(5)
将(1),(2),(3)带入(5)式可得:
∥p⃗ −w⃗ ∥=[9(R2+G2+B2)−3(R+G+B)29(R+G+B)2]1/2(6)
将
pR(1,0,0)
和
W(13,13,13)
带入,有:
∥pR→−w⃗ ∥=(23)1/2(7)
通过向量的坐标运算可以得到:
(p⃗ −w⃗ )∗(pR→−w⃗ )==23(r−13)−13(g−13)−13(b−13)2R−G−B3(R+G+B)(1)(2)(8)
由式子(4),(6),(7),(8)可得:
H=arccos{12[(R−G)+(R−B)][(R−G)2+(R−B)(G−B)]1/2}
S
的证明
计算方法:以图Fig.4.46(b)中的p点为例,设W向r轴和g轴所在的平面投影,交于点T,P和P’分别向直线WT投影,设分别交于点Q和T。计算p点饱和度的方法是
S=|WP|WP′
。
在计算饱和度时,对于三角形来说,计算
|WP|
来作为P点的饱和度是没有意义的并且是错误的,因为在我们采用的HSI模型中,点的坐标是
(r,g,b)
而不是RGB模型中的
(R,G,B)
,在这种情况下,其实向量本身也没有意义。我觉得可以这样理解,在P点所在的强度和色调不变的情况下,P’点是所能取到的最大的饱和度,因为白光强度为0。从W到P’的过程是饱和度不断增加的过程,而且是线性变化的。这样就可以用
|WP||WP′|
来表示了。注意到,如果是圆柱形的HSI模型,假设截面的半径是1的话,即
|WP′|=1
,这样只需计算
|WP|
即可,个人猜测如果将三角形的HSI转换到圆柱形的HSI,直接计算半径(将三角形HSI到圆柱HSI的转换公式作用于三角形的P的半径)就是上面给出的S的表达式。这里不再验证。
下面是计算过程,假设P点
(r,g,b)
中,
b
小于
r,g
,这样可以得到下式:
S====|WP||WP′||WQ||WT||WT|−|QT||WT|1−3b(3)(4)(5)(6)
推广到
g,r
最小的情况可得:
S=1−3(R+G+B)[min(R,G,B)]
证毕。
参考资料
《数字图像处理》(冈萨雷斯)第三版
初入计算机,请大家多多指教嘛,共同学习~~~持续更新中……