论文部分内容阅读
摘要:介绍了通信工程专业“数字图像处理”课程的教学过程,对教学过程中如何培养和训练学生计算思维做了探讨,从数学基础到类比推演以及授课方式几个方面讨论了怎样让学生深入理解计算的细节和方法。
关键词:计算思维;数据管理;图像处理;迭代计算
作者简介:龚乐君(1978-),女,江西临川人,淮阴工学院计算机工程学院,讲师;杨荣根(1979-),男,江苏海安人,淮阴工学院计算机工程学院,讲师。(江苏?淮安?223003)
中图分类号:G642?????文献标识码:A?????文章编号:1007-0079(2012)22-0075-02
一、“数字图像处理”课程特点
“数字图像处理”是通信工程专业一门专业方向课,学生在学习了“信号与系统”和“数字信号处理”两门先导课程之后,很自然地将一维信号的处理方法扩展到二维图像上来,主要让学生掌握常用的数字图像采集方法、基本的图像变换技术、图像增强和编码技术以及图像分割等。从专业设置上讲这是顺理成章的事情,但是在教学效果上看,学生并未很好地建立良好的计算思维,需要考虑到学生对前期的两门先导课程,甚至“高等数学”这样的基础课程的掌握程度。很多同学都停留在概念上是这么回事,至于如何编程实现则是一头雾水。这客观上由课时压缩、授课要求也只是对概念掌握的原因,这也导致在讲课过程中的实验都采用了matlab这样的高级计算语言,学生只是“傻瓜”似的调用系统提供的函数,设定几个参数,观察一下效果建立一种感性认知而已。
淮阴工学院(以下简称“我校”)的计算机工程学院将“数字图像处理”课程安排在大学三年级下学期学习,面向通信工程专业。按照课程教学大纲的要求,在图像基本变换中掌握图像空域变换、离散傅里叶变换,了解Gabor变换和小波变换,重点掌握图像增强中的灰度增强、图像平滑和图像锐化,理解图像复原,掌握图像压缩编码中无失真编码和预测编码。在图像分割中主要掌握阈值分割和边缘检测,最后掌握一些边缘和骨架的描述方法等。课程总共40学时,其中有32学时理论课和8学时的实验课。从教学要求出发,实验安排了灰度增强、图像平滑、图像锐化和边缘检测四个实验。课程采用北京大学出版社曹茂永老师主编的数字图像处理一书作为教材,[1]相较于学时要求,该书内容难易适中,对图像处理所涉及的内容作了简洁的介绍,讲授时需要对书中的概念稍作铺垫性补充。
二、教学过程及计算思维
计算机科学与技术专业的学生都深有体会,专业课程重点是覆盖各种语言的程序设计,围绕程序设计的编译技术和类似操作系统、组成原理这样的专业基础课程,由程序设计应用所展开的大多围绕数据管理、数据表示来进行的。比如数据库的编程,web页面的展示和交互等,很少有涉及以计算为目的的应用,至少在我校是比较普遍的现象。但是,通信工程专业设置在计算机工程学院,这就导致学生长期以来都是依赖高级语言进行程序设计,更多的时间是在和高级应用打交道,甚至连计算机最本质的功能——计算,也感触不深,当然从计算这个概念的外延来讲,数据管理也可以称作为计算的一种。但这毕竟是计算机从数值计算基础上发展而来的。从理解计算机的工作体系甚至是二进制来说,数值计算是必须掌握的环节,掌握的程度则随各个专业的侧重点不同而不同。计算机工程学院在几年之前曾经开设一门计算方法的专业选修课,本来是学生了解计算的一次很好的机会,但是有着多方面原因,这门课已经不再设置了。有学分压缩的原因,也有学生急功近利地认为应该从应用型本科培养要求出发学一些所谓有用的技术,不再选修了。在现有条件下,如何培养和锻炼学生计算思维,主要从以下几个方面考虑。
1.理论联系实际
学生在大学一年级已经学习了一年的高等数学,苦于没有实际应用背景,只能停留在概念上的掌握上,学习信号处理和图像处理为数学基础找到了很好的用处,只要稍稍考虑计算机处理离散数据的要求,将数学中的微分转变为差分,将数学上的积分转变成求和就可以了。数字图像为计算提供了很好的数据来源,在计算之后又能得到很好的直观效果,是培养计算思维的最佳材料。
数值计算中最主要的思想就是迭代,计算机能够不知疲倦地循环操作,如果能通过足够多次的循环操作达到理想的计算结果,就能充分发挥计算机的计算特长来解决问题了。
这方面最有说服力的例子就是方程求解和复杂函数用有限次幂函数逼近。[2]在高等数学上曾经讲过用二分法和切线法求解方程的近似根,这是由于多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。切线法是牛顿提出来的使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)= 0的根,其最大优点是在方程f(x)= 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。类似还有将迭代发挥到淋漓尽致的是泰勒展开,将复杂信号表示成一系列简单幂函数的叠加,同样机械振动也可以看做是不同频率简谐振动的叠加。
在数字图像处理领域中有一部分理论直接来源于数学,在充分理解其理论本质之后,编写计算机程序加以实现,这种理论联系实际的方式有助于计算思想的建立,提高利用计算机分析求解问题的能力。
2.类比推演
在图像处理中,很多计算过程比较复杂,对于初学者来说理解起来自然有些困难,可以通过类比推演的方法从简单到复杂过渡理解。图像可以看做是一种二维信号,而在此之前同学们已经学习过了一维信号的处理方法,[3]很多概念可以自然的过渡到图像中来。举例说明在信号处理中的卷积计算,一维信号的时候,卷积需要翻转、平移、相乘以及求和几步操作,到了二维信号,计算过程相同,只不过是卷积核变成了一个二维矩阵而已。再如频域中像高通滤波,低通滤波的概念都可以直接沿用到数字图像处理中。
再举一个有意思的例子就是一维信号的差分,可以扩展到二维图像上的偏导,x方向上的偏导反映了图像在x方向上的变化率,y方向上的偏导反映了图像在y方向上的变化率,这些可以直接类比就能得到,关键是在此基础上可以更进一步推演,将这样的偏导构成向量也就是梯度,这样的特征具有各向同性的优秀品质,在图像处理如边缘增强以及识别领域具有非常典型的应用。 归纳和推演本来是逻辑学中人类在社会实践中认识和改造世界常见的哲学思维方法,在数字图像处理学习过程中,可以借鉴这种推演的方法,首先由数学推演到图像计算,在计算形式上由一维信号类比到图像,这样通过类比推演的方法由浅入深,由简到繁,循序渐进就不难理解图像处理中的一些复杂计算了。
3.授课方式
从讲课方式上需要改变过去那种过分依赖高级计算语言的做法,采用像C++这样的程序语言将计算编程实现。即使利用matlab,也应该尽量自己完成计算过程而不是纯粹调用系统提供的函数,这样既有实用性又能弄清楚计算步骤的来龙去脉。举例而言,在matlab中图像快速傅里叶变换就fft2()一个函数就完成了,而具体的计算过程还是云山雾罩。虽然要求初学者自己实现一个傅里叶蝶形快速算法不太现实,但在教学过程中应该在学时允许的情况下,多从底层编写计算程序,特别是一些空域平滑和锐化的卷积计算,程序的规模也不大,又能体会到计算步骤。
其实C++语言由于其高效的指针运算效率对于图像处理这类计算强度要求比较高的应用来说非常实用,所不同的是在读取bmp文件的时候要考虑文件的格式,其结构如图1所示。一幅bmp图像在内存中由连续的四个部分组成,分别是BITMAPFILEHEADER位图文件头、BITMAPINFOHEADER位图信息头、Palette调色板以及实际的图像数据组成,其中前两个部分是固定长度,分别是14字节和40字节,调色板则需要由位图颜色数决定,一般单色图像有2个表项,16色图像有16个表项,256色有256个表项,每个表项长度为四个字节,真彩色图像没有调色板。在实际像素数据按从下到上,从左到右存储的,也就是最先从文件中读到的是最下面一行像素值。[4]采用指针直接对内存中像素位置进行操作,运算效率高,更主要的是能够让学生清楚地看到计算执行的过程。
三、总结
“数字图像处理”是在“数字信号处理”基础上开设的一门专业方向课,在前期的课程学习中由于过分依赖高级计算语言中系统函数,导致学生在数字图像处理学习过程中对复杂的计算问题束手无策,这种问题的出现还是在于缺少计算思维的训练和培养。首先计算本身来源于数学,在学好数学的基础上,理论联系实际,将晦涩难懂的公式理论转换成计算机语言程序,反过来又加深对计算理论的理解。其次,复杂计算由简单计算复合而来,学习过程中可以采用类比推演的方法,由一维信号的计算处理推演图像的复杂计算过程。最后从授课方式上,应该适当改变传统的那种利用高级计算语言中系统函数调用来完成教学中的实验,而是在知道函数功能的情况下,用自己的语言从底层加以实现。通过这些多方面的努力,亲历实践和体会就能够真正做到对图像处理中的复杂计算游刃有余,心领神会。
参考文献:
[1]曹茂永,章毓晋.数字图像处理[M].北京:北京大学出版社,2007.
[2]同济大学数学系.高等数学[M].北京:高等教育出版社,2007.
[3]王玉德.数字信号处理[M].北京:北京大学出版社,2011.
[4]何斌,马天予,王运坚,等.Visual C++数字图像处理[M].北京:人民邮电出版社,2004.
(责任编辑:宋秀丽)
关键词:计算思维;数据管理;图像处理;迭代计算
作者简介:龚乐君(1978-),女,江西临川人,淮阴工学院计算机工程学院,讲师;杨荣根(1979-),男,江苏海安人,淮阴工学院计算机工程学院,讲师。(江苏?淮安?223003)
中图分类号:G642?????文献标识码:A?????文章编号:1007-0079(2012)22-0075-02
一、“数字图像处理”课程特点
“数字图像处理”是通信工程专业一门专业方向课,学生在学习了“信号与系统”和“数字信号处理”两门先导课程之后,很自然地将一维信号的处理方法扩展到二维图像上来,主要让学生掌握常用的数字图像采集方法、基本的图像变换技术、图像增强和编码技术以及图像分割等。从专业设置上讲这是顺理成章的事情,但是在教学效果上看,学生并未很好地建立良好的计算思维,需要考虑到学生对前期的两门先导课程,甚至“高等数学”这样的基础课程的掌握程度。很多同学都停留在概念上是这么回事,至于如何编程实现则是一头雾水。这客观上由课时压缩、授课要求也只是对概念掌握的原因,这也导致在讲课过程中的实验都采用了matlab这样的高级计算语言,学生只是“傻瓜”似的调用系统提供的函数,设定几个参数,观察一下效果建立一种感性认知而已。
淮阴工学院(以下简称“我校”)的计算机工程学院将“数字图像处理”课程安排在大学三年级下学期学习,面向通信工程专业。按照课程教学大纲的要求,在图像基本变换中掌握图像空域变换、离散傅里叶变换,了解Gabor变换和小波变换,重点掌握图像增强中的灰度增强、图像平滑和图像锐化,理解图像复原,掌握图像压缩编码中无失真编码和预测编码。在图像分割中主要掌握阈值分割和边缘检测,最后掌握一些边缘和骨架的描述方法等。课程总共40学时,其中有32学时理论课和8学时的实验课。从教学要求出发,实验安排了灰度增强、图像平滑、图像锐化和边缘检测四个实验。课程采用北京大学出版社曹茂永老师主编的数字图像处理一书作为教材,[1]相较于学时要求,该书内容难易适中,对图像处理所涉及的内容作了简洁的介绍,讲授时需要对书中的概念稍作铺垫性补充。
二、教学过程及计算思维
计算机科学与技术专业的学生都深有体会,专业课程重点是覆盖各种语言的程序设计,围绕程序设计的编译技术和类似操作系统、组成原理这样的专业基础课程,由程序设计应用所展开的大多围绕数据管理、数据表示来进行的。比如数据库的编程,web页面的展示和交互等,很少有涉及以计算为目的的应用,至少在我校是比较普遍的现象。但是,通信工程专业设置在计算机工程学院,这就导致学生长期以来都是依赖高级语言进行程序设计,更多的时间是在和高级应用打交道,甚至连计算机最本质的功能——计算,也感触不深,当然从计算这个概念的外延来讲,数据管理也可以称作为计算的一种。但这毕竟是计算机从数值计算基础上发展而来的。从理解计算机的工作体系甚至是二进制来说,数值计算是必须掌握的环节,掌握的程度则随各个专业的侧重点不同而不同。计算机工程学院在几年之前曾经开设一门计算方法的专业选修课,本来是学生了解计算的一次很好的机会,但是有着多方面原因,这门课已经不再设置了。有学分压缩的原因,也有学生急功近利地认为应该从应用型本科培养要求出发学一些所谓有用的技术,不再选修了。在现有条件下,如何培养和锻炼学生计算思维,主要从以下几个方面考虑。
1.理论联系实际
学生在大学一年级已经学习了一年的高等数学,苦于没有实际应用背景,只能停留在概念上的掌握上,学习信号处理和图像处理为数学基础找到了很好的用处,只要稍稍考虑计算机处理离散数据的要求,将数学中的微分转变为差分,将数学上的积分转变成求和就可以了。数字图像为计算提供了很好的数据来源,在计算之后又能得到很好的直观效果,是培养计算思维的最佳材料。
数值计算中最主要的思想就是迭代,计算机能够不知疲倦地循环操作,如果能通过足够多次的循环操作达到理想的计算结果,就能充分发挥计算机的计算特长来解决问题了。
这方面最有说服力的例子就是方程求解和复杂函数用有限次幂函数逼近。[2]在高等数学上曾经讲过用二分法和切线法求解方程的近似根,这是由于多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。切线法是牛顿提出来的使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)= 0的根,其最大优点是在方程f(x)= 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。类似还有将迭代发挥到淋漓尽致的是泰勒展开,将复杂信号表示成一系列简单幂函数的叠加,同样机械振动也可以看做是不同频率简谐振动的叠加。
在数字图像处理领域中有一部分理论直接来源于数学,在充分理解其理论本质之后,编写计算机程序加以实现,这种理论联系实际的方式有助于计算思想的建立,提高利用计算机分析求解问题的能力。
2.类比推演
在图像处理中,很多计算过程比较复杂,对于初学者来说理解起来自然有些困难,可以通过类比推演的方法从简单到复杂过渡理解。图像可以看做是一种二维信号,而在此之前同学们已经学习过了一维信号的处理方法,[3]很多概念可以自然的过渡到图像中来。举例说明在信号处理中的卷积计算,一维信号的时候,卷积需要翻转、平移、相乘以及求和几步操作,到了二维信号,计算过程相同,只不过是卷积核变成了一个二维矩阵而已。再如频域中像高通滤波,低通滤波的概念都可以直接沿用到数字图像处理中。
再举一个有意思的例子就是一维信号的差分,可以扩展到二维图像上的偏导,x方向上的偏导反映了图像在x方向上的变化率,y方向上的偏导反映了图像在y方向上的变化率,这些可以直接类比就能得到,关键是在此基础上可以更进一步推演,将这样的偏导构成向量也就是梯度,这样的特征具有各向同性的优秀品质,在图像处理如边缘增强以及识别领域具有非常典型的应用。 归纳和推演本来是逻辑学中人类在社会实践中认识和改造世界常见的哲学思维方法,在数字图像处理学习过程中,可以借鉴这种推演的方法,首先由数学推演到图像计算,在计算形式上由一维信号类比到图像,这样通过类比推演的方法由浅入深,由简到繁,循序渐进就不难理解图像处理中的一些复杂计算了。
3.授课方式
从讲课方式上需要改变过去那种过分依赖高级计算语言的做法,采用像C++这样的程序语言将计算编程实现。即使利用matlab,也应该尽量自己完成计算过程而不是纯粹调用系统提供的函数,这样既有实用性又能弄清楚计算步骤的来龙去脉。举例而言,在matlab中图像快速傅里叶变换就fft2()一个函数就完成了,而具体的计算过程还是云山雾罩。虽然要求初学者自己实现一个傅里叶蝶形快速算法不太现实,但在教学过程中应该在学时允许的情况下,多从底层编写计算程序,特别是一些空域平滑和锐化的卷积计算,程序的规模也不大,又能体会到计算步骤。
其实C++语言由于其高效的指针运算效率对于图像处理这类计算强度要求比较高的应用来说非常实用,所不同的是在读取bmp文件的时候要考虑文件的格式,其结构如图1所示。一幅bmp图像在内存中由连续的四个部分组成,分别是BITMAPFILEHEADER位图文件头、BITMAPINFOHEADER位图信息头、Palette调色板以及实际的图像数据组成,其中前两个部分是固定长度,分别是14字节和40字节,调色板则需要由位图颜色数决定,一般单色图像有2个表项,16色图像有16个表项,256色有256个表项,每个表项长度为四个字节,真彩色图像没有调色板。在实际像素数据按从下到上,从左到右存储的,也就是最先从文件中读到的是最下面一行像素值。[4]采用指针直接对内存中像素位置进行操作,运算效率高,更主要的是能够让学生清楚地看到计算执行的过程。
三、总结
“数字图像处理”是在“数字信号处理”基础上开设的一门专业方向课,在前期的课程学习中由于过分依赖高级计算语言中系统函数,导致学生在数字图像处理学习过程中对复杂的计算问题束手无策,这种问题的出现还是在于缺少计算思维的训练和培养。首先计算本身来源于数学,在学好数学的基础上,理论联系实际,将晦涩难懂的公式理论转换成计算机语言程序,反过来又加深对计算理论的理解。其次,复杂计算由简单计算复合而来,学习过程中可以采用类比推演的方法,由一维信号的计算处理推演图像的复杂计算过程。最后从授课方式上,应该适当改变传统的那种利用高级计算语言中系统函数调用来完成教学中的实验,而是在知道函数功能的情况下,用自己的语言从底层加以实现。通过这些多方面的努力,亲历实践和体会就能够真正做到对图像处理中的复杂计算游刃有余,心领神会。
参考文献:
[1]曹茂永,章毓晋.数字图像处理[M].北京:北京大学出版社,2007.
[2]同济大学数学系.高等数学[M].北京:高等教育出版社,2007.
[3]王玉德.数字信号处理[M].北京:北京大学出版社,2011.
[4]何斌,马天予,王运坚,等.Visual C++数字图像处理[M].北京:人民邮电出版社,2004.
(责任编辑:宋秀丽)