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

标签 computer-vision tracking smoothing kalman-filter

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

我尝试使用卡尔曼滤波器,用卡尔曼估计的手部位置替换旧的手部位置,但 OpenNI 中的平滑度仍然要好得多。

我很感激有关如何平滑在线数据或如何在卡尔曼滤波器中设置参数的任何线索(特定于手部跟踪的东西,因为我已经知道参数的作用)。

最佳答案

使用卡尔曼滤波器并不像看起来那么容易。你需要选择一个好的运动模型、一个好的状态向量和一个好的测量模型。对于您的问题,我猜您要对位置进行 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

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

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

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

关于computer-vision - 使用卡尔曼滤波器在线平滑手部跟踪数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10558956/

相关文章:

c++ - OpenCV - 两个完全不同的图像使用 BFMatcher 进行更多匹配

html - 跟踪电子邮件是否被阅读

iphone - 如何在没有 UDID 的情况下跟踪 iOS5 上的下载

algorithm - 检测和删除 GPS 点杂乱聚合的策略?

python - 如何改变NLTK中朴素贝叶斯分类器的平滑方法?

ios5 - 相机捕获图像的形状检测(圆形、正方形、矩形、三角形、椭圆形)+ i OS 5 + Open CV

c++ - 如何配置概率占用图人员检测器

python - 高斯平滑python中的图像

r - 平滑连续二维点

c++ - 如何将特征雅可比 SVD 与特征仿射矩阵一起使用