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

问题描述

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

所以我有一些问题:

  1. 是否可以通过使用运动检测算法来解决此任务?
  2. 这个运动检测器适合这份工作吗?
  3. 如何调整其参数?

提前致谢!

解决方法

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

  1. 物体(流星)体积小。
  2. 它移动得太快了。
  3. 它存在的时间很短。
  4. 视频中有很大的噪音。

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

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

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);

它有效!希望能帮到你。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...