最近有个项目需要的通过照片得到三维的模型。记得安卓上有个叫Autodesk 123D的应用,通过手机拍摄照片,再发送到云上处理,一段时间之后就能看到三维模型了。在网上搜了一下,发现可以用VisualSFM+Meshlab来实现。
VisualSFM : A Visual Structure from Motion System
VisualSFM是一个SFM(Structure From Motion)三维重构的程序,其带有图形界面,非常方便用新手的使用。这个程序集成了许多优秀的工具,比如在密集重建部分,使用了Yasutaka Furukawa的PMVS/CMVS工具。
在Windows下配置方法非常的简单:
- 尝试打开VisualSFM,如果不显示窗口,则需要先安装Visual C++ 2010 运行库
- 下载CMVS/PMVS的二进制文件。可以从源地址下载
- 把下载好的cmvs.exe/pmvs.exe/genOption.exe/pthreadVc2.dll放在VisualSFM.exe所在的目录下即可
在Windows下的使用方法:
- 添加需要进行三维建模的图片,为了保证效果,建议至少10张图片。
- 点击匹配图像按钮
- 点击稀疏重建按钮
- 点击密集重建按钮,并选择结果保存位置。
或者用CMD执行以下命令:
VisualSFM.exe sfm+pvms ./images ./results/result.nvm
其中./images为输入的图片文件夹,./results/result.nvm为输出的nvm文件的路径。其实输出为一个nvm文件,一个ply文件,和一个文件夹,所以建议输出位置指定到一个文件夹内。
可以使用MeshLab导入ply文件查看结果。下图为采用该方法建立的样例模型
后续的三维图形处理可以参考这篇文章,玩玩三维重建