我有一个 C# 桌面应用程序。
我正在使用 OpenCV 的包装器,即 EMGU。
我只是在执行一个基本的运动检测操作。
我正在使用组件标签和 2 帧差异来确定运动变化。我还使用平均背景方法来更新我用来从当前帧和先前帧中“减去”的背景。
这一切运作良好。
现在考虑这个图像:
因为这个灌木离相机很近,所以当风吹来时,我现在的方法会检测到移动。
另外,考虑这个图像:
在这里,我们在图像右侧看到了一个蜘蛛网。当风吹过时,我再次获得运动检测。
我可能的解决方案:
寻找形状。对于像蜘蛛网这样的细长形状,高度大于宽度(达到一定比例),则忽略该运动。但是,当有人从马路对面走在图像后面的人行道上时,我发现我失去了动作。
侵蚀。我再次错过了像人和自行车这样的真正运动。
比较直方图我发现它不可靠。直方图只会测量不同颜色的数量(在它自己的 bin 中)。颜色可能会由于饱和度和光照而发生变化,或者/或者由于另一个物体经过而发现相同数量的颜色。
所以,我想到了使用萎缩。我确实在这里发布了一个较早的问题:
但是正如善意解释熵的人建议我应该在这里发布一个特定/单独的问题......
我想探索频率或/和熵是否对我有帮助?我应该查看空间分布还是频率分布?如果我想避免颜色变化,最好研究一下频率吗?
任何一种方法都会比另一种更快,因为我希望它尽可能实时。
对我来说,这里的任何教育都会很棒。