首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用DLT进行姿态估计需要多少个点?

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

Stack Overflow用户
提问于 2018-02-04 03:04:35
回答 2查看 2.7K关注 0票数 0

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

在姿态估计中,搜索的3x4矩阵是R|T,它有12个未知参数。在DLT中,每个点对应给出两个线性无关方程,所以我假设,一个需要6个对应来求解方程。

solvePnpopenCV实现中,只需要4点,我不知道为什么。

如果有人能解释一下姿势估计需要多少对应以及原因,那将真的很有帮助。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-02-04 06:40:16

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

因此,至少有四个点,你就得到了一个独特的解决方案。这是一个需要迭代的非线性问题。

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

编辑

如果你使用12个未知数,就像我说的,你只能得到pose =6参数的近似值。因此,它是继DFT求解之后的又一步。

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

解决PnP问题的方法:

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

CV_P3P方法是基于X.S. Gao,X.-R. Hou,J. Tang,H.-F. Chang的论文“透视三点问题的完全解分类”。在这种情况下,该函数恰好需要四个对象和图像点。

CV_EPNP方法是由F.Moreno-Noguer,V.Lepetit和P.Fua在“EPnP:高效透视n点相机姿态估计”一文中提出的。

编辑

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

票数 0
EN

Stack Overflow用户

发布于 2020-07-07 23:03:22

当我们只有4个已知的3D-2D对应,即齐次线性方程(8)的数量少于未知参数(12)的数量时,将会有无数的非零解。我们只向迭代求解器提供其中一个可能或可行的解作为初始估计。这个解决方案可以基于一些约束来选择,比如||x||=1,等等。它有意义吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48600952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档