伪彩色增强算法应用
- 格式:doc
- 大小:641.50 KB
- 文档页数:15
数字图像处理课程设计学号:学生所在学院:学生姓名:任课教师:教师所在学院:2012年6月2011级伪彩色增强算法的应用南昌航空大学控制工程专业摘要:伪彩色增强是把黑白图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,得到一幅彩色图像的技术。
使原图像细节更易辨认,目标更容易识别。
本文应用密度分割法和空间域灰度级一彩色变换法对灰度图像进行处理。
人眼一般能够区分的灰度级只有二十几个,而对不同亮度和色调的彩色图像分辨能力却可达到灰度分辨能力的百倍以上。
利用这个特性人们就可以把人眼不敏感的灰度信号映射为人眼灵敏的彩色信号,从而增强了人对图像中细微变化的分辨力。
【关键词】伪彩色;灰度分割;图像增强;彩色转换;1.伪彩色处理的原理伪彩色处理技术,处理的对象虽然是灰度图像,但生成的结果却是彩色图像,众所周知,人的视觉系统对色彩非常敏感,人眼一般能区分的灰度级只有二十多个,但能区分不同亮度、色度和饱和度的几千种颜色人的彩色。
根据人的这一特点,可将彩色用于增强中,以提高图像的可鉴别性。
因此,如果能将一幅灰度图像变成彩色图像,就可以达到增强图像的视觉效果。
常用的伪彩色处理技术的实现方法有多种,如灰度分割法、灰度级一彩色变换法等等。
密度分割法是把灰度图像的灰度级从黑到白分成N个区间,给每个区间指定一种彩色,这样便可以把一幅灰度图像变成一幅伪彩色图像。
该方法比较简单、直观。
缺点是变换出的彩色数目有限。
空间域灰度级-彩色变换法,与密度分割不同,空间域灰度级-彩色变换是一种更为常用,更为有效的伪彩色增强方法。
其根据色学原理,将原图像f(x,y)的灰度范围分段,经过红、绿、蓝三种不同变换,变成三基色分量R(x,y)、G(x,y)、B(x,y),然后用它们分别去控制彩色显示器的红、绿、蓝电子枪,便可以在彩色显示器的屏幕上合成一幅彩色图像。
3个变换是独立的,彩色的含量由变换函数的形式决定。
2.图像处理过程本设计采用matlab实现,将图1进行伪彩色增强,得到增强后的彩色图像。
图1设计原图2.1密度分割发原图像是256级灰度图像,将256级灰度对应到8种颜色,灰度级分布与颜色对应如表1所示。
灰度级0~31 32~63 64~95 96~127 128~154 155~191 192~233 234~255 颜色黑色蓝色绿色青色红色品红色黄色白色表1:灰度级与颜色对照表各个颜色的RGB组合如表2所示。
颜色红色成分绿色成分蓝色成分黑色0 0 0蓝色0 0 255绿色0 255 0青色0 255 255红色255 0 0品红色255 0 255黄色255 255 0白色255 255 255表2:RGB颜色组合表密度分割法可以采用两种方法进行处理,方法一调用find函数,方法二利用for函数进行点运算处理。
根据表1和表2数据,可以将图像处理过程分为三步完成,即蓝色成分处理,绿色成分处理,红色成分处理。
2.1.1密度分割法(方法一)第一步:imread函数读取图像,figure函数进行绘图,subplot函数建立确定绘图位置,imshow函数显示函数。
将图像转换为double类型从而进行像素值的运算。
第二步:zeros(size(I))函数建立跟原图像大小相同的全零矩阵,ones(size(I))*255建立跟原图像大小相同且数据都是255的矩阵。
调用find函数,确定符合find函数内部约束条件的像素点的坐标位置,并记录在pos中,在矩阵d中取出坐标点的数据给矩阵c对应坐标位置数据赋值,将矩阵c的全部数据赋值给矩阵f的蓝色分量,从而完成彩色图像的蓝色成分处理。
红色成分处理和绿色成分处理跟蓝色成分处理过程相同,只是find 函数的约束条件根据处理的彩色成分不同而发生变化。
蓝色成分处理程序如下所示。
处理结果如图2所示。
图2密度分割法一处理结果clear all;I=imread('D:CSimage1.bmp');figure,subplot(1,2,1);imshow(I);title('原图像');I=double(I);c=zeros(size(I));d=ones(size(I))*255;pos=find(((I>=32)&(I<63))|((I>=96)&(I<127))|((I>=154)&(I<191))|((I>=2 34)&(I<=255)));c(pos)=d(pos);f(:,:,3)=c;2.1.2密度分割法(方法二)第一步的处理过程跟方法一完全相同,这里不再重复。
第二步:利用size函数得到图像的空间分辨率大小,给M,N赋值,利用for循环遍历图像的每一个像素,如果图像符合if语句的约束条件,则对矩阵b进行赋值,从而得到矩阵b的蓝色分量,完成彩色图像的蓝色成分处理。
红色成分和绿色成分的处理过程跟蓝色成分处理过程相同,只是if 语句的约束条件改变。
蓝色成分处理过程中第二步程序如下所示。
处理结果如图3所示。
[M,N]=size(I);for i=1:Mfor j=1:Nif((I(i,j)>=32)&&(I(i,j)<63))||((I(i,j)>=96)&&(I(i,j)<127))||((I(i,j)>=154)&&(I(i,j)<191))||((I(i,j)>=234)&& (I(i,j)<=255))b(i,j,3)=255;endendend图3密度分割法一处理结果2.2空间域灰度级-彩色变换法第一步对图像的读取过程跟密度分割法相同,不再叙述。
第二步设计红色,绿色,蓝色的变换函数,如图4所示。
图4 红、绿、蓝变换函数第三步:利用size函数获取图像的空间分辨率,赋值给M和N,原图像为256灰度级,故设L为256,利用for循环遍历图像的每一个像素,利用if语句在每一个像素进行判断,图像的像素值是在0~L/4,L/4~L/2,L/2~3L/4,3L/4~L四个区间中的那一个区间,根据第二步设计的函数,对每个像素将要变换到的彩色图像的红色分量,绿色分量,蓝色分量赋值,即对函数R(x,y),G(x,y),B(x,y)进行赋值。
第四步:利用for循环,把第三步记录的红色分量,绿色分量,蓝色分量赋值给矩阵C(i,j,1), C(i,j,2) ,C(i,j,3),用imshow函数将矩阵输出为图像,就可以得到彩色图像,如图5所示。
图5 空间域灰度级-彩色变换法第二步第三步程序如下所示:[M,N]=size(I);L=256;for i=1:Mfor j=1:Nif I(i,j)<=L/4;R(i,j)=0;G(i,j)=4*I(i,j);B(i,j)=L;elseif I(i,j)<=L/2;R(i,j)=0;G(i,j)=L;B(i,j)=-4*I(i,j)+2*L;elseif I(i,j)<=3*L/4R(i,j)=4*I(i,j)-2*L; G(i,j)=L;B(i,j)=0;elseR(i,j)=L;G(i,j)=-4*I(i,j)+4*L; B(i,j)=0;endendendendendfor i=1:Mfor j=1:NC(i,j,1)=R(i,j); C(i,j,2)=G(i,j); C(i,j,3)=B(i,j); endend3.总结本文实现了对灰度图像的处理,最终生成了彩色图像,采用了密度分割法和空间域灰度级-彩色变换法两种算法。
密度分割法简单、直接,使图像富有层次感,缺点是使变换出来的彩色数目有限,因此密度分割法仅适用于对图像包含色彩数目要求不高的场合。
空间域灰度级-彩色变换法则是通过一个分段线性函数实现从灰度到彩色的变换,每个像素只经过一个变换对应到某一种颜色。
与密度分割不同,空间域灰度级-彩色变换则更为常用,色彩数目的含量由变换函数的形状而定,因此可以根据需要定义不同的变换函数,从而得到色彩丰富的彩色图像。
通过本次设计学会了怎样对灰度图像进行伪彩色增强,并且对彩色图像的数据构成有了更深入的了解,加深了对数字图像处理的认识,为以后的深入学习提供了宝贵的经验。
4.附录clear all;I=imread('D:CSimage1.bmp');figure,subplot(1,2,1);imshow(I);title('原图');I=double(I);c=zeros(size(I));d=ones(size(I))*255;pos=find(((I>=32)&(I<63))|((I>=96)&(I<127))|((I>=154)&(I<191))|((I>=234)&(I <=255)));c(pos)=d(pos);f(:,:,3)=c;c=zeros(size(I));d=ones(size(I))*255;pos=find(((I>=64)&(I<95))|((I>=96)&(I<127))|((I>=192)&(I<233))|((I>=234)&(I <=255)));c(pos)=d(pos);f(:,:,2)=c;c=zeros(size(I));d=ones(size(I))*255;pos=find(((I>=128)&(I<154))|((I>=154)&(I<191))|((I>=192)&(I<233))|((I>=234) &(I<=255)));c(pos)=d(pos);f(:,:,1)=c;f=uint8(f);subplot(1,2,2);imshow(f);clear all;I=imread('D:CSimage1.bmp');figure,subplot(1,2,1);imshow(I);title('原图');[M,N]=size(I);I=double(I);for i=1:Mfor j=1:Nif((I(i,j)>=32)&&(I(i,j)<63))||((I(i,j)>=96)&&(I(i,j)<127))||((I(i,j)>=154)&& (I(i,j)<191))||((I(i,j)>=234)&&(I(i,j)<=255))b(i,j,3)=255;endendendfor i=1:Mfor j=1:Nif ((I(i,j)>=64)&&(I(i,j)<127))||((I(i,j)>=192)&&(I(i,j)<255)) b(i,j,2)=255;endendendfor i=1:Mfor j=1:Nif (I(i,j)>=128)&&(I(i,j)<255)b(i,j,1)=255;endendendb=uint8(b);subplot(1,2,2);imshow(b);clear all;I=imread('D:CSimage1.bmp');figure,subplot(1,2,1);imshow(I);title('原图');I=double(I);[M,N]=size(I);L=256;for i=1:Mfor j=1:Nif I(i,j)<=L/4;R(i,j)=0;G(i,j)=4*I(i,j);B(i,j)=L;elseif I(i,j)<=L/2;R(i,j)=0;G(i,j)=L;B(i,j)=-4*I(i,j)+2*L;elseif I(i,j)<=3*L/4R(i,j)=4*I(i,j)-2*L;G(i,j)=L;B(i,j)=0;elseR(i,j)=L;G(i,j)=-4*I(i,j)+4*L;B(i,j)=0;endendendendendfor i=1:Mfor j=1:NC(i,j,1)=R(i,j);C(i,j,2)=G(i,j);C(i,j,3)=B(i,j);endendC=uint8(C);subplot(1,2,2);imshow(C);title('彩色变换');参考文献[1]《数字图像处理基础》,阮秋琦.中国铁道出版社.1988. [2]《数字图像处理》,冈萨雷斯,电子工业出版社.2003.[3] 《MATLAB数字图像处理》,张德丰,机械工业出版社.2012. [4]《MATLAB图像处理与应用》,高成等,国防工业出版社.2007. [5]《数字图像处理》,陈天华,清华大学出版社.2007.。