私はMatlabのカルマンフィルタの実装を試しています。カルマンフィルタを使って空気中の子供が投げたボールの動きをモデル化したいと思います。カルマンフィルタを初期化して更新するための測定値(グラウンドトゥルース値)として使用するために、イメージフレーム内のボールの位置に手作業で注釈を付けました。私は次のように6次元ベクトルであると状態を定義している:カルマンフィルタを構成し、発射運動を正しくモデル化するための状態ベクトルを定義するにはどうすればよいですか?
[X VxのアックスY VxとAyの】
X - X座標Vxと - 速度Xでアックス座標 - 加速度がXのY座標 - X Vyの座標 - xの速度はAyの座標 - xの加速度座標
カルマン・フィルタは、次の呼び出しを使用して構成されている:
カルマンフィルター= myConfigureKalmanFilter( 'ConstantAcceleration'、重心、[0.5 0.5 0.5] * 1E2、[25 、10,10]、25)。
:重心が(X、Y)(Excel文書の通り985)、最初のフレームのグランドトゥルース値以下の呼び出しを使用して生成される(フレーム以降986の)予測値に対応
[predictCentroid、状態] =予測(kalmanFilter);
カルマンフィルタは、フレームに対応するグランドトゥルース値と次の呼び出し(以降986)を使用して更新される。
正しい(カルマンフィルター、重心)。
この実験の結果は、図に示されています。
問題:Ayの値は一定ではなく、不規則に増減しているように見えます。これは、y方向に一定の加速度を与える重力を伴う発射運動の場合であるので、これらの値はあまりドリフトしてはならないが、そうではない。
注:これらの値はピクセル座標です。
「2D投影を追跡する」とは、現在、歪んだ画像を使用しており、樽型の歪みが大きいため、処理する前に画像を歪ませないようにすることです。 –
私は答えを編集しました。 – Dima
放物線が歪んでいることに私は同意します。しかし、ボールの運動面と相対的な傾きを持つカメラとの間の一定の角度を一方向に限定したとすると、gの成分を取る問題であるため、加速度はy方向で一定でなければならない一定数のボールの動きの方向。 –