常裕文档网    > 范文大全 > 公文范文 >

Matlab在“数字图像处理”辅助教学中的应用

时间:2022-03-21 10:15:21  浏览次数:

摘要:“数字图像处理”是一门理论与实践联系紧密的课程,教学过程分为课堂教学与实验教学。提出了利用Matlab软件辅助数字图像处理课堂教学与实验教学的教学方式。实践证明,该方式加深了理论可信度,提高了课堂教学质量,提升了学生创新意识和实践能力。

关键词:数字图像处理;Matlab;课堂教学;实验教学

作者简介:杨青(1983-),女,河北石家庄人,军械工程学院火控雷达与系统教研室,助教;徐艳(1981-),女,河北保定人,军械工程学院火控雷达与系统教研室,讲师。(河北 石家庄 050003)

中图分类号:G642 文献标识码:A 文章编号:1007-0079(2013)10-0115-02

近几十年,数字图像处理技术在计算机技术发展的推动下得到了飞速的发展,并且已成为工程学、计算机科学、信息科学、生物学以及医学等各学科技术领域中不可或缺的一项重要手段。[1]许多高校将“数字图像处理”课程作为电子信息、工业自动化等专业的专业课程,其目的是为了使学生了解常见的图像处理技术,以便将其应用到相应领域中。该课程是一门理论与实践、原理与应用结合紧密的课程,在教学过程中可分为课堂教学与实验教学两部分。在课堂教学过程中主要讲授基本理论和方法,包括图像的获取、图像变换、图像增强、图像复原、图像压缩编码、图像分割和特征分析等内容。[1]在实验教学中通过实践动手的环节,培养学生对图像处理算法的编程能力。

“数字图像处理”技术是利用其理论方法通过计算机对图像施加某种运算和处理,从而达到某种预期目的,所以,选择合适的计算机语言对于学生掌握好这门课程十分关键。该课程具有数据量大、方法多、算法复杂等特点,为了使学生在有限的课堂学习中很好地实现图像处理,而不使学生陷于算法的设计和复杂的编程语言的学习中,本课程使用Matlab语言辅助教学。Matlab软件是MathWorks公司于1982年推出的一套高性能的数值计算与可视化的数学软件。在高等院校中,对于数学、工程和科学理论中的入门课程和高级课程,Matlab都是标准的计算工具。它集数值分析、矩阵运算、信号和图像处理、图形显示于一体,具有许多特定应用的工具箱,特别是具有图像处理工具箱,扩展了Matlab解决处理图像处理问题的能力。[2]将Matlab用于“数字图像处理”课程的课堂和实验教学中,使得教学方法和教学质量有了很大的改进。

一、Matlab在课堂教学中的应用

在“数字图像处理”的课堂教学中,主要以讲授其基本原理和方法为主要同容。但是,图像处理是利用数字计算机对图像进行的一系列操作,需要通过观察图像的变化来理解图像处理的基本方法,进而将抽象的公式和运算结果联系在一起。在进行课堂教学时,充分运用 Matlab 图像处理工具箱中函数,可以方便得到处理结果,这样的演示教学使抽象的概念具体化,感性地认识图像处理内容,从而使教师教学、学生学习变得容易。下面给出几个教学中的实例。

例1:数字图像在计算机中的矩阵表示。

一幅大小为M×N的数字图像,在计算机中表示成一个M行、N列的矩阵,存储在M行、N列的二维数组中。使用Matlab图像处理工具箱中读取和显示图像的函数来演示读取和显示一幅数字图像的过程。

f = imread(‘rose.tif’);

imread函数可以将一幅图像以矩阵的形式存储在f中,Matlab的工作空间中则显示了矩阵f的大小及数值类型,并且可以看到每一个元素的取值。

imtool(f);

imtool函数可以将矩阵f通过图形窗口以图像的形式显示出来(如图1(a)所示),将鼠标在图像上移动,鼠标指针所指向的像素的位置及其灰度值显示在窗口左下角处,整幅图像的灰度值范围显示在窗口右下角。在该窗口中可以选取图像中任意大小的矩形区域,该区域内的像素被放大显示在如图1(b)所示的窗口中。

图1 图像在Matlab中的显示形式

通过演示,很直观地就可以讲解数字图像的定义及在计算机中的表示形式。

例2:傅里叶变换。

傅里叶变换(DFT)是“数字图像处理”课程中最重要并且最难的内容之一。在图像处理技术中,傅里叶变换起着十分重要的作用,应用也十分广泛。图像的二维离散傅里叶变换可以表示为:

(1)

其反变换表示为:

(2)

二维离散傅里叶的频率和相位角定义如下:

(3)

其中,R(u,v)和I(u,v)分别表示F(u,v)的实部和虚部。

