Visualsfm与meshlab三维重建
目前使用最方便且广泛的三维重建是利用免费软件visualsfm和meshlab对物体进行三维重建。Visualsfm是基于SIFT提取特征点的匹配软件,能够做到对多幅图像进行特征提取和稀疏点云,稠密点云的生成。Meshlab主要是完成对物体表面的重建和纹理贴图。一般通过泊松表面方程进行表面重建。
1、 visualsfm的操作步骤
a) visualsfm、PMVS和CMVS应该结合起来使用。其中PMVS和CMVS是用于将visualsfm生成的稀疏点云稠密化的软件部分
图1 visualsfm和pmvs cmvs应该包含的内容
下载链接:https://pan.baidu.com/s/1kVqYMVX
b) visualsfm导入文件
其中第四步中将输出一个文件夹和一个nvm文件。文件夹中的文件以后将用在meshlab重建中。
图2 visualsfm操作步骤
图3 第四步的输出2、 meshlab操作步骤
对于meshlab的操作网上也很完全,只不过那些大部分是关于旧版本的操作流程。我这里下载的是2016.12版本,相较于旧版本有些地方操作有变动。
a) 在上一步生成的文件夹**\00\中找到bundle.rd.out文件,拖入meshlab中。此时弹出加载list文件对话框,选择list.txt文件。
图4 选择list.txt文件,其中包含的是该文件夹下所有图片的路径和名称
b) File->Import Mesh导入model文件夹中的ply文件,有几个就导入几个;
c) 在以前的版本中需要将现有的mesh层合并(在右边的视图框中右击任一option->flatten visible layer),现在这个版本不需要。官网的解释是更新之后的poisson表面重建能够自动进行这个合并操作;鼠标左键能够对模型进行旋转观察操作,中键滚轮能够平移模型的位置;可以选择显示相机位置,在render->show camera,调整scale factor能够调整相机显示大小。
图5 相机显示
d) 先去除杂点,然后进行泊松表面重建。这一步很是麻烦,假如你的模型不大,生成的其他杂点特别的多,你可以选择在这一步把它们都框起来删除,或者在下一步中通过删除生成的面来得到一个干净点的模型。(有什么方便的操作我也不太清楚)
图6 左边的是选择点,右边是删除点。相邻的是对面的操作(此时没有完成表面重建时模型中还不存在面,因此按另外两个按钮会提示no face)
e) 进行泊松表面重建,选择filters->remershing ,simplification and reconstruction->screened poisson surface reconstruction
在这一步中将interpolation weight对应的数字调成0,然后reconstruction depth越大,重建效果越好。网上选的10左右
图6 泊松重建选项
f) 上面的操作会生成一个气泡把模型包起来,接下来使用Filters –> Selection –> Select faces with edges longer than把模型中多余的面去除。这一步中需要选中poisson mesh层,否则会提示错误
图7 视图框;调整threshhold打开preview,被选中将被删除的面将会显示红色。点击apply之后用之前的删除面按钮对选中面进行删除。这是
图8 与上面方法对应的手动删除多余面的操作
g) 生成纹理,Filter –> Texture –> Parameterization + texturing from registered rasters。
h) 投影纹理,Filter –> Texture –> Project active rasters color to current mesh, filling the texture。这里可以设置分辨率,512的2的二次方倍:512 / 1024 / 2048 / 4096 / 8192…分辨率越高,则结果越清晰
i) Export Mesh as…导出文件(假如下次想显示,直接在meshlab中导入生成的ply文件,不过要将生成的纹理图与该文件放在同一目录下)。