网站制作与设计知识点建站平台备案
网站制作与设计知识点,建站平台备案,企业类网站模版,项目建设情况搬以前写的博客【2014-03-01 08:09】 图像连通域标记算法研究 ConnectedComponent Labeling 最近在研究一篇复杂下背景文字检测的论文。 “Detecting Text in Natural Scenes with Stroke Width Transform ” CPVR 2010的文章#xff0c;它主要探讨利用文字内…搬以前写的博客【2014-03-01 08:09】 图像连通域标记算法研究 ConnectedComponent Labeling 最近在研究一篇复杂下背景文字检测的论文。 “Detecting Text in Natural Scenes with Stroke Width Transform ” CPVR 2010的文章它主要探讨利用文字内部笔画宽度一致作为主要线索来检测文字的一个新奇的算法当然我不是想讨论文字检测论文算法实施的过程中有一步涉及到图像连通域标记算法在这里我遇到了一些问题查阅了一些相关文章所以想分享一下。 数字图像处理中有介绍到过连通域的概念简单来说就是图像中一片颜色近似一致的区域准确说是某一片区域中的任何一个像素都与该区域的其他的一个或几个像素8连通或4连通连通是指两个像素相邻并且某些属性相同狭义上是灰度值广义上可以像素所具备的各种属性我看的论文里属性就是指像素所在笔画的笔画宽度那么把这些相同的区域做上统一的标记是我们经常要做的事研究这一类问题的算法我们就称其连通域标记算法连通域标记是最基本的图像处理算法之一。 关于这一类问题先说说我的想法。 想法一 第一次了解这个问题的时候看的是维基百科上关于这个的介绍全英文嘛没看太懂但是看懂了一部分于是出现了我的第一种时间效率极其差的办法 1.逐行扫描对除了边界像素的每一个像素边界像素特殊处理作分析分析它的左、左上、上、右上邻居 1如果本像素的属性与其他四个邻居中每一个邻居的属性都不同例如都不是一个灰度级别再如笔画宽度不在同一个区间范围那么区域号加1并把这个新的区域号标记本像素的区域号 2如果只和其中某一个邻居属性相同那么把邻居的区域号标记本像素区域号 3如果和多个邻居属性相同但是邻居的区域号又各有不同那么说明了不同邻居虽然区域号不同但是他们其实是在同一个连通域中只不过没有扫描到本像素之前他们并未汇合所以这里就要统一他们的区域号这里需要扫描所有的已经标记过的像素把其中标记的区域号和本像素的邻居们区域号相同的那些像素群的区域号全部统一为其中最小的那个值同时本像素标记也设为那个值。 2.重复1直到所有点全部扫描完成最后可以得到一个大小和图像一样大的区域号map区域号map的值是图像中对应位置的像素所在的区域号。 这样下来经过一遍扫描之后各个连通域的区域号已经设定出来但是会出现不是区域号1,2,3,4,5。。。这样而可能是1,3,4,6,9。。。这样。 时间复杂度上是On^2n为图像像素的个数。 当然这种算法跑下来时间很久一张640*480的图需要3分钟当然是matlab我内部还有许多其他的判定和执行过程。 想法二 当然不能就此就这样了我需要跑200多张图片一张3分钟。。。所以得改进重新看了维基百科和一部分介绍二值图像连通域标记算法的论文发现原来他们讲的是扫描两遍的思想于是借鉴了他们的想法 1.还是从上至下逐行扫描如果遇到想法一里面的12两种情况方法不变如果遇到第三种情况不像想法一中那样傻傻的再扫描一次统一赋值而是把这些邻居的区域号码作为一个对记录到等价关系表equal中equali【xi yi】表明区域号为xi,yi的区域是在同一片连通域中并且在等价表中第i行。那么这里时间复杂度是On 2.把等价关系表先简化除去重复的部分再从表做树形检索 从表的equal1开始在表中搜索满足x1∈equali或者y1∈equali的i的集合再对集合中每一个i继续做检索直到表中和x1,y1有等价关系的区域号全部被找到。记录下这些区域号把这些区域号对应的像素全部统一从表中删去这些对。重复对表做这样的树形检索直到每一对都被扫描到表最后为空结束这里的时间复杂度又是O(n)但是用到递归调用会占据大量的空间matlab跑竟然报out of memory 。 想法三 http://www.cnblogs.com/tiandsp/archive/2012/12/06/2804922.html 这个是网上看到的同样是两步计算大同小异但是比传统的两步标记简单一些不是等价对而是等价序列递归的过程更简单清楚里面关于算法里面并查集 的介绍很好 想法四 Chttp://blog.stevenwang.name/connected-component-labeling-rg-545001.html Matlabhttp://www.cnblogs.com/tiandsp/archive/2012/12/06/2805276.html 同样是这位老兄推荐的别人的方法区域生长法简单高效,O(n)复杂度实测很快 最后还是借鉴的想法四的思想毕竟速度快看来以后得多看一些算法方面的书了。转载于:https://www.cnblogs.com/jugg1024/p/4204970.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88782.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!