从一组坐标计算变换矩阵(使用OpenCV)

时间:2012-05-22 17:01:08

标签: opencv coordinate-systems

我有一个小的立方体,其表面上有n个(你可以假设n = 4)分辨点。这些点编号为(1-n)并形成坐标空间,其中点#1是原点。

现在我正在使用跟踪相机来获取相对于相机坐标空间的那些点的坐标。这意味着我现在有n个向量p_i从摄像机的原点指向立方体的表面。

根据这些信息,我正在尝试计算表示这两个坐标空间之间转换的仿射变换矩阵(旋转+平移)。翻译部分相当简单,但我正在努力计算旋转矩阵。

OpenCV中是否有任何内置功能可以帮助我解决这个问题?

3 个答案:

答案 0 :(得分:1)

听起来像cvGetPerspectiveTransform就是你要找的; cvFindHomograpy也可能有所帮助。

答案 1 :(得分:1)

solvePnP应该为您提供旋转矩阵和平移向量。尝试使用CV_EPNPCV_ITERATIVE

编辑或者您正在寻找RQ decomposition

答案 2 :(得分:1)

查看OpenCV的立体相机教程。 OpenCV使用平面棋盘进行所有计算,并将其Z维度设置为0以构建其3D点列表。您已经拥有3D点,因此请更改教程中的代码以反映您的3D点列表。然后你可以计算转换。