私はモーションアプリケーションの構造に取り組んでおり、オブジェクトに配置された多数のマーカーを追跡して、オブジェクトの剛体構造を決定しています。
このアプリは基本的に、複数のカメラビューに対して標準のLevenberg-Marquardt最適化を使用し、予想されるマーカーポイントと各ビューから2Dで取得されたマーカーポイントの違いを最小限に抑えています。
各マーカーポイントと各ビューについて、次の関数が最小化されます。
double diff = calculatedXY[index] - observedXY[index]
ここで、calculatedXY値は、最適化によって検出する必要のある未知のパラメーターの数に依存し、observedXYは2Dのマーカーポイントの位置です。合計で、私が最小化しようとしている上記のような機能の数(マーカーポイント*ビュー)があります。
すべてのマーカーポイントを確認するカメラのシミュレーションをコーディングしましたが、実行中に照明、オクルージョン、またはカメラビューに表示されないためにポイントが表示されない場合の処理方法を考えていました。アプリの実際の実行では、Webカメラを使用してオブジェクトを表示するため、すべてのマーカーが一度に表示されるわけではなく、コンピュータービジョンアルゴリズムの堅牢性によっては、を検出できない場合があります。常にマーカー。
マーカーポイントが観測できない場合は、差分値を0(シグマ二乗差= 0)に設定することを考えましたが、結果が歪む可能性はありますか?
私が気付いたもう1つのことは、ビューが多すぎるとアルゴリズムがそれほど良くないことです。ビューが多すぎると、悪い解決策を推定する可能性が高くなります。これは、ビューが多すぎる場合に極小値に達する可能性が高くなるため、バンドル調整の一般的な問題ですか?