彩色图像的四种模型以及转化为黑白图像

彩色图像的四种模型:RGB、HSL、HSV、HSI。(YUV)
RGB:Red(红)、Green(绿)、Blue(蓝)
HSL:Hue(色调)、Saturation(饱和度 )、Luminance(亮度 )
HSV:Hue(色调)、Saturation(饱和度 )、Value(亮度 )
HSI:Hue(色调)、Saturation(饱和度 )、Intensity(亮度 )

资料来源:百度百科(RGB\HSL\HSV\HSI)

HSL 与 RGB 转换

a) RGB→HSL 的算法描述。

步骤 1:把 RGB 值转成【0,1】中数值。

步骤 2:找出 R,G 和 B 中的最大值。
  步骤 3:设 L=(maxcolor + mincolor)/2

步骤 4:如果最大和最小的颜色值相同,即表示灰色,那么 S 定义为 0,而 H 未定义并在程序中通常写成 0。

步骤 5:否则,测试 L:

If L<0.5, S=(maxcolor-mincolor)/(maxcolor + mincolor)

If L>=0.5, S=(maxcolor-mincolor)/(2.0-maxcolor-mincolor)

步骤 6: If R=maxcolor, H=(G-B)/(maxcolor-mincolor)

If G=maxcolor, H=2.0+(B-R)/(maxcolor-mincolor)

If B=maxcolor, H=4.0+(R-G)/(maxcolor-mincolor)

步骤 7:从第 6 步的计算看,H 分成 0 ~ 6 区域。RGB 颜色空间是一个立方体而 HSL 颜色空间是两个六角形锥体,其中的 L 是 RGB 立方体的主对角线。因此,RGB 立方体的顶点:红、黄、绿、青、蓝和品红就成为 HSL 六角形的顶点,而数值 0 ~ 6 就告诉我们 H 在哪个部分。H=H*60.0,如果 H 为负值,则加 360。

b) HSL→RGB 的算法描述。

步骤 1:If S=0,表示灰色,定义 R,G 和 B 都为 L.

步骤 2:否则,测试 L:

If L<0.5,temp2=L*(1.0+S)

If L>=0.5,temp2=L+S-L*S

步骤 3:temp1=2.0*-temp2

步骤 4:把 H 转换到 0 ~ 1。

步骤 5:对于 R,G,B,计算另外的临时值 temp3。方法如下:

for R, temp3=H+1.0/3.0

for G, temp3=H

for B, temp3=H-1.0/3.0

if temp3<0, temp3=temp3+1.0

if temp3>1, temp3=temp3-1.0

步骤 6:对于 R,G,B 做如下测试:

If 6.0*temp3<1,color=temp1+(temp2-temp1)6.0\temp3

Else if 2.0*temp3<1,color=temp2

Else if 3.0*temp3<2,

color=temp1+(temp2-temp1)*((2.0/3.0)-temp3)*6.0

Else color=temp1

HSV 与 RGB 转换

  1. RGB 转化到 HSV 的算法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

max=max(R,G,B)2:

min=min(R,G,B)

V=max(R,G,B)11

:

S=(max-min)/max3:

ifR = max,H = (G-B)/(max-min)\* 60

ifG = max,H = 120+ (B-R)/(max-min)\* 60

ifB = max,H = 240 + (R-G)/(max-min)\* 60

ifH < 0,H = H+ 360
  1. HSV 转化到 RGB 的算法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
if s = 0

R=G=B=V

else

H /= 60;

i = INTEGER(H)

f = H - i

a = V \* ( 1 - s )

b = V _ ( 1 - s _ f )

c = V _ ( 1 - s _ (1 - f ) )

switch(i)

case 0: R = V; G = c; B = a;
   case 1: R = b; G = v; B = a;

case 2: R = a; G = v; B = c;

case 3: R = a; G = b; B = v;

case 4: R = c; G = a; B = v;

case 5: R = v; G = a; B = b;

HSI 与 RGB 转换

1、 球体变换公式:
令 M=max(R,G,B) m=min(R,G,B),其中 r g b 至少有一个为 0 或 1,则有:

(1)明度

    I=(M+m)/2

(2)饱和度

当 M=m 时,S=0

当 M≠m 时,I≤0.5,则 S=(M-m)/(M+m)

当 M≠m 时,I>0.5,则 S=(M-m)/(2-M-m)

(3)色度

当 S=0 时,H=0;

当 S≠0,R=M,则 H=60(2+b-g),这时色度位于黄和品红之间;

当 S≠0,G=M,则 H=60(4+r-b),这时色度位于青和黄色之间;

当 S≠0,B=M,则 H=60(6+g-r),这时色度位于品红和青之间;

2、三角变换公式:

(1)明度

I=(R+G+B)/3

(2)色度

S=1-min{R+B+G}/I

(3)色度

坚持原创技术分享,您的支持将鼓励我继续创作!