使用openCV在图像中查找“丢失”对象

时间:2013-08-19 15:34:19

标签: c++ image visual-studio-2010 opencv image-processing

请查看以下2张图片

图片1

enter image description here

图片2

enter image description here

在图像1中,您可以看到墙上有垫子,而在图像2中,垫子丢失了。现在,我将插入Image1作为第一个图像,将Image2作为第二个插入,并找到遗漏的内容。然后,我需要在缺失的对象上方绘制一个矩形。

在我的计划中,我会在每一个人中检查这一点。

除了“图像差异”这是“absDiff()”方法之外,我无法想到别的东西。但是我在同一个应用程序中使用这种技术进行运动检测,所以我不确定相同的技术是否适合“查找丢失的对象”(因为在这种情况下,这将如何与运动检测不同“?< / p>

关于如何找到这样的遗失物品的任何想法?

3 个答案:

答案 0 :(得分:1)

嗯,这也是一种运动检测,因为你可以认为Mat已经移出了场景。如果您的图像对齐(即如果相机放置在相同的位置),图像减法是一个很好的开始方式。通过这种方式,您可以了解哪些物体已经出现或消失。请注意,如果您允许Mat出现在图像中但位于不同位置,则此技术不适用。

另一方面,如果您正在观看某些Mat,则可以使用对象检测,这样如果您无法检测到图像中的对象,则可以认为该对象已被盗。您可以通过从对象图像中提取要素(例如SURF)并稍后将其与从网络摄像头图像中提取的要素进行匹配来实现此目的。如果黑色垫子必须始终在白色墙壁上,那么检测具有这些颜色的斑点也可能是有用的。

答案 1 :(得分:1)

您可以尝试在两个图像上查找兴趣点,然后查看图片之间不匹配点的区域。

答案 2 :(得分:1)

尽管我已经迟到了7年,但是由于我一直在努力寻找一个整体解决该问题的最佳方法,所以我想我将与Adrian Rosebrock在{{3} pyimagesearch。他使用两幅图像之间的结构相似性指数(SSIM)来找到明显的差异(我需要的),并基于计算出的差异,找到轮廓以在标识为“不同”的区域周围放置矩形。与黄金图像相比,我发现它对于图像中的“模板匹配”或识别图像中的“异常”非常有效,黄金图像也能够处理丢失的对象。