OpenCV には、ステレオ カメラからの 3D 再構成に対する多くのサポートが含まれています。私の場合、2 台のカメラがあり、ある点の 3D 座標を知りたいです。
私が持っているもの:
- 両方の画像上の点のピクセル座標
- 既知の内因性および外因性のカメラ パラメーター
取得したいもの: この点を 3D で調整する
OpenCV には、ステレオ カメラからの 3D 再構成に対する多くのサポートが含まれています。私の場合、2 台のカメラがあり、ある点の 3D 座標を知りたいです。
私が持っているもの:
取得したいもの: この点を 3D で調整する
この他の投稿で同じ質問に答えました。
外部パラメータがある場合は、カメラ ポーズがあります。カメラのポーズと 2D ポイントを使用して、3D ポイントを投影できます (2D ポイントと外部関数が正しい場合、各カメラは同じ結果になるはずです)。ポーズをホモグラフィに変換するだけです。リンク先の記事で説明しています。
幸運を!
opencv にこのための構造があるかどうかはわかりません。ただし、Angle-Side-Angle のサインの法則を使用して、ポイント -> カメラ -> 他のカメラの内角を基準点として使用して、カメラに対して水平方向に平行な直線距離を構築できることを知っています。
次に、距離を取得したら、同じ構成を使用して垂直位置を計算できます。角度は、死点から、いずれかのカメラを基準にしてポイントの上または下までの距離でカウントされ、最初に見つかったオブジェクトまでの距離です。その仮想点 (カメラに対して水平なオブジェクトの上) とオブジェクトの間の角度として 90 度を使用できます。
2 つのビューから点を三角測量した経験がない場合は、Hartley の本と Zisserman の本を読む必要があります。この本では、2D 点の対応、カメラの姿勢、およびカメラのキャリブレーションを備えた、実装が非常に簡単な線形三角測量法が説明されています。
このメソッドのコード例をここに示します。上記の本を参考にしています。
ただし、満たさなければならない非常に重要な条件があります。まず、測定点の対応は、エピポーラ制約に関して正しくなければなりませんx*E*x' = 0
。第 2 に、光線間の角度は、2 度など、数度よりも大きくする必要があります。