Visualsfm与meshlab三维重建

目前使用最方便且广泛的三维重建是利用免费软件visualsfm和meshlab对物体进行三维重建。Visualsfm是基于SIFT提取特征点的匹配软件,能够做到对多幅图像进行特征提取和稀疏点云,稠密点云的生成。Meshlab主要是完成对物体表面的重建和纹理贴图。一般通过泊松表面方程进行表面重建。

1、 visualsfm的操作步骤

a) visualsfm、PMVS和CMVS应该结合起来使用。其中PMVS和CMVS是用于将visualsfm生成的稀疏点云稠密化的软件部分

深度学习实现SDF表面重建 meshlab表面重建_三维重建


图1 visualsfm和pmvs cmvs应该包含的内容

下载链接:https://pan.baidu.com/s/1kVqYMVX

b) visualsfm导入文件

其中第四步中将输出一个文件夹和一个nvm文件。文件夹中的文件以后将用在meshlab重建中。

深度学习实现SDF表面重建 meshlab表面重建_软件_02


图2 visualsfm操作步骤

深度学习实现SDF表面重建 meshlab表面重建_meshlab_03


图3 第四步的输出2、 meshlab操作步骤

对于meshlab的操作网上也很完全,只不过那些大部分是关于旧版本的操作流程。我这里下载的是2016.12版本,相较于旧版本有些地方操作有变动。

a) 在上一步生成的文件夹**\00\中找到bundle.rd.out文件,拖入meshlab中。此时弹出加载list文件对话框,选择list.txt文件。

深度学习实现SDF表面重建 meshlab表面重建_深度学习实现SDF表面重建_04


图4 选择list.txt文件,其中包含的是该文件夹下所有图片的路径和名称

b) File->Import Mesh导入model文件夹中的ply文件,有几个就导入几个;

c) 在以前的版本中需要将现有的mesh层合并(在右边的视图框中右击任一option->flatten visible layer),现在这个版本不需要。官网的解释是更新之后的poisson表面重建能够自动进行这个合并操作;鼠标左键能够对模型进行旋转观察操作,中键滚轮能够平移模型的位置;可以选择显示相机位置,在render->show camera,调整scale factor能够调整相机显示大小。

深度学习实现SDF表面重建 meshlab表面重建_meshlab_05


图5 相机显示

d) 先去除杂点,然后进行泊松表面重建。这一步很是麻烦,假如你的模型不大,生成的其他杂点特别的多,你可以选择在这一步把它们都框起来删除,或者在下一步中通过删除生成的面来得到一个干净点的模型。(有什么方便的操作我也不太清楚)

深度学习实现SDF表面重建 meshlab表面重建_深度学习实现SDF表面重建_06


图6 左边的是选择点,右边是删除点。相邻的是对面的操作(此时没有完成表面重建时模型中还不存在面,因此按另外两个按钮会提示no face)

e) 进行泊松表面重建,选择filters->remershing ,simplification and reconstruction->screened poisson surface reconstruction

在这一步中将interpolation weight对应的数字调成0,然后reconstruction depth越大,重建效果越好。网上选的10左右

深度学习实现SDF表面重建 meshlab表面重建_软件_07


图6 泊松重建选项

f) 上面的操作会生成一个气泡把模型包起来,接下来使用Filters –> Selection –> Select faces with edges longer than把模型中多余的面去除。这一步中需要选中poisson mesh层,否则会提示错误

深度学习实现SDF表面重建 meshlab表面重建_软件_08

深度学习实现SDF表面重建 meshlab表面重建_meshlab_09


图7 视图框;调整threshhold打开preview,被选中将被删除的面将会显示红色。点击apply之后用之前的删除面按钮对选中面进行删除。这是

深度学习实现SDF表面重建 meshlab表面重建_meshlab_10


图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文件,不过要将生成的纹理图与该文件放在同一目录下)。