我做了一個小小的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的或功能的其他庫獲得的結果,如果有可能