5

私はOpenNI/NITEでKinectを使用しています。OpenNIはNITEの助けを借りて人間の手を追跡することができます。また、OpenNIは追跡されたハンドラインを滑らかにすることができます、そして私はそれがどのようにそれをするかを理解しようとしていました。

カルマンフィルターを使ってみましたが、古い手の位置をカルマンの推定手の位置に置き換えましたが、それでもOpenNIの方がはるかにスムーズです。

オンラインデータをスムーズにする方法や、カルマンフィルターでパラメーターを設定する方法についての手がかりをいただければ幸いです(パラメーターの機能はすでにわかっているので、ハンドトラッキングに固有のものです)。

4

2 に答える 2

5

カルマンフィルターの使用は、思ったほど簡単ではありません。適切なモーションモデル、適切な状態ベクトル、および適切な測定モデルを選択する必要があります。あなたの問題については、方向(画面上の手のx、y、zの位置)ではなく、位置の3D追跡を行うと思うので、次を選択します。

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

また、エラーの共分散を適切に設定する必要があります。これにより、速度を一定に選択する際のエラーがモデル化されます(これは正しくありません)。

この論文をチェックしてください。フィルタの方程式の予測と更新に必要なJacobiansを見てください。それらは重要です。それらを同一と見なすと、フィルターは機能しますが、Jacobians W(Qを乗算)、H、およびAを適切に選択した場合にのみ正確に機能します。QとRは対角線であるため、実験的に値を指定してください。

これがお役に立てば幸いです。

于 2012-05-25T07:36:11.327 に答える