私はここにいるのは初めてです - だから私が偽物を作ったら我慢してください!
私の質問は、3 つ (またはそれ以上) の既知の 3D ポイントがそのカメラから見た画像のどこにあるかに基づいて、カメラの 3D 位置と向きを決定するための優れたアルゴリズムはありますか?
私の計算では、6つの未知数を持つ6つの方程式に問題が生じますが、一般的な解を探していますが、方程式は複雑で三角関数です。
どんなアイデアでもありがたく受け取りました!
乾杯、
マイク
一般的に、唯一の解決策はないと思います。
これを、それぞれ 3 つの未知数からなる 2 つの問題 (位置と向き) に分けることができます。最初に、カメラが未知の歪みを導入しないと仮定します (たとえば、球体をフィルムの平らな部分に投影することによる)。向きを無視すると、オブジェクト間の角度分離が測定されます。ここから先は、点が 3 つしかなく、色の違いか何かで区別できると仮定します。既知の 2 点間の角度を測定すると、空間内の 2 次元の表面になります (図を簡単にプロットすることはできませんが、電気力線のように見えます)。別のポイントを追加すると、交差する別のサーフェスに移動します。多くの縮退があり、方程式が完全に正確な解を持っていることは明らかではありません。
注目するすべてのペアがボリュームの制約を課すことに注意する価値があるため、最初に最も鈍角を見て、カメラの位置に制限を設けると便利な場合があります。
位置を決定できれば、方向付けは簡単で、2 つの (重なり合わない) ポイントのみが必要です。
考えてみると...実際にはやや単純なアイデアです...これが私の考えです:
これは仮想カメラですか、それとも実際のカメラですか? また、f/ストップと焦点距離、さらには光学系の形状も確認する必要があります。それは、位置をどれだけ正確にする必要があるか、および撮影されたオブジェクトが互いにどれだけ離れているかに大きく依存します. わずか数フィートの焦点で 200mm ズームを使用している場合、視野は数インチしかない場合があります。しかし、4.5mm のフル サークル フィッシュアイを使用し、直接円形投影を行うと、180 度の視野が得られます。
3点以上あれば確実に可能です。
これがスタートラッカーが宇宙船の姿勢を制御する方法です。
キャリブレーションされたカメラで - はい。
必要なのは、焦点距離 (ピクセルを角度にマップする)、カメラの中心軸 (光線をシーンに入れる) だけで、その光線にポイントを投影するのは簡単です。
OpenCV を見てみましょう。ステレオ用のカメラ キャリブレーションの一部としてこれを行います。