随着计算机与信息技术的高速发展,数字图像处理技术得到快速的发展,目前已成为计算机科学、医学、生物学、工程学、信息科学等领域各学科之间学习和研究的对象。但是数字图像处理这门学科需要编写大量的代码,才能显示数字图像处理的效果,例如图像增强,图像复原等。随着 GUI(图形用户界面)的广泛流行,构想设计一个交互式界面,通过窗口、菜单方便地进行操作,展示 MATLAB 平台下的开发技术。一个好的界面不仅有利于用户快速掌握程序的操作流程,有效地使用程序,也有利于开发者在科研实践和工程实践中的广泛应用,尤其是在图形处理技术、人工智能技术等方面。本系统设计的 GUI 实现了对图像处理实验的演示,主要功能有:图像取反,灰度处理,直方图均衡化和直方图规定化,裁剪,基本镜像和旋转,缩放,亮度、对比度调节,几种噪声的添加与滤除,边缘信息检测等。
1.GUI 平台介绍
图形用户界面(Graphical User Interfaces, GUI)是MATLAB 软件中提供人机交互的工具和方法,包含窗口、光标、按键、菜单、说明文字等对象构成的一个用户界面。如果读者想向别人提供应用程序,想进行某种技术、方法、效果的演示,想制作一个可供反复使用且操作简便的专用工具,那么 MATLAB 软件中的 GUI 为程序开发者打开了一扇窗口,不但可以提供图文并茂的交互界面,简化程序编写过程,并且提高开发者的工作效率。GUI 主要由七部分组成:版面设计器、属性编辑器、菜单编辑器、调整工具、对象浏览器、Tab 顺序编辑器、M 文件编辑器。
实现一个 GUI 的过程包括两个基本任务:一个是 GUI的组件布局,另一个是 GUI 组件变成。在 MATLAB 中,Guide(Graphical User Interface Development Environment,图形用户界面开发环境)是一个组件布局工具集,能够生成用户所需的组件资源并保存在一个 FIG 文件中;其次,Guide还可以生成一个包含 GUI 初始化和发布控制代码的 M 文件,该文件为回调函数(用户在图形界面中激活某一控件时要执行的函数)提供了一个框架.FIG 文件,扩展名为。Fig,它包含对 GUI 和 GUI 组件的完整描述;M 文件,扩展名为。M,它包含控制 GUI 的代码和组件的回调事件代码。
这两个文件与 GUI 显示和编程任务相对应。在版面设计器中创建 GUI 时,内容保存在 FIG 文件中;对 GUI 编程时,内容保存在 M 文件中.图 1 是 GUI 程序运行的主要流程图。只有清楚图形用户界面的运行流程,才能对整个程序编写运筹帷幄,有助于高效编写程序代码。【图1】
2.GUI 平台的设计
该系统是用于演示数字图像处理课程中具体的处理效果,例如图像增强、图像变换及图像还原等。它以窗口的形式提供给用户一个可视化的操控平台,从功能上主要分为两个模块,即用户管理界面,效果参数设置界面。完成后的效果图如图 2 所示。【图2】
2.1 用户管理界面模块
用户管理界面包括“打开”、“保存”、“原图”、“撤销”、“退出”5 个按钮。
(1)打开文件的代码主要用 uigetfile()函数,uigetfile()函数可以设置文件类型,设置文件路径名,返回的文件名等。这部分主要通过[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*tif';'*.*'},'openfile‘)选择相应路径打开图像;通过file=[pathname,filename]; x=imread(file);读取选中的图像;最后,通过 imshow(x);在显示区域上显示图像。
(2)保存文件的代码主要用 uiputfile()函数,可以获取保存数据名称,并实现任意路径保存。与打开文件类似,通过对话框的形式来保存图像数据。本段程序主要通过使用[filename,pathname]=uiputfile( {'*.jpg';'*bmp';'*.tif';'*.*'},'save','untitled.jpg' ) ; 语 句 中 的uiputfile 函数选择文件名和路径,并用 i=getimage(gca);取出坐标 2 变换后的图像数据保存到变量 i,最后用 imwrite函数,把数据 i 存到指定的目录下。
(3)撤销按钮的代码通过设置一个全局变量 T,通过T=getimage 把上一次操作后的图像信息赋予全局变量 T.点击“撤销”键时,通过 imshow(T);将图像返回到上一步操作后的状态。达到撤销的效果。
(4)原图的代码实现通过设置一个全局变量 S,保存原始图像路径,在点击“还原”键时,重新读取该全局变量。并通过 f=imshow(y);,将还原的图像显示,达到还原的效果。
(5)退出的代码实现通过通过 clc 清屏,用 close 关闭窗口,用 clear 清除变量,实现退出功能.
2.2 效果参数设置界面模块
该模块主要包括图像灰度、直方图处理,图像几何变换,添加噪声及滤波和图像形态学处理部分。主要实现图像取反、灰度处理、直方图均衡化和直方图规定化、图像裁剪、水平和垂直镜像、图像旋转、缩放和亮度调节等功能。
(1)图像取反,对图像求反是将原图灰度值翻转,例如对灰度图像取反,则直观效果就是使黑变白,使白变黑。主要程序是通过 f=imcomplement(*.img)函数实现图像取反。Imshow(f);显示结果。
(2)灰度处理,彩色图像转化成为灰度图像的过程称为图像灰度化处理。主要程序是通过 x=rgb2gray(*.img)函数实现,语句中的 rgb2gray(*.img)函数,将图像转化为灰度图像,通过 imshow(x)显示结果,实现灰度图像的转化。
(3)直方图均衡化,直方图均衡化处理是把图像对比度加大,增大图像反差,使图像许多细节变得清晰。直方图均衡化是图像增强中主要的一种方法。直方图均衡化通过histeq(x)函数实现,由于此函数只能对灰度图像进行直方图均衡,因此应先将图像转化为灰度图像。
(4)图像几何变换包括镜像、缩放、旋转等效果。图像镜像包含水平镜像和垂直镜像。图像缩放有三种方法:最近邻插值算法,双线性插值法和双三次插值法。图像缩放的函数是 imresize( )。图像旋转采用 imrotate( )函数对图像进行旋转。
(5)添加噪声,在数字图像处理中,常用的噪声类型有:椒盐噪声、高斯噪声。椒盐噪声椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声.添加椒盐噪声通过 f=imnoise(*.img,'salt & pepper',p1);实现。P1 参数通过输入对话框的形式得到。参数值取 0 至 1 范围内任意数,输入值越大,噪声越明显。高斯噪声,高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声.添加高斯噪声通过 f=imnois(e*.img,'gaussian',p1,p2);实现。
(6)图像滤波,图像滤波主要包括中值滤波、均值滤波、逆谐滤波等,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是数字图像处理中的重要操作。中值滤波,中值(median)滤波器用模板所覆盖的区域中像素的中间值作为滤波结果,中值滤波的主要功能就是让与周围像素灰度值的差比较大的像素改取与周围像素值接近的值,从而可以消除孤立的噪声点。可见,中值滤波对消除脉冲噪声有良好效果。中值滤波通过 k=medfilt2(*.img);实现。均值滤波,主要采用 f=imfilter(*,fspecial('average',p))函数实现,p 是采用的模版数。
(7)图像形态学处理,包括图像腐蚀、膨胀、锐化、退化、边缘检测等。边缘检测是图形处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点.边缘检测通过 f=edge(*.img,'canny’);语句中的 edge函数进行边缘检测,此功能可对灰度图像进行处理,在处理前需将图像转化为灰度图像“canny”是指边缘检测的类型。
3.结束语
本系统把数字图像处理课程主要的实验内容进行了程序编写,最终完成了人机交互界面 GUI 的设计。在使用方面,可以直接把该系统应用于数字图像处理课程的辅助性教学中,使得课程的讲授和分析过程更直观可视化,更易控制和更容易接受。
[参考文献]
[1] 陈垚光,毛涛涛,王玲。 精通 MATLAB GUI 设计[M]. 北京:电子工业出版社,2013.
[2] 技术蛀虫[EB/OL].
[3] 马晓路,刘倩,胡开云,等。 MATLAB 图像处理从入门到精通[M]. 北京:中国铁道出版社,2013.
[4] 苏岫,赵冬至,黄凤荣,等。 基于高空间分辨率的红树林卫星遥感监测技术进展[J]. 热带海洋学报,2011,(3)。
[5] 谭永杰,曹彦,王永亮 图像噪声类型识别研究[J]. 周口师范学院学报,2013,(5)。
[6] 卢萌,赵合计。 一种改进的小波自适应边缘检测算法[J]. 计算机应用研究,2011,(1)。