2016-08-20 12 views
1

ステレオビジョン(2 IRカメラ)から3Dポイント座標を生成する小さなPythonスクリプトを作成しました。 3D座標は間違いありません。3D点の問題点

私は3番目のRGBカメラを持っており、校正行列を与えられました(私はそれらを検証できません)。Kは組み込み関数の行列で、R、tは外部パラメータの要素です。 RGB画像は1280x800ですが、適切な対応はできません。

投影式「Pcolor」をPcolor = K [R | t] として導き、次のようにXYZ 3D座標(「Pworld」という名前)を再投影すると、 enter image description here

私は(u、v、w)を得ることが予想されるので、wで除算した結果を正規化しました。

#import numpy as np 
ExtrColor = np.concatenate((Rcolor,Tcolor), axis = 1) 
#Rcolor is the 3x3 rotation matrix, Tcolor the column translation array 
# after calculation of X,Y,Z 
Pworld = np.matrix([[X], [Y], [Z], [1]]) 
Pcolor = np.dot((np.dot(Kcolor,ExtrColor)),Pworld) 
u = round(Pcolor[0,0]/Pcolor[2,0]) 
v = round(Pcolor[1,0]/Pcolor[2,0]) 

そして私は12000の代わりに画像(X < 1280およびy < 800)の範囲にあるのより大きいUV値を得ることを見出しました。

私は問題が何であるかを把握することはできません。誰も似たような問題を抱えていますか? 私はXYZ座標のスケールファクタの問題については考えていませんが、この問題のこの定式化では効果がないはずです。 私のnp.dotの使用に問題はありますか?私はそれが小さなエラーであると確信していますが、私はそれを見ることができません。

回答ありがとうございます(と英語が苦手です)!

スタックオーバーフローで同様の質問を確認したところ、hereの問題は類似しているようですが、方法が異なります。

PSことが可能であるならば、私は、OpenCVのかの機能の他のライブラリを使用して結果を得ることはしたくない。この時間は

答えて

0

更新:IR二つのカメラの キャリブレーション(:問題は、このように思わおよびRGB)は同じ基準で作成されておらず、どちらも真であると認められています。