首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >solvePnP模型空间原点的设置

solvePnP模型空间原点的设置
EN

Stack Overflow用户
提问于 2016-08-23 03:10:08
回答 1查看 899关注 0票数 1

(从我在OpenCV论坛http://answers.opencv.org/question/100840/where-to-set-origin-of-model-for-solvepnp/上的问题中交叉发布)

大家好,我一个多月来一直在为这个问题而发狂。我不得不承认,我没有认真研究过solvePnP背后的数学(大多数人没有,这就是为什么我们有开源库),因为原因。

我想征求一些实用的建议,关于使用solvePnP在哪里定位该模型的起源。

背景:我正在使用OpenCV制作一个头部跟踪应用程序。在屏幕上跟踪对象(其中4个)并不是真正的问题;找出6DoF是真正的问题。

手机摄像头。我没有进行校准,但我认为,只要被试的头部保持在视野的中心,这就不会是一个大问题。不过,我确实注意到,枪管的边缘有明显的变形。

目前的结果:根据模型的“放置”位置,我可以从旋转部分或平移部分获得稳定的性能。此外,在奇怪的情况下,我得到疯狂的结果从不同的运行。可能是某个地方的奇点。

输入solvePnP的参数:图像点--来自跟踪器(起源于左下角).模型点--来自三维模型(左下角原点,翻译为OpenCV左上角原点).相机矩阵- fx,图像的最大维数,图像中心的主要点,没有倾斜(如果我做校准的话可能会改变)。在extrinsicGuess中使用迭代(因为没有它是非常紧张的)。

因此,我想问的具体建议是:我应该在哪里设置模型的起源(在这种情况下,是人头模型)以获得一致的6 6DoF值?理想情况下,我想得到的旋转值“锚定”在颈部(大约几厘米深的前)。我已经尝试翻译头部模型点,使其在颈部内有原点,但我注意到,当模型的很大一部分在-z范围内时,z-转换值就会疯狂。而且,它无法正确地解析x-旋转(无论是向上还是向下,它都给出了正的值)。

我应该把模型放在模型空间的某个特定位置吗?我应该避免将模型的任何部分放在-z范围内,还是应该期望solvePnP返回这种情况下的-z转换?

这个问题可能有多个独立的问题,如果你能解决这些问题,那也会很好,但我最关心的是模型空间中的模型放置及其与solvePnP的交互。

EN

回答 1

Stack Overflow用户

发布于 2016-09-14 07:06:47

原产地的位置不应该有多大关系。根据我的经验,物体点的相对位置是非常重要的。您选择的点组必须对对象的所有6自由度都敏感(即,如果您移动或旋转对象,这些点必须在图像中移动)。如果在任何自由度上都没有足够的灵敏度,那么求解者就会非常紧张和不稳定。不管你在旋转什么起源。如果有一些方法,你可以移动头部而不改变点,这是一个问题,求解者将是不稳定的。

另外,当同一组点有多个可能的解位置时,您需要知道。如果你为这个职位提供了一个很好的初步猜测,它通常会为你找到正确的解决方案。有时,如果求解者没有接近正确的解决方案,那么它可以在不同的解决方案之间交替返回第四种解决方案。

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

https://stackoverflow.com/questions/39091717

复制
相关文章

相似问题

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