赞
踩
PnP问题:就是利用其中两个相机算出三维点坐标,再利用三维点坐标和第三个相机的像平面坐标求出第三个相机的外参数。(这样计算的速度快一点。)
P3P求摄像机位姿。
思路:1.随机抽取两个点算出直线方程
2.算出其余点到这个直线的距离
3.设置阈值,计算点到直线距离小于阈值的点个数
4.进行下一次迭代,回到1,最后看哪条直线周围的点最多(这里要考虑一个需要迭代多少次的问题。)
最后周围点最多的那条直线就是我们需要的直线。
迭代次数选择。(主要是求F矩阵用的)
1.使用sift特征提取,提取图像所有匹配点
2.随机均匀采样8对点求基础矩阵F,然后使用RANSAC判断其最好的F
3.求本质矩阵E,再分解出R,T再求出M2
4.最后算出三维点坐标
与SLAM系统一样,都是以第一个摄像机坐标系为世界坐标系,其余相机都是相对它的旋转、平移。
预处理工作:由于并不知道所拍摄的对象是否直接是平面,所以每次计算需要1)计算基础矩阵F 2)计算单应矩阵H
图中绿线表示只在两个图像中有对应点,红线表示在三个图像中有对应点,每条线代表一个track,track中记录了这条线的信息(例如绿色类似(2,点的坐标),红色类似(3,点的坐标))OpenMVG中的计算会把绿色的track剔除掉。
如果两幅图像中的对应点的个数大于100就连接起来,连接起来的联通图称做G。联通图G的每一条连线称作e。
(这里的t和G都是可以用数据结构表示的,例如字典、数组)
1.计算对应点的轨迹(tracks) t
2.计算联通图G
3.从G中选取一条边e ==> G[0]、G[1]=
e
0
、
e
1
、
.
.
.
.
e_0、e_1、....
e0、e1、....
4.利用e这条边所对应的两个图像估计本质矩阵E
5.分解E,得到这两张图所对应的位姿(外参数)
6.用e就能完成重建,但e只能看到局部,所以选择t∩e的点去重建。
(举例:假设e只包含了两幅图100个对应点的信息,而track包含了3幅图,30个对应点的信息,我们只选择共有的30个对应点去重建)
7.删除G中的已重建的边e
8.如果G中还有边e:
1)选取一条满足track(e)∩{已重建3D点}最大的边e
(迭代选择e,这个e和track的交集要与已经重建的三维点交集最大)
2)利用PnP方法估计摄像机位姿(外参数)
(新选择的e中两幅图像中的对应点有部分已经重建,利用已经重建的对应点计算出新的相机位姿参数)
3)三角化新的tracks
(利用未重建的对应点重建出新的三维点)
4)删除G中的这条边
5)执行Bundle Adjustment
9.结束
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。