首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用2D图像进行3D重建中的旋转和平移

问使用2D图像进行3D重建中的旋转和平移
EN

Stack Overflow用户
提问于 2016-03-22 23:55:51
回答 1查看 721关注 0票数 1

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

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

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

​

覆盖第一张和第二张图片的匹配特征:

​

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

​

覆盖第一张和第二张图片的匹配特征:

​

以下是我为每种情况获得的平移向量和旋转矩阵:

1 1cm平移:平移向量:[0.0245537412606279 -0.855696925927505 -0.516894461905255]旋转矩阵:

代码语言:javascript
复制
[0.999958322438693  0.00879926762261436 0.00243439415451741;
-0.00887800587357739    0.999365801035702   0.0344844418829408;
-0.00212941243132160    -0.0345046172211024 0.999402269855899]

2 2cm平移:平移向量:[-0.215835469166982 -0.228607603749042 -0.949291111175908]旋转矩阵:

代码语言:javascript
复制
[0.999989695803078  -0.00104036790630347    -0.00441881457943975;
0.00149220346018613 0.994626852476622   0.103514238930121;
0.00428737874479779 -0.103519766069424  0.994618156086259]

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

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

至少有人能让我知道我们得到的平移和旋转的单位是什么,或者如何提取旋转和平移,它们在任何方面都可以与实际的值相比较,比如厘米/毫米和弧度/度?

EN

回答 1

Stack Overflow用户

发布于 2016-03-23 01:15:11

您可以将旋转矩阵转换为axis-angle-representation,在其中您可以获得以弧度表示的角度。这可以使用vrrotmat2vec函数来完成,或者如果您没有访问包的权限,也可以通过遵循this自己实现一个转换程序。角度将以弧度为单位。

然而,当涉及到翻译时,你不会得到一个在现实世界中有意义的单位,因为你不知道规模。不幸的是,这通常是一个从运动到结构的问题。你不可能知道你拍摄的图像是靠近小的东西还是远离大的东西。

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

希望它能有所帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36159223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档