2017年11月20日
当前位置: 首页 » 3D建模 » 打造离线版 123D Catch

打造离线版 123D Catch

(如果您在使用 123D Catch 的过程中遇到任何问题,欢迎加入 Autodesk 的官方 QQ 群:232449110,有专人为您解答问题哦)

Autodesk 的 123D Catch 让我们能够很简单的根据一组照片构建3D物体,你只需要从各个角度拍摄希望建模的物体,然后通过 123D Catch 将照片上传到 Autodesk 的云端服务器,等待几分钟之后,就能下载到完成的模型,是不是像变魔术一样?

01 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

但是在上传照片和下载模型之间到底发生了什么,由照片重建三维模型是个怎样的过程,123D Catch 却没有告诉好奇的我们。而且总是要把图片上传到云端总感觉不太方便,说不定我们偶尔想要重建个私密的模型呢?今天就让我们尝试用开源软件来替代 123D Catch,完成照片重建的任务!

我们将要建模的对象是 123D Catch Windows 版提供的示例照片,你可以在 123D Catch 的 sample_project 目录中找到他们。

02 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

123D Catch 和开源软件方案的建模效果如下。左边是 123D Catch 的局部,右边则是我们自己动手建模的结果,觉得哪个效果好些呢?

03 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

需要事先说明的是,本文的目的在于展示一种技术上的可能性,并非主张人们自己动手来尝试照片重建。对于绝大多数用户来说,123D Catch 仍然是照片重建的首选。其次,笔者只是在业余时间进行了一些调查,并非计算机视觉科班出身,行文中如果有错误敬请指正。

那么,让我们先了解下照片重建的主要步骤吧。

照片重建的主要步骤

整个重建过程大致有以下几步,

1、找出各张照片中的特征点,进行两两匹配

这一步讲究的是能够精确识别物体的局部特征,并且进行快速准确的匹配,由于在实际拍摄中,可能存在物体的旋转、缩放、或者亮度变化,所以难度不小。现在常用的算法是由 David Lowe 提出的 SIFT 方法。

2、根据匹配的结果,利用射影定理计算得到相机位置等场景信息

这步又称运动恢复结构(Structure from Motion)。对于结果的衡量标准主要是准确性,流行使用的是基于 Levenberg-Marquardt 算法的 Bundler。我们也可把这一步称为稀疏重建(Sparse Reconstruction)。

3、将场景信息与原始照片结合在一起,得到照片中物体的三维点云

有了场景信息,我们就能进行多视立体重建(Multi-view Stereo Reconstruction)了。由于处理的图像精度通常都比较高,所以这一步的计算量很大,执行效率也因此成为判断算法优劣的标准之一。除了效率之外,还需要考量重建的精度以及完整性,因为这些因素决定了点云的质量。PMVS 算法是目前表现最好的多视立体重建算法。另外,为了表示和稀疏重建的区别,这一步也成为密集重建(Dense Reconstruction)。

4、根据三维点云构建三维模型

我们已经得到了物体表面的一系列三维点云,但是还需要把这些点连成面,才能在一般的三维建模软件中使用。现在比较常用的是泊松表面重建算法(Poisson Surface Reconstruction)。是的,就是发明了能够用来预测火车是否晚点的泊松分布的那个人。

怎么样,是不是够复杂的。了解了这些主要步骤之后,让我们来实际操作吧。

使用开源软件完成重建

我们将使用 VisualSFM 来完成其中的前三步,VisualSFM 中已经包含了 SIFT 和 Bundler 的算法,不过为了完成第三步,你还需要下载 PMVS 的升级版 CMVS,VisualSFM 会自动调用。而对于第四步,我们需要使用 Meshlab 进行网格处理。

让我们开始吧。

1、识别特征点

打开 VisualSFM 后,我们点击批量添加照片的按钮

04 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

在弹出的对话框中选取 sample_project 中所有佛陀的照片

05 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

如果你在菜单中点选了 Tools > Show TaskViewer,将会在其中看到图片已经全部载入了。

06 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

图片载入之后,我们可以点击工具栏中四个箭头的按钮,开始查找特征值与匹配。

07 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

在 TaskViewer 中你能够看到每张照片中的 SIFT 特征值的数量,以及花费的时间。SIFT 计算结束后,VisualSFM 将会对这些特征逐一比对。

08 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

特征值的查找与匹配完成后,你会看到对于每张照片,VisualSFM 都为我们生成了一个 .sift 文件以及一个 .mat 文件,其中记录了特征点和匹配信息。

09 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

2、稀疏重建

完成了特征点的识别与匹配后,让我们点击类似于“快进”的按钮开始稀疏重建。

10 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

稍等片刻后,你就会看到 VisualSFM 为你重建的拍摄场景。

112 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