在教学中对公式推导讲解的同时,利用Matlab实例演示并将图像的频谱进行可视化,[2]这样即可以克服理论上的空洞讲解,同时也增强了理论的可信性,达到事半功倍的效果。

在Matlab中一个大小为M×N的图像数组f可以通过工具箱中的函数fft2得到该图像的傅里叶变换。

F = fft2(f);

傅里叶频谱可以使用abs函数获得,即该函数计算数组每一个元素的幅度(实部和虚部平方和的平方根)。

S = abs(F);

使用函数fftshift将进行频谱的中心化。

FC = fftshift(F);

Sc = abs(FC);

通过显示频谱的图像来进行可视化分析是进行频域处理一个重要方面。图2(a)是一幅简单的二值图像,图2(b)是其对应的傅里叶频谱图像,图2(c)将频谱进行中心化后的频谱图像。

将Matlab演示教学贯穿于课堂教学中,可以使学生对数字图像在计算机中的表示形式一目了然,使抽象的原理直观化,大大加快了学生对知识的理解,也使课堂教学的气氛得以活跃。

二、Matlab在实验教学中的应用

“数字图像处理”实验教学内容包括图像处理软件操作、算法设计和综合应用等。根据学生编程水平非常有限的特点,故采用 Matlab软件编程技术,使其与实验教学有机地结合起来,同时可以使学生在学习数字图像处理技术基本原理的同时,掌握一门实用的数学处理工具。而很多学校的教学和实验环节偏重教学生如何使用Matlab系统工具箱来实现图像处理的功能。这种教学方式使学生对工具箱过分依赖,并不能训练学生的编程能力,所以在实验教学过程中,应尽量不使用系统自带函数,而是要求学生自己写函数,对于传统的算法,如直方图均衡化、图像旋转、图像去噪、图像锐化、图像分割等算法,要求学生在了解原理的基础上直接编写程序实现,这样可以让学生提高实现算法的能力,并能加深他们对这些传统算法的理解。

例如,对图像进行3×3邻域大小的中值滤波。

1.利用Matlab可以直接使用工具箱的函数实现

I = imread("lena.png");

J = imnoise(I,"gaussian",0,0.02); % 模拟均值为0方差为0.02的高斯噪声

M = filter2(fspecial("average",9),J)/255; % 领域大小为3×3

subplot(2,1,1); imshow(J); title("噪声干扰图像")

subplot(2,1,2); imshow(M); title("改进后的图像")

虽然这种方法编写起来方便快捷,但是不利于学生对原理的理解。

2.利用结构化编程思想实现中值滤波算法

I = imread("lena.png"); % 读入当前路径下的图像

J = imnoise(I,"salt & pepper",0.04); % 模拟叠加密度为0.04的椒盐噪声

[i_hight,i_width ]= size(J); % 图像的大小

for i=2 :1 :i_hight-1

for j=2:1:i_width-1 % 3×3邻域的中值滤波

c(1) = J(i-1,j-1);

c(2) = J(i-1,j);

c(3) = J(i-1,j+1);

c(4) = J(i,j-1);

c(5) = J(i,j);

c(6) = J(i,j+1);

c(7) = J(i+1,j-1);

c(8) = J(i+1,j);

c(9) = J(i+1,j+1);

for k=1 :1 :8

for m=1 :1 :8

if c(m+1)

buf = c(m+1);

c(m+1) = c(m);

c(m) = buf;

end

end

end

A(i,j) = c(5);

end

end

subplot(2,1,1); imshow(J); title("噪声干扰的图像")

subplot(2,1,2); imshow(A); title("改进后的图像")

在实验教学中可以要求学生利用上面两种方法进行处理,通过观察实验结果学生可以对两种方法进行比较,同时引发学生对实现方法比较深层次的思考,启迪、激发学生的创新思维、创新意识。通过编程对数字图像处理算法的理解逐步增加,同时编程水平得到大幅度提高,并提高了学生的实践能力。

三、结束语

“数字图像处理”作为一门重要的专业基础课,教学改革任重道远。实践证明,Matlab应用于“数字图像处理”课堂教学和实验教学中,能够有效地提高课堂教学质量,以逐层递进的方式达到学生对数字图像处理知识的融会贯通以及灵活运用,激发学生的学习兴趣,激发学生的求知欲,给学生提供了充分发挥创造能力的机会,在很大程度上提高了学生的学习主动性和创新能力,为专业的深入研究打下坚实的基础。

参考文献:

[1]李朝晖.数字图像处理及应用[M].北京:机械工业出版社,2004.

[2]冈萨雷斯.数字图像处理(MATLAB版)[M].北京:电子工业出版社,2005.

(责任编辑:宋秀丽)

推荐访问:图像处理 辅助 数字 教学中 Matlab