数字图像处理武汉理工大学信息工程学院第9章彩色图像处理(ColorImageProcessing)9.1彩色基础(FundamentalsofColorandVision)9.2彩色模型(ColorModels)9.3伪彩色处理(PseudocolorImageProcessing)9.4全彩色图像处理(Full-ColorImageProcessing)9.5彩色图像分割(ColorImageSegmentation)9.1彩色基础(FundamentalsofColorandVision)白光在17世纪,牛顿通过三棱镜研究对白光的折射就已发现:白光可被分解成一系列从紫到红的连续光谱,从而证明白光是由不同颜色(而且这些颜色并不能再进一步被分解)的光线相混合而组成的。可见光可见光是由电磁波谱中相对较窄的波段组成,如果一个物体比较均衡地反射各种光谱,则人看到的物体是白的;而如果一个物体对某些可见光谱反射的较多,则人看到的物体就呈现相对应的颜色。例如,绿色物体反射具有500~570nm(纳米)范围的光,吸收其他波长光的多数能量。9.1彩色基础(FundamentalsofColorandVision)可见光无线电波γ射线X射线紫外线红外线微波超短短波中波长波0.01nm1nm0.1μ10μ0.1cm10cm10m1km100km电磁波谱分布紫蓝青绿黄橙红0.380.430.470.50.560.590.620.76(m)图9.1可见范围电磁波谱的波长组成9.1彩色基础(FundamentalsofColorandVision)人眼的吸收特性:人眼的锥状细胞是负责彩色视觉的传感器,人眼的锥状细胞可分为三个主要的感觉类别。大约65%的锥状细胞对红光敏感,33%对绿光敏感,只有2%对蓝光敏感。由于人眼的这些吸收特性,被看到的彩色是所谓的原色红(R,red)、绿(G,green)和蓝(B,blue)的各种组合。9.1彩色基础(FundamentalsofColorandVision)三原色原理其基本内容是:任何颜色都可以用3种不同的基本颜色按照不同比例混合得到,即C=aC1+bC2+cC3(9.1)式中a,b,c=0为三种原色的权值或者比例,C1、C2、C3为三原色(又称为三基色)。9.1彩色基础(FundamentalsofColorandVision)三原色原理指出自然界中的可见颜色都可以用三种原色按一定比例混合得到;反之,任意一种颜色都可以分解为三种原色。作为原色的三种颜色应该相互独立,即其中任何一种都不能用其他两种混合得到。9.1彩色基础(FundamentalsofColorandVision)三原色原理为了标准化起见,国际照明委员会(CIE)规定用波长为700nm、546.1nm、435.8nm的单色光分别作为红(R)、绿(G)、蓝(B)三原色。红绿蓝三原色按照比例混合可以得到各种颜色,其配色方程为:C=aR+bG+cB(9.2)9.1彩色基础(FundamentalsofColorandVision)三原色原理原色相加可产生二次色。例如:红色+蓝色=深红色(M,magenta),绿色+蓝色=青色(C,cyan),红色+绿色=黄色(Y,yellow)。以一定的比例混合光的三种原色或者以一种二次色与其相反的原色相混合可以产生白色(W,white),即:红色+绿色+蓝色=白色。9.1彩色基础(FundamentalsofColorandVision)彩色到灰度的转换相同亮度的三原色,人眼看去的感觉是,绿色光的亮度最亮,而红色光其次,蓝色光最弱。如果用Y来表示白色光,即光的亮度(灰度),则有如下关系:Y=0.299R+0.587G+0.114B9.1彩色基础(FundamentalsofColorandVision)区分颜色常用三种基本特性量亮度:如果无彩色就只有亮度一个维量的变化。色调:是光波混合中与主波长有关的属性,色调表示观察者接收的主要颜色。这样,当我们说一个物体是红色、橘黄色、黄色时,是指它的色调。饱和度:与一定色调的纯度有关,纯光谱色是完全饱和的,随着白光的加入饱和度逐渐减少。9.1彩色基础(FundamentalsofColorandVision)色调和饱和度一起称为彩色,因此,颜色用亮度和彩色表征。形成任何特殊颜色需要的红、绿、蓝的量称做三色值,并分别表示为X,Y,Z。进一步,一种颜色可用它的3个色系数表示,它们分别是:ZYXXxZYXYyZYXZz从以上公式可得:x+y+z=11931年CIE制定了一个色度图,如图9.4所示,图中波长单位是nm,用组成某种颜色的三原色的比例来规定这种颜色。图中横轴代表红色色系数,纵轴代表绿色色系数,蓝色系数可由z=1-(x+y)求得。例如,图9.4中标记为绿的点有62%的绿和25%的红成分,从而得到蓝的成分约为13%。9.2彩色模型(ColorModels)彩色模型(也称彩色空间或彩色系统)的用途是在某些标准下用通常可接受的方式简化彩色规范。本质上,彩色模型是坐标系统和子空间的规范。位于系统中的每种颜色都由单个点来表示。本节主要讨论几种图像处理应用的主要模型。9.2.1RGB模型(RGBColorModel)RGB模型RGB模型是目前常用的一种彩色信息表达方式,它使用红、绿、蓝三原色的亮度来定量表示颜色。该模型也称为加色混色模型,是以RGB三色光相互叠加来实现混色的方法,因而适合于显示器等发光体的显示。9.2.1RGB模型(RGBColorModel)图9.2RGB混色效果图9.2.1RGB模型(RGBColorModel)图9.3中,R,G,B位于三个角上;二次色深红(Magenta)、青(Cyan)、黄(Yellow)位于另外3个角上,黑色在原点处,白色位于离原点最远的角上(点(1,1,1))。在本模型中,不同的颜色处在立方体上或其内部,并可用从原点分布的向量来定义。为方便起见,假定所有的颜色值都归一化,即所有R,G,B的值都在[0,1]范围内取值。9.2.1RGB模型(RGBColorModel)考虑RGB图像,其中每一幅红、绿、蓝图像都是一幅8bit图像,在这种条件下,每一个RGB彩色像素有24bit深度(3个图像平面乘以每平面比特数,即3×8)。24bit的彩色图像也称全彩色图像。在24bitRGB图像中颜色总数是224=16777216。9.2.1RGB模型(RGBColorModel)一幅m*n(m,n为正整数,分别表示图像的高度和宽度)的RGB彩色图像可以用一个m*n*3的矩阵来描述,图像中的每一个像素点对应于红、绿、蓝三个分量组成的三元组。在Matlab中,不同的图像类型,其图像矩阵的取值范围也不一样。例如若一幅RGB图像是double类型的,则其取值范围在[0,1]之间,而如果是uint8或者uint16类型的,则取值范围分别是[0,255]和[0,65535]。9.2.1RGB模型(RGBColorModel)在Matlab中要生成一幅RGB彩色图像可以采用cat函数来得到。其基本语法如下:B=cat(dim,A1,A2,A3,…)其中,dim为维数,cat函数将A1,A2,A3等矩阵连接成维数为dim的矩阵。9.2.1RGB模型(RGBColorModel)对图像生成而言,可以取dim=3,然后将三个分别代表RGB分量的矩阵连接在一起:I=cat(3,rgb_R,rgb_G,rgb_B)在这里,rgb_R,rgb_G,rgb_B分别为生成的RGB图像I的三个分量的值,可以使用下列语句:rgb_R=I(:,:,1);rgb_G=I(:,:,2);rgb_B=I(:,:,3);9.2.1RGB模型(RGBColorModel)例:生成一幅128*128的RGB图像,该图像左上角为红色,左下角为蓝色,右上角为绿色,右下角为黑色。程序:clearrgb_R=zeros(128,128);rgb_R(1:64,1:64)=1;rgb_G=zeros(128,128);rgb_G(1:64,65:128)=1;rgb_B=zeros(128,128);rgb_B(65:128,1:64)=1;rgb=cat(3,rgb_R,rgb_G,rgb_B);figure,imshow(rgb),title('RGB彩色图像');结果:9.2.2HSI模型(HSIColorModel)HSI(Hue-Saturation-Intensity,HSI)模型用H、S、I三参数描述颜色特性。H定义颜色的波长,称为色调;S表示颜色的深浅程度,称为饱和度;I表示强度或亮度。9.2.2HSI模型(HSIColorModel)HSI模型在图像处理和识别中广泛采用主要基于两个重要的事实:其一I分量与图像的彩色信息无关;其二H和S分量与人感受颜色的方式是紧密相连的。9.2.2HSI模型(HSIColorModel)包含彩色信息的两个参数是色度(H)和饱和度(S)。色度H由角度表示,彩色的色度反映了该彩色最接近什么样的光谱波长(即彩虹中的那种颜色)。不失一般性,可以假定0o的彩色为红色,120o的为绿色,240o的为蓝色。色度从0o~360o覆盖了所有可见光谱的彩色。9.2.2HSI模型(HSIColorModel)饱和度S表示颜色的深浅程度,饱和度越高,颜色越深,如深红,深绿等。饱和度参数是色环的原点(圆心)到彩色点的半径的长度。如图9.9所示。在环的外围圆周是纯的或称饱和的颜色,其饱和度值为1。在中心是中性(灰色),即饱和度为0。亮度I是指光波作用于感受器所发生的效应,其大小由物体反射系数来决定。反射系数越大,物体的亮度越大,反之越小。9.2.2HSI模型(HSIColorModel)如果把亮度作为色环的垂线,那么H、S、I构成一个柱形彩色空间。HSI模型的三个属性定义了一个三维柱形空间,如图9.10所示:图9.10柱形彩色空间1.从RGB模型转换到HSI模型从RGB到HSI的变换是一个非线性变换。对任何三个在[0,1]范围内的R,G,B值,)(31BGRI)],,[min()(31BGRBGRSBGBGH2212)])(()[()]()[(21arccosBGBRGRBRGR其中:2.从HSI模型转换到RGB模型若设H,S,I的值在[0,1]之间,R,G,B的值也在[0,1]之间,则从HSI到RGB的转换公式为:(1)当H在[0,2/3]之间B=I(1-S))3cos(cos1HHSIRG=3I-(B+R)(2)当H在[2/3,4/3]之间(3)当H在[4/3,2]之间9.3伪彩色处理(PseudocolorImageProcessing)伪彩色(pseudocoloring,也称为假彩色)处理定义:指将灰度图像转化为彩色图像,或者将单色图像变换成给定彩色分布的图像。目的:为了提高人眼对图像的细节分辨能力,以达到图像增强的目的。9.3伪彩色处理(PseudocolorImageProcessing)基本原理:将灰度图像或者单色图像的各个灰度级匹配到彩色空间中的一点,从而使单色图像映射成彩色图像。设f(x,y)为一幅灰度图像,R(x,y),G(x,y),B(x,y)为f(x,y)映射到RGB空间的三个颜色分量,则伪彩色处理可以表示为:R(x,y)=fR(f(x,y))(9.20)G(x,y)=fG(f(x,y))(9.21)B(x,y)=fB(f(x,y))(9.22)其中fR,fG,fB为某种映射函数。给定不同的映射函数就能将灰度图像转化为不同的伪彩色图像。伪彩色处理虽然能将灰度转化为彩色,但这种彩色并不是真正表现图像的原始颜色,而仅仅是一种便于识别的伪彩色。伪彩色处理方法主要有强度分层和灰度级到彩色变换。9.3.1强度分层(Intens