6

似たような質問をいくつか見たことがあり、何を試してみるかについていくつかのアイデアがありますが、スプレッドについては何も見た覚えがありません。

だから:私は、最終的にはコンピュータビジョンベースの測定システムに取り組んでいます。

N 個のキャプチャを取得し、平行移動と回転の 4x4 アフィン変換行列の形式で姿勢推定を出力するライブラリを使用してそれらを処理します。

これらの姿勢推定には多少のノイズがあります。各回転軸のオイラー角の標準偏差は 2.5 度未満であるため、すべての方向が互いにかなり近くなっています (すべてのオイラー角が 0 または 180 に近い場合)。0.25 度未満の標準誤差は、私にとって重要です。しかし、私はすでにオイラー角特有の問題に遭遇しました。

これらの非常に近い姿勢推定値をすべて平均して、単一の最終的な姿勢推定値を取得したいと考えています。また、精度を推定できるように、広がりの尺度を見つけたいと考えています。

ローテーションの「平均」が実際には明確に定義されていないことは承知しています。

(記録として、私のコードは Numpy-heavy Python です。)

一部のキャプチャ (および一部の軸) は他のキャプチャよりも正確であることが知られているため、この平均に重み付けすることもできます。

私の印象では、並進ベクトルの平均と標準偏差を取得できます。また、回転については、クォータニオンに変換して平均を取得し、これらのクォータニオンがかなり接近しているため、OK の精度で再正規化できます。

すべての四元数にわたる最小二乗法についての言及も聞いたことがありますが、これがどのように実装されるかについての私の研究のほとんどは悲惨な失敗でした.

これは実行可能ですか?この文脈で、合理的に明確に定義された拡散の尺度はありますか?

4

2 に答える 2

3

ジオメトリのセットアップに関する詳細情報がなければ、答えるのは困難です。とにかくローテーションの場合:

  1. 3 つの単位ベクトルを作成する

    x=(1,0,0),y=(0,1,0),z=(0,0,1)
    

    それらに回転を適用し、出力を呼び出します

    x(i),y(i),z(i)
    

    matrix(i)with の位置を適用するだけです(0,0,0)

  2. あなたが持っているすべての測定値に対してこれを行います

  3. すべてのベクトルを平均化

    X=avg(x(1),x(2),...x(n))
    Y=avg(y(1),y(2),...y(n))
    Z=avg(z(1),z(2),...z(n))
    
  4. ベクトル値を修正する

    したがって、各X,Y,Z単位ベクトルを再度作成し、回転軸に最も近い軸を主軸とします。そのまま残り、直交性を確保するために、主軸と他のベクトルの外積として残りの 2 つの軸を再計算します。乗算の順序に注意してください (オペランドの順序を間違えると出力が無効になります)

  5. 平均変換行列の構築

    変換行列の構造を原点として参照してください。測定行列の平均化された原点を使用できます。

于 2015-07-12T07:32:04.313 に答える