3

我正在尝试创建不同姿势的物体图像数据集,其中每个图像都用相机姿势(或物体姿势)进行注释。

例如,如果我有一个世界坐标系,我将感兴趣的对象放置在原点,并将相机放置在已知位置 (x,y,z) 并使其面向原点。鉴于此信息,我如何计算相机或对象的姿势(旋转矩阵)。

我有一个想法,那就是有一个参考坐标,即 (0,0,z'),我可以在其中定义对象的旋转。即它的倾斜、俯仰和偏航。然后我可以从 (0,0,z') 和 (x,y,z) 计算旋转来给我一个旋转矩阵。问题是,现在如何组合两个旋转矩阵?

顺便说一句,我知道相机的世界位置,因为我使用 OpenGL 从 CAD 模型渲染这些,而不是物理移动相机。

4

1 回答 1

1

同质屏幕坐标 (i,j) 到同质世界坐标 (x,y,z) 之间的单应矩阵映射。

齐次坐标是附加了 1 的法线坐标。所以屏幕坐标中的 (3,4) 是 (3,4,1) 作为齐次屏幕坐标。

如果您有一组齐次屏幕坐标 S 及其关联的齐次世界位置 W。4x4 单应矩阵满足

S * H = 转置(W)

所以它归结为在世界坐标中找到几个特征,您还可以识别屏幕坐标中的 i,j 位置,然后做一个“最佳拟合”单应矩阵(openCV 有一个函数 findHomography)

虽然知道相机的 xyz 提供了有用的信息,但这不足以完全约束方程,而且无论如何您都必须生成更多的屏幕世界对。因此,我认为不值得您花时间将摄像机位置整合到混音中。

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

于 2013-09-23T18:16:32.720 回答