如何使用OpenCV中可用的凝聚算法?

How to use the condensation algorithm available in OpenCV?

本文关键字:凝聚 算法 何使用 OpenCV      更新时间:2023-10-16

我需要实现一个软件,使用凝聚算法和OpenCV库来跟踪图像流中的移动对象。我已经读过OpenCV包含该算法的实现,但我没有找到解释如何使用OpenCV中可用的相应函数的示例或教程。

cvCreateConDensation函数分配CvConDensation结构,需要状态向量的维数(dynam_params)、测量向量的维数(measure_params)和样本数(sample_count)。

状态向量的维度应该是指对象状态
  • :例如,如果状态可以是被跟踪对象的中心点,那么状态向量应该包含对象中心的两个坐标,所以在这种情况下状态向量的维度应该是 2;以类似的方式, 如果一个物体的状态是由属于其形状的 S 点形成的,那么我将指定 2*S 作为dynam_params值(即坐标数等于2*S)。这是对的吗?
  • 样本数就是粒子数,因此参数sample_count必须与用于跟踪物体的粒子数一起设置。
  • 测量矢量的尺寸如何?measure_params参数的目的是什么?

cvConDensInitSampleSet函数初始化冷凝算法的样本集。哪个规则用于初始化样本集?哪个分布用于初始化样本集?给定要跟踪的对象的起始位置和边界框,此函数如何初始化样本集?

执行算法的完整交互(选择预测测量)的函数是什么?如何更新示例?

有没有教程详细解释如何使用OpenCV中可用的功能?

凝聚算法的一个工作示例可以在opencv和ross(同一作者)的问答中找到:

http://answers.ros.org/question/55316/using-the-opencv-particle-filter-condensation/

http://answers.opencv.org/question/6985/syntax-for-particle-filter-in-opencv-243/

这是粒子过滤器的另一种实现,使用了OpenCV和GSL库。作者提供的源代码易于阅读。也许你可以从中学到一些东西。