キャプチャデバイスのオイラー角が与えられた場合、カルマンフィルターは投影点の位置をフィルター処理するのに適していますか?


17

私のシステムは次のとおりです。モバイルデバイスのカメラを使用してオブジェクトを追跡します。この追跡から、画面に投影する4つの3Dポイントを取得し、4つの2Dポイントを取得します。これらの8つの値は、検出のためにややノイズが多いので、動きをより滑らかでより現実的にするためにそれらをフィルタリングしたいと思います。2番目の測定として、3つのオイラー角(つまり、デバイスの姿勢)を提供するデバイスのジャイロスコープ出力を使用します。これらは、2D位置(約20 Hz)よりも正確で、高い周波数(最大100 Hz)で動作します。

私の最初の試みは単純なローパスフィルターを使用することでしたが、遅れが重要だったので、カルマンフィルターを使用して、少しの遅延で位置を滑らかにできるようになりました。前の質問見たように、カルマンフィルターの重要なポイントの1つは、測定値と内部状態変数の関係です。ここでの測定値は、8つの2Dポイント座標と3つのオイラー角の両方ですが、内部状態変数として何を使用すべきか、オイラー角を2Dポイントにどのように接続するかについてはわかりません。したがって、主要な質問は、カルマンフィルターがこの問題に適しているのでしょうか。はいの場合、どのように?


全体の目的が最小遅延で値を平滑化することである場合、まだ試みていない場合は、最小位相フィルターの使用を試みることができます。カルマンフィルタリングによって「最小位相遅延」よりも優れた結果が得られれば、私は驚くでしょう。線形フィルターの場合、最小位相フィルターが最小の遅延を与えると予想されます。
ナイレン

@niaren:コメントをありがとう、私もこれを勉強します。
ステファンペーシャル

1
あなたの測定値が不明です。カルマンフィルターフレームワークでは、「測定」とは、実際に観測した量を指します。4つの3Dポイントを測定している場合(たとえば、複数のカメラ画像を融合することにより)、それらがあなたの測定値です。また、推定しようとしている状態変数を決定する必要があります。3Dオブジェクトの位置を経時的に追跡しようとしていますか?もしそうなら、それらはあなたの状態変数です。2D表現を表示のためだけに使用し、モデルの一部として含めることはできません。追加の詳細は、アプローチの提案に役立ちます。
ジェイソンR

Jsaonが言うように、あなたの測定値が明確ではありません。あなたが言う:From this tracking, I get four 3D points that I project on a mobile device screen, to get four 2D points. These 8 values are kinda noisyそしてその後あなたは言うWhat's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).。どっち?4つの2Dポイント、または3つのオイラー角?または、処理トレインはオイラー角-> 3Dポイント-> 2Dポイントになりますか?
ピーターK。

実際には、カメラから検出されたポイントの位置とオイラー角の2つの測定セットがありますが、それらを関連付けるのは簡単ではありません。さらに、出力としてフィルター処理された位置にのみ興味があります。質問を編集して明確にします。
ステファンペーシャル

回答:


4

ローパスフィルタリング

「単純なローパスフィルター」とはどういう意味かを知っておくとよいでしょう。

たとえば、時間測定値がk

pk=[xkyk]

ローパスフィルター処理された推定値は次のとおりです。

pkLPF=αpk1LPF+(1α)pk

すると、フィルターの約(1に近い非常に大きな群遅延が発生します。 1/(1α)

信号のモデリング:単純なアプローチ

カルマンフィルター(または同様のアプローチ)を使用するには、測定値の取得および更新方法のモデルが必要です。

通常、これは次のようになります。

pk+1TRUE=ApkTRUE+Bϵk
ここで、はプロセス(駆動)ノイズ、は状態遷移行列で、は入力行列です。ϵkAB

そして、測定されたは次のです ここで、は出力(測定)ノイズ、 は出力行列です。 、は測定ノイズ行列です。pk

pk=CpkTRUE+Dνk
νkCD

ここでは、モデルの「状態」が真の位置として選択され、測定するものが出力になります。

次に、これにカルマンフィルター方程式を適用して、真の位置の状態推定を取得できます。pkTRUE^

ただし、このアプローチは、ポイントがどのように移動するかについての知識を使用しないため、単純です(また、4つのポイントと、それらが一緒に移動する方法について持っている知識を使用しません)。

信号のモデリング:より良いアプローチの開始

このページでは、位置とオイラー角に関する問題の設定方法を示します。 必要なものとは異なることをしていますが、状態は次のとおりです。

pkTRUE=[xk yk zk x˙k y˙k z˙k x¨k y¨k z¨k ϕ ψ θ ϕ˙ ψ˙ θ˙ ϕ¨ ψ¨ θ¨ ]T

そして、測定値(出力)は

pk=[xk yk zk ϕ ψ θ ]T

そのページのすべてのモデルが実際に行っていることは、 (ただし、および)。

xkTRUE=n=0kx˙nTRUEnΔt+12n=0kx¨nTRUE(nΔt)2
x,y,z

これは単なる古典的な「運動方程式」です。ここで式(3)を参照してください。


私の低域通過フィルタリングさ推定値は以下の通りであった:
pk=αpk1+(α1)pk
ステファンPéchard

@StéphanePéchard:おっと!はい、私はあなたが通常DCでのユニットゲインを望んでいることを逃しました。それでも、1つに近い群遅延は非常に大きくなりますが、これはおそらくこのアプローチでは満足のいくものではなかったでしょう。α
ピーターK。

私がリンクした記事を適用しようとします。Atマトリックスにような微分時間値が含まれる場合、カルマン測定値を更新するたびに自分で計算する必要がありますか?
Δt;12(Δ2)
ステファンペーシャル

@StéphanePéchard:これらは「微分時間値」ではありません。ちょうどである、サンプル瞬間の間の時間。Δt1/fs
ピーターK。

1
サンプリングレート()が何であるかを知る必要があり、はその逆になります。サンプリングレートが変更されない限り、 ndを「計算」する必要があるのは、サンプリングレートが一定である場合のみです。fsΔtΔt12Δt2
ピーターK。

0

ローパスフィルターは次のようになります。

pk=αpk1+(1α)zk

ここで、は番目の観測データです。は番目の推定値です。zkkpkk

LPFは次のように変形できます。

pk=pk1+K(zkpk1)
ここで、です。K=(1α)

これは、カルマンフィルターに非常に似ています。カルマンフィルターでは、はカルマンゲインであり、一般に可変です。K

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.