图像分割

时间:2015-09-21 14:41:17

标签: image opencv computer-vision segment

所以我正在尝试编写一些代码,让我分割下图中看到的保险丝。我提出了两种方法:

1)基于颜色。我使用OpenCV的inRange函数进行阈值处理。除棕色保险丝外,这种方法适用于所有保险丝。棕色保险丝的颜色与保险丝盒本身太相似,因此很难将其分割出来。

2)我认为对图像进行了大量阈值处理,以便我可以使用OpenCV SimpleBlobDetector检测保险丝上的白点/端子。然后我按照彼此的距离过滤出斑点。据我所知,保险丝的大小,我可以过滤掉无效的保险丝。这种方法适用于所有保险丝,但即使是最高阈值的图像也会出现白色保险丝。

我希望我能得到一个如何分割这样一个图像的指针。背景减法会起作用吗?

enter image description here

2 个答案:

答案 0 :(得分:3)

我对细分的经验是,单一方法通常不适用于难以分割。我,如果一个算法适用于除棕色之外的所有算法,而另一个算法除了白色之外都是有效的,两者的结合应产生完整的结果。我知道有一个优雅的算法是很好的,但我的许多最好的结果不得不求助于多种技术的混合。

我考虑将频道分为rgb和hue,饱和度和值,并分别查看每个频道。有时,颜色看起来非常相似的棕色​​具有显着不同的饱和度或颜色通道值。添加和减去不同的通道有时也可以增强对比度。这很简单,但在很多情况下会产生快速简单的输出,可用于阈值处理,分水岭(见下文)或背景减法。

我想你可能也想试试watershed algorithm。许多examplesexplainations都是available。 Watershed要求您提供一个包含背景(保险丝盒和表格)和每个前景对象(保险丝)的面具。据我了解,您已经可以检测到保险丝上的触点,以便完成这件事。

另一种方法是接受你不能看到棕色保险丝。如果您可以检测空插槽和其他每种颜色,您可以通过扣除棕色的位置来了解。

如果没有经过一些实验,它必须事先知道什么会有效,但这应该会给你一些如何改善你所拥有的东西的想法。

答案 1 :(得分:0)

C ++中的基本彩色图像分割代码可从https://github.com/imensedave/basic_vision_region_segmentation

获得。

这种方法的窍门是在颜色区域增长之前完成边缘检测。