基于Matlab图形轮廓提取及填充.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Matlab图形轮廓提取及填充

基于Matlab图形轮廓提取及填充   摘要:提取图形的形状特征是当前图像处理领域的重要研究内容,而图形的边缘轮廓又能很好地反映形状的信息,因此本文阐述了如何利用matlab较好的提取图形的轮廓,以及将简单轮廓图形填充起来作为形状图形进行研究的算法及代码实现。   关键词:图形;轮廓;膨胀;填充   中图分类号:TP317文献标识码:A 文章编号:1009-3044(2008)09-11722-02      Extraction and Filling of the Outline of Black-and-White Binary Graphics Based on Matlab   JING Ai-bin,LIU Qing,MENG Xiang-zeng   (Shandong Normal University, Jinnan 250014,China)   Abstract: Extracing the characteristic of shape from graphics is an important research field,while the outline can well reflect the information of the shape, so this article elaborates the algorithm and the codes about how to use the matlab to extract outlines of graphics, and to filll the existing outline graphics so as to research them as shape graphics.   Key words: graphics; outline; expansion; filling      1 图形及轮廓的界定      在图像的视觉特征研究领域,形状特征因更接近人的视觉特点,一直是人们的研究重点。而形状的边缘又能很好的反映形状的信息,所以有必要提取图形的边缘轮廓以对以后的深入分析打下基础。   实验之前我们首先阐明两个概念,即图形和轮廓。我们这里所说的图形,指的是有明显的形状和线条特征,但没有太复杂的颜色或纹理特征的简单图像。为了便于研究,本文中所采用的图形为黑白二值图形。   另外,因为我们需要研究的对象是形状而非内部细节,所以本文所涉及的轮廓,指图形的外轮廓,不包括图形内部的孔洞所围成的内部边界,例如,对于示例图1,我们所期望得到的轮廓是如图3所示的外轮廓,而非图2所示图形的整个内外边界轮廓。               2 基于matlab的轮廓提取      图形的外轮廓提取所面临二个问题:   首先,我们知道,在matlab中有一个提取图形轮廓的函数bwperim,但这个函数的局限性在于,它不仅提取外轮廓,对图形区域内部的孔洞所围成的内部边缘也提取出来。如图1中这种带花纹的图形,那些花纹细节也将被提取出来,我们得到的不是一个单纯的蝴蝶的形状,如图2。解决方法是在提取轮廓之前先利用孔洞填补函数bwfill(F,holes);将这些孔洞填补上。代码如下:   F2=bwfill(F1,holes);   其次,对于图形中比较细小的部分,例如蝴蝶的触角,提取轮廓后可能这一部分会出现断点,或者提取出一条曲线或直线段而非闭合区域。解决方法是先用膨胀函数dilate(F,SE)将原图形膨胀,这样就可以将细小部分加粗,然后再提取轮廓。其中SE为函数dilate的二值结构元素。SE不能太大也不能太小,太大可能较原图中原本分离的两部分连接起来,而太小的话膨胀效果不明显,细小的区域仍然没得到扩大。实验表明,当SE=为3*3单位矩阵时,轮廓提取的效果较为理想。   下面我们通过实验来具体阐述一下如何用matlab提取轮廓。   我们将图1的文件命名为butter,提取后的轮廓图形重新保存为后缀名为.bmp的文件,则轮廓提取的代码为:   F=imread(butter.bmp);   F1=~im2bw(F); %bwfill函数处理的是背景色为黑色的二值图形,原图为白色背景,故先对原图反色;   F2=bwfill(F1,holes);   SE=ones(3);   F3=dilate(F2,SE);   F4=bwperim(F2);   figure,imshow(F4); %显示一下轮廓图形,以查看提取后的效果   imwrite(F4, butter2,bmp);      3 简单轮廓图形的填充      上面我们研究了如何提取黑白图形的轮廓,其实在我们

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档