OpenCV卡尔曼顺序测量

时间:2017-08-25 20:44:56

标签: matlab opencv math kalman-filter

我在OpenCV中跟踪摄像机流中检测到的两条线的位置。现在,我为每条线使用单独的卡尔曼滤波器,但它们的位置高度相关 - 它们可能非常缓慢地分开,而另一方面测量(线路检测)非常嘈杂。

由于相关性,我希望将两条线组合在同一个过滤器上进行跟踪。如果做得好,这应该会显着降低误报边缘检测的影响,因为它们会相对跳到另一条线;另一方面,两条线路的位置合理地预计会产生很大影响。

我的问题是定期检测线条,而不是每一帧,通常不会同时检测。通常的情况是只检测左线,或者检测右线(或没有);很少会同时检测到两条线。

现在,我为每行的过滤器在每一帧上调用predict(),如果检测到一行,也执行correct()。但是,如果我想对两条线使用相同的滤波器,我怎样才能对该线进行部分校正?我想的一步可能是将measurementMatrix中其他线路的组件归零用于该特定测量,但是measurementNoiseCov呢?

this document中,我看到以下内容:

  

顺序测量处理
  如果测量噪声矢量分量不相关,则可以一次一次测量进行状态更新   因此,矩阵求逆由标量反转代替   程序:如前所述的状态预测
   - 标量测量按顺序处理(按任意顺序)
   - 使用标量测量方程。

这是等效的(如果我假设不相关的测量噪声是一个足够好的近似值)?否则,我如何修改OpenCV中的correct()

0 个答案:

没有答案