数字图像处理GUI设计及在教学中的应用*
2018-02-01陶志勇张沛泓
林 森,陶志勇,张沛泓,徐 维
(辽宁工程技术大学 电子与信息工程学院,辽宁 葫芦岛 125105)
数字图像处理技术最早出现在20世纪中期,伴随着计算机的发展,图像处理技术也慢慢地发展起来。最近几十年来,许多学者在图像处理方面进行了大量的研究工作并且取得了丰硕的成果,使数字图像处理技术迅猛发展,达到了新的高度,在各领域都得到了更加广泛的应用和关注[1]。
作为一门多学科交叉、理论性和实践性都很强的综合性课程,《数字图像处理》的教学目的是使学生系统掌握数字图像处理的基本概念、基本原理、实现方法和实用技术,了解数字图像处理基本应用和当前国内外的发展方向。要求学生通过该课程学习,具备解决图像处理应用问题的初步能力,为在计算机视觉、图像和视频通信、模式识别等领域从事研究与开发打下扎实的理论基础[2]。
使用Matlab对图像进行处理是当前领域的一个必然趋势,Matlab数组中的每一个元素对应图像中相应位置的每一个像素值,由于图像是由灰度或者是彩色数据构成的,那么对应像素值的元素就形成了一个与图像大小相同的矩阵,从而可利用Matlab自身强大的矩阵计算能力来实现对图像的数字处理[3]。
但是,传统的基于命令行或者脚本文件的编程方法教学直观性较差,学生理解起来比较困难,而Matlab恰恰为用户设计图形界面提供了一个高效、方便的集成环境,因此,本文主要以GUI为平台设计图像算法测试系统,有助于学生更好地理解相应的图像处理方法。
1 基于GUI的图像处理系统框架及设计步骤
本系统主要是利用Matlab提供的GUI平台,来设计一个面向对象的可视化操作界面,然后对这个界面中所列出的功能进行后台回调函数的编写,从而完成常用图像处理功能的设计,总体方案如图1所示。
系统设计的主要步骤:①明确系统所要实现的主要功能,应该具有哪些模块;②绘出基本的用户界面草图,并对其进行修改,最终确定一个方案;③根据最终确定的方案,利用Matlab GUI制作用户操作界面及其他菜单项目;④编写界面及其菜单里每个功能的回调程序,并且逐项进行功能检测。按照最终确定方案的要求和系统界面设计的布局,该系统应主要包括文件、编辑、图像旋转、图像滤波、边缘检测、亮度调节、特殊处理等几大模块。其具体的功能模块如图2所示。GUI系统界面如图3所示。
图1 总体方案
图2 系统功能框架图
2 数字图像处理方法及GUI系统教学应用
2.1 图像类型的转换
图像类型的相互转换有很多种,这里图像类型相互转换的实现主要是利用Matlab提供的图像类型转换函数。设B为转换后输出图像类型,A为输入图像类型,则一般有如下转换:①灰度-二值,利用dither函数来实现,这里用到的是抖动法,B=dither(A);②RGB-灰度,利用rgb2gray函数实现,B=rgb2gray(A);③灰度-索引,利用gray2ind函数实现,[B,map]=gray2ind(A,n),按照指定的灰度级数n和颜色图map进行转换;④二值-索引,转换的实现与灰度-索引的转换相同,使用同一个调用函数,在这里n表示的是指定颜色图map的颜色种类;⑤索引-RGB,利用ind2rgb函数实现,B=ind2rgb(A,map),将矩阵A和对应的颜色图map转换成RGB图像;⑥矩阵-灰度,利用mat2gray函数实现,B=mat2gray(A,[l,h]),按照指定的取值区域[l,h]将矩阵A转换为图像B.如果不指定取值区间,将默认区间为[0,1]。图4给出了一个彩色图像到灰度图像的转换示例。
图3 GUI系统界面
图4 灰度转换
图5 直方图均衡化
2.2 图像增强
图像增强是数字图像处理过程中经常采用的一种方法,目的是改善视觉效果或者便于人和机器对图像的理解和分析,根据图像的特点或存在的问题采取的简单改善方法或加强特征的措施就称为“图像增强”。目前,图像增强技术根据其处理的空间不同,可分为空域法和频域法两大类,前者根据图像所在的像素空间进行处理,后者是通过图像变换后在频域上间接进行。直方图均衡化是常用的图像空域增强技术,图5给出了直方图均衡化的示例,主要采用histeq()函数。
2.3 图像滤波
图像滤波,即在尽量保留图像细节特征的条件下对目标像的噪声(包括高斯噪声、椒盐噪声、随机噪声)进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。主要通过函数imnoise()来加入噪声,然后medfilt2做中值滤波。图6给出了具体示例。
图6 中值滤波
图7 边缘检测
2.4 图像的边缘检测
边缘检测技术在数字图像处理中显得非常重要,这是因为边缘是所要提取目标和背景的界线,只有把边缘提取出来,才能更好地把目标和背景分离开。同时,图像分割的基础正是边缘检测技术。在图像中,边界将内部特征属性不一致的区域划分开。边缘检测技术正是利用了边界的这一特点来提取边缘的。边缘检测的本质就是检测图像特征中灰度、颜色和纹理发生变化的位置。为了提取区域边界,可以对图像直接运用一阶微分算子或二阶微分算子,然后根据各像素点处的微分幅值及其他附加条件判定其是否为边界点。函数导数反映图像灰度变化的程度,一阶导数的局部极大值和二阶导数的过零点都是图像灰度变化极大的地方,这里主要利用了edge()函数。图7给出了边缘检测的示例。
3 结论
近年来,随着图像应用领域的拓宽,图像处理技术更是取得了前所未有的瞩目成果,特别是深度学习、人工智能等技术的完善和发展,都展示了计算机视觉及数字图像处理技术应用的广阔前景。Matlab软件功能强大,是目前图像处理教学和科研中应用最为广泛的软件,但传统的基于Matlab命令行或者脚本文件的图像处理直观性较差,教学效果有限,且功能扩展较为烦琐。本文基于Matlab中的GUI功能设计了图像处理辅助教学系统,可任意添加和删除相关功能模块,界面简洁,操作简单,包括了图像处理中基本的处理技术,能够更加直观地展示图像处理的效果,激发了学生的学习兴趣,调动了学生的积极性,提高了学习效率,同时也加深了 学生对理论的理解,从而使教学效果得到了显著增强,具有 非常积极的意义。
[1]肖志勇,刘建军,宋晓宁,等.《数字图像处理》课程教学改革探索研究[J].教育教学论坛,2017(3):86-87.
[2]莫建文,张彤,袁华,等.深度学习在图像处理技术课程教学实践中的应用探讨[J].教育教学论坛,2016(9):115-116.
[3]谢凤英.数字图像处理及应用[M].北京:电子工业出版社,2016.