2016-08-20 55 views
1

我做了一個小小的python腳本,可以產生一些3D點座標,從立體視覺(2個IR相機)中導出它們。 三維座標無疑是正確的。三維點相關的問題與2D相對應

現在我有了第三個RGB相機,並給出了校準矩陣(我無法驗證它們):K是內在函數矩陣,R,t是外部參數的組成部分。 RGB圖像是1280x800但我無法設置正確的對應關係。

我認爲這將很容易使用投影公式,導出投影矩陣「Pcolor」爲Pcolor = K [R | t] 並重新投影XYZ三維座標(名爲「Pworld」),如下所示:我期望獲得(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]) 

然後我發現我獲得ùv值大於12000而不是在圖像(X < 1280和y < 800)的範圍內越大。

我找不出什麼問題。有沒有人有過類似的問題? 我不認爲XYZ座標系中的比例因子問題,它在這個問題的表述中應該是無效的。 是我使用np.dot的問題嗎?我很確定這是一個小錯誤,但我看不到它。

感謝您的回答(並對窮英語感到抱歉)!

我在堆棧溢出中檢查了類似的問題,here這個問題似乎很相似,但方法不同。

PS這一次我不想使用OpenCV的或功能的其他庫獲得的結果,如果有可能

回答

0

更新:這個問題似乎是這樣的:兩個攝像頭 校準(IR和RGB)都不是用相同的標準制作的,都被認爲是真實的。