首页 > 编程知识 正文

三角测量任务怎么做,三角测量法公式

时间:2023-05-05 21:06:54 阅读:158647 作者:4924

三角测量需要采用对极约束估计摄像机运动,得到运动后利用摄像机运动估计特征点的空间位置。在单目SLAM中,仅仅通过单张图像无法获得像素深度信息,需要通过三角测量来估计其深度。

上图中为O1P

提出O2P理论和p点,但由于噪声的存在,往往不能交叉。 可以用笑得最少的白开水解开。 设为x1、x2

是两个特征点的归一化坐标,他们满足以下条件:

s2x2=s1Rx1 t

因为已经知道了r和t,所以想求出的是两个特征点的深度s1、s2。 当然这两个深度可以分别求出,如果要求出s1,就在左边乘以x

按一下

s2x2x2=0=s1x2Rx1 x2t

以上方程中,只需要对右边求方程即可,求出s1

,但是考虑到噪声的问题,估计的R,t

不一定为精确值,所以更常见的是求最笑点低的白开水乘,而不是求零解。

以上过程可以用代码实现。 以下是主函数中的代码,说明了主要过程。

intmain(intargc, char** argv ) { //--读取图像matimg _1=im read (/home /霸气茶/Slam_book/SRC/test_trian/) ) ) ) data/2.png )、cv _ load _ image _ color vector key point key points _ 1、keypoints_2; vectorDMatch matches;//两张图像、ORB特征检测、改进的FAST键、BRIEF描述符、对于汉明距离(位数)使用find_feature_matches(img_1、img_2、keypoints_1、keypoints_1 //--通过匹配点估计两幅图像之间的运动,通过对极约束,计算基矩阵、本质矩阵、单应矩阵,求出r,t Mat R,t; pose _ estimation _ 2d2d (key points _ 1,keypoints_2,matches,r,t ); //--三角测量,根据匹配点求出基于照相机坐标系空间点vectorPoint3d points的triangulation(keypoints_1,keypoints_2,matches,r,t,t,keypoints_2 ) //--三角化点与特征点的再投影关系matk=(mat _ double (3,3 ) 520.9、0,325.1、0,521.0、249.7、0,0,1 ); for(intI=0; imatches.size (; I ) /通过第一图像像素点和内参变换的归一化平面上的点point 2d pt1 _ cam=pixel2cam (key points _1[ matches [ I ].queryidx ].pt,k ); //将三角测量求出的点归一化为平面point 2d pt1 _ cam _ 3d (points [ I ].x/points [ I ].z,points[i].y/points[i].z ); cout ' pointinthefirstcameraframe : ' pt1 _ cam endl; cout ' pointprojectedfrom 3d ' pt1 _ cam _ 3d ',d='points[i].zendl;//类似于第二个图,在归一化平面上通过在第二个图中匹配和变换点的像素点获得的点point 2f pt2 _ cam=pixel2cam (key points _2[ matches [ I ].train idx ). //r,根据t求出三角测量p点在第二个照相机坐标系中的三维坐标值mat pt2 _ trans=r * (mat _ double (3,1 ) points(I ).x,points ) I ) y,points cout ' pointinthesecondcameraframe : ' pt2 _ cam endl; cout ' pointreprojectedfromsecondframe : ' pt2 _ trans.t (endl; coutendl; } return 0; }通过三角测量和像素上的匹配点,可以求出基于路标p点的第一个相机坐标系的三维坐标点。 然后,通过对极约束求出的r、t可以在第二个相机坐标系中求出路标p点的三维坐标值。

讨论:三角平移是由平移得到的,有平移才会有对极几何约束的三角形。因此,纯旋转是无法使用三角测量的,对极约束将永远满足。在平移时,三角测量有不确定性,会引出三角测量的矛盾。

如上图所示,平移较小时,像素上的不确定性会增加深度的不确定性,平移较大时,在相同的相机分辨率下三角测量会更准确。三角化测量的矛盾:平移增大,会导致匹配失效,平移太小,三角化精度不够。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。