在某些情况下,连接组件标签算法失败

时间:2015-02-26 09:32:34

标签: image algorithm noise

我使用过这个alghoritm http://www.codeproject.com/Articles/336915/Connected-Component-Labeling-Algorithm 清理图像frome噪音。 这是原始的噪音 enter image description here

这就是我获得的:

enter image description here

最终图像周围仍有噪音。 有谁知道算法失败的地方或者可以推荐更有效的算法? 谢谢

2 个答案:

答案 0 :(得分:3)

ImageMagick以最小的努力做得很好。它无论如何都安装在大多数Linux发行版上,可用于OSX和Windows。从命令行运行,如下所示:

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

<强>输出

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)

enter image description here

如果您将阈值更改为仅显示面积大于50的blob,那么您可以得到:

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)

enter image description here

或者,如果你想要一些C代码,你可以查看我的answer here这个问题:

答案 1 :(得分:2)

上面提到的算法没有提到噪音清理。该算法分离不同的连续区域。

您决定使用该算法来查找和分离主要污点。为什么不。但看起来,你也发现了几个接近的小污点。事实上,似乎你的编程需要2像素距离作为1像素实例。原因可能是:

  1. 代码中的错误 - 但我几乎无法想象可能导致此类图片的错误。仅当您使用一些额外的算法来加快过程时。或者,如果你正在寻找邻居,只需要寻找+1,-1代表x,y的不同组合(糟糕的方式!),你可以写2代。
  2. 实际上这些小墨迹通过细像素序列连接到主要像素,在用于显示图像的比例中不可见。真的是1:1的形象吗?