これまでのところ、私のプロセスは次のとおりです。
マーカーは、既知のサイズの正方形のマーカーです。例を以下に示します。
- マーカーを検出する
- POSITを使用して、カメラに対するマーカーの移動 + 回転を取得します。結果は、カメラ座標空間での行列の変換行列です。
現在、2 つのマーカーの関連するコーナー間の距離を mm 単位で見つけようとしています。以下に例を示します。
距離とは、ユークリッド距離 (sqrt(x^2 + y^2 + z^2)) を意味します。
mm 距離の参照があるので可能であると考えています (任意のマーカーのエッジは既知の mm 距離です) が、私が持っている 2 つの変換行列だけからどのようにこれを取得するかについてはわかりません。
編集:
これまでのところ、2 番目の変換行列に最初の変換行列の逆数を掛けて、結果の変換を調べることで、マーカーの中心間の相対距離を取得することができました。
法線と点を取得することで、各マーカーの平面を取得できると考えました。そこから、2D ポイントがその平面とどのように交差するかを見ることで、コーナーの 3D 座標を取得できるはずであり、そこから残りは簡単になるはずです。マーカーの法線を取得する方法と、コーナーを表す 2D 座標が平面と交差するポイントを計算する方法が完全にはわかりません。
追加情報:
- XNA と C# の使用
- ビデオ入力とマーカー検出に AForge.net を使用します。