了解solvePnP算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解solvePnP算法相关的知识,希望对你有一定的参考价值。

我无法理解Perspective-n-Point问题。几个问题:

  1. 什么是s?为什么我们需要图像点的比例因子?
  2. K[R|T]是“坐标矩阵的变化”,它将p_w(同质世界点)移动到2D图像平面的坐标空间中吗?
  3. 据我所知,[R|T]代表相机相对于相应的世界点p_w的“旋转和平移”,这就是我们想要解决的问题。这有什么特别困难的?我们不能只说[R|T] =inv(K)s(p_c)inv(p_w)?我只是用一些基本的矩阵代数做了这个。
  4. 我不明白为什么PnP有多种解决方案......这些多种解决方案究竟是什么?

谢谢你的帮助!

答案
  1. 需要比例因子来确定从较远距离观察的小距离或大物体是否有很少的物体

在典型的相机针孔方程中

enter image description here

s表示摄像机坐标系中点的Z坐标

  1. 右边,K[R|t]是投影矩阵,它将某些物体/世界/全球坐标系中的3d坐标映射到图像2d坐标,如上面的等式所示。
  2. 这并不容易,因为你经常不知道相机坐标系中的点坐标,但是知道图像坐标系中的2d坐标。相机坐标系和图像坐标系之间的转换失去了一个维度,并且还存在比例因子,这使得我们的方程不完全是线性的。这就是计算起来不那么容易的原因。
  3. 不同的算法使用不同的方法来添加解决方案所需的其他信息例如,DLT(直接线性变换)方法使用投影矩阵的特征。除了分析解决方案之外,还有许多使用非线性优化的方法 - 例如在openCV中使用的Levenberg-Marquardt。

以上是关于了解solvePnP算法的主要内容,如果未能解决你的问题,请参考以下文章

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

基准标记或相机姿态估计

OpenCV:SolvePnP 对相同的输入参数给出不同的结果

opencv solvepnp函数各种方法比较

使用 SolvePNP 进行姿势估计

相机位姿估计1_1:OpenCV:solvePnP二次封装与性能测试