使用卡尔曼滤波器在线平滑手部跟踪数据

Oua*_*rif 5 tracking computer-vision smoothing kalman-filter

我正在使用Kinect和OpenNI/NITE.OpenNI可以在NITE的帮助下跟踪人手.此外,OpenNI可以平滑跟踪的手线,我试图弄清楚它是如何做到的.

我尝试使用卡尔曼滤波器,用卡尔曼估计的手位置替换旧手位置,但OpenNI中的更平滑更好.

我会很感激如何流畅的在线数据或如何设置参数卡尔曼滤波器任何线索(具体以专人跟踪的东西,因为我已经知道是什么参数做).

Jav*_*ock 5

使用卡尔曼滤波器并不像看起来那么容易。你需要选择一个好的运动模型、一个好的状态向量和一个好的测量模型。对于您的问题,我猜您要对位置进行 3d 跟踪,而不是方向(屏幕上手的 x、y 和 z 位置),我会选择以下内容:

State vector =[x, y, z, v_x, v_y, v_z]

Update equations: (x,y,z) = (x,y,z)+ (v_x,v_y,v_z)*delta(t)
velocity would be constant
Run Code Online (Sandbox Code Playgroud)

您还需要正确设置误差的协方差,因为这将模拟选择速度为常数的误差(这是不正确的)。

检查这张纸。查看预测和更新滤波器方程所需的雅可比行列式。它们很重要。如果您认为它们是相同的,则过滤器将起作用,但只有在您正确选择雅可比矩阵 W(乘以 Q)、H 和 A 时,它才能准确工作。Q 和 R 是对角线,请尝试给出实验值。

希望这有帮助,祝你好运。

  • 我试过这个模型,也试过加速。尽管如此,虽然它在运动时确实平滑了信号,但当手静止不动时,仍然会出现抖动。此外,模型本身似乎是错误的。那就是使用标准运动方程来模拟手部运动,手部并没有真正遵循那个,是吗? (2认同)