使用DLT进行姿态估计需要多少个点?

问题描述 投票:0回答:1

我想知道使用直接线性变换算法计算机视觉中相机姿态估计需要多少2D < - > 3D点对应,为什么?

在姿势估计中,搜索的3×4矩阵是[R | T]有12个未知参数。在DLT中,每个点对应给出2个线性无关方程,因此我假设,需要6个对应来求解方程。

openCV实施solvePnp只需要4分,我无法弄清楚原因。

如果有人可以解释姿势估计需要多少对应以及原因,那将会非常有帮助。谢谢!

image opencv camera estimation
1个回答
0
投票

外部方向(或姿势)只有六个参数,三个用于方向,三个用于位置。基本上我们只需要三个点来估计相机的姿势(正如你所说的每个点给出两个约束)但是它不会给你一个独特的解决方案,但你确定你有一定数量的解决方案。

因此,至少有四点可以获得独特的解决方案。这是一个需要迭代方法的非线性问题。

如果使用具有12个未知数的矩阵,则可以线性地求解问题,并且可以找到最接近的旋转矩阵,该矩阵不必是正交的。

编辑

如果您使用12个未知数,正如我所说,您只得到pose = 6参数的近似值。所以这是DFT解决方案之后的另一个步骤。

在opencv函数中,我看不到他们在哪里使用DFT,请检查这个link

解决PnP问题的方法:

CV_ITERATIVE迭代方法基于Levenberg-Marquardt优化。在这种情况下,函数找到这样的姿势,以最小化重投影误差,即观察到的投影imagePoints和投影(使用projectPoints())objectPoints之间的平方距离之和。

CV_P3P方法基于X.S.的论文。高,X.-R.侯,J。唐,H.-F。 Chang“透视 - 三点问题的完整解决方案分类”。在这种情况下,该功能只需要四个对象和图像点。

fazxswpoi方法由F.Moreno-Noguer,V.Lepetit和P.Fua在论文“EPnP:Efficient Perspective-n-Point Camera Pose Estimation”中介绍。

编辑

我读了实现,你是对的,他们从CV_EPNP开始只是为了初始化相机的6个参数,然后他们使用DFT来最小化错误重新投影。

© www.soinside.com 2019 - 2024. All rights reserved.