玩玩基于照片的三维重建

最近有个项目需要的通过照片得到三维的模型。记得安卓上有个叫Autodesk 123D的应用,通过手机拍摄照片,再发送到云上处理,一段时间之后就能看到三维模型了。在网上搜了一下,发现可以用VisualSFM+Meshlab来实现。

VisualSFM : A Visual Structure from Motion System

VisualSFM是一个SFM(Structure From Motion)三维重构的程序,其带有图形界面,非常方便用新手的使用。这个程序集成了许多优秀的工具,比如在密集重建部分,使用了Yasutaka Furukawa的PMVS/CMVS工具。

在Windows下配置方法非常的简单:

  1. 尝试打开VisualSFM,如果不显示窗口,则需要先安装Visual C++ 2010 运行库
  2. 下载CMVS/PMVS的二进制文件。可以从源地址下载
  3. 把下载好的cmvs.exe/pmvs.exe/genOption.exe/pthreadVc2.dll放在VisualSFM.exe所在的目录下即可
    在Windows下的使用方法:

使用方法(图片来自http://ccwu.me/)

  1. 添加需要进行三维建模的图片,为了保证效果,建议至少10张图片。
  2. 点击匹配图像按钮
  3. 点击稀疏重建按钮
  4. 点击密集重建按钮,并选择结果保存位置。
    或者用CMD执行以下命令:

VisualSFM.exe sfm+pvms ./images ./results/result.nvm
其中./images为输入的图片文件夹,./results/result.nvm为输出的nvm文件的路径。其实输出为一个nvm文件,一个ply文件,和一个文件夹,所以建议输出位置指定到一个文件夹内。

可以使用MeshLab导入ply文件查看结果。下图为采用该方法建立的样例模型

%e5%b1%8f%e5%b9%95%e6%88%aa%e5%9b%be1-1024x576

后续的三维图形处理可以参考这篇文章,玩玩三维重建