邹焕新,周石琳
(国防科技大学电子科学与工程学院,湖南长沙 410073)
“数字图像处理”课程内容多、概念抽象、实践性强,单纯通过理论教学很难使学生深入理解和掌握数字图像处理的基本概念、基本原理和基本方法,许多算法都需要借助软件进行编程和效果演示,因此,进行相应的实验教学是必不可少的。通过实验教学,不仅可以将枯燥的理论知识直观化、通俗化、趣味化,而且还可以培养学生的计算机编程能力及独立思考能力[1-5]。
市场上流行的图像处理商用软件(如PhotoShop等),与实际教学过程中的教学内容脱节太大。我们在VC++.NET[6]平台上构建了数字图像处理交互式的教学实验系统,该系统有助于学生通过实验直观地认识和掌握图像处理的原理和用途。
本实验教学系统是按照“数字图像处理”课程的具体要求并基于VC++.NET平台构建而成的。系统在构建过程中充分吸收了其它类似实验系统的优点,并结合课程实际教学情况进行了适当的扩展和完善,形成了以下几个特点。
(1)直接服务于“数字图像处理”课程的教学需要。教师在给学生讲授相关理论之后,就可以运行本实验系统,利用系统提供的相关的功能模块对输入的图像进行处理,得出处理结果,还可以对输入和输出的图像进行比较分析。
(2)实验系统与课程教材紧密结合,涵盖面广,基本上把教材上的相关内容和基本算法用软件模块实现。同时,为便于学生直观理解课程内容,在软件功能模块的实现过程中均采用原理性的算法[5]。
(3)采用人性化的开发理念,使操作具有较强的灵活性。根据当前实施的操作可以通过按键显示相应的原理,这些原理可以由教师在线或离线动态编辑,非常适合教师在课堂上演示实验。学生既可以比较处理前后的图像,又能看到相关的原理解释。
(4)实验教学系统基本上包括了图像处理的所有内容,而且引入了图像处理领域较新的研究成果,使学生能够了解图像处理的研究进展。
(5)实验系统对学生采取源代码完全开放的策略,这使得学生在课程学习、毕业设计或课程设计、攻读研究生或者是参加工作后均可以基于系统已经构建的框架,进一步研制功能更完善和性能更好的图像处理系统。
实验教学系统框架采用基于VC++.NET的多文档模块化程序设计。所组成的13个模块有如下功能。
(l)视觉特性模块—包括同时对比度效应、马赫带效应以及对数模型等;
(2)图像显示模块—包括 Bayer抖动显示、Floyd-Steinberg抖动显示等;
(3)图像点运算模块—包括图像反色、线性变换、阈值变换、窗口变换和灰度拉伸等;
(4)几何变换模块—包括图像的平移、图像的缩放、图像的镜像变换(垂直和水平)、图像的转置和图像的旋转等;
(5)正交变换模块—包括Fourier变换、离散余弦变换、沃尔什变换、哈达玛变换、霍特林变换和小波变换等;
(6)形态学变换模块—包括二值图像和灰度图像的膨胀运算、腐蚀运算、开运算和闭运算等;
(7)图像增强模块—包括对比度增强、图像平滑去噪、图像锐化、图像模板卷积及其过程演示、频域滤波、同态滤波和伪彩色增强等;
(8)图像恢复模块—包括简单逆滤波、可分离的最小二乘恢复、不可分离的最小二乘恢复、Wiener滤波和最大熵恢复等;
(9)图像编码模块—包括Huffman编码、香农-费诺编码、行程编码、算术编码、位平面编码、LZW编码和JPEG编码等;
(10)图像分割模块—包括基于阈值的分割方法、基于边缘的分割方法、基于区域的分割方法以及基于特定理论的分割方法等;
(11)图像配准模块—演示一种基于特征点匹配的图像配准方法;
(12)特征提取模块—演示图像中形状特征的提取方法,例如长、宽、面积、周长、圆度、偏心率、主轴方向和代数不变矩等几何特征参数的提取;
(13)图像识别模块—介绍模板匹配模型。
VC++.NET是一种面向对象的可视化编程工具,它提供的AppWizard应用程序向导能自动生成应用程序的标准框架,因此,实验教学系统基于MDI应用程序框架来构建。此外,根据VC++.NET面向对象技术中的对象封装特点,针对构建系统的具体需求,设计了多个与基本操作和功能模块对应的对象类,主要包括:CDib,CDither,CPixelOperation,CGeometricTransform,COrthogonalTransform,CMorphologicalTransform,CEnhance,CRestoration,CCode,CSegmentation,CRegistration,CFeatureExtraction 和CRecognition等。由于在VC++.NET的MFC中,以CBitmap类代表DDB(设备相关位图)图像,这方便了编程人员对DDB的使用。
然而,在通常情况下不会把DDB图像存储成文件,因此,使用更多的是DIB(设备无关位图)图像,但是MFC并没有提供专门的类来处理DIB文件,因此有必要设计可以重复使用的CDib类,专门用来处理DIB图像。在此,CDib类的设计参考了编程书籍和网络共享源代码,并对其进行了适当的修改和扩展。该类提供对DIB图像的基本操作,包括装载位图、获取位图相关信息、创建调色板和绘制位图等主要功能。而其它的对象类则直接封装了与各个功能模块对应的属性和方法。
在开放源代码的策略下,教师和学生等使用人员可在现有类的基础上,根据程序代码中详细注释的中文说明,方便地对它们进行继承和派生,以创建更加专门的、功能更加强大的符合实际需求的对象类。在此基础上进一步完善本实验教学系统的各项功能,而这也正是构建实验教学系统的初衷之一。
(1)图像正交变换
以图像的Fourier变换为例,分析幅度谱和相位谱的特点及其作用。图像Fourier变换的幅度谱和相位谱及仅利用幅度谱或相位谱的重建结果如图1所示。从图中可以看出,幅度谱和相位谱对于完整地重建一幅图像是必不可少的,仅利用幅度谱重建的图像是不可辨认的,而仅利用相位谱重建的图像则存在着严重的质量退化。
图1 图像幅度谱和相位谱及其重建结果
利用不同图像(Zebra图像和Cheetah图像,两幅图像尺寸大小相同)的幅度谱和相位谱以及交叉重建的结果如图2所示。
从图中可以看出,相位谱比幅度谱在图像的视觉效果中起着更加重要的作用,而幅度谱则通常更多地应用于图像的分析计算中。其中,图2(d)为用Zebra相位和Cheetah幅度交叉重建的图像,图2(h)为用Cheetah相位和Zebra进行幅度交叉后重建的图像。
(2)图像增强
以图像的直方图均衡为例。直方图是图像最基本的统计特征,它反映的是图像的灰度值的分布情况。直方图均衡的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果,是图像预处理中涉及最广泛的基本概念之一。图3示出了直方图均衡前后的图像及其直方图对比。从图可以看出,经过直方图均衡之后,原始图像的对比度加大了,直方图分布相对来说更加均匀,图像看起来更加清晰。
图2不同图像幅度谱和相位谱交叉重建
图3 直方图均衡图像及直方图对比
(3)图像配准
图像配准就是将不同时间、不同传感器(成像设备)或不同条件下(天候、照度、摄像位置和角度等)获取的两幅或多幅图像进行匹配、叠加的过程,广泛地应用于遥感数据分析、计算机视觉和图像处理等领域。通过特征点匹配,建立两幅图像之间的对应关系,确定相应几何变换参数,对两幅图像中的一幅进行几何变换以实现图像配准。图4示出了对两幅图像进行配准的结果。从图上可见,经过特征点匹配之后,待配准图像已经很好地校正到与参考图像相同的观察方向和分辨率上,并进行了适当的裁剪,从而为后续的变化检测与分析过程奠定了良好的基础。
图4 两幅图像的配准结果
本实验教学系统构建的最初目的是直接应用于本科生“数字图像处理”课程的教学,已在我校信息工程专业本科生的课程教学中采用,取得了如下较好的效果。
(1)学生普遍欢迎和接受本实验教学模式,能够在实际动手操作中理解和掌握相关知识和技能,学习积极性有很大提高;
(2)很好地激发了学生的创造性,学生能够通过查阅文献或创新思路来优化系统模块算法,而有些知识是课堂上没有讲过的;
(3)学生在实际编程改进和完善功能模块算法过程中,加深了对数字图像处理基本知识和概念的掌握;
(4)锻炼和增强了学生之间的协作和互助精神,学生在交流的同时加深了对知识的理解;
(5)实验教学系统的使用实际上也在一定程度上有助于提高学生的“数字图像处理”课程考核成绩,从统计来看,提高幅度约为10%。
此外,本实验系统不仅适用于本科生“数字图像处理”课程实验教学,还推广应用于我校研究生“数字图像分析”课程的实验教学中,并取得了预期的效果。为了使本系统在课程实验教学中发挥更大的作用,还需对其不断完善,如系统应该尽可能兼容各种格式的图像、对大图像的处理速度还需进一步优化、增加更多的原理性算法功能模块等,这是本实验系统后续需要进一步加强和完善的地方。
[1] 黎宁,徐晓波,牛征.Matlab平台下图像处理实验教学软件的实现[J].南京:电气电子教学学报,2001,23(5):55-56
[2] 张坤华,纪震.“数字图像处理”可视化教学体系探索[J].南京:电气电子教学学报,2007,29(1):113-115
[3] 盛利元,李宏言,孙克辉.“数字图像处理”实验教学探索与实验软件研究[J].南京:电气电子教学学报,2005,27(3):75-77
[4] 张秀荣,孟和达来.数字图像处理系统的开发与研究[J].长沙:湖南师范大学自然科学学报,2011,34(6):35-39
[5] 张秉仁,韦仁会,高游等.数字图像处理实验教学系统的开发及其应用[J].北京:实验技术与管理,2004,21(3):87-90
[6] 晓东,王胜海等.Visual C++.NET中文版实用培训教程[M].北京:清华大学出版社,2002