openCV卡尔曼滤波器与java - 基本概念

时间:2017-07-30 15:37:00

标签: java opencv computer-vision kalman-filter

我正在做的是编写视觉测距算法,这是一种基于图像特征计算移动(android→Java)设备的当前位置和姿势的算法。

我目前从algortihm收到的结果包含许多异常值,导致高漂移和错误的轨迹。

该算法基本上需要两帧并计算相机之间的旋转和平移。然后,通过向上添加这些值,从起点/姿势看到的总位置和旋转由此计算:

   totalRotation = multiply(rotation,totalRotation);
   Core.add(position,(multiply(totalRotation,translation)), position);

其中totalRotation是到起点的绝对旋转,position是空间中的位置(说明点是0,0,0),rotation是最后一个之间的旋转当前帧translation是最后一帧和当前帧之间的转换,multiply是我自己的方法,只计算矩阵乘积。

所以我这里总共有12个值:

  • 最后一帧和当前帧之间的相对运动:x,y,z,alpha,beta,gamma
  • 空间中相对于起点的位置/姿势:x',y',z',alpha',beta',gamma'

我希望使用openCV卡尔曼滤波器来平滑我的轨迹(并改善我的“当前位置”值)。

有谁能告诉我如何设置我的过滤器?我对卡尔曼滤波器很新,我无法理解各个参数的含义以及如何/何时使用哪种方法。

提前致谢!

0 个答案:

没有答案