图形识别中分离叶片和叶柄的新方法.docx

图形识别中分离叶片和叶柄的新方法.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图形识别中分离叶片和叶柄的新方法

图形识别中分离叶片和叶柄的新方法北京大学计算机研究所 1001213716 冯天骁一、介绍我们正在做一个叶子识别的网站,网站有大量叶子的图片和植物的介绍。用户可在网站中上传一张或多张叶子的照片,叶子识别系统便开始对照片中的叶子进行识别,然后提取特征,并从库中图片进行对比,进而最终得出该叶子属于哪种植物,并告诉用户。在这个识别系统中,提取叶子轮廓是一项关键而基础的工作,只有将叶子的轮廓合理地提取出来,系统才能在后续的特征识别环节上表现得游刃有余。由于基于轮廓的图形识别往往需要利用高曲率点,而叶子分为叶片和叶柄两部分。作为叶子的一个高曲率点,同一种叶子的叶柄往往表现得有长有短有粗有细,并且能直能弯,显得很不稳定,因此在识别的过程中必须将叶片和叶柄进行分离。或仅针对叶片来提取轮廓,因此,如何寻找一个较好的办法将叶片中的叶柄去除,便是一个重要的研究内容。在此之前,我们一般先采用自适应阈值化方法[1]将彩色照片转化为仅有黑白两色的照片。通常黑色为背景,白色为我们即将处理的图片部分。二、传统的腐蚀算法的原理形态腐蚀是将一些图像(或图像中的一部分区域,称之为A)与核(称之为B)进行卷积。核可以是任何的形状或大小,它拥有一个单独定义出来的参考点(anchor point)。多数情况下,核是一个小的中间带有参考点的实心正方形或圆盘。核可以视为模板或掩码,腐蚀是求局部最小值的操作。核B与图像卷积,即计算核B覆盖的区域的像素点最小值,并把这个最小值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐减少。腐蚀算法的公式如下:从上述式子可以看出,对于二值化的图像而言,腐蚀算法将起到最好的效果。对于叶柄这样的细长条物状,可以通过多次迭代的腐蚀算法将其直接腐蚀掉。下图显示了以3×3的正方形为核,进行4次迭代的腐蚀算法所达到的效果。腐蚀算法的一个缺点在于,它会将原先的叶片也腐蚀掉一圈,并且叶片周围的形状也将发生变化。容易看出,右图的叶片明显比左图稍微“尖”一点儿。本文提出一个新的方法,它可以在削除大部分叶柄的同时,不影响叶片部分的变化。将该方法配合腐蚀算法使用,效果可以变得较好。三、本文方法新方法通过计算每一个亮点到它边界的距离,借此区分叶子中的叶片部分和叶柄部分,实现选择性的腐蚀。step 1计算每一个亮点到它的边界的距离。1.1对图像中的每一个亮点,观察它周围的四邻域是否不是亮点,如果至少存在一个不是亮点,那么标记为1,否则不予标记。1.2循环扫描图像,对图像中每一个亮点,观察它周围的四邻域是否有被标记是i的点,如果至少存在一个点被标记为i,那么将这个点标记为i+1,否则不予标记。1.3扫描N次后停止,一直未被标记的亮点视为最大值(255)step 2对满足一定条件的点进行腐蚀。2.1对于每个被标记为X的点,扫描它周围m×m像素的邻域(m为奇数),如果邻域中至少存在一个被标记大于X的点(包括255的情况),那么意味着在该点附近存在至少一个点,它离边界更远,这意味着我们当前考察的点很可能在叶片内部。2.2如果它邻域中所有的点的标记均不超过X(包括为背景即0的情况),这意味着它以及它附近的若干个点均位于较为细长的叶柄上,而我们考察的该点极有可能位于细长的叶柄的中心位置。在这种情况下我们将原图中画上一个以该点为中心,半径为X的黑色大圆点,即起到了擦除叶柄的作用。算法实现后的结果如下图所示:图中可以看出,叶柄的大部分已被切除,只剩下很短的一小段,而叶片部分则得到了最完整的保留。另外尽管画面最下方仍然存在一点点叶柄状,但由于后续处理的FindContours函数[2]能将它提取为两个轮廓组成的轮廓树[3-7],我们仅需筛选其中那个较大的轮廓结点即可,因此在已经实现的叶片和其他部分的分离之后,余下的残迹并不会对后续工作产生影响。四、算法复杂度分析常规腐蚀算法的复杂度:设图像的总像素大小为N。常规腐蚀算法扫描图像的每个像素,要考察核中的3×3个点。另外腐蚀算法的参数设定为迭代4次。因此总算法复杂度为3×3×4×N=36N。新方法的复杂度:新方法的step 1需要扫描6次图像,每次考察附近的八邻域并和其本身比较。但如果该点不是亮点则直接跳过。一片叶子的面积通常不会超过整个图像面积的一半。故这部分复杂度为6×9×1/2N+6×1×1/2N=30N。step 2需要对每个标记为1~6的点进行扫描,这些点占总图像的比例非常少,不到5%。这里面每个点均需对周围23×23领域进行比较。因此复杂度不超过23×23×5%N+N=27N。累计复杂度为30N+27N=57N。结论:新方法虽然看似复杂,但实际的算法复杂度与常规方法没有甚大区别。实际执行中,我们使用了一个15×75共1125张叶子图片的数据库进行测试。方法时间旧方法:腐蚀算法59.6s新方法:选择性腐蚀90.6s五、结论

您可能关注的文档

文档评论(0)

almm118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档