1第六章彩色图像处理•彩色基础:白色光包含从紫色光到红色光的连续光谱(波长约400nm~700nm)。•物体的颜色由其反射光决定(绿色物体主要反射500nm到570nm波长的光波)。•彩色帮助我们分辨物体(例如:红花绿叶)。26.1彩色基础•原色光相加产生二次色光:红+蓝=品红(magenta),绿+蓝=青(cyan),红+绿=黄(yellow)。•适当比例的三原色光混合,或者二次色光与相反的原色光混合可产生白色光。原色光与二次色光及其混合(加性原色)3彩色基础•颜料或着色剂的原色为减性:品红:减去(或吸收)白色光中的绿色青:减去(或吸收)白色光中的红色黄:减去(或吸收)白色光中的蓝色•相应的二次色为红、绿、蓝。•适当比例的三原色混合,或者二次色与相反的原色混合可产生黑色。颜料原色与二次色及其混合(减性原色)4色彩模型•色彩模型(色彩空间、色彩系统):对坐标系统和其中一个子空间的规定,使每个色彩用一个点表示。•常用色彩模型:彩色电视机、摄像机用的RGB(红绿蓝)模型,彩色印刷用的CMY(青品红黄)、CMYK(青品红黄黑)模型,以及HSI(色调饱和强度)模型。其中HSI模型比较接近人们描述和解释色彩的方式。•HSI模型的一个优点是可以将色彩与灰度信息分开。5RGB色彩模型•RGB模型:以红、绿、蓝为主要成分表示色彩。•为表示方便,可将色彩值归一化,使所有颜色在一单位立方体内。RGB色彩模型6RGB色彩模型•全(真)彩色(truecolor)图像:以24位表示的RGB彩色图像,其中红绿蓝分量各用8位表示。全彩色表示的颜色总数为(28)3=16兆。24位RGB色彩立方体该立方体为一实心体,包含16兆个点。(0,0,0)为黑色,(255,255,255)为白色。可通过该立方体的剖面图对其进行分析,例如固定其中一个颜色分量,让另外两个变化。7(127,G,B)剖面图显示过程:R固定为127,G、B取0,1,2,…,255。RGB彩色图像的获取为其逆过程:利用R、G、B滤波器获得三个颜色分量。RGB彩色立方体中被遮挡的三个表面两个像素只有当RGB分量都相同时彩色才相同。RGB不同,亮度可相同,但色调不同。索引图像:整数的数据矩阵X和彩色映射矩阵mapR=imread(‘lena.bmp’);G=imread(‘student.bmp’);B=imread(‘pepper.bmp’);a=cat(3,r,g,b);imshow(a);r=a(:,:,1);g=a(:,:,2);b=a(:,:,3);[x,map]=imread(‘index.bmp’);Imshow(g,map);image(g),colormap(map);Fork=1:nMap(k,:)=[r(k),g(k),b(k)];EndBw_image=dither(gray_image);f=ind2gray(x,map);[y,newmap]=imapprox(x,map,n);Mat2gray(x)索引图像:如指定一黑白彩色阵map=[000;111];指定图形背景色:whitebg(‘g’);whitebg(‘green’);whitebg([111]);指定MATLAB默认的色阵:colormap(copper/autumn/jet/spring),imshow(x,copper);灰度图变索引图时:[x,map]=gray2ind(gray_image,n);则生成的彩色阵长度为n,且是r=g=b的非彩色(亮度值),排序为:r=g=b=0:1/n:1[x,map]=rgb2ind(f,n,‘nodither’/’dither’);//n决定了map的长度(即彩色的数目),可以减少一幅RGB图像中的彩色数目。相比RGB的1600万种彩色来说,n的数目可以忽略。Rgb_image=ind2rgb(x,map);直接将x对应的map映回rgb的三个分量即可。彩色数目不变。二维视角显示:imshow,imview;纹理映射将二维图像映射到三维图形表面的一种技术。[x,y,z]=cylinder;warp(x,y,z,rgb_image);warp(x,map);106.2其他彩色空间•NTSC:美国的彩色制式,YIQ:亮度,色度,饱和度。yiq-image=rgb2ntsc(rgb_image);rgb_image=ntsc2rgb(yiq-image);116.2其他彩色空间•YCbCr:广泛应用于数字视频。Y:亮度,Cb,Cr为两个色度信息。Ycbcr_image=rgb2ycbcr(rgb_image);rgb_image=ycbcr2rgb(rgb-image);126.2其他彩色空间•HSV:色调,饱和度,数值。136.2其他彩色空间•CMY,CMYK:青色,品红和黄色是光的合成色,即颜料的原色。是RGB的补色。彩色图像的硬拷贝设备(彩色打印机、复印机等)需要CMY输入,:111CRMGYB减性加性红、绿、蓝、黑、白对应关系•由于在实际中利用CMY合成黑色时易产生浑浊效果,因此增加黑色作为第四色,从而构成CMYK色彩模型。•考虑到打印多数为白色情况,故在CMY中各分量都分零节省能量。Cmy_image=imcomplement(rgb_image);RGB-image-sculpter14CMY-image=imcomplement(RGB-image-sculpter)1516HSI色彩空间•我们常用色调、饱和度和强度来描述彩色物体:色调(hue):描述纯色彩的属性;饱和度(saturation):纯色彩中被白光冲淡的程度;强度(intensity):描述色彩的明亮程度。•HSI色彩模型将强度成分与色调和饱和度等描述彩色的属性分离开来,是根据人对色彩的自然描述处理彩色图像的理想模型。•从RGB模型到HSI模型:17HSI色彩模型•从顶视图看来,原色相隔120°,二次色与原色差60°,色调一般为从红色轴逆时针旋转的角度,饱和度是到中心的距离。18基于三角形颜色平面的HSI模型基于圆形颜色平面的HSI模型19HSI色彩模型•由RGB模型转换为HSI模型:,,BGBG若若360H11221[()()]2cos[()()()]RGRBRGRBGB其中:31[min(,,)]()SRGBRGB色调:饱和度:强度:1()3IRGB角度值从R(红色)轴计算色调在R=G=B时无定义饱和度在R=G=B=0时无定义20HSI色彩模型•由HSI模型转换为RGB模型:C1C2C31.根据H值确定当前颜色所属区域:①0°H120°,则属RG扇形,C1=R,C2=G,C3=B;②120°H240°,则属GB扇形,C1=G,C2=B,C3=R,H=H-120°;③240°H360°,则属BR扇形,C1=B,C2=R,C3=G,H=H-240°;2.计算C1,C2,C3值:3(1)CIS1cos1cos(60)SHCIH2133()CICC21HSI色彩模型HSI模型的色度、饱和度与强度分布图色调分布饱和度分布强度分布His=rgb2hsi(rgb);rgb=hsi2rgb(his);226.3彩色图像处理基础•全彩色图像处理方法分两类:1.分别处理每一颜色分量图像再重新合成;2.直接处理彩色像素(每一色彩点视为一向量)。•RGB彩色图像中每一像素可表示为一向量:(,)(,)(,)(,)(,)(,)(,)RGBcxyRxyxycxyGxycxyBxyc236.5.1彩色图像平滑•灰度图像的平滑滤波可推广至彩色图像。令Sxy为以(x,y)为中心的像素邻域,则平均RGB向量为:(,)1(,)(,)xyxySxyxyKcc•或者:(,)(,)(,)1(,)1(,)(,)1(,)xyxyxyxySxySxySRxyKxyGxyKBxyKc直接对彩色图像平滑对各分量图像平滑后重新合成24RGBRGBHSI25(a)RGB平滑(b)HSI平滑(a)(b)之差图像(a):采用5×5均值滤波器对R、G、B分量图像分别平滑滤波后合成(b):采用5×5均值滤波器对I平面平滑滤波,H和S平面不变•RGB平滑改变了颜色,而HSI平滑只改变强度分量,原色调和饱和度不变。266.5.2彩色图像锐化•灰度图像的平滑滤波可推广至彩色图像。2222(,)(,)(,)(,)RxyxyGxyBxyc(a)RGB锐化(b)HSI锐化(a)(b)之差图像以下实验所采用增强模板(a):对R、G、B分量图像分别增强后合成(b):对I平面增强,H和S平面不变Arnold置乱加密•Arnold置乱加密方法因其理论简单、低复杂度和高安全性等优点常常被引入到信息隐藏技术中•一幅N×N尺寸的图像经Arnold算法置换加密如下:•保证|ad-bc|=1,如置换矩阵系数设为a=b=1,c=2,d=3,置换次数n=20,则他们被当作密钥key,用于解密。27modnxabxNycdyfunction[outImg]=arnold(inImg,key)%key=[Times,a,b,c,d];figure(1),imshow(inImg);title('Original');[iHiW]=size(inImg);outImg=uint8(zeros(iH,iW));tempImg=inImg;ifiH~=iWerror('Thecovermustbeasquare!');return;elseifsize(key,2)~=5;error('Thekeymustbe5numbers!');return;elseif(key(2)*key(5)-key(3)*key(4))~=1;error('TheArnoldMatrixisnotvalid!');return;endfori=1:key(1)%iTimeforu=1:iHforv=1:iWtemp=tempImg(u,v);ax=mod((key(2)*(u-1)+key(3)*(v-1)),iW)+1;ay=mod((key(4)*(u-1)+key(5)*(v-1)),iW)+1;outImg(ax,ay)=temp;endendtempImg=outImg;endoutImg=tempImg;figure(2),imshow(outImg);title('Permuted');imwrite(outImg,'Encrypted.bmp');28function[outImg]=iarnold(inImg,key)%key=[Times,a,b,c,d];ik=inv([key(2),key(3);key(4),key(5)]);key(2)=ik(1,1);key(3)=ik(1,2);key(4)=ik(2,1);key(5)=ik(2,2);figure(1),imshow(inImg);title(‘Encrypted');[iHiW]=size(inImg);outImg=uint8(zeros(iH,iW));tempImg=inImg;ifiH~=iWerror('Thecovermustbeasquare!');return;elseifsize(key,2)~=5;error('Thekeymustbe5numbers!');return;elseif(key(2)*key(5)-key(3)*key(4))~=1;error('TheArnoldMatrixisnotvalid!');return;endfori=1:key(1)%iTimeforu=1:iHforv=1:iWtemp=tempImg(