admin 管理员组文章数量: 1184232
PnP
本文主要介绍关于PnP(pespective-n-point)的一些方法。这个问题是一个经典的视觉测量问题。这里介绍一下常用的几种方法
问题的方案、解决思路
最小PnP问题
P3P问题中假设没有噪声,使用几何约束,可以解得相机的位姿。不具有唯一解。
P4P问题中分为线性方法和基于P3P的方法。
最小二乘的观点
- 迭代最小化一个代价函数(平方误差)。这些方法相对于之前的方法更加准确,在一定的噪声的情况下,返回一个最大似然估计。
- 直接最小二乘方法DLS
常用方法
- NPL: The N-Point Linear (NPL) method of Ansar and Daniilidis [1].
- EPnP: The approach of Lepitit et al. [16].
- SDP: The Semi Definite Program (SDP) approach of Schweighofer and Pinz [23].
- DLS: The Direct Least-Squares (DLS) solution presented in this paper. An open source implementation of DLS is available at www.umn.edu/ ̃joel
- DLS-LM: Maximum-likelihood estimate, computed using iterative Levenberg-Marquardt (LM) minimization of the sum of the squared reprojection errors, initialized with DLS.
opencv
solvePnP里有三种解法:P3P, EPnP,迭代法(默认);opencv2里参数分别为CV_P3P,CV_EPNP,CV_ITERATIVE (opencv3里多了DLS和UPnP解法)。
注意点2:solvePnP需要至少3组点:P3P只使用4组点,3组求出多个解,第四组确定最优解;EPnP使用大于等于3组点;迭代法调用cvFindExtrinsicCameraParams2,进而使用SVD分解并调用cvFindHomography,而cvFindHomography需要至少4组点。
具体过程如下
- 将空间点和图像点齐次化,得到图像点矩阵 m 空间点矩阵 M ,求取矩阵M的平均值 Mc ,
- 计算另外一个矩阵 mm=(M−Mc)T(M−Mc)
- 对空间点矩阵 mm 进行SVD分解, mm=UWV
- Rt=V
- Tt=−McRt
- Mxy=VtMT+Tt
- find homography between ( m 和 Mxy )得到矩阵 H
- H=[h1,h2,t] ,然后归一化
- h1=h1∥h1∥
- t=t∥h1∥+∥h2∥
- h3=h1×h2
- H:=[h1,h2,h3]
- 最终结果 Rf=H∗Rt
- tf=H∗Tt+t
其他
R的第i行 表示摄像机坐标系中的第i个坐标轴方向的单位向量在世界坐标系里的坐标;
R的第i列 表示世界坐标系中的第i个坐标轴方向的单位向量在摄像机坐标系里的坐标;
t 表示世界坐标系的原点在摄像机坐标系的坐标;
-R的转置 * t 表示摄像机坐标系的原点在世界坐标系的坐标。(原理如下图,t表示平移,T表示转置)
DLS
- .1002/rob.21620/epdf
- .html
- .cpp
本文标签: PnP
版权声明:本文标题:PnP 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686537633a7453.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论