首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接组件标记算法在某些情况下失败。

连接组件标记算法在某些情况下失败。
EN

Stack Overflow用户
提问于 2015-02-26 09:32:33
回答 2查看 267关注 0票数 2

我用这个http://www.codeproject.com/Articles/336915/Connected-Component-Labeling-Algorithm来清理噪音中的图像。这是原来的噪音

我得到的是:

在最后的图像周围仍然有噪音。有没有人知道算法在哪里失败,或者推荐一种更有效的算法?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-26 11:28:44

对于噪声的清洗,没有提到上述算法。该算法分离不同的连续区域。

您已经决定使用算法来查找和分离主要污点。好呀。但看起来,你也发现了几个紧密的小水垢。实际上,看起来你的程序以两个像素的距离作为一个像素的实例.理由可能是:

  1. 代码中的错误--但我很难想象会出现这样的错误。只有当您使用一些额外的算法来加快进程时。或者,如果您通过简单地查找+1,-1表示不同组合的x,y来寻找邻居(不好的方式!),则可以编写2。
  2. 实际上,这些小斑点是通过薄薄的像素序列连接到主像素上的,在你用来显示图片的比例中是看不见的。真的是1:1图像吗?
票数 2
EN

Stack Overflow用户

发布于 2015-02-26 11:44:33

ImageMagick在这方面做得很好,只需付出很少的努力。它安装在大多数Linux发行版上,可用于OSX和Windows。从命令行运行如下:

代码语言:javascript
复制
convert input.png                                   \
   -colorspace gray -negate -threshold 10%          \
   -define connected-components:verbose=true        \
   -define connected-components:area-threshold=800  \
   -connected-components 8 -auto-level output.png

输出

代码语言:javascript
复制
Objects (id: bounding-box centroid area mean-color):
  0: 431x424+0+0 209.2,207.5 135697 srgb(13,13,13)
  109: 236x273+120+84 231.7,223.0 47047 srgb(255,255,255)

如果将阈值更改为仅显示面积大于(例如50 )的块,则会得到以下结果:

代码语言:javascript
复制
Objects (id: bounding-box centroid area mean-color):
  0: 431x424+0+0 210.2,208.5 134262 srgb(11,11,11)
  109: 236x273+120+84 231.7,223.0 47047 srgb(255,255,255)
  1: 40x20+1+1 16.9,9.5 605 srgb(255,255,255)
  190: 12x15+309+153 314.2,160.1 126 srgb(253,253,253)
  83: 12x13+142+71 148.1,76.7 90 srgb(255,255,255)
  164: 12x17+140+132 146.0,140.1 90 srgb(255,255,255)
  347: 10x12+50+304 54.5,309.6 85 srgb(255,255,255)
  440: 11x11+278+399 282.6,404.2 79 srgb(255,255,255)
  448: 6x15+425+403 427.9,409.9 71 srgb(255,255,255)
  151: 9x11+145+122 149.2,126.4 68 srgb(255,255,255)
  93: 11x9+105+75 110.1,79.6 61 srgb(255,255,255)
  170: 9x10+91+136 95.1,140.8 58 srgb(255,255,255)
  258: 9x10+107+220 110.8,225.1 52 srgb(255,255,255)
  53: 10x8+64+47 68.5,50.2 50 srgb(255,255,255)

或者,如果您需要一些C代码,您可以查看我的answer here来回答这个问题:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28738746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档