6

我想通过获取所有方向(360° - 例如电影帧)的图片(天花板)来创建房间的简单 2D 地图,通过边缘检测识别墙壁,删除其他不需要的对象,在正确的位置连接图像(参见墙壁、全景),最后创建近似的 2D 地图(从上方看)。获取比例将是另一个参数,这可能很有用。

目前我有一些自己的想法,例如使用 Sobel 算法,但如果有人知道一些项目或软件(GPL,首选免费软件)已经这样做了,那会很有趣,因为我仍在寻找一些例子,这可能对我有帮助。

谢谢。

4

4 回答 4

1

我有一个“一些什么”类似的实习项目,最后实习从未完成,因为我们都没有时间了(3 个月,没有钱买任何东西)。

但无论如何,最后我们要做的是拿一张大网格纸,然后将相机对准它,这样我们就可以绘制出镜头的特性,并用它来调整从相机中出来的照片。

其次,我们将在每面墙的旁边/上放置一个“众所周知/易于理解”的对象,并使用它来插入每面墙的大小(长度/高度)。

现在这种方法需要更多的“时间”来设置,因为您需要将对象放置在每面墙上,然后对每面墙进行一些重叠的拍照,这样您就可以将它们拼接在一起。然后用户会告诉程序每个“角落/边缘”的位置,以便程序知道房间的“一般形状”,然后它会使用放置在墙上的对象来插入每个墙壁的长度/高度。

现在请记住,这将是一个相对手动的过程,但如果使用设计良好的软件/过程,它可能会相对较快。我的意思是最慢的手动步骤是将对象放在墙上,然后拍摄房间的“全景”。一旦图片被上传到计算机,它可以进行预处理,将它们拼接在一起,然后弹出一张带有一些“线条工具”的图片,您可以在其中告诉程序角落/等在哪里,然后它将进行计算/调整/调整大小/等...

于 2010-05-11T14:09:02.653 回答
1

有两种方法我可以看到这个(有点)工作:

1) 计算出墙壁和照片拍摄点之间的距离。简单、一致的方法是使用激光或类似的外部测量设备。如果您要单独依靠设备来做到这一点,则需要考虑拍照人的身高、相机的角度,当然还有设备本身的镜头特性(即焦距失真) )。

2) 创建设备可以用作“基线”的真实世界控制对象。制作一个已知为 10x10x10cm 的令人讨厌的鲜红色立方体;把它放在房间的角落里;从一个角落到另一个角落拍摄墙壁的照片/视频,使用图像检测来找到立方体的墙壁边界和对象识别;从那时起,计算墙壁尺寸就是简单的数学运算。根据镜头的不同,这种方法可能对焦距失真等不太敏感,但为了获得准确的读数,我认为您仍然需要考虑镜头的特性。

祝你好运,这不是一件小事。仅墙壁的图像检测将是一个挑战。:)

于 2010-05-08T14:44:29.277 回答
0

我认为您想要的是来自 Motion 的结构,它是从 2D 运动图像(视频)中获取 3D 点云的技术,我可以向您推荐这些页面:

您需要先校准相机,在获得点云后,您需要找到墙壁的相应平面,可选择对其进行网格划分,然后您可以测量您的墙壁。

使用 Nexus One 会很慢,但也许使用较新的手机,您可以使用他们的 GPU 并优化一些代码以使其运行得更快。如果是我,我宁愿拍一段视频,做一个桌面应用程序,然后将它移植到 Android,但我对 Android 开发知之甚少。

于 2014-06-27T22:09:14.547 回答
0

这听起来像是一个有趣的问题。这是可能相关的 Microsoft 研究论文的链接。

照片旅游:以 3D 形式探索照片收藏

特别是查看基于图像的建模 (3.1) 部分。

于 2010-05-12T14:46:40.077 回答