我在OpenCV中跟踪摄像机流中检测到的两条线的位置。现在,我为每条线使用单独的卡尔曼滤波器,但它们的位置高度相关 - 它们可能非常缓慢地分开,而另一方面测量(线路检测)非常嘈杂。
由于相关性,我希望将两条线组合在同一个过滤器上进行跟踪。如果做得好,这应该会显着降低误报边缘检测的影响,因为它们会相对跳到另一条线;另一方面,两条线路的位置合理地预计会产生很大影响。
我的问题是定期检测线条,而不是每一帧,通常不会同时检测。通常的情况是只检测左线,或者检测右线(或没有);很少会同时检测到两条线。
现在,我为每行的过滤器在每一帧上调用predict()
,如果检测到一行,也执行correct()
。但是,如果我想对两条线使用相同的滤波器,我怎样才能对该线进行部分校正?我想的一步可能是将measurementMatrix
中其他线路的组件归零用于该特定测量,但是measurementNoiseCov
呢?
在this document中,我看到以下内容:
顺序测量处理
如果测量噪声矢量分量不相关,则可以一次一次测量进行状态更新 因此,矩阵求逆由标量反转代替 程序:如前所述的状态预测
- 标量测量按顺序处理(按任意顺序)
- 使用标量测量方程。
这是等效的(如果我假设不相关的测量噪声是一个足够好的近似值)?否则,我如何修改OpenCV中的correct()
?