从3d点计算旋转和平移矩阵及其2d对应关系

时间:2014-05-11 08:34:07

标签: opencv computer-vision camera-calibration

我有一组3d点(P3),它们的2d对应关系(P2)和一个摄像机矩阵(A)。如何使用SVD查找旋转和平移向量?我认为方程是P2 = A * [R | t] * P3。但是,如何使用SVD查找rvec和tvec(比如在openCV中使用cvSVD)?简短的算法或链接会非常有用。

1 个答案:

答案 0 :(得分:2)

如果您知道或猜测了相机矩阵A(以及可选的失真系数),最简单的方法是使用函数cv::solvePnPdoc link)或其强健版本{{ 1}}(doc link)。

如果您不知道相机矩阵,我认为您无法估算旋转矩阵cv::solvePnPRansac和平移向量R。但是,您可以使用直接线性变换(DLT)算法估算tA*R,这在Hartley& Zisserman在§7.1p178中的书。如果您表示A*t,那么您可以按如下方式估算P:

P = A*[R | t]

之后,一个好主意是执行迭代优化(例如使用Levenberg-Marquardt算法),以最小化重投影误差。