使用多个点的多张图片(Kinect)构建3D模型

10
如果从不同的角度收集深度数据和各种图像,是否可以构建静止物体的三维模型?我的想法是设计一种圆形传送带,将Kinect放置在传送带上,而真实物体位于三维空间的中心以便进行重建。然后,传送带绕着物体旋转,每秒拍摄许多图像(可能每秒10张),这将允许Kinect从每个角度捕捉图像和深度数据,理论上是可行的。此外,该模型还必须重新创建纹理。
我想知道是否已有类似的项目/软件可用,如果有,任何链接都将不胜感激;是否可能在可能的情况下在6个月内完成;如何继续进行?例如,您可以向我指出任何类似的算法等。
谢谢, MilindaD

不要犹豫,利用Kinect的视频摄像头来创建纹理吧! - Coeffect
5个回答

5
这是完全可能的,有很多3D扫描仪可以使用,原理基本相同,都是采用立体成像技术。您可能已经知道,但为了更好地解释:其实就是从同一点获取两张图像,然后使用三角测量计算场景中点的三维坐标。虽然这很容易,但最大的问题在于找到2个图像中点的对应关系,这就需要一个好的软件来提取和识别相似的点。
有一个名为Meshlab的开源项目,专门用于3D视觉,其中包括3d重建*算法。我不知道算法的细节,但该软件绝对是玩转3D的好入口。
我曾经知道其他一些软件,我会尝试找到它们并添加到这里:

(*维基页面没有内容,重定向到登录以进行编辑)


1
因为MilindaD正在使用Kinect,三角测量问题已经得到解决,每个像素的深度已经可用。诀窍是将来自不同角度的这些3D图像相互匹配,以获得物体的更完整的3D形状图像。尽管如此,这是可行的。 - jilles de wit
在2D图像拼接时,我们需要使用诸如嫁接或匹配等关键词。请查看相关内容。另外,例如微软的Photosynth是一个很好的参考案例! - brainydexter
@brainydexter,没听说过“嫁接”这个术语,很有趣。你能否在某个地方给出一个精确的定义?我已经在图像处理方面工作了相当长时间,但我仍然无法理解术语为什么会如此模糊... - drolex
@drolex:我曾经学过计算摄影课程,我记得这个术语是从那里学来的。如果我没记错,“grafting”指的是在两张图片之间找到“匹配点”并将其“注册”的概念。我会尝试找到相关链接并稍后在此发布。 - brainydexter
因为Kinect使用红外光/传感器,所以光照变化不应该在使用深度数据时造成问题,这就是我认为会用于合并的数据。 - Coeffect
显示剩余3条评论

3
请查看https://bitbucket.org/tobin/kinect-point-cloud-demo/overview,这是一个与Kinect for Windows SDK相关的代码示例,可以实现深度传感器捕获的位图,并通过遍历字节数组创建一个PLY格式的点云,MeshLab可以读取。我们下一步的目标是应用/完善Delanunay三角形算法以形成网格而不是点,然后可以应用纹理。第三阶段将使用网格合并公式来结合从Kinect捕获的多个图像,形成完整的3D对象网格。

这是基于我在六月份使用Kinect进行3D打印捕捉的一些工作。

但是,这个源代码库中的.NET代码可以帮助您开始实现您想要的内容。


2

Autodesk有一款软件可以满足您的需求,名为“Photofly”。目前该软件处于实验室阶段。使用多个角度拍摄的一系列图像创建3D几何形状,然后使用您的图像进行照片映射以创建场景。


2

如果您对这个问题的理论部分更感兴趣(我指的是如果您想了解如何),这里有来自Microsoft Research关于移动深度相机和三维重建的一些文献。


0

尝试使用Changchang Wu(http://ccwu.me/)的VisualSfM(http://ccwu.me/vsfm/)。

它可以从不同角度拍摄的多张图像中提取信息,并输出3D点云。

该算法称为“运动结构”。简要介绍算法:涉及在每个图像中提取特征点;在图像之间找到对应关系;建立特征轨迹,估计相机矩阵和特征点的3D坐标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接