使用 Simd::Motion::Detector 检测小型快速物体

Posted

技术标签:

【中文标题】使用 Simd::Motion::Detector 检测小型快速物体【英文标题】:Detection of small fast objects with using of Simd::Motion::Detector 【发布时间】:2021-01-28 09:20:39 【问题描述】:

我尝试使用motion detector 来检测video 中的流星,例如代码UseMotionDetector.cpp。 如果我使用带有默认选项的运动检测器,那么什么都不起作用。 我认为这可能与物体尺寸小、速度快或噪音大有关。 运动检测器有大量的parameters(还有this),但我没有使用任何运动检测器的经验。

所以我有一些问题:

    是否可以使用运动检测算法解决此任务? 这个运动探测器适合这项工作吗? 如何调整其参数?

提前致谢!

【问题讨论】:

【参考方案1】:

我已经分析了您的视频,并且存在一些问题,导致 Simd::Motion::Detector 在默认设置下无法正常工作。 您已经在上面列出了其中的大部分:

    物体(流星)尺寸较小。 它移动得太快了。 它的存在时间很短。 视频中有很大的噪音。

为了解决这些问题,我更改了运动检测器的以下参数:

为了检测小尺寸的物体,我减小了模型中的最小物体尺寸:

Model model;
model.size = FSize(0.01, 0.01); // By default it is equal to FSize(0.1, 0.1).
detector.SetModel(model);

为了减少快动作的影响:

Options options;
options.TrackingAdditionalLinking = 5; // Boosts binding of trajectory. 

解决对象存在时间短的问题:

options.ClassificationShiftMin = 0.01; // Decreases minimal shift of object to be detected.
options.ClassificationTimeMin = 0.01; // Decreases minimal life time of object to be detected. 

为了减少大噪音:

options.DifferenceDxFeatureWeight = 0; // Turns off gradient along X axis feature.
options.DifferenceDyFeatureWeight = 0; // Turns off gradient along Y axis feature.
detector.SetOptions(options);

而且它有效!希望对你有所帮助。

【讨论】:

您还可以尝试不同的运动检测方法,例如在 bgslibrary 中实现。 github.com/andrewssobral/bgslibrary

以上是关于使用 Simd::Motion::Detector 检测小型快速物体的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份