中文摘要 本文以MATLAB软件的图形用户界面(GUI)开发环境和图像处理工具箱为平台设计了数字图像增强处理系统,可实现灰度变换、图像增强和图像滤波等图像处理方法,应用这种手段的设计图像处理系统可以激发学习图像处理知识的兴趣,大大提高学习效率。
引言
在图像处理中,图像增强[1]是图像预处理中最常用的技术之一,图像增强技术对于提高图像质量起着重要的作用。图像增强作为基本的图像处理技术,其目的是对图像进行加工,以得到对具体应用来说视觉效果更“好”更“有用”的图像。由于具体应用的目的和要求不同,因而“好”和“有用”的含义也不同,因此图像处理技术是面向具体问题的。从根本上说,图像增强的标准时不存在的,例如,一种很适合增强X射线图像的方法,不一定是增强卫星云图的最好方法。
图像增强就是采用一系列技术去增强图像中用户感兴趣的信息,其目的主要有两个:一是改善图像的视觉效果,提高图像成分的清晰度;二是使图像变得更有利于计算机处理。目前,图像增强的方法虽有很多种,但它对各种不同的类别具有不同的增强效果,应具体问题具体分析,只有根据图像增强的具体目的选择相应的增强方法,才能达到期望的效果。
一、认识图形用户界面(GUI)
用MATLAB对图像进行处理[2]是当前科技领域的一个重要的课题,它采用的是用一组有序的灰度或彩色数据元素构成图像,数组的每一个元素对应于图像的一个像素值。这样MATLAB就可以利用其强大的矩阵计算功能实现对图像的数字处理。本次设计的系统主要是利用MATLAB所提供的图形用户界面(GUI),实现一个可视的面向对象的操作界面。
1.1设计原则
由于要求不同,设计出来的界面也就千差万别。但是,自从人们开始设计图形界面以来,界面设计的评判标准却没有太大的变化。简单说来,一个好的界面应遵从以下三个原则:简单性、一致性、习常性[3]。
(1)简单性
设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。那些可有可无的功能应尽量删去,以保持界面的清洁。
(2)一致性
所谓一致性包含两层意义:一是自己开发的界面风格要尽量一致;二是新设计的界面要与其他已有的界面风格不要截然相左。这是因为用户在初次使用新界面时,总是习惯于凭借经验进行试探。
(3)习常性
设计界面时,应尽量使用人们所熟悉的标志和符号。用户可能并不了解界面的具体含义及操作方法,但他也可以根据熟悉标志做出正确猜测,自学入门。
1.2窗口界面的实现
该系统界面的设计主要是利用MATLAB所提供的GUI(IGraphUser Interface)向导设计控件而完成的,该向导可以实现多种控件的设计,给用户提供了一种友好的交互方式,同时也给操作带来很多方便[4]。图形用户界面GUI是包含图形对象(如图形窗口、菜单、控件、文本)的用户界面,用户以某种方式选择或者击活这些对象会发生变化或引起动作。
(1)启动GUI的方法
启动图形用户界面的方法有很多种,例如可以利用工具栏上的命令按钮,也可以采用菜单和命令的方式。在本人设计的案例中采用的是命令方式:在命令窗口直接输入guide命令,弹出的窗口如图1-1所示:
图1-1 GUI启动界面
在弹出的guide quick ate new gui选项卡里面的start窗口中选择creBlank GUI选项,这样就可以进入图形用户界面来设计我们的系统静态界面。
图1-2 Guide界面
图1-2就是Guide提供的图形界面设计工具集[5],在此界面下就可以利用控件组件、文本菜单、排列工具等对系统的界面进行设计。
二、具体设计及实现步骤
2.1静态界面设计有五个标签,具体为文件、编辑、图像运算、噪声和频域滤波器。并且每个标签下有自己对应要实现的操作。界面的初始设计和初始运行界面如下图1-4、图1-5。
图1-4静态界面 图1-5运行界面
2.2编辑标签下的灰度处理操作。灰度模块提供反色、直方图均衡、阈值变换、线性变换功能。灰度模块针对数字图像的一些基本灰度操作进行了实现,可方便使用者对相应算法的理解和学习。本次设计中的灰度处理的主要代码[6]为:
if isrgb(x) im=rgb2gray(x); imshow(im);handles.img=im;
else msgbox('it is a gray picture','failure');end
运行结果如下图1-6所示。
图1-6灰度图
2.3图像运算标签包括图像叠加、图像减法、图像乘法、图像除法四项功能。图像叠加主要代码:i=(handles.img);n=imresize(i,[256 256]);j=imread('116.bmp');
v=imresize(j,[256 256]);k=imadd(n,v);
图像乘法主要代码:prompt={'insert1:'};defans={'8'};p=inputdlg(prompt,'insert',1,defans);p1=str2num(p{1});j=immultiply(x,p1);
在此只列举其中的叠加和乘法界面的运行结果图分别如下图1-7、图1-8。
图1-7图像叠加
图1-8图像乘法实现前后图片
2.4噪声标签下包括高斯噪声和泊松噪声两个处理操作。在此只例举高斯噪声的运行结果图如下图1-9.高斯噪声的主要实现代码是:prompt={'insert1:','insert2'};
defans={'0','0.02'};p=inputdlg(prompt,'insert',1,defans);
p1=str2num(p{1}); p2=str2num(p{2});
y=imnoise(handles.img,'gaussian',p1,p2); imshow(y);
图1-9 高斯噪声处理前后
2.5频域滤波标签下有巴特沃斯滤波器、指数滤波和自适应滤波三种处理操作。下图1-10显示的是指数滤波前后的效果图。指数滤波实现代码:y1=imnoise(x,'gaussian',0.01);
[M,N]=size(y1);F=fft2(y1);fftshift(F);Dcut=100;D0=250;D1=150;
for u=1:M
for v=1:N
D(u,v)=sqrt(u^2+v^2);
EXPOTH(u,v)=exp(log(1/sqrt(2))*(Dcut/D(u,v))^2);
end
end
figure,imshow(y1);EXPOTG=EXPOTH.*F;
EXPOTfiltered=ifft2(EXPOTG);imshow(EXPOTfiltered);
图1-10 指数滤波前后
基于MATLAB的图像处理系统是一个功能强大的系统,它还可以实现图像颜色空间的转换,能对一些单色图像进行各种调色,也可以调用MATLAB绘图工具箱进行各种简单图形的绘制。当然还有许多的功能有待于进一步完善。
参考文献:
[1](美)冈萨雷斯等.数字图像处理(第二版,英文版).电子工业出版社,2003
[2]飞思科技产品研发中心.MATLAB6.5辅助图像处理,电子工业出版社,2003
[3] 施晓红等.MATLAB精通GUI图形界面编成,北京大学出版社,2003
[4] 贺兴华等.MATLAB7.x图像处理人民邮电出版社,2006.
[5] 罗军辉等.MATLAB7.0在图像处理中的应用.机械工业出版社,2005.
[6]楼顺天等.MATLAB程序设计语言.西安电子科技大学出版社,2000