留意到佛陀周围的那些小点吗?那是 VisualSFM 计算得到的拍照时,照相机的各个位置。

3、密集重建

完成稀疏重建后,你会发现工具栏中多出了几个按钮,让我们点击其中的 “CMVS”,进行运算量最大的密集重建。

121 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

在弹出的对话框中填写希望保存的目录。

131 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

点击保存后,VisualSFM 就为我们开始进行漫长的密集重建了。重建完成后,在之前指定的目录中将会产生一系列的文件。

14 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

其中最关键的,是 models 目录中的 .ply 文件。

15 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

当我们在 MeshLab 中打开这个 .ply 文件后,就能看到重建结果了。

16 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

有没有看到右侧的佛陀,是不是像块埋在怪石中的玉?

4、构建三维模型

在进行泊松重建前,我们需要去除周围不需要的点云。Meshlab 工具栏中的下面两个按钮可以帮助我们选中以及删除。如果你觉得默认大小的点很难选取,还可以在选项中修改点的显示尺寸。

17 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

这是整个重建过程中最需要人工参与的部分。有否彻底清除不需要的部分将直接影响之后的重建效果。我们的佛陀清理的结果如下。

18 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

你可能会问这不是已经是个3D模型了吗?但是让我们放大了看下,我们会看到整个模型仍然是由点云构成的。

19 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

让我们开始泊松重建吧。

我们首先在菜单中选择 Filters > Point Set > Compute normals for point sets,计算点云的法线。

之后,仍然是 Point Set 菜单,选择其中的 Surface Reconstruction: Poisson,在弹出的对话框中我们需要输入几个参数。

20 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

让我们改动上部的两个参数。你也可以自己调整,看看什么样的参数组合对于你的模型结果最佳。点击 Apply 后,可以看到 MeshLab 为我们生成了模型的表面。

211 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

但是此时,这些新建的面并不包含颜色信息。我们需要 MeshLab 根据已有的点云,为我们计算新增的面的颜色。 可以在菜单中选择 Filters > Sampling > Vertex Attribute Transfer,

在弹出的对话框中,注意调整颜色的源和目标。

221 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

涂色过程应该不费时,稍等之后我们就能看到重建结果了!

23 打造离线版 123D Catch 照片重建 VisualSFM offline mode MeshLab 3D重建 123D Catch

至此整个重建过程结束。你可以将这个模型输出成你希望的格式,进行下一步的编辑或者打印。另外,在佛陀左手下方有块白斑,这是因为那里是我们的拍摄死角。你可以补拍一些照片。值得庆幸的是,当你补拍了照片并且添加到 VisualSFM 中时,其他照片的特征值以及匹配结果不需要重新计算。

对比 123D Catch,离线的开源方案让我们可以了解整个重建过程,也提供了更高的自由度,但是尝试之后它的缺点也是显而易见的。首先,离线开源方案需要更多的照片。123D Catch 可以在不满十张照片的情况下重建出不错的效果,但是开源方案则至少需要几十张,Autodesk 从 Acute3D 处购得的技术之强大可见一斑。其次,由于整个重建过程的计算量很大,在桌面系统上开源方案会跑的很吃力。重建佛陀,123D Catch 的云端服务器在几分钟内就能完成,但是跑在 4 核的 64 位 Windows 环境上的开源软件,光密集重建一步就花了半个多小时。

另外,除了本文中提到的 VisualSFM 之外,还有一些可以进行照片重建的免费方案,以后有机会让我们再看吧。

(感谢您读到这里,希望我们的文章对您有用。我们也希望您帮我们个小忙,我们有一份包含五个问题的用户调查,有时间的话请点击填写吧。)

