巨大的重新投影错误通过其他GPS数据在立体台上的适当点进行了三角调节



我正在使用基于OPENCV库的2D-3D算法来求解VSLAM任务。现在,我正在尝试使用GPS数据进行地理发行。我转换每个相机的r,然后使用琐碎的函数进行三角剖分匹配点

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分解三角剖分对相机中心的敏感吗?

只是在代码的另一部分中错误。抱歉。

最新更新