私は拡張現実のカメラポーズ推定と視覚追跡アプリケーションのトピックにしばらく取り組んでおり、タスクに関する詳細な情報はたくさんありますが、依然として多くの混乱と誤解があると思います。
次の質問は、段階的な詳細な回答に値すると思います。
- カメラの組み込み機能とは何ですか?
- カメラ外部機能とは何ですか?
- 平面マーカーからホモグラフィを計算するにはどうすればよいですか?
- ホモグラフィを使用している場合、カメラポーズを取得するにはどうすればよいですか?
私は拡張現実のカメラポーズ推定と視覚追跡アプリケーションのトピックにしばらく取り組んでおり、タスクに関する詳細な情報はたくさんありますが、依然として多くの混乱と誤解があると思います。
次の質問は、段階的な詳細な回答に値すると思います。
回答:
ここでの唯一の問題は外部パラメータを取得することであることを理解することが重要です。カメラの組み込み関数はオフラインで測定でき、そのためのアプリケーションがたくさんあります。
カメラの組み込み機能とは何ですか?
カメラ固有のパラメーターは通常、カメラキャリブレーションマトリックスと呼ばれます。私たちは書くことができます
どこで
及び α vが でスケールファクタでありおよび方向の座標、および焦点距離に比例するカメラの:及び。およびは、および方向の単位距離あたりのピクセル数です。、V fはα U = kはuと fはα V = k個のV F K uがk個のV UのV
は主点と呼ばれ、通常は画像の中心の座標です。
uはVはスキューで、とが非垂直の場合にのみゼロではありません。
組み込み関数がわかっている場合、カメラは較正されます。これは簡単に行うことができるため、コンピュータービジョンの目標ではなく、オフラインの些細なステップです。
カメラ外部機能とは何ですか?
カメラ外部または外部パラメーターは、ワールド座標系からカメラ座標系へのユークリッド変換に対応するマトリックスです。 は回転行列を表し、は平行移動を表します。3 × 4 R 3 × 3 t
コンピュータービジョンアプリケーションは、このマトリックスの推定に重点を置いています。
平面マーカーからホモグラフィを計算するにはどうすればよいですか?
ホモグラフィは、3D平面とその画像投影に関連する同種の行列です。平面がある場合、点をこの平面にマッピングするホモグラフィと、投影下の対応する2D点は
ホモグラフィを計算するには、ワールドカメラのポイントペアが必要です。平面マーカーがある場合、その画像を処理して特徴を抽出し、シーン内のそれらの特徴を検出して一致を取得できます。
Direct Linear Transformを使用してホモグラフィを計算するには、4つのペアが必要です。
ホモグラフィを使用している場合、カメラポーズを取得するにはどうすればよいですか?
ホモグラフィとカメラポーズには同じ情報が含まれており、簡単に渡すことができます。両方の最後の列は平行移動ベクトルです。ホモグラフィの列1と2つのも、カメラポーズマトリックスの列1と2つのです。これは3つのだけ左の列であり、の、そしてそれは列1および2ののCrossProductとして計算することができる直交でなければならないように。
冗長性のため、たとえば行列の要素[3,4]で分割するを正規化する必要があります。
2次元の場合を非常によく説明していますが、Jav_Rockによって提案された答えは、3次元空間でのカメラポーズの有効なソリューションを提供していません。この問題には複数の解決策が存在することに注意してください。
このホワイトペーパーでは、ホモグラフィを分解するための閉じた式を示しますが、式はやや複雑です。
OpenCV 3は、まさにこの分解(分解HomographyMat)を既に実装しています。ホモグラフィと正確にスケーリングされた組み込み行列が与えられると、この関数は4つの可能な回転と平行移動のセットを提供します。
この場合の組み込み行列は、ピクセル単位で指定する必要があります。つまり、主点は通常(imageWidth / 2, imageHeight / 2)
、焦点距離は通常focalLengthInMM / sensorWidthInMM * imageHeight
です。
focalLengthInMM / sensorWidthInMM * imageWidth
ですか?代わりに高さを選択する理由は何ですか?