17

一般的なケースでは、深度情報が3Dから2Dに移行すると失われるため、この変換を行うことは不可能であることを私は知っています。

しかし、私は固定カメラを持っていて、そのカメラマトリックスを知っています。また、既知の寸法の平面キャリブレーションパターンもあります。たとえば、ワールド座標では、コーナー(0,0,0)(2,0,0)(2,1,0)(0,1,0)があるとします。opencvを使用して、パターンのポーズを推定し、オブジェクト上の点を画像内のピクセルに投影するために必要な平行移動行列と回転行列を与えることができます。

さて、この3Dから画像への投影は簡単ですが、他の方法はどうですか?キャリブレーションパターンの一部であることがわかっている画像内のピクセルを選択した場合、対応する3Dポイントを取得するにはどうすればよいですか?

キャリブレーションパターンでランダムな3Dポイントを繰り返し選択し、2Dに投影し、エラーに基づいて3Dポイントを調整することができます。しかし、これはかなり恐ろしいようです。

この未知の点が(x、y、0)のような世界座標を持っているとすると(z = 0平面上にある必要があるため)、反復ナンセンスを実行する代わりに、適用できる変換があるはずです。 。私の数学はあまり良くありませんが、誰かがこの変換を実行して、それをどのように導き出すかを説明できますか?

4

3 に答える 3

15

これが誰かを助けることができると私が望む閉じた形の解決策です。上記のコメントの画像の規則を使用すると、中心に正規化されたピクセル座標(通常は歪み補正後)uとv、および次のような外部キャリブレーションデータを使用できます。

|Tx|   |r11 r21 r31| |-t1|
|Ty| = |r12 r22 r32|.|-t2|
|Tz|   |r13 r23 r33| |-t3|

|dx|   |r11 r21 r31| |u|
|dy| = |r12 r22 r32|.|v|
|dz|   |r13 r23 r33| |1|

これらの中間値を使用すると、必要な座標は次のようになります。

X = (-Tz/dz)*dx + Tx
Y = (-Tz/dz)*dy + Ty

説明:

ベクトル[t1、t2、t3] tは、カメラの光学中心に対するワールド座標系の原点(キャリブレーションパターンの(0,0))の位置です。符号を反転し、回転変換を反転することにより、ベクトルT = [Tx、Ty、Tz] tを取得します。これは、ワールド参照フレーム内のカメラの中心の位置です。

同様に、[u、v、1] tは、カメラの参照フレーム(カメラの中心から開始)内の観測点が存在するベクトルです。回転変換を逆にすることにより、ベクトルd = [dx、dy、dz] tを取得します。これは、ワールド参照フレームで同じ方向を表します。

回転変換を逆にするために、回転行列の逆行列がその転置(リンク)であるという事実を利用します。

これで、点Tから始まる方向ベクトルdの線ができました。この線と平面Z = 0との交点は、2番目の方程式のセットで与えられます。X=0またはY=0平面、またはそれらに平行な任意の平面との交点を見つけることも同様に簡単であることに注意してください。

于 2013-01-30T10:54:13.687 に答える
5

はい、できます。3Dワールド内のポイントをイメージプレーンにマップする変換行列がある場合は、この変換マトリックスの逆を使用して、イメージプレーンポイントを3Dワールドポイントにマップできます。3dワールドポイントのz=0がすでにわかっている場合、これはポイントの1つの解になります。ランダムな3Dポイントを繰り返し選択する必要はありません。既知の位置とカメラキャリブレーションマトリックスを備えた車両にカメラを取り付けた場合にも、同様の問題が発生しました。カメラの画像位置にキャプチャされたレーンマーキングの実際の位置を知る必要がありました。

于 2013-01-25T12:43:05.637 に答える
0

ワールド座標のポイントにZ=0がある場合(平面キャリブレーションパターンの場合に当てはまります)、回転変換を逆にする代わりに、カメラとキャリブレーションパターンから画像のホモグラフィを計算できます。

ホモグラフィがある場合は、画像上のポイントを選択し、逆ホモグラフィを使用してワールド座標での位置を取得できます。これは、ワールド座標のポイントがこのホモグラフィの計算に使用されるポイントと同じ平面上にある限り当てはまります(この場合はZ = 0)。

この問題へのこのアプローチは、SOに関するこの質問の下でも説明されています。2D画像座標をz=0の3D世界座標に変換する

于 2018-08-13T09:30:09.623 に答える