2017-01-16 56 views
0

我有一个应用程序需要拍摄一张房间的两张照片,并检测第一张照片中的某个物体是否在第二张照片中丢失。它如何使用OpenCV或任何其他工具做到这一点?使用图像比较检测丢失的物体

+0

这比你想象的要难。 – sascha

+1

这两个图像有相同的POV?你有你要找的物品的模板吗?物体总是具有相同的方向?或者你只是在寻找任何/所有缺失的物体? 如果你想得到更完整的答案,我认为你必须详细阐述你的问题。 – Soltius

+1

计算两个帧的差异,只要相机的位置和照度保持不变,就会产生一个二进制掩码,您可以稍后使用它来查找轮廓并获取丢失物体的位置 – ZdaR

回答

1

如果您感兴趣的对象具有众所周知的结构 - 即它是一个增强现实标记,那么这个任务将被很好地描述并且实现起来几乎是微不足道的。如果您没有关于丢失物体的先验知识,则唯一可以做的就是比较2张照片,即可以用SIFT或SURF完成的全景拼接(请进一步阅读这些内容)。如果对象更加复杂,并且如果两个图像都是以相似的视野拍摄的,并且缺失对象的模型是先验已知的(即您只有一张感兴趣对象的图片),则可以使用SIFT或SURF检测先验模型图像和输入图像(想要找到缺失物体的图像)中的特征,执行特征匹配并查找最密集的匹配特征(即使用粒子群优化算法)。你需要意识到这不会在任何情况下都有效,并且可能会给你带来很多误报。像各种不同的物体,照明差异,部分遮挡等干扰很容易破坏这个模型。这种方法不需要对图像进行变形等等,因为SIFT是规模,平移和旋转不变的。我们有很多更健壮的方法,包括深度学习(查找关于物体检测的科学论文),但具有特征匹配的方法似乎是最先尝试的最简单的方法。