理解 solvePnP 算法

Understanding the solvePnP Algorithm

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

  1. s有什么用?为什么我们需要图像点的比例因子?

  2. K[R|T]是一个"change of coordinates matrix",将同质世界点p_w移动到二维图像平面的坐标space中吗?

  3. 我理解[R|T]表示相机relative相对于p_w的"rotation and translation"对应的世界点p_w就是这样试图解决。这有什么特别困难的?我们不能只说 [R|T] =inv(K)s(p_c)inv(p_w) 吗?我只是用一些基本的矩阵代数来做到这一点。
  4. 我不明白为什么 PnP 有多个解决方案...这些多个解决方案到底是什么?

感谢您的帮助!

  1. 需要比例因子来确定从近距离看是小物体还是从远距离看是大物体

在典型的相机针孔方程中

s表示点在相机坐标系

中的Z坐标
  1. 对了,K[R|t]是投影矩阵,将某个object/world/global坐标系中的3d坐标映射到图像2d坐标,如上式

  2. 没那么容易,因为你通常不知道相机坐标系中的点坐标,但知道中的二维坐标图像坐标系相机坐标系图像坐标系之间的变换失去了一维,并且还有比例因子使我们的方程不是完全线性的。这就是为什么它不是那么容易计算的原因。

  3. 不同的算法使用不同的方法来添加解决方案所需的额外信息。例如 DLT(直接线性变换)方法使用投影矩阵的特征。除了解析解之外,还有许多使用非线性优化的方法 - 例如 openCV 中使用的 Levenberg-Marquardt。