2

私はここにいるのは初めてです - だから私が偽物を作ったら我慢してください!

私の質問は、3 つ (またはそれ以上) の既知の 3D ポイントがそのカメラから見た画像のどこにあるかに基づいて、カメラの 3D 位置と向きを決定するための優れたアルゴリズムはありますか?

私の計算では、6つの未知数を持つ6つの方程式に問題が生じますが、一般的な解を探していますが、方程式は複雑で三角関数です。

どんなアイデアでもありがたく受け取りました!

乾杯、

マイク

4

6 に答える 6

2

一般的に、唯一の解決策はないと思います。

これを、それぞれ 3 つの未知数からなる 2 つの問題 (位置と向き) に分けることができます。最初に、カメラが未知の歪みを導入しないと仮定します (たとえば、球体をフィルムの平らな部分に投影することによる)。向きを無視すると、オブジェクト間の角度分離が測定されます。ここから先は、点が 3 つしかなく、色の違いか何かで区別できると仮定します。既知の 2 点間の角度を測定すると、空間内の 2 次元の表面になります (図を簡単にプロットすることはできませんが、電気力線のように見えます)。別のポイントを追加すると、交差する別のサーフェスに移動します。多くの縮退があり、方程式が完全に正確な解を持っていることは明らかではありません。

注目するすべてのペアがボリュームの制約を課すことに注意する価値があるため、最初に最も鈍角を見て、カメラの位置に制限を設けると便利な場合があります。

位置を決定できれば、方向付けは簡単で、2 つの (重なり合わない) ポイントのみが必要です。

于 2010-03-02T15:27:07.743 に答える
1

考えてみると...実際にはやや単純なアイデアです...これが私の考えです:

  1. 3 点が置かれている平面を見つけます。この平面は、投影面と平行になります。
    1. 点 A、B、C があると仮定します。A から B、A から C に向かうベクトルの外積を求めます。
    2. それを正規化します。それはあなたの飛行機の正常です。
    3. Ax + By + Cz + D = 0 の値を代入して重心の方程式を解きます。ここで、A は法線の x、B は法線の y、C は法線の z であり、D について解きます。 Dがあれば、平面の表現があります。
  2. その平面上の 3 つのポイントすべてを囲む境界長方形を見つけます。これがレンダリング ジオメトリになり、錐台 (レンダリング ボリューム) の端になります。
  3. 先ほど見つけた外接する長方形の中心点を見つけます。これが最初の投影中心です。
  4. ポイントから法線を加算 (または減算) することにより、その中心点を外接する四角形から離します。目的の視野に到達するまで移動を続けます。
于 2010-03-03T19:42:48.080 に答える
0

これは仮想カメラですか、それとも実際のカメラですか? また、f/ストップと焦点距離、さらには光学系の形状も確認する必要があります。それは、位置をどれだけ正確にする必要があるか、および撮影されたオブジェクトが互いにどれだけ離れているかに大きく依存します. わずか数フィートの焦点で 200mm ズームを使用している場合、視野は数インチしかない場合があります。しかし、4.5mm のフル サークル フィッシュアイを使用し、直接円形投影を行うと、180 度の視野が得られます。

于 2010-03-02T15:41:49.927 に答える
0

3点以上あれば確実に可能です。

これがスタートラッカーが宇宙船の姿勢を制御する方法です。

于 2010-05-04T08:17:37.267 に答える
-2

キャリブレーションされたカメラで - はい。
必要なのは、焦点距離 (ピクセルを角度にマップする)、カメラの中心軸 (光線をシーンに入れる) だけで、その光線にポイントを投影するのは簡単です。

OpenCV を見てみましょう。ステレオ用のカメラ キャリブレーションの一部としてこれを行います。

代替テキスト http://img.amazon.ca/images/I/41Ob1y3baeL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU15_.jpg

于 2010-03-02T15:40:20.647 に答える