【问题标题】:Rotation and translation in 3D reconstruction using 2D images使用 2D 图像进行 3D 重建中的旋转和平移
【发布时间】:2016-07-09 15:00:45
【问题描述】:

我正在尝试使用来自不同视图的 2D 图像进行 3D 模型重建。我正在遵循 Matlab 中的此示例代码以获得所需的结果: Structure From Motion From Two Views.

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

手动拍摄的第一张和第二张图像,平移 1 厘米:

与第一张和第二张图像的匹配特征叠加:

手动拍摄的第一张和第二张图像,平移 2cm:

与第一张和第二张图像的匹配特征叠加:

这些是我为每种情况得到的平移向量和旋转矩阵:

1cm 翻译: 翻译矢量:[0.0245537412606279 -0.855696925927505 -0.516894461905255] 旋转矩阵:

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

2cm 翻译: 翻译矢量:[-0.215835469166982 -0.228607603749042 -0.949291111175908] 旋转矩阵:

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

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

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

谁能至少让我知道我们获得平移和旋转的单位是什么,或者如何提取旋转和平移,这在任何方面都可以分别与现实世界的值(如厘米/毫米和弧度/度)相媲美?

【问题讨论】:

    标签: image matlab 3d modeling


    【解决方案1】:

    您可以将旋转矩阵转换为axis-angle-representation,您可以在其中获得以弧度为单位的角度。这可以使用vrrotmat2vec 函数来完成,或者如果您无权访问该包,请按照this 自己实现翻译器。然后角度将以弧度为单位。

    但是,当涉及到翻译时,您不会以在现实世界中有意义的单位进行翻译,因为您不知道比例。不幸的是,这通常是运动结构的问题。无法知道您拍摄的图像是靠近小物体还是远离大物体。

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

    希望对你有帮助:)

    【讨论】:

    • 事实上,本教程的最后一步解释了如果您知道对象的大小,如何以公制距离测量场景中的事物
    • 实际上我有地面实况数据,它告诉我 x、y、z 轴的平移(通过使用相机的移动计算)以毫米为单位。有什么方法可以将我的翻译与以毫米为单位的基本事实值进行比较?因为我想找到提取值的准确性。
    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多