理解 solvePnP 算法
Understanding the solvePnP Algorithm
我无法理解 Perspective-n-Point 问题。几个问题:
s
有什么用?为什么我们需要图像点的比例因子?
K[R|T]
是一个"change of coordinates matrix",将同质世界点p_w
移动到二维图像平面的坐标space中吗?
- 我理解
[R|T]
表示相机relative相对于p_w
的"rotation and translation"对应的世界点p_w
就是这样试图解决。这有什么特别困难的?我们不能只说 [R|T] =inv(K)s(p_c)inv(p_w)
吗?我只是用一些基本的矩阵代数来做到这一点。
- 我不明白为什么 PnP 有多个解决方案...这些多个解决方案到底是什么?
感谢您的帮助!
- 需要比例因子来确定从近距离看是小物体还是从远距离看是大物体
在典型的相机针孔方程中
s表示点在相机坐标系
中的Z坐标
对了,K[R|t]
是投影矩阵,将某个object/world/global坐标系中的3d坐标映射到图像2d坐标,如上式
没那么容易,因为你通常不知道相机坐标系中的点坐标,但知道中的二维坐标图像坐标系。 相机坐标系和图像坐标系之间的变换失去了一维,并且还有比例因子使我们的方程不是完全线性的。这就是为什么它不是那么容易计算的原因。
不同的算法使用不同的方法来添加解决方案所需的额外信息。例如 DLT(直接线性变换)方法使用投影矩阵的特征。除了解析解之外,还有许多使用非线性优化的方法 - 例如 openCV 中使用的 Levenberg-Marquardt。
我无法理解 Perspective-n-Point 问题。几个问题:
s
有什么用?为什么我们需要图像点的比例因子?K[R|T]
是一个"change of coordinates matrix",将同质世界点p_w
移动到二维图像平面的坐标space中吗?- 我理解
[R|T]
表示相机relative相对于p_w
的"rotation and translation"对应的世界点p_w
就是这样试图解决。这有什么特别困难的?我们不能只说[R|T] =inv(K)s(p_c)inv(p_w)
吗?我只是用一些基本的矩阵代数来做到这一点。 - 我不明白为什么 PnP 有多个解决方案...这些多个解决方案到底是什么?
感谢您的帮助!
- 需要比例因子来确定从近距离看是小物体还是从远距离看是大物体
在典型的相机针孔方程中
s表示点在相机坐标系
中的Z坐标对了,
K[R|t]
是投影矩阵,将某个object/world/global坐标系中的3d坐标映射到图像2d坐标,如上式没那么容易,因为你通常不知道相机坐标系中的点坐标,但知道中的二维坐标图像坐标系。 相机坐标系和图像坐标系之间的变换失去了一维,并且还有比例因子使我们的方程不是完全线性的。这就是为什么它不是那么容易计算的原因。
不同的算法使用不同的方法来添加解决方案所需的额外信息。例如 DLT(直接线性变换)方法使用投影矩阵的特征。除了解析解之外,还有许多使用非线性优化的方法 - 例如 openCV 中使用的 Levenberg-Marquardt。