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分解對於攝像機中心敏感的點三角測量是否規模?
您如何使用GPS數據進行地理參考?你只是翻譯相機的位置? – Ash