了解solvePnP算法

Car*_*izz 3 graphics opencv linear-algebra computer-vision opencv-solvepnp

我无法理解透视点问题。几个问题:

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

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

  3. 我理解这[R|T]代表了相机相对于相应的世界点的“旋转和平移” p_w,这就是我们正在努力解决的问题。这其中有什么特别困难的地方呢?我们就不能说吗[R|T] =inv(K)s(p_c)inv(p_w)?我只是用一些基本的矩阵代数做到了这一点。
  4. 我不明白为什么 PnP 有多种解决方案...这些多种解决方案到底是什么?

谢谢你的帮助!

Kam*_*lag 5

  1. 需要比例因子来确定是从小距离观察到的小物体还是从远距离观察到的大物体

在典型的相机针孔方程中

在此输入图像描述

s表示相机坐标系中点的Z坐标

  1. 右边 K[R|t]是投影矩阵,它将某个对象/世界/全局坐标系中的 3d 坐标映射到图像 2d 坐标,如上式所示。

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

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