OpenCV-2.4.3的粒子滤波器?

时间:2013-02-06 05:45:46

标签: opencv particle-filter

我在c中使用opencv-2.4.3,我遇到了脸部跟踪部分,我想使用粒子过滤器进行跟踪,我在opencv-2.1版本中得到它但新的opencv版本似乎没有这个过滤器或者可能名字会有所不同,有没有人使用opencv-2.4.3并且可以告诉我如何在opencv-2.4.3中使用粒子(冷凝)过滤器

3 个答案:

答案 0 :(得分:5)

粒子滤波器是贝叶斯推理方法的一种非常具体的实现。冷凝是一种特殊的颗粒过滤器,因为它已被用于跟踪视觉对象而变得流行。但是,粒子过滤器应该被视为一个框架,或者可以作为可以针对每个问题实例化的架构。

据我所知,OpenCV包含了缩合算法,但您必须提供似然函数。老实说,我不会使用缩合来跟踪面部,因为它可能无法正常工作:面部的外观变化很大,并且很难定义一个动态模型,该模型遵循序列中面部的潜在变化。

有更先进,更可靠的跟踪面部方法(仅提一种,在线外观模型,http://www.cs.toronto.edu/~fleet/research/Papers/cvpr-01A.pdf)。但是如果你想要一些简单的东西,我会开始使用面部检测器,例如由级联(http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html#cascade-classifier)给出的面部检测器和使用cv::KalmanFilter::KalmanFilter的链接检测。此外,您将获得与使用cv::CamShift缩小大致相同的结果。

答案 1 :(得分:0)

正如marcos.nieto所说,粒子滤波器是一种近似工具,可以加速对象的建模(对象的描述)和搜索过程(而不是像分类器那样对搜索窗口的每个像素进行贪婪搜索)

此外,建模更新率不足以像马科斯所说的那样,以掩盖突然的外观变化,如果你增加它,你的追踪器最终会漂走。

我建议尝试使用VideoSurveillanceCascade Classifier的组合来构建基于对象的跟踪器,其中包含跨帧响应的数据关联。

答案 2 :(得分:0)

虽然您主要使用OpenCV,但请参阅Accord.NET Extensions库中的粒子滤波算法(以及卡尔曼)的C#实现。样品包括在内。 链接: https://github.com/dajuric/accord-net-extensions