图像伪彩色处理近几年来,随着多媒体技术和因特网的迅速发展和普及,数字图像处理技术受到了前所未有的广泛重视,出现了许多新的应用领域。最显著的是数字图像处理技术已经从工业领域、实验室走入了商业领域及办公室,甚至走入了人们的日常生活。由于彩色图像提供了比灰度图像更为丰富的信息,因此彩色图像处理正受到人们越来越多的关注。伪彩色处理是根据特定的准则对灰度值赋以彩色的处理。由于人眼对彩色的分辨率远高于对灰度差的分辨率,所以这种技术可用来识别灰度差较小的像素。这是一种视觉效果明显而技术又不是很复杂的图像增强技术。灰度图像中,如果相邻像素点的灰度相差大,人眼将无法从图像中提取相应的信息,因为人眼分辨灰度的能力很差,一般只有几十个数量级,但是人眼对彩色信号的分辨率却很强,这样将黑白图像转换为彩色图像后,人眼可以提取更多的信息量。同时MATLAB技术对于我们实现数字图像处理是一种非常有效的实用工具。1.引言进入21世纪以来,随着微电子技术、计算机技术、现代通信技术的飞速发展,人类社会正健步迈入信息化时代。在人类所接收到的全部信息中,70%以上的通过视觉得到的。因此对数字图像进行有效地处理变换十分重要,而且彩色图像占很大的比例,所以,对彩色图像的处理显得尤为重要。其中伪彩色处理技术就是一项很重要的图像处理技术。伪彩色处理是指将黑白图像转化为彩色图像,或者是将单色图像变换成给定彩色分布的图像。由于人眼对彩色的分辨率远高于对灰度差的分辨率,所以这种技术可用来识别灰度差较小的像素。这是一种视觉效果明显而技术又不是很复杂的图像增强技术。灰度图像中,如果相邻像素点的灰度相差大,人眼将无法从图像中提取相应的信息,因为人眼分辨灰度的能力很差,一般只有几十个数量级,但是人眼对彩色信号的分辨率却很强,这样将黑白图像转换为彩色图像后,人眼就可以提高对图像细节的辨别力,提取更多的信息量。因此,伪彩色处理的主要目的是为了提高人眼对图像的细节的分辨能力,以达到图像增强的目的。伪彩色图像处理技术已经被广泛应用于遥感和医学图像处理中,适用于航摄、遥感图片和云图判读、X光片等方面。基本原理是将黑白图像或者单色图像的各个灰度级匹配到彩色空间中的一点,从而使单色图像映射成彩色图像。黑白图像中不同的灰度级赋予不同的彩色。2.算法设f(x,y)为一副黑白图像,R(x,y),G(x,y),B(x,y)为f(x,y)映射到RGB空间的三个颜色分量,则伪彩色处理可以表示为:给定不同的映射函数就能将灰度图像转化为不同的伪彩色图像。需要注意的是,伪彩色虽然能将黑白灰度转化为彩色,但这种彩色并不是真正表现图像的原始颜色,而仅仅是一种便于识别的伪彩色。在实际应用中,通常是为了提高图像分辨率而进行伪彩色处理,所以应采用分辨效果最好的映射函数。伪彩色处理技术的实现方法有多种,如灰度分层法、灰度级-彩色变换法、频域滤波法等等。A.密度分层法①理论基础及公式推导密度分层法是把灰度图像的灰度级从0(黑)到M0(白)分成N个区间Ii(i=1,2,…,N),给每个区间Ii指定一种彩色Ci,这样,便可以把一幅灰度图像变成一幅伪彩色图像。该方法比较简单、直观。缺点是变换出的彩色数目有限。灰度是描述灰度图像内容的最直接的视觉特征,它指黑白图像中点的颜色深度,范围一般从0到255白色为255,黑色为0,中间的数字从小到大表示由黑到百的过渡色,即可以表示不同的灰度等级。灰度切分示意图如下图:设原始黑白图像的灰度范围为:0≤f(x,y)≤L用k+1灰度等级把该灰度范围分为k段:I0,I1,...,IkI0=0(黑),Ik=L(白)映射每一段灰度成一种颜色,映射关系为:ɡ(x,y)=C1(I(i-1)≤f(x,y)≤I(i);i=1,2...k)这里ɡ(x,y)为输出的伪彩色图像;Ci为灰度在[I(i-1),I(i)]中时所映射成的彩色。经过这种映射处理后,原始黑白图像f(x,y)就变成了伪彩色图像ɡ(x,y)。若原始图像f(x,y)就编程了伪彩色图像ɡ(x,y)。若原始图像f(x,y)的灰度分布遍及上述k个灰度段,则伪彩色图像ɡ(x,y)就具有k中彩色。②仿真结果及分析:灰度图像:密度分层图像:分层级数为8:分层级数为16:分层级数为64:③结果分析:优点:密度分层伪彩色图像简单易行、直观,仅用硬件就可以实现。缺点:所得伪彩色图像彩色生硬,彩色数目有限,且量化噪声大(即分割误差)。密度分层级数越大,图像分辨率越高,量化噪声越小。为了减少量化噪声,就必须增加分割级数。这不但导致设备复杂,而且彩色漂移现象严重。主要用于传感、医学图像处理中。B灰度级—彩色变换法①理论基础及公式推导灰度级-彩色变换伪色彩处理技术可以将灰度图像变为具有多种颜色渐变的连续彩色图像。该方法先将灰度图像送入具有不同变换特性的红、绿、蓝三个变换器,然后再将三个变换器的不同输出分别送到彩色显像管的红、绿、蓝枪,再合成某种颜色。同一灰度由三个变换器对其实施不同变换,使三个变换器输出不同,从而不同大小灰度级可以合成不同颜色。灰度级-彩色变换伪色彩处理过程见下图。通过这种方法变换后的图像视觉效果好。一组典型的灰度级-彩色变换的传递函数如下图所示。其中图(a)、(b)、(c)分别表示红色、绿色、蓝色的传递函数,图(d)是三种彩色传递函数组合在一起的情况。由图(a)可见,凡灰度级小于L/2的像素将被转变为尽可能的暗红色,而灰度级位于L/2到3L/4之间的像素则取红色从暗到亮的线性变换。凡灰度级大于3L/4的像素均被转变成最亮的红色。其他的颜色以此类推。②仿真结果及分析③结果分析:从仿真图中可以看出,图像从灰度图像转换成了彩色图像,密度分层法所得伪彩色图像彩色生硬,且量化噪声大(即分割误差),而灰度级-彩色变换法所得图像是多种颜色渐变的连续彩色图像,更加具有层次感,变换后的图像视觉效果更好。伪彩色虽然能将黑白灰度转化为彩色,但这种彩色并不是真正表现图像的原始颜色,而仅仅是一种便于识别的伪彩色。C.频域滤波法①理论基础及公式推导频率滤波法首先把灰度图像经傅立叶变换到频率域,在频率域内用三个不同传递特性的滤波器分离成三个独立分量;然后对它们进行逆傅立叶变换,便得到三幅代表不同频率分量的单色图像,接着对这三幅图像作进一步的处理(如直方图均衡化)最后将它们作为三基色分量分别加到彩色显示器的红、绿、蓝显示通道,得到一幅彩色图像。频域滤波法输出图像的伪彩色与原图像的灰度级无关,而是取决于灰度图像中不同的频率成分。如果为了突出图像中高频成分(即图像的细节)而将其变为蓝色,则只需要将蓝通道滤波器设计成高通滤波器。如果要抑制图像中某种频率成分,那么可以设计一个带阻滤波器来达到目的。②仿真结果及分析③结果分析:从仿真图中可以看出,图像从灰度图像转换成了彩色图像。频域滤波法得到的伪彩色图像和灰度级-彩色变换法所得的伪彩色图像不一样,两种方法各有千秋。进一步说明,伪彩色虽然能将黑白灰度转化为彩色,但这种彩色并不是真正表现图像的原始颜色,而仅仅是一种便于识别的伪彩色。4.结论伪彩色处理不改变像素的几何位置,而仅仅改变其显示的颜色。它是一种很实用的图像增强技术,主要用于提高人眼对图像的分辨能力。这种处理可以用计算机来完成,也可以用专用硬件设备来实现。伪彩色图像处理技术已经被广泛应用于遥感和医学图像处理中,例如,它适用于航摄、遥感图片和云图判读、X光片等方面。通过此次课程设计,使我更加扎实的掌握了有关图像处理方面的知识,在设计过程中虽然遇到了一些问题,但经过反复思考和与同学交流,找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。附录:MATLAB仿真代码①密度分层法仿真代码I=imread('郁金香.jpg');I=rgb2gray(I)imshow(I);%显示灰度图像G2C=grayslice(I,8);%密度分层figure;imshow(G2C,hot(8));%显示伪彩色图像②灰度级—彩色变换法I=imread('郁金香.jpg');subplot(221),imshow(I);title('原图像');I=rgb2gray(I);subplot(222),imshow(I);title('灰度图像');I=double(I);[M,N]=size(I);L=256;fori=1:Mforj=1:NifI(i,j)L/4R(i,j)=0;G(i,j)=4*I(i,j);B(i,j)=L;elseifI(i,j)=L/2;R(i,j)=0;G(i,j)=L;B(i,j)=-4*I(i,j)+2*L;elseifI(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;endendendendendfori=1:Mforj=1:NG2C(i,j,1)=R(i,j);G2C(i,j,2)=G(i,j);G2C(i,j,3)=B(i,j);endendG2C=G2C/256;subplot(223),imshow(G2C);title('伪彩色图像');③频域滤波法i=imread('郁金香.jpg')subplot(221),imshow(i);title('原图像');i=rgb2gray(i);subplot(222),imshow(i);title('灰度图像');[M,N]=size(i);F=fft2(i);fftshift(F);Rcut=100;Gcut=200;Bcenter=150;Bwidth=100;Bu0=10;Bv0=10;foru=1:Mforv=1:ND(u,v)=sqrt(u^2+v^2);RH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Rcut)^2);GH(u,v)=1/(1+(sqrt(2)-1)*(Gcut/D(u,v))^2);BD(u,v)=sqrt((u-Bu0)^2+(v-Bv0)^2);BH(u,v)=1-1/(1+BD(u,v)*Bwidth/((BD(u,v))^2-(Bcenter)^2)^2);endendR=RH.*F;Rcolor=ifft2(R);G=GH.*F;Gcolor=ifft2(G);B=BH.*F;Bcolor=ifft2(B);Rcolor=real(Rcolor)/256;Gcolor=real(Gcolor)/256;Bcolor=real(Bcolor)/256;fori=1:Mforj=1:NG2C(i,j,1)=Rcolor(i,j);G2C(i,j,2)=Gcolor(i,j);G2C(i,j,3)=Bcolor(i,j);endendG2C=abs(G2C);subplot(223),imshow(G2C);title('伪彩色图像');