之前的博客提及了计算机视觉中的三维重建有多种方法,详情见https://blog.csdn.net/m0_37824471/article/details/82849529,因成本问题,我是直接拍摄的RGB彩色图片,故而选用基于图片的三维重建方法,利用的是visualSFM+CMVS 建立出稠密的三维点云,再使用meshlab建立三维模型
一、VisualSFM(图片--->稠密点云)
该软件下载及介绍:http://ccwu.me/vsfm/
CMVS下载及介绍http://www.di.ens.fr/cmvs/
下载完成后操作方法如下:
- 添加图片:Add some images
- 按照步骤2 进行sift特征点匹配
- 按照步骤3,稀疏重建,并得到相机参数
- 按照步骤4,生成稠密点云,保存[name].nvm.cmvs, name即为你取的文件名
至此,稠密点云已经生成保存于[name].nvm.cmvs/00/models/option-0000.ply
二、meshlab(稠密点云--->3D模型.stl)
- 点击按钮1,打开VisualSFM生成的.out与list.txt文件
- 点击按钮2,打开显示层目录,检测相机载入是否安全
- File-->import mesh,加载稠密点云 ;若其中包含多个.ply,则要合并点云(任何一个.ply上右键选“Flatter Visible Layers)
- 点击按钮4,选中杂点区(选中杂点为红色)
- 点击按钮5,删除选中杂点区
- 网格化,Filter-->Point Set-->Surface Reconstruction:Possion (Octree depth 控制网格细节,越大细节越丰富,10开始)
- 表面重建后生成封闭模型,Filters-->Selection-->Select faces with edges longer than,利用按钮5删除
- 修复流形边缘 ,Filters–> Selection –> Select Non-Manifold edges,删除
- 参数化,Filter–> Texture –> Parameterization from registered rasters
- 投影纹理,Filter–> Texture –> Project active rasters color to current mesh, filling thetexture(分辨率2的次方)
- 完成,导出 File-->Export mesh