了解solvePnP算法

时间:2017-09-28 01:38:07

标签: opencv graphics computer-vision linear-algebra opencv-solvepnp

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

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

  2. K[R|T]是"更改坐标矩阵"它将同质世界点p_w移动到2D图像平面的坐标空间中?

  3. 我知道[R|T]代表"轮换和翻译"摄像机 relative 到相应的世界点p_w,这就是我们要解决的问题。这有什么特别困难的?我们不能说[R|T] =inv(K)s(p_c)inv(p_w)吗?我只是用一些基本的矩阵代数做了这个。
  4. 我不明白为什么PnP有多种解决方案......这些多种解决方案究竟是什么?
  5. 感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

  1. 需要比例因子来确定从较远距离观看的小距离或大物体是否有很少的物体
  2. 典型的相机针孔方程

    enter image description here

    表示摄像机坐标系

    中的点的Z坐标
    1. 右,K[R|t]是投影矩阵,它将某些物体/世界/全球坐标系中的3d坐标映射到图像2d坐标,如上面的等式所示。

    2. 这并不容易,因为你经常不知道相机坐标系中的点cooridnates,但知道图像坐标系中的2d坐标相机坐标系图像坐标系之间的转换失去了一个维度,并且还存在比例因子,这使得我们的方程不完全是线性的。这就是为什么计算起来不那么容易的原因。

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