【原文:http://www.didayin.com/archives/695】
之前我们了解了如何使用 VisualSFM 对多张照片进行3D重建。除了 VisualSFM 之外,其实还有其他方法能够完成同样的任务,今天就为大家介绍一下 Python Photogrammetry Toolbox(下称 PPT)。
使用 PPT 进行照片重建,基本步骤与使用 VisualSFM 时相同,分为特征识别、特征匹配、稀疏重建以及稠密重建几步。不过 PPT 通过 Python 脚本语言将 bundle、PMVS 等工具封装了起来,一方面提供了跨平台性,更重要的,整个重建过程可以依靠脚本完成,减少了人工参与的成分。
您需要在下面的网页下载安装 PPT。
http://www.arc-team.homelinux.com/arcteam/ppt.php
如果您按照网页上的介绍,除了 PPT 之外还安装了相应的 GUI,那么重建过程会更直观。我们下面的示例也将使用 GUI。这次用于重建的照片,仍然是 Autodesk 123D Catch 中自带的佛陀,你可以在 123D Catch 安装目录下的 sample_project 中找到这些照片。
启动 PPT 的 GUI,你将看到主程序界面。
主界面中有 4 个 tab,常用的是前两个。“1. Run Bundle” 用于识别与匹配图像特征点,“2. Run CMVS/PMVS” 则完成稀疏与稠密重建。
点击 Select Photos Path 后,我们可以在弹出的对话框中选择我们希望重建的照片所在的目录。除了指定照片目录之外,界面中还提供了一些选项。其中 Select Feature Extractor 用于选择特征的抽取方法。不同的抽取方法可能有不同的许可证要求,不过对于我们试用来说区别不大。右侧的选项可以让你对图片进行统一的缩放。每次你改动配置,底部的 Run 中的命令行都会相应更新。
配置停当后,点击 Run,就可以开始我们重建的第一步了。此时,在 Python 的 Console 中,你可以看到识别以及匹配的过程。
在识别匹配完成后,会自动弹出工作目录,其中保存了各个照片的特征值以及匹配结果。
我们在主界面中切换到 “2. Run CMVS/PMVS” 标签,在 “Select Bundler Output Path” 中填入之前的工作目录。需要注意的是下面这个选项。
该选项决定了 PMVS 将使用多少张照片重建模型。如果填入的数字小于照片的总数,那么将会得到多个模型,这样你还得手动将这些模型组合起来。因为佛陀的照片一共有 40 张,所以我们直接在这里填入 40。同样的,每次你改变配置,Run 中的命令行都会相应改变。配置完之后,点击 Run,便开始稀疏重建了。与在 VisualSFM 中一样,这一步非常耗费 CPU,所以请在空闲时运行。
经过一段时间等待之后,刚才的工作目录中会多出现 pmvs 的目录,重建的结果就在其中。
打开 models 下的 ply 文件,我们就又可以看到我们熟悉的佛陀朋友了。
到这里我们已经得到了模型的点云。其后的根据点云重建多边形的步骤,与使用 VisualSFM 时相同,这里就不再介绍了。
总的来说,PPT 的重建结果与 VisualSFM 区别不大,不过 Python 的便利性还是提供了很多二次开发的可能性,如果你有什么好主意,欢迎交流哦!