二值图像中的对象检测

问题描述:

此任务来自稳定背景上的跟踪对象。到目前为止,我是能够消除的背景,并获得二进制掩码是这样的:二值图像中的对象检测

1

2

我需要得到边界玩具的矩形没有连接到它的电源线(在某些帧是很厚)。听起来很容易,但我想不出一个好办法。

我试着与我剪裁的玩具模板互相关。这不是很好,再加上我需要矩形才能够改变它的大小。绳子加了一些混乱。

meanShift()也没有显示出良好的结果,因为绳索和偶尔的噪音。

现在我使用findContours()进行了一些调整,但它对于看起来像是好的图像仍然产生一些奇怪的边界。

我一直在想,必须有一些更简单有效的解决方案。

为了去除连接的电线,我只是简单地做一个关闭,然后打开。就像你第一次重新连接关闭点,然后你擦除孤立的点并切断电源线。

然后,您可以使用相应的MatLab函数计算边界框。

+0

关闭/打开操作完成后,可能会留下一些不需要的斑点。您可以通过轮廓属性“过滤”轮廓属性(例如:如果周边或表面不够高,则可以忽略轮廓) – Pierre

根据您的第二张图片,关闭过程可能会移除玩具的大部分(因为玩具身体的边界很薄),所以(如果我们可以假设玩具和绳子的位置始终垂直)时,应首先使用凸包,然后在“图像的每一行”中分别寻找厚物体(基于玩具在所有部位的宽度比绳索或噪点多的事实)。在每一行中,长度大于阈值的每条水平线都保留该行,否则将其删除。通过这种方式,您可以重建玩具的凸包,现在您可以轻松地为其安装一个矩形。