2016-03-22 41 views
1

我正在尝试使用来自不同视图的2D图像进行3D模型重建。我正在从Matlab的这个示例代码中获得所需的结果: Structure From Motion From Two Views使用2D图像进行3D重建时的旋转和平移

以下是从相机拍摄的测试图像:

手动拍摄第一和第二图像的图像与1厘米的翻译: manually taken images of 1st and 2nd image with translation of 1cm

覆盖与第一和第二图像的匹配的特征: overlay with matched features of first and second image

第一张和第二张图像的手动拍摄图像,平移2cm: manually taken images of 1st and 2nd image with translation of 2cm

覆盖与第一和第二图像的匹配的特征: overlay with matched features of first and second image

这些是平移矢量和旋转矩阵的I获得每种情况下:

1厘米翻译: 平移向量:[0.0245537412606279 -0.855696925927505 -0.516894461905255] 旋转矩阵:

[0.999958322438693 0.00879926762261436 0.00243439415451741; 
-0.00887800587357739 0.999365801035702 0.0344844418829408; 
-0.00212941243132160 -0.0345046172211024 0.999402269855899] 

2厘米翻译: 平移向量:[-0.215835469166982 -0.228607603749042 -0.949291111175908] 旋转矩阵:

[0.999989695803078 -0.00104036790630347 -0.00441881457943975; 
0.00149220346018613 0.994626852476622 0.103514238930121; 
0.00428737874479779 -0.103519766069424 0.994618156086259] 

在文档中,它表示它是两个图像之间的相对旋转和平移。

但我无法理解这些数字的含义以及上述数值的单位是多少。

任何人都可以至少让我知道我们获得翻译和旋转的单位是什么,或者如何提取旋转和平移,它们分别与cm/mm和弧度/度这样的真实世界值相媲美?

回答

1

您可以将旋转矩阵转换为axis-angle-representation,您可以在其中获得弧度角。这可以使用vrrotmat2vec函数完成,也可以通过在this之后自己实现翻译器来完成,前提是您无权访问包。角度将以弧度表示。

当涉及到翻译,但你不会得到它在一个单位,在现实世界中是有道理的,因为你不知道规模。不幸的是,这是一般运动结构的问题。不可能知道你是否将图像放在距离某物很远或很远的地方。

当使用运动结构构建3D模型时,幸运的是这并不是问题,因为您仍然可以正确地获得相对距离。因此,您将能够捕捉场景(通过遵循本教程的其余部分),但您无法说出是否有东西是2厘米或2公里高,除非您在图片中有某些东西,您知道真实的人生大小。

希望它能帮助:)

+0

其实本教程的最后一步解释如何衡量事物在度量距离现场,如果你知道一个对象 – rasan076

+0

的大小其实我已经告诉我的地面实况数据以毫米为单位的x,y,z轴平移(通过使用相机移动计算)。有什么方法可以将我的翻译与毫米级的基础真值进行比较吗?因为我想找到提取值的准确性。 –