繁体   English   中英

图像分割

[英]Image Segmentation

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

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

2)我考虑过对图像进行大量阈值处理,以便我可以使用 OpenCV SimpleBlobDetector 检测保险丝上的白点/终端。 然后我根据它们之间的距离过滤掉斑点。 因为我知道保险丝的尺寸,所以我可以过滤掉无效的保险丝。 这种方法适用于所有保险丝,但白色保险丝甚至出现在阈值最高的图像中。

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

在此处输入图片说明

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

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

我想您可能还想尝试分水岭算法 许多实例解释相关可用 Watershed 要求您提供一个包含背景(保险丝盒和桌子)和每个前景对象(保险丝)的蒙版。 据我了解,您已经可以检测到保险丝上的触点,这样就完成了。

另一种方法是接受您看不到棕色保险丝。 如果您可以检测到空插槽和所有其他颜色,则可以通过推断知道棕色插槽的位置。

它必须事先知道什么会在没有一些实验的情况下起作用,但这应该会给你一些关于如何改进你所拥有的东西的想法。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM