如何比较来自相机的两张照片并判断是否有足够的差异来检测运动?

信息处理 图像处理 计算机视觉 背景减法
2022-01-17 01:31:41

我想用我的手机作为闭路电视系统来控制我家的一个房间,并在有东西移动时显示警报。

目前,我成功的做法是每分钟抓取一张图片,然后通过 PHP 脚本将它们上传到我的服务器。现在,我想比较当前图片和 1 分钟前的图片,并检测是否有人进入房间。所以基本上,我需要比较图片上像素的差异(但也要考虑到云可能会在一分钟内打个招呼并改变亮度)

有没有人知道如何实现这一目标或阅读一些文档?

4个回答

在我看来,您正在寻找的是背景减法技术。对于嘈杂的图像和不断变化的照明条件,这可能是不平凡的。目前最先进的技术是低秩矩阵表示,但它需要的不是两个,而是很多(~打)图像。一些重型数学如下:每个图像被认为是一个像素向量,向量组合成矩阵,这个矩阵被分解成低秩矩阵和残差。低秩矩阵列是背景,剩余部分是移动对象。有一些开源实现,但仅用于分解本身,而不是完整的图像管道 IIRC

这是矩阵分解的论文和代码 http://www.ece.rice.edu/~aew2/sparcs.html

这是 CS 博客的概述和其他代码的链接:

https://sites.google.com/site/igorcarron2/matrixfactorizations

http://nuit-blanche.blogspot.com/search/label/MF

其他一些技术的调查:http: //www.vis.uni-stuttgart.de/uploads/tx_vispublications/Brutzer2011-2.pdf

记住:有阴影(不仅仅是亮度)。

我不太喜欢 James Webster 的想法,因为它基本上是缩小每个维度的分辨率并比较缩小的图像(我也不喜欢阈值 - 它们是任意的,你必须测试和调整它们直到你得到一个好的值,而第二天这些值可能会因为不同的天气或其他一些环境影响而过时)

但公平地说,我也没有一个很好的解决方案。我的第一个想法是将每个图像与空房间的参考图像进行比较,并对差异图像进行边缘检测。但这也会检测到阴影。但我想你不能区分阴影和其他物体......至少我不知道如何。但是也许你可以比较 2 帧之间的边缘检测后的结果,因为阴影大多是缓慢移动的(当汽车移动或云移动时仍然会出现问题)

“矩阵分解”技术不会帮助您完成工作!@mirror2image 引用的论文是关于背景减法的,但不是基于“矩阵分解”。

使用正在运行的视频来检测移动物体(无论是人还是车辆)是一个活跃的研究领域。

作为基本原理,系统通过对多张图片进行采样并获取输入图像与背景之间的能量差异来估计典型的静态背景。如果能量显着,则像素被分类为前景。这样的一组前景会告诉您系统中是否有对象的条目。

对您的研究论文的最佳参考(如果您想真正实施,也相对简单)是 - W4 System 在这里找到它并在此处查看 Picardi 论文作为对系统中其他技术的更详细调查。

有许多挑战适用于该问题:

  1. 噪音的存在产生了主要的模糊问题。这里的方法是应用有效的时间过滤并考虑噪声的方差以使其不受阈值的影响。

  2. 阴影的存在造成了既不是前景也不是前景的模糊性。有论文对颜色与强度的区别进行建模,以区分阴影与真实前景。

  3. 背景可以很复杂,如挥舞的树木或大海等。

  4. 背景可以有缓慢或突然的照明变化,其中较早的“学习”背景然后适应新的背景。

引用最多的具有里程碑意义的论文之一被称为墙花算法,它展示了结合各种此类场景以产生稳健的运动物体检测的最佳方法。

我不知道确切的解决方案,但是您应该对图像进行某种散列;从图像中提取的较小的数据集,比整个图像更好。

我认为,颜色直方图是一个不错的选择

如果将图像分割成多个区域并为这些区域制作单独的直方图,则可以确定入侵者的位置/路径。