彩色图像处理【摘要】本文主要介绍了彩色图像处理中的全彩色处理,包括三色成像的原理,常见的三种颜色模型——RGB模型、CMY模型和HSI模型,并给出描述颜色空间的转换关系的算法,还介绍了基于彩色增强以及彩色图像复原的滤波,并在Matlab上进行仿真。
【关键字】RGB模型滤波彩色增强图像复原1 引言大千世界五彩斑斓,大多数物体都具有丰富的色彩。
彩色图像提供了比灰度图像更多的信息,伴随信息技术的发展,彩色图像的处理已成为一个重要的研究领域。
由于彩色图像处理的研究范围非常广泛,因此,本文只对几个方面进行了综述性的介绍。
2 彩色基础人眼最内层是视网膜,其表面分布着大量的光敏细胞。
按照形状,光敏细胞可以分为锥状细胞和杆状细胞。
大部分的锥状细胞集中在视轴线和视网膜的交界处,即中央凹区。
中央凹区对光有较高的分辨力,能识别图像的细节。
锥状细胞将电磁光谱的可见部分分成三个波段:红、绿和蓝。
所以,这三种颜色被称为人类视觉的三原色。
三色成像的原理如下:物体的颜色是由该物体所反射的光的波长来决定的,由于物体对光的吸收和反射的属性不同,所以表现出不同的颜色。
电磁波波长范围很大,但是只有波长在400~760nm范围内的电磁波,使人产生视觉,感觉到明亮和颜色。
这个波长范围内的电磁波叫可见光。
人眼的锥状细胞将可见光分成红、绿、蓝三色。
自然界中常见的各种色光都可以用这三原色按照不同比例混合得到。
同样,绝大多数色光也可以分解成红、绿、蓝三种色光,这就是三原色原理。
该原理是T.Young在1802年提出的,其基本内容是:任何颜色都可以用3种不同的基本颜色按不同的比例混合得到,即321cC bC aC C ++=, a,b,c ≥0 (1) 其中1C 、2C 、3C 为三原色(又称为三基色),而a 、b 、c 为三种原色的权值(即三原色的比例或浓度),C 为所合成的颜色,可为任意颜色。
三原色原理指出:1)自然界中的可见颜色都可以用三种原色按一定的比例混合得到;反之,任意一种颜色都可以分解为三种原色。
2)作为原色的三种颜色应该互相独立,即其中任何一种都不能用其他两种混合得到。
3)三原色之间的比例直接决定混合色调的饱和度。
4)混合色的亮度等于各原色的亮度之和。
三原色原理是色度学中最基本的原理。
1931年,国际照明委员会(CIE )规定用波长为700nm 、546.1nm 和435.8nm 的单色光分别作为红(R )、绿(G )、蓝(B )三原色。
红绿蓝三原色按照比例混合可以得到各自颜色,其配色方程为: C=aR+bG+cB , a,b,c ≥0 (2) 其中,C 为任意一种颜色,R 代表红色,G 代表绿色,B 代表蓝色,而a,b,c 则是三原色的权值。
把三原色按不同比例相加进行混色称为相加混色,其中:红色+绿色=黄色红色+蓝色=品红绿色+蓝色=青色红色+绿色+蓝色=白色称黄色、品红、青色为相加二次色。
对于强度相同的不同单色光,人眼的主管亮度感觉不同,相同亮度的三原色,人眼看去的感觉是,绿色光的亮度最亮,而红色光其次,蓝色光最弱。
采用三原色来表示各种颜色,使得彩色图像的获取、表示、传输和复制成为可能。
它也广泛应用于彩色绘制、印染、摄影等多方面。
3 颜色模型:颜色模型指的是某个三维颜色空间中的一个可见光子集,它包含某个色彩域的所有色彩。
一般而言,任何一个色彩域都只是可见光的子集,任何一个颜色模型都无法包含所有的可见光。
常见的颜色模型有RGB、CIE、CMY/CMYK、HSI、NTSC、YcbCr、HSV等。
3.1 RGB模型RGB模型是目前最常用的一种彩色信息表达方式,它使用红、绿、蓝三原色的亮度来定量表示颜色。
该模型也称为加色混色模型,是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示。
其混色效果如图1所示。
RGB颜色模型可以看做三维直角坐标颜色系统中的一个单位正方体。
任何一种颜色在RGB颜色空间都可以用三维空间中的一个点来表示,其彩色立方体如图2所示。
在RGB颜色空间上,当任何一个基色的亮度值为0时,即在原点处,就显示为黑色。
当三种基色都达到最高亮度时,就表现为白色。
在连接黑色与白色的对角线上,是亮度等量的三基色混合而成的灰色,该线称为灰色线。
立方体位于坐标轴上的三个顶点分别为三基色红、绿、蓝色。
而另外三个顶点则对应于二次色黄色、青色以及品红。
图1 RGB混色效果图图2 彩色立方体一幅M*N的RGB彩色图像可以用一个M*N*3的矩阵来描述,图像中的每一个像素点对应于红、绿、蓝三个分量组成的三元组。
在Matlab中,不同的图像类型,其图像矩阵的取值范围也不一样。
在Matlab中要生成一幅RGB图像可以采用cat函数来得到。
其基本语法如下:B=cat(dim,A1,A2,A3,…)其中,dim为维数,cat函数将A1,A2,A3等矩阵连接成维数为dim的矩阵。
对图像生成而言,可以取dim为3,然后将三个分别代表R,G,B分量的矩阵连接在一起:I=cat(3,iR,iG,iB)在这里iR,iG,iB分别为生成的RGB图像的R,G,B分量。
这样,就可以通过cat函数将三个分量合成一幅彩色图像。
相应地,要分别获取一幅RGB图像I的三个分量的值,可以使用下列语句:iR=I(:,:,1);iG=I(:,:,2);iB=I(:,:,3);例1 生成一幅128*128的RGB图像,该图像左上角为红色,右上角为蓝色,左下角为绿色,右下角为黑色。
其Matlab程序见附录eg1.m,得到一幅采用cat函数生成的RGB图像如图3所示:图3 采用cat函数生成的RGB3.2 CMY模型和CMYK模型CMY模型是硬拷贝设备上输出图形的颜色模型,常用于彩色打印、印刷行业等。
青(Cyan)、品红(Magenta)、黄(Yellow)在彩色立方体中分别是红、绿、蓝的补色,称为减色基,而红、绿、蓝称为加色基。
因此,CMY模型称为减色混合模型。
在CMY模型中,颜色是从白光中减去一定成分得到的;而不是像RGB模型那样,是在黑色光中增加某种颜色。
可以看到,在笛卡尔坐标系中,CMY 颜色模型与RGB 颜色模型外观相似,但原点和顶点刚好相反,CMY 模型的原点是白色,相对的顶点是黑色。
因此,CMY 三种被打印在纸上的颜色可以理解为:青(C )=白色—红色品红(M )=白色—绿色黄(Y )=白色—蓝色因此CMY 坐标可以从RGB 模型中得到:⎪⎪⎪⎭⎫ ⎝⎛-⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛B G R Y M C 111 (3)而白色光是由红、绿、蓝三色相加得到的,上面的等式还可以还原为我们常用的加色等式。
青(C )=(红色+绿色+蓝色)-红色=绿色+蓝色品红(M )=(红色+绿色+蓝色)-绿色=红色+蓝色黄(Y )=(红色+绿色+蓝色)-蓝色=红色+绿色由于在印刷时CMY 模型不可能产生真正的黑色,因此在印刷业中实际上的使用是CMYK 颜色模型,K 为第四种颜色,表示黑色。
在彩色打印及彩色印刷中,由于彩色墨水、油墨的化学特性、色光反射和纸张对颜料的吸附程度等因素,用等量的CMY 三色得不到真正的黑色,所以在CMY 色彩中需要另加一个黑色(K ),才能弥补这三个颜色混合不够黑的问题。
从CMY 到CMYK 的转换公式如下:()Y M C K ,,min =K C C -=K M M -= (4) K Y Y -=RGB 颜色空间与CMY 颜色空间的相互转换可以使用函数imcomplement:I2=imcomplement (I1)该函数得到图像I1的互余图像,其中I1可以是二值图像、灰度图像或者彩色图像,而I2与I1互余。
例2 将一幅RGB 图像转换到CMY 空间。
代码部分见附录eg2.m,运行结果如下。
(a) RGB颜色空间的彩色图像 (b) CMY颜色空间的转换图4 RGB颜色空间与CMY颜色空间的转换3.3 HSI模型HSI(Hue-Saturation-Intensity,HSI)模型用H、S、I三参色数描述颜色特性,它是由Munseu提出的一种颜色模型。
其中H定义为颜色的波长,称为色调;S表示颜色的深浅程度,称为饱和度;I表示强度或亮度。
HSI颜色模型反映了人的视觉对色彩的感觉。
在HIS颜色模型中,色调H和饱和度S包含了颜色信息,而强度I则与彩色信息无关。
色调H由角度表示,它反映了颜色最接近哪种光谱波长,即光的不同颜色,如红、蓝、绿等。
通常假定0°表示的颜色为红色,120°的为绿色,240°的为蓝色,0°~360°的色相覆盖了所有可见光谱的色彩。
饱和度S表征颜色的深浅程度,饱和度越高,颜色越深,如深红,深绿。
饱和度参数是色环的原点(圆心)到色彩点的半径的长度。
由色环可以看出,在环的边界上的颜色饱和度最高,其饱和度值为1;在中心的则是中性(灰色)影调,其饱和度为0。
亮度是指光波作用于感受器所发生的效应,其大小由物体反射系数来决定。
反射系数越大,物体的亮度越大,反之越小。
如果把亮度作为色环的垂线,那么H、S、I构成一个柱形彩色空间,即HIS模型的三个属性定义了一个三维柱形空间。
例3 将一幅三原色图像从RGB空间转换到HSI空间。
代码见附录eg3.m,运行结果如图5.所示,由图可见,H分量的效果不是很好,但是饱和度S与亮度I相互独立。
一般而言,对一种从RGB空间转换到HSI空间的方法,只要该方法保证转换后的色调H是一个角度,饱和度S与亮度I相互独立,并且这个转换是可逆的,那么这种方法就是可行的。
(a)三原色(b)H分量(c)S分量(d)I分量图5 三原色RGB空间及其在HSI空间的各个分量4 全彩色图像处理4.1彩色增强通过分别对彩色图像的R、G、B三个分量进行处理,可以对单色图像进行彩色增强从而达到对彩色图像进行彩色增强的目的。
需要注意的是,在对三色彩色图像的R、G、B分量进行操作时,必须避免破坏彩色平衡。
如果在HSI模型的图像上操作,实际上在许多情况下,强度分量可以不看做单一图像,而包含在色调和饱和度分量中的彩色信息,常被不加改变地保留下来。
对饱和度的增强可以通过将每个像素的饱和度乘以一个大一1的常数,这样会使图像的彩色更为鲜明。
反之,可以乘以小于1的常数来减弱彩色鲜明程度。
我们可以在饱和度图像分量中使用非线性点操作,只要变换函数在原点为零。
变化饱和度接近于零的像素饱和度可能破坏彩色平衡。
由前面的介绍可知色调是一个角度,因此给每个像素的色调加一个常数是可行的。
这样就能够得到改变颜色的效果。
加减一个小的角度只会使彩色图像变得相对“冷”色调和“暖”色调,而加减大的角度将使图像有剧烈的变化。
由于色调是用角度表示的,处理时必须考虑到灰度级“周期性”,例如,在8位/像素的情况下,则有255+1=0和0-1=255。