计算机视觉:标注相机位姿

3
我正在尝试创建不同姿态下的对象图像数据集,其中每个图像都带有相机或对象的姿态注释。
例如,如果有一个世界坐标系,并将感兴趣的物体放在原点并将相机放置在已知位置(x,y,z),并面向原点。在此信息的基础上,如何计算相机或对象的姿态(旋转矩阵)。
我有一个想法,即拥有一个参考坐标系,即(0,0,z'),在这里我可以定义对象的旋转。也就是说,我可以计算从(0,0,z')和(x,y,z)的旋转来给我一个旋转矩阵。问题是如何将两个旋转矩阵组合起来?
顺便说一句,我知道相机的世界位置,因为我是通过OpenGL从CAD模型渲染它们而不是实际移动相机。
1个回答

1

单应矩阵将齐次屏幕坐标(i,j)映射到齐次世界坐标(x,y,z)。

齐次坐标是普通坐标加上1。因此,屏幕坐标中的(3,4)变成了齐次屏幕坐标中的(3,4,1)。

如果您有一组齐次屏幕坐标S及其关联的齐次世界位置W,则4x4单应矩阵满足以下条件:

S * H = transpose(W)

因此,重点是在世界坐标中找到几个特征,您还可以识别屏幕坐标中的i,j位置,然后进行“最佳拟合”单应矩阵(openCV有一个findHomography函数)

虽然知道摄像机的xyz提供了有用的信息,但这还不足以完全限制方程,您仍然需要生成更多的屏幕-世界对。因此,我认为将摄像机的位置整合到混合物中并不值得您花费时间。

我在这里做过类似的实验:http://edinburghhacklab.com/2012/05/optical-localization-to-0-1mm-no-problemo/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接