1、基于 Matlab 的形态学图像处理研究学生姓名与学号: 常宽 081220155 所 在 院 系 : 电气信息工程学院 专 业 年 级 : 08 级电气工程及其自动化 指 导 教 师: 薛 亚 许 摘要:数学形态学是以几何学和集合论为基础 ,应用于图像处理和模式识别等领域。它具有腐蚀,膨胀,开运算,闭运算四种基本运算。本文主要探讨形态学图像处理的原理及基于MATLAB 软件平台的实施方法。研究表明 ,利用 MATLAB 图像处理工具箱中的函数运用形态学方法对图像进行预处理,如形态学滤波、细化、剪裁,能够达到比较好的效果。 关键词:Matlab 形态学图像处理 预处理 形态学滤波 引言 Mat
2、lab 是美国 MathWorks 公司出品的商业数学软件,用于算开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。在 MATLAB 技术环境下,利用图像处理工具箱的 IPT 函数可以进行可视化操作,方便快捷地对图像进行处理。 形态学图像处理思想是基于通过一小块形状或模板(结构元素) 来处理图像,其方法适用于图像处理的各个方面,如基于形态学滤波器的颗粒分析,基于腐蚀和开运算的骨架抽取等。许多二值图像上的形态学运算也可以用于灰度图像的处理,但像形态学重构运算只能用于灰度图像,如峰值滤波。 一、形态学图像处理的原理 结构元素通常是 0 和 1 的矩阵表示,有时为方便起见可只显示
3、 1,结构元素的原点必须明确表明,腐蚀和膨胀的程度都由结构元素的集合控制。膨胀是在二值图像中“加长”或“变粗”的操作,膨胀过程中对结构元素的平移类似于空间卷积。腐蚀是对二值图像的对象进行“收缩”或“细化” 。腐蚀和膨胀都是使结构按照一定的规则在图像区域进行平移来实现对图像的形态学处理。 (一)基本形态学操作 膨胀和腐蚀是两种最基本的形态学运算,大多数其他形态学算法都是以这两种运算为基础。 数学上,膨胀定义为集合运算,A 被结构元素 B 膨胀,记为 AB,其原理如下:在平移结构元素的过程中,使得结构原点到所有可能的图像像素点来检测图像,当结构元素和像素值为 1 像素点重叠时,即结构元素击中图像,
4、则输出 1,否则输出 0. 膨胀也满足交换定律,即 AB=BA。在图像处理中,我们习惯令 AB 的第一个操作数为图像,而第二个操作数为结构元素,结构元素往往比图像小得多。 腐蚀的数学定义与膨胀类似,A 被解构元素 B 腐蚀记为 AB,其原理同样可以表述为: 在结构元素在整个图像区域平移的过程中,结构元素的原点到所有可能的图像像素点检查图像,当结构元素与图像的前景部分完全匹配时,即结构元素适合图像,则输出 1,否则输出0。 由于腐蚀和膨胀的程度由结构元素控制,选择合适的结构元素对图像进行处理从而达到改进图像性能的目的显得尤为重要。但是单独使用膨胀和腐蚀进行图像处理其用途是有限的,通过对这两种基本
5、操作的组合可达到更有效的处理效果。 (二(二)膨胀和腐蚀的组合 除了膨胀和腐蚀两种基本的形态学操作外,形态学操作还包括三种常用的膨胀和腐蚀的组合操作:开运算、闭运算、击中或击不中变换。 A 被结构元素 B 的形态学开运算可以记为 A B,这种运算时 A 被 B 腐蚀后再用 B 来膨胀腐蚀结果: A B=(AB)B(1) 开运算具有平滑边界,滤掉比结构元素小的斑点、突刺,断开狭长连接的作用。 A 被结构元素 B 的形态学闭运算记为 AB,它是先腐蚀再膨胀的结果: A B=(AB)B(2) 闭运算具有平滑边界,填充比结构元素小的缺口或洞,连接狭窄缺口形成细长弯口的作用。 通常,能够识别像素的特定形
6、状是很有用的,击不中或击中变换对这类应用非常实用。A被 B 击中或击不中变换定义为 A B,B 是结构元素,其中 B 是两个结构元素,而不是单个元素。二、Matlab 中形态学图像处理实现 (一)Matlab 图像处理工具箱中形态学图像处理函数 Matlab 提供了 20 类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,本文中我们主要介绍灰度与二值图像的形态学运算的 IPT 函数。 在 Matlab 中 IPT 函数 strel 运用各种形状和大小构建结构元素,其基本语法为se=strel(shape,parameters),其中 ,shape 是指定希望形状的字符串
7、,而 parameters 是指定形状(如其大小)的一列参数。IPT 函数 imdilate 执行膨胀运算。基本的调用语法为 A2=(A,B),其中,A2 和 A 是二值图像或灰度图像,B 是指定的结构元素的由 0 和 1 组成的矩阵。腐蚀则用IPT 函数 imerode 执行。开运算和闭运算在工具箱中用函数 imopen 和 imclose 实现。击中或击不中变换在 IPT 中用函数 bwhitmiss 实现,该函数语法为 C=bwhitmiss(A,B1,B2),其中,C为结果,A 为输入图像,B1 和 B2 为结构元素。 (二)形态学图像处理实现 由于 Matlab 工具箱中含有丰富的形
8、态学图像处理函数,使得我们在用形态学方法进行处理时能尽可能达到所需要的效果。形态学技术对图像进行预处理的过程中能够很好实现对图像的滤波、细化和裁剪,还能实现对图像边缘检测及特征提取。下面我们利用 Matlab 形态学处理函数对一副不均匀亮度的米粒图像进行滤波处理,并进行阈值处理,使得米粒和背景分割开来,来比较滤波处理前后图像的分割效果。滤波处理部分源程序如下: f=imread(rice.png);se=strel(disk,50);fo=imopen(f,se);% 读入图像米粒图像,并对图像进行开运算 figure,imshow(f);%显示米粒原图像figure,imshow(fo);%显示经开运算之后的图像 f2=imsubtract(f,fo);%米粒原图像减去经开运算后的图像,获得一副均匀背景的米粒图像 figure,imshow(f2);%显示均匀背景的米粒图像, 接下来我们对米粒原图像和均匀背景的米粒图像分别进行阈值处理,对所得图像中的米粒从背景中分离出来的效果进行对比,从而证明形态学图像处理能很好对图像进行滤波,为更进一步的图像处理奠定了良好的基础。