キャリブレーションされていない画像、つまり単一の画像の絶対カメラ位置を推定しようとしています。3D モデル (オブジェクト座標) と 2D イメージ (UV 座標) の 2 セットのキー ポイントがあります。キーポイントが正確であると仮定しましょう。次に、次の手順を実行します。
- 標準の直接線形変換 (DLT) を適用して、射影行列 P を推定します。3 次元の「世界」から 2 次元の画像変換 x = P*X;
- OpenCV DecomposeProjectionMatrix() 関数は、射影行列を外因性行列と内因性行列に分解するのに役立ちます: P = K {R|t};
- 回転行列と平行移動行列の最初の推測を改善するために、SolvePnP (「最良の」ソリューションを提供することを理解した反復法を使用) 関数をキー ポイント セットとカメラ パラメータに適用します。
いくつかのケースで組み合わせたアルゴリズムを実行しているときに、ほとんどのケースで SolvePnP がグラウンド トゥルースに非常に近い結果を返すことに気付きました。休符の結果は不正確で、回転と移動は現実とはかけ離れています。
Q: 現在のアルゴリズムが失敗するこれらのケースを改善することは可能ですか? OpenCV CameraCalibrate() に基づいて組み込みパラメーターを最適化するか、他の SolvePnP アルゴリズムを適用しますか?