基于Matlab的图形轮廓提取及填充
计算机工程应用技术 本栏目责任编辑:贾薇薇
基于Matlab的图形轮廓提取及填充
井艾斌,柳青,孟祥增
(山东师范大学,山东 济南 250014)
摘要:提取图形的形状特征是当前图像处理领域的重要研究内容,而图形的边缘轮廓又能很好地反映形状的信息,因此本文阐述了
如何利用matlab较好的提取图形的轮廓,以及将简单轮廓图形填充起来作为形状图形进行研究的算法及代码实现。
关键词:图形;轮廓;膨胀;填充
中图分类号: 文献标识码: 文章编号:
TP317 A 1009-3044(2008)09-11722-02
ExtractionandFillingoftheOutlineofBlack-and-WhiteBinaryGraphicsBasedonMatlab
JINGAi-bin,LIUQing,MENGXiang-zeng
(ShandongNormalUniversity,Jinnan250014,China)
Abstract:Extracingthecharacteristicofshapefromgraphicsisanimportantresearchfield,whiletheoutlinecanwellreflecttheinformation
oftheshape,sothisarticleelaboratesthealgorithmandthecodesabouthowtousethematlabtoextractoutlinesofgraphics,andtofilll
theexistingoutlinegraphicssoastoresearchthemasshapegraphics.
Keywords:graphics;outline;expansion;filling
1图形及轮廓的界定
在图像的视觉特征研究领域,形状特征因更接近人的视觉特点,一直是人们的研究重点。而形状的边缘又能很好的反映形状的
信息,所以有必要提取图形的边缘轮廓以对以后的深入分析打下基础。
实验之前我们首先阐明两个概念,即图形和轮廓。我们这里所说的图形,指的是有明显的形状和线条特征,但没有太复杂的颜
色或纹理特征的简单图像。为了便于研究,本文中所采用的图形为黑白二值图形。
另外,因为我们需要研究的对象是形状而非内部细节,所以本文所涉及的轮廓,指图形的外轮廓,不包括图形内部的孔洞所围
成的内部边界,例如,对于示例图 ,我们所期望得到的轮廓是如图 所示的外轮廓,而非图 所示图形的整个内外边界轮廓。
1 3 2
图1 图2 图3
2基于matlab的轮廓提取
图形的外轮廓提取所面临二个问题:
首先,我们知道,在matlab中有一个提取图形轮廓的函数bwperim,但这个函数的局限性在于,它不仅提取外轮廓,对图形区域
内部的孔洞所围成的内部边缘也提取出来。如图1中这种带花纹的图形,那些花纹细节也将被提取出来,我们得到的不是一个单纯
的蝴蝶的形状,如图 。解决方法是在提取轮廓之前先利用孔洞填补函数 将这些孔洞填补上。代码如下:
2 bwfill(F,'holes');
F2=bwfill(F1,'holes');
其次,对于图形中比较细小的部分,例如蝴蝶的触角,提取轮廓后可能这一部分会出现断点,或者提取出一条曲线或直线段而
非闭合区域。解决方法是先用膨胀函数 将原图形膨胀,这样就可以将细小部分加粗,然后再提取轮廓。其中 为函数
dilate(F,SE) SE
的二值结构元素。 不能太大也不能太小,太大可能较原图中原本分离的两部分连接起来,而太小的话膨胀效果不明显,细小
dilate SE
的区域仍然没得到扩大。实验表明,当