2016-07-21 29 views
0

opencvカメラキャリブレーション座標変換について混乱します。私は私のカメラを較正するコード例を使用し、私はこの結果を得た:私はカメラ座標系における点を乗算するために、このカメラ行列を使用すると、P = [50、50、1.35]言うカメラの座標をピクセル座標に変換するopencv

enter image description here

を出力結果が大きすぎて画素座標にすることができない。何がここに間違っていますか?私は何か見落としてますか ?

画像は1920×1080これはチェス盤構成ファイルの情報である:

enter image description here

+0

画像内にない点を投影することは完全に可能です。非常に大きいXとZ(またはYとZ)の比率を選択します。それは私がZでカメラから1.5メートル離れている点を投影したいのですが、それはXとYで50メートル離れています。 – Catree

+0

@Catree「あなたが比を選ぶことはかなりわかりませんXとZの間(またはYとZ)は非常に大きいです。 " – Johnnylin

+0

この投稿はとてもうまくプロセスを説明していますhttp://stackoverflow.com/questions/12299870/computing-xy-coordinate-3d-from-image-point? rq = 1 – damianodamiano

答えて

2
あなたは透視投影モデルの documentation異なる式は、さらに次の画像に示すOpenCVの中に見つけることができる

(これにより、link)。カメラフレームFcの点P=(X,Y,Z)と仮定すると

Camera model

、その正規化されたカメラフレーム内座標である:

(歪みを想定していない)画像平面上に
x' = X/Z 
y' = Y/Z 

とその投影:

u = fx * x' + cx 
v = fy * y' + cy 

fxfyの場合、焦点距離p ixelとcxcyイメージ内の主点の座標。

あなたの場合、Zはカメラから1.35離れていますが、他の2つの座標はZ座標に比べて遠すぎます。

数学的に問題はありません。あなたのポイントPはあなたのカメラでは見えないということだけです。

+1

これは、ポイントが視界の外側にあることを意味します。 – Johnnylin

+0

正確には、必要な理論的視野を計算することができ、177°( '2 * atan(50/1.35)')のようなものを得なければなりません。 – Catree

関連する問題