基于多幅图像的3D重建资料

来源:互联网 发布:mac操作系统使用教程 编辑:程序博客网 时间:2024/05/17 03:53

最近一段时间,我开始接触了一些3D重建方面的内容。由于时间不长,对整个过程的细节还有很多的未知和不确定性,只是把自己对整个过程总体的把握分享给大家,希望对于准备着手这方面工作的新同学能够有一定的启发和帮助。如果后续有跟进这方面的工作,我会继续补充。

图1

一、定义

多幅图像的3D重建在我看来就是利用多幅图像的信息恢复三维场景信息的过程。如图1所示,我们利用相机从三个不同角度拍摄的青蛙图像恢复出青蛙的三维信息。其主要过程包括关键特征点的提取与匹配,稀疏点云的建立、稠密点云的生成以及表面重建和纹理映射等过程,一般情况下,图像的相机参数未知,因此,很多情况下又包括相机的标定这一过程。

二、资料

a)关键定的提取与匹配

关键点提取常用的方法有harris角点检测算法(计算检测,但对尺度变化较为敏感)和sift算子(具有尺度、旋转不变都特性,但计算复杂)。

Harris角点检测资料:http://www.csse.uwa.edu.au/~pk/research/matlabfns/Spatial/harris.m (matlab代码)

sift算子资料:http://www.cs.ubc.ca/~lowe/keypoints/ (编译过的可执行程序)一般而言,还是比较偏好使用sift算子。

b)稀疏点云的建立

所谓的稀疏点云的建立就是利用匹配关键点的対极约束关系得到这些关键点在世界坐标系中的三维坐标。常用的方法为SFM(运动恢复)方法,包括三角定位、集束约束等过程。常见的资源有:

1、Noah Snavely等人的bundler(利用多张图像信息得到稀疏点云) 他给出了bundler方法整个过程的source code(源程序)以及binary cod (可执行程序)。因此,该程序可以作为入门者的一个参考。链接为:http://write.blog.csdn.net/postedit/24603841

2、Changchang Wu的Visual SFM 这是一个带界面的可执行程序,可以帮助入门者了解三维重建整个过程以及三维重建大致效果。链接为:http://ccwu.me/vsfm/

c)稠密点云的重建

由于稀疏点云的三维坐标点的个数相对较少,为了丰富三维信息、进而更好地描述三维场景,我们需要将稀疏点云进行扩建形成稠密点云。常用的方法为为Yasutaka Furukawa 等人在2007年提出的PMVS方法(CVPR2007 PAMI2010),并且作者提供了相关的source code。链接为:http://www.di.ens.fr/pmvs/。对于重建得到的稀疏点云,我们一般可以使用软件进行可视化,以便查看的重建的效果。常见的软件有:ScanalyzeMeshlab。个人推荐Meshlab,感觉十分强大。

d)表面重建以及纹理映射

表面重建的目的是对稠密点云的空洞部分进行填充,而纹理映射的目的则是为了将二维空间中的纹理信息映射到三维空间中去。

表面重建的资源:http://www.cs.jhu.edu/~misha/Code/。这个链接中包含许多表面重建算法的可执行程序,入门的同学可以直接用这部分东西。

纹理映射:需要用到OpenGL,由于对这部分还不是特别了解,所以暂时还没有整合到一些有效的资源。




0 0
原创粉丝点击