喜欢这篇文章?分享给更多朋友吧~
...
  1. 下载 PMVS 的升级版 CMVS,您说VisualSFM会自动调用,不知道是我没下载完全还是怎么回事。最后执行CMVS的时候,里面不能生成PLY文件。这实在让我费脑筋,请教您怎么解决此问题。

    • 只要把cmvs.exe文件放在visualsfm概目录下就行了

  2. 您好,请问密集重建PMVS需要安装么?还是需要放在那个文件夹让VisualSFM好调用呢??希望得到您的帮助,谢谢。

  3. 我快崩溃了。Running Yasutaka Furukawa’s CMVS/PMVS tool…cmvs Z:3Dzhaoph.nvm.cmvs0 50 8Yasutaka Furukawa’s CMVS cannot be located!Please go download or compile them and place them where VisualSFM is or in your PATH还是不能定位CMVS,请求您的帮助。

    • 请问您的问题是怎么解决的呢?我也遇到了同样的问题

  4. 为什么每次匹配都没有结果呢—————————————————————-Compute Missing Pairwise Matching, finishedTotally 187.000 seconds usedImage region 646×428 at (0, 0)Run full 3D reconstruction, begin…0(0) pairs have essential matrices0(0) pairs have fundamental matrices—————————————————————-Run full 3D reconstruction, finishedTotally 0.000 seconds used求指导我的QQ号:595379710

    • 请确认一下正确生成了 .sift 文件,另外看您图片的大小是 646×428,不知道照片的特征值的数量大概是多少。

  5. SIFT: 0008, 1365×2048, ERROR: siftgpu failed the detection test!! ERROR1 0, 5.32sec果然是筛选就有问题,请问应该怎么解决。

  6. 请帮我一下,我也是遇到无法生成PLY的麻烦,试了几次都是这样,合成的时候也多多少少有好几张图片生效了,也能旋转,但就是生成不了PLY文件,请加我的QQ教我一下(956296659)谢谢!

  7. 你好!我在删除不需要的云点时出问题了。第一,使用选择工具选择后软件卡,而且选不中(反正再使用删除工具后没用)。

    • 加点内存吧。选不中的问题,建议你打开任务管理器,注意 cpu 一栏。当你选中删除工具,点击鼠标后,暂时不要松开,这时你会看到meshlab 占用的 cpu 百分比飙高,按着鼠标等待一下,等 cpu 恢复到正常水平后再开始拖动,应该就可以选中了。3D处理对机器性能要求很高,建议你考虑升级。

  8. 为什么我现在只能够进到 offline mode, 打不开 Create a new Capture?

  9. 请求帮助,我现在点击 Autodesk123D Catch 图标,总是得到 Offline mode 信息,可以打开 Autodesk123D Catch,但是不可以用 Create a new Capture。

  10. 我的也是密度重建不能生成ply文件,加Q给远程一下吧,Q:627369670。先谢谢了

  11. 提示:“siftgpu failed the detection test”,是否必须要有GPU啊?HP工作站配置的CPU可以吗?有啥解决的方法吗?急!********* WARNING ***********More than 112MB of graphic memory may be allocatedunder the default settings. If the program halts here,adjust parameters to save memory and rerun the task: [Tools->Enable GPU->Set Maximum DIM]Note some octaves may be automatically skippedERROR: siftgpu failed the detection test!!SIFT: 0000, 640×480, ERROR1ERROR: unable to locate sift binary.###########——-timing——#########1 Feature Detection finished, 2 sec used#############################36 pairs to compute matchNOTE: using 2 matching workers###########——-timing——#########36 Image Match finished, 0 sec used#############################—————————————————————-Compute Missing Pairwise Matching, finishedTotally 2.000 seconds used

  12. 我下载了cmvs-fix2.tar.gz (243Mb)不知如何安装,怎样由64位的VisualSFM的CMVS图标调用它。我的QQ号是1062625027,那位先生会请指教,我是退了修的找兴趣的学一学。我学过maya,softimage,massive,miarmy,renderman,有十年了都是自学的,现在遇到难点了请帮帮。谢谢!

  13. 我的Email是look178178@gmail.com或xglook178178@outlook.com请把方法发给我

  14. 您的文章对我非常有启发。想尝试一下,但是我没有找到你说的cmvs软件windows版,能否提供一份?qq邮箱:1261150812@qq.com

  15. 您好,不能生成ply文件Running Yasutaka Furukawa’s CMVS/PMVS tool…cmvs “C:Usershf tecDesktopVisualSFM_3987.comVisualSFM_3987.comlog1.nvm.cmvs0\” 50 8Yasutaka Furukawa’s CMVS cannot be located!Please go download or compile them and place them where VisualSFM is or in your PATH求支持,万分感谢,QQ67533635

  16. 你好,我用Filters > Sampling > Vertex Attribute Transfer这一步为什么没反应啊,还是原来那么白!而且在用了计算点云的法线的时候图像变为灰色,请帮忙回答一下吧,谢谢!Q2576266028

  17. 这个软件不错。但是谁了解三维重建的,我想自己实现一个,该怎么做呢,谁指教一下(qq:1051866112),谢谢

  18. 你好,能不能把第2、3步稀疏重建和密集重建的代码发我一份呢?因为我是做这方面的,非常感谢!邮箱:1272142403@qq.com

  19. 生成不了ply文件,困扰死了
    Running Yasutaka Furukawa’s CMVS tool…
    cmvs “C:Documents and SettingsAdministratorMy Documents哈哈哈.nvm.cmvs0\” 50 4
    genOption “C:Documents and SettingsAdministratorMy Documents哈哈哈.nvm.cmvs0\” 1 2 0.700000 7 3 4
    1 cluster is generated for pmvs reconstruction.
    pmvs2 “C:Documents and SettingsAdministratorMy Documents哈哈哈.nvm.cmvs0\” option-0000
    This may take a little more time, waiting…
    ERROR: the above CMVS command failed!
    求解答
    qq:545720642