概述
Epnp 算法可以说在计算精度和计算成本上,已经是state of art 的算法了。
参考 :
【1】 https://blog.csdn.net/liu502617169/article/details/90403283
【2】这个有epnp的原理详解,包括icp:
https://blog.csdn.net/qq_30356613/article/details/80588134
【3】这个包括orb中epnp求解部分的代码详解:
https://zhuanlan.zhihu.com/p/149017276
【4】 这个包括 epnp 和 DLT 的时间对比
https://zhuanlan.zhihu.com/p/59070440
问题:怎么解释 orb PnPsolver::SetRansacParameters 中的操作;可以详见博客3中的 1,RANSAC参数设置 部分, 但是还是没解释清楚;
具体的可以参考这篇:https://www.cnblogs.com/xrwang/archive/2011/03/09/ransac-1.html
是翻译的wiki上的内容,描述了ransac的过程,以及变种。还有,说明的参数的设置。
P :希望最后得到的模型,随机取n个点,都是内点的概率。我们自己设定的。越大说明我们要求越高;
K: ransac迭代次数,通过公式计算出来的。这里的计算结果是,假设点可以被重复选到。
此外还需要自己设定: 拟合模型所需的最小点数 n ; 判断点是否为外点的阈值; 以及,如何判断该拟合的模型是否是满意的,要自己定一个内点数量的阈值;还有 w,即:当前提供的数据中,内点率是多少?这个要自己设定。
update
orb中重定位时候Epnp计算姿态的过程大致为:
1. 对于每个闭环候选帧设置 ransac的参数:包括 p w n 等等
2. 对于每一个候选帧进行ransac迭代计算Epnp
3. 每次迭代选取四个点,然后Epnp 计算 pose; 针对计算结果,计算内点数量;记录内点最多的模型,并返回。
4. 然后根据ransac的结果,进行pose 优化,并计算内点数量,满足阈值,则返回,判定重定位成功。
重点的,Epnp的计算思路:
1. 确定4个控制点,然后将n个3D点的世界坐标用4个控制点表示;
2. 计算4个控制点坐标的camera系坐标,这样就可以得到n个3D点的camera系坐标;
3. 然后利用ICP计算pose
最后
以上就是潇洒雪糕为你收集整理的pnp之 Epnp的全部内容,希望文章能够帮你解决pnp之 Epnp所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复