2016-11-27 50 views
0

我正在使用基於OpenCV庫的2D-3D算法解決VSLAM任務。現在我正在嘗試使用GPS數據進行地理配準。我變換R,每個攝像機的噸,然後使用平凡函數巨大的重投影誤差使用附加GPS數據對立體像對上的相應點進行三角測量

Triangulate(const cv::KeyPoint &kp1, const cv::KeyPoint &kp2, const cv::Mat &P1, const cv::Mat &P2, cv::Mat &x3D) { 
cv::Mat A(4,4,CV_32F); 

A.row(0) = kp1.pt.x*P1.row(2)-P1.row(0); 
A.row(1) = kp1.pt.y*P1.row(2)-P1.row(1); 
A.row(2) = kp2.pt.x*P2.row(2)-P2.row(0); 
A.row(3) = kp2.pt.y*P2.row(2)-P2.row(1); 

cv::Mat u,w,vt; 
cv::SVD::compute(A,w,u,vt,cv::SVD::MODIFY_A| cv::SVD::FULL_UV); 
x3D = vt.row(3).t(); 
x3D = x3D.rowRange(0,3)/x3D.at<float>(3); } 

,其中KP1和KP2三角匹配點 - 對左右圖像,P1,P2關鍵點 - 投影矩陣

我所面臨奇怪問題:當我通過一些巨大的常數簡單地改變攝像機中心時,我在舊的合適的三角點上有很大的重投影錯誤。 SVD分解對於攝像機中心敏感的點三角測量是否規模?

+0

您如何使用GPS數據進行地理參考?你只是翻譯相機的位置? – Ash

回答

0

只是在代碼的另一部分錯誤。抱歉。

+0

這不是一個答案。如果你明白你的問題對任何人都沒有幫助 - 只需將其刪除即可 –

相關問題