林 忠
南京工程学院计算机工程学院 江苏南京 211167
Photoshop和OpenCV的数字图像处理教学应用
林 忠
南京工程学院计算机工程学院 江苏南京 211167
针对计算机专业数字图像处理课程演示和实验平台的教学实际情况,详尽分析了PhotoShop和OpenCV软件在数字图像处理课程教学中应用的合理性和优势,提出将PhotoShop和OpenCV软件作为数字图像处理课程教学演示和实验的工具。既可以用其在理论教学环节展示各种图像处理算法的效果,又可以在实验教学环节中通过基于OpenCV的编程让学生掌握图像处理的实现方法,更深入了解图像处理的思想方法。
数字图像处理;PhotoShop;OpenCV
随着计算机技术的发展,计算机视觉相关技术越来越广泛地应用于各行各业中,从照片编辑美化到各类计算机视觉系统,从图像获取成像到各类图像分析系统,计算机视觉技术已无处不在。作为计算机视觉相关方向的基础课程,数字图像处理课程主要讲授像素及图像处理相关的基本概念、原理和经典算法,可以为进一步深入学习计算机视觉方面的课程或者研究打下坚实的基础。我国高校设置数字图像处理课程是从20世纪80年代开始的,目前这门课程已经是理工科院校普遍开设的一门课程[1]。
计算机专业作为目前信息技术方面的核心专业,是目前国内高校数字图像处理课程开设较普遍的专业。针对计算机专业偏重于原理和编程实现的专业特点,选用了PhotoShop作为理论教学的辅助软件,选用了OpenCV作为实验教学的工具软件,总结了多年以这两款软件为辅助工具讲授针对计算机专业的数字图像处理课程的经验。
数字图像处理课程中涉及大量经典图像处理算法。在介绍这些算法时,一般会用文字描述、公式描述和程序实现描述等结合讲解相关的算法原理和过程。公式描述虽然精简、形式优美,但是毕竟过于抽象,对学生的数学要求较高,容易使学生产生课程难度过大的印象;文字描述虽然通俗易懂,但是难以描述复杂流程及细节,准确理解描述中的术语含义对于正确理解算法过程是至关重要的;程序实现描述虽然可以最详尽地描述算法的细节,但是往往使阅读者限于各种细节而看不清算法的整体框架和流程。以上三种描述方式由于各自的缺点,使得学生在理论学习过程中,往往觉得课程难度很大,产生厌学心理。
PhotoShop可以有效弥补上述三种教学手段的不足,提高学生对图像处理算法的感性认识,调动学生学习的积极性。第一,消除学生对于课程实用性的疑虑。由于该软件是目前图像编辑领域众所周知的著名软件,将课程中的某些算法转换为对该软件中某些功能实现原理的介绍,能够激发学生的学习兴趣。第二,减少了理论内容讲解的枯燥性。通过该软件不同参数下不同效果的演示和课堂互动,可以将理论教学上某些算法的效果以更加生动的方式呈现给学生,同时调动学生主动思考的积极性,营造积极的课堂氛围。第三,提高学生对于理论知识重要性的认识。通过利用课堂理论知识指导PhotoShop的使用,可以启发学生如何将理论知识应用于实践。
在实验环节中,通过选用合适的编程软件可以使学生对于课程内容的理解更加准确,提高教学效果,为毕业后可能从事图像处理相关软件的编程工作打下很好的基础[2,3]。
目前我国高校在数字图像处理的实验环节中常用的软件一般有Visual C++,Matlab和图像处理开源软件等。
2.1 Visual C++
Visual C++从20世纪90年代开始随着Windows平台的使用而被国内高校和企业作为基本编程工具。其主要优点在于C++语言的高效、便捷的集成开发环境、Windows平台下无所不包的强大开发功能及多年积累的大量学习资源、类库、插件和工具。其主要缺点在于没有图像处理库函数、这意味类似于读取图像、写入图像、显示图像等与图像处理核心内容不相关的基本操作都需要编写大量代码,这些耗时烦琐的边缘编码工作使得有限的课程学时变得捉襟见肘,学生难以快速完成某些简单功能,导致畏学情绪滋长,直接影响课程学习的积极性。
2.2 Matlab
其优点在于快速性,即学生可以通过简单的调用接口就可以看到处理的效果。即使是实现某些非经典的复杂图像处理算法,通过Matlab提供丰富的工具箱也可以快速完成编码。其缺点主要有两点,第一,Matlab是一种解释性语言,存在计算速度慢的问题,而图像处理又是比较耗时的运算,因此业界较少以Matlab作为图像处理相关应用软件的开发工具;第二,计算机专业的学生大部分毕业以后从事软件开发相关工作,Matlab并不是一种通用编程软件,计算机专业本科层次的学生毕业以后基本不会使用Matlab,不太符合学以致用的教学原则。
2.3 图像处理开源软件
图像处理相关的开源软件比较著名的有CxImage,ImageJ,OpenCV等。CxImage在Visual C++的软件平台上封装了大量的图像操作,通过该类库可以解决在Visual C++软件上编写图像处理软件的诸多困难,使学生能够相对轻松地完成课程涉及的算法编程任务。ImageJ是一个基于JAVA的图像处理开源软件。编程者可以利用其提供的大量基础数据结构和类编写新的图像处理功能。通过该软件可以帮助教师更好地演示算法效果并有效提高学生编程的效率,增加学生的学习积极性[4]。以上两个软件虽然在一定程度上改善了Visual C++和Matlab软件作为实验教学工具软件的缺点,但是和OpenCV相比而言,其功能、效率、使用的广泛性等均不及OpenCV。
2.4 OpenCV
OpenCV是一个开源的跨平台计算机视觉库。该库是以C/C++语言开发的,进行了大量优化,运行高效,实现了计算机视觉方面的很多通用算法。OpenCV可以运行在Linux,Windows,iOS,Android,Mac OS等操作系统上,同时提供了C,C++,Python,Ruby,MATLAB等语言接口。由于OpenCV具有更新速度快、执行高效、功能全面、跨平台、开源、免费及生成的商业产品不必开放源代码等众多优点,使得越来越多的科研机构和企业利用OpenCV进行学术研究和产品研发。对于计算机专业的学生而言,选用OpenCV作为数字图像处理课程的编程软件可以帮助他们更早地熟悉OpenCV的使用方法,为将来的研发工作或者科研工作打下良好基础。
数字图像处理课程理论教学的核心内容包括:直方图、点运算、滤波器、形态学运算、几何变换及彩色颜色空间等。其中很多内容可以结合PhotoShop进行讲解,这些内容包括:
3.1 直方图
数字图像直方图是图像的基础统计数据,其描述了图像中像素值出现的频率。直方图可以通过PhotoShop清晰的呈现。直方图窗口可以显示直方图扩展视图,在扩展视图可以看到平均值、标准偏差、中间值、像素数量等信息。
3.2 曲线
曲线是PhotoShop中一个重要的图像增强功能。具体菜单位置为“图像”→“调整”→“曲线”。该功能其实就是本课程中介绍的点运算的一种可视化的描述方法。使学生能够直观感受到使用点运算如何增强图像,正确理解点运算的操作特点。
3.3 自定义滤镜
PhotoShop中的滤镜对应图像处理课程中的空域滤波器。在讲解滤波器这一章节的时候可以通过在PhotoShop中设定不同自定义滤波矩阵的方式验证课堂教学中平滑滤波器、边缘提取滤波器和边缘锐化滤波器的特点。
3.4 中值滤波
中值滤波是图像平滑去噪算法中的一种常见的算法。其对于椒盐噪声具有很强的去除能力。通过对比中值滤波和自定义箱式滤波的不同处理效果,让学生对中值滤波的保边去噪性能有深刻印象。
3.5 色相/饱和度
在介绍HSV、HLS颜色空间时,公式的描述使得学生对于HS两个分量的理解不太直观。可以制作一张由三基色及其反色构成的图像,使用PhotoShop的色相饱和度功能调整色相或者饱和度,让学生直观地看到色相(色调)严格地随着色相环中的角度变化发生变换,饱和度随着参数的变化而使颜色的深浅发生变化。
3.6 自动对比度亮度调整
PhotoShop中自动对比度亮度调整功能实现了该算法,学生可以直观地看到通过自动对比度亮度调整后的效果,并且比较调整前后的直方图的变化,通过课堂互动,让学生结合理论教学中介绍的自动对比度亮度调整算法思考为什么直方图会发生如此变化。
3.7 图像缩放
在PhotoShop中,图像缩放功能有三种插值方法可供选择。在几何变换的理论教学过程中,可以利用该功能,让学生了解几何变换中的这几种插值方法对于图像放大的不同效果,从而认识到插值算法对于图像几何变换的意义。
4.1 实验环境搭建
OpenCV库可以在众多操作系统、开发环境中运行。结合图像处理的高效性要求和课程基础,操作系统选择32位windows系统,开发环境选用Visual C++ 2010,OpenCV库选择2.4.9版本。
4.2 实验项目设置原则
4.2.1 设置实验内容的两种方式
数字图像处理课程中的部分算法在OpenCV库中已有实现,如果直接调用相关的算法接口虽然可以快速得到实验结果,但是不能了解其内部实现过程。对于这部分算法采用方式结合的方式设置实验项目:(1)直接算法接口调用。(2)自定义算法实现过程。虽然自定义方式比较费时,但是通过这一过程,学生可以更清楚算法的实现过程,对于熟悉图像处理程序的编写过程也有很大帮助。
4.2.2 验证性实验与设计性实验结合
由于初次接触OpenCV,需要有大量示例性代码供学生学习和模仿。实验环节设置有验证性实验和设计性实验。在验证性实验中,教师将源代码开放给学生,要求学生理解程序的实现过程,并且调试正确。在设计性实验中,教师给出具体实验要求,学生按照要求自主编写实验代码。通过循序渐进、由浅入深的实验项目安排,学生既可以深入理解课堂理论知识和提高编程能力又可以较为顺利地完成实验内容。
4.3 实验项目设置举例
以点运算实验为例。点运算中包括直方图均衡化、伽马校正、图像反色、自动对比度亮度调整、阈值化等算法,其中直方图均衡化和阈值化算法在OpenCV中直接实现为接口equalizeHist和threshold。实验项目设置如下:
4.3.1 验证性实验项目(2学时)
(1)直接算法接口调用(必做)
①直方图均衡化
②阈值化
(2)自定义实现方式(任选2项)
①直方图均衡化
②伽马校正
③图像反色
④自动对比度亮度调整
4.3.2 设计性项目(2学时,任选1项,算法原理在理论课上介绍)
(1)修正的自动对比度亮度调整算法
(2)用修正的累积直方图实现直方图均衡化算法
(3)修正的Gamma校正算法
PhotoShop和OpenCV分别作为业内著名的图像编辑软件和开源计算机视觉开发库,它完全可以作为数字图像处理课程教学的辅助工具软件。从高校计算机专业数字图像处理课程教学实际出发,分析了PhotoShop和OpenCV在数字图像处理课程教学中应用的可行性和必要性。总结了多年应用这两款软件辅助教学的经验。目前结合这两款软件作为教学辅助的数字图像处理教材较少,需要进一步在教学实践中进行积累补充。
[1] 孙景荣,许录平,冯冬竹.数字图像处理精品课程建设与实践[J].中国电子教育,2009(4):54-56.
[2] 翟瑞芳,彭辉,刘善梅.实验案例教学法在数字图像处理课程教学中的应用[J].天津城市建设学院学报,2013,19(3):231-234.
[3] 李庆嵘.《数字图像处理》实验中隐性分层教学的应用[J].实验科学与技术,2013,11(4):240-242.
[4] 郑林涛,董永生.ImageJ软件在数字图像处理课程教学中的应用[J].中国电力教育,2014(8):112-113.
Application of Photoshop and OpenCV in Teaching of Digital Image Process Course
Lin Zhong
Nanjing Institute of Technology, Nanjing, 211167, China
In view of the digital image processing course presentation and experiment teaching situation for computer specialty, a detailed analysis on rationality and advantage of application of PhotoShop and OpenCV in teaching of digital image process is conducted. Application of PhotoShop in the course is helpful for showing the result of various algorithms. Using of OpenCV in experiment teaching enables the student to master the method of image processing, and is good for getting a better understanding of the thought method of image processing.
digital image process; PhotoShop; OpenCV
实验室与实训基地建设
2014-06-20
林忠,硕士,讲师。
南京工程学院校级科研基金资助项目(编号:QKJB201305)。