16

正確な位置がわかっている 3D 空間に 3 つのポイントがあります。それらが次のとおりだとします: (x0,y0,z0)(x1,y1,z1)および(x2,y2,z2)

また、これらの 3 点を見ているカメラがあり、カメラ ビュー プレーン上のこれらの 3 点の 2D 位置を知っています。たとえば、カメラの視点からは 、、、 となり(x0,y0,z0)ます。(x0',y0')(x1,y1,z1)(x1',y1')(x2,y2,z2)(x2',y2')

これらの 3D ポイントをカメラ ビュー プレーン上の 2D ポイントに投影する投影行列を見つける最も簡単な方法は何ですか。カメラの位置については何もわかっていません。

4

4 に答える 4

12

これにより、3 つの変数の 3 つの方程式のそれぞれの 2 つのセットが得られます。

a*x0+b*y0+c*z0 = x0'
a*x1+b*y1+c*z1 = x1'
a*x2+b*y2+c*z2 = x2'

d*x0+e*y0+f*z0 = y0'
d*x1+e*y1+f*z1 = y1'
d*x2+e*y2+f*z2 = y2'

状況に応じて連立方程式を解く最も簡単な方法を使用してください (これらを「手で」解くのは難しくありません)。次に、変換行列は ((a,b,c)(d,e,f)) です。

...

実際には、これは単純化しすぎており、カメラが 3D 座標系の原点を指しており、視点がないことを前提としています。

観点から見ると、変換マトリックスは次のように機能します。

               ( a, b, c, d )   ( xt )
( x, y, z, 1 ) ( e, f, g, h ) = ( yt )
               ( i, j, k, l )   ( zt )

( xv, yv ) = ( xc+s*xt/zt, yc+s*yt/zt ) if md < zt;

しかし、4x3 行列は 12 自由度よりも制約があります。

a*a+b*b+c*c = e*e+f*f+g*g = i*i+j*j+k*k = 1
a*a+e*e+i*i = b*b+f*f+j*j = c*c+g*g+k*k = 1

したがって、「中心」座標 (xc,yc )。

したがって、4 つの点があり、2 次元の視点をディスプレイの中心に相対的に変換すると、13 の変数で 14 の連立方程式を取得して解くことができます。

残念ながら、6 つの方程式は線形方程式ではありません。幸いなことに、これらの方程式のすべての変数は -1 から 1 の間の値に制限されているため、おそらく方程式を解くことは可能です。

于 2008-09-25T01:07:10.307 に答える
3

カメラには (少なくとも) 7 つの自由度があります。位置に 3 つ、向きに 3 つ、FOV に 1 つです。私が間違っていれば、誰かが私を訂正してくれると確信していますが、完全な解決には 3 点では不十分なようです。

この問題の一般的な解決策については、Graphics Gems II で「View Correlation」を参照してください。

于 2008-09-25T01:13:25.830 に答える
2

あなたが探しているのは、ポーズ推定アルゴリズムと呼ばれるものです。OpenCV での POSIT 実装をご覧ください: http://opencv.willowgarage.com/documentation/c/calib3d_camera_calibration_and_3d_reconstruction.html#posit

4 つ以上のポイントが必要であり、それらが同じ平面上にない場合があります。

この実装のチュートリアルはこちら: http://opencv.willowgarage.com/wiki/Posit

ただし、注意してください: チュートリアルでは正方形のビューポートが使用されているため、すべてのビュー座標は -1,-1 から 1,1 の範囲にあります。これにより、これらはカメラ座標系 (アスペクト比補正前) にあると想定されます。これは当てはまりません。たとえば、アスペクト比が 4:3 のビューポートを使用する場合、入力座標は -1.3333,-1 から 1.3333,1 の範囲にある必要があります。

ところで、ポイントが同じ平面上にある必要がある場合は、OpenCV の CameraCalibration アルゴリズムを調べることもできますが、これは設定がより複雑で、入力としてより多くのポイントが必要になります。ただし、カメラの歪み情報と固有パラメータも得られます。

于 2011-02-14T09:35:35.630 に答える
0

決定的な解決策を見つけるのに十分な情報はないと思います。カメラの位置やビュー プレーンを知らなくても、この問題を解決できるマトリックスは無限にあります。

于 2008-09-25T01:08:34.513 に答える