实际上,PhotoSynth项目起源于Photo Tourism, 这是当时作为华盛顿大学研究生的Noah Snavely的一个研究项目,他的论文Photo tourism: Exploring photo collections in 3D发表于2006年。在Photo Tourism中,Noah整合了许多重要的计算机视觉技术,展示了许多惊人的效果,即便是到了14年后的今天,也还是会让人震撼不已。Photo Toursim的初衷是希望能够利用互联网上存在的成百上千的图片进行场景的三维重建,并加以先进的图像渲染和浏览技术,形成一个高级的图像浏览系统。例如,如果我们在Google上搜索Trevi Fountain(意大利罗马的一座著名的景点),我们会看到大量的照片: 而通过Noah的Photo Toursim系统,会重建出下面的点云数据,这个点云的每一个小区域都对应着原始的一张或多张图像,在当时,通过数百张完全没有事先标定过的无序图像重建三维点云还是一个比较困难的问题,即便是当时最好的软件都还存在错误多、速度慢等问题。作者开发了一个叫做Bundler的软件,通过迭代式优化的方式做到了这一点。 在Photo Tourism的主界面上,显示了点云对应的大量相机,通过点击相机,它会引导用户浏览到对应的图像细节。当用户框选目标的某个区域时,Photo Tourism会自动切换到让用户感知最佳的视角,并从已有的所有其他图像中选择最佳的那一张并投影的屏幕上。这里用户既可以在图像上进行框选,也可以通过在上面显示的点云中框选。其他的都交由系统自动进行计算。用户也可以通过缩略图挑选想要观看的图像,当选中时, 它会用非常平滑的切换方式切换到指定的图像,而不会生硬的切换. 而且,这里通过计算几何关系,用户也可以通过点击上、下、左、右按钮,来切换到空间上相邻的照片,或是切换到细节图或广角视图。注意图像与图像之间的关系并不是事先通过文件系统排放好的,而是系统自动从图像中计算出来的。作者把这称为'Relation-Based Browsing'。它甚至允许用户方便的将点云俯视图和实际地图对应,这样用户可以很方便的在地图上进行导航浏览。例如,下面是布拉格的市镇渲染图,它被渲染成了简笔画的形式,让用户可以非常方便的选择自己想要观察的视角,而右上角的小地图则会显示用户所在的区域俯视图。我真是有种在玩星际争霸的感觉^_^有时候人们想固定在某个视角来观察景物,Photo Tourism能够帮助用户做到这一点。你可以在某个固定的视角观察不同时刻不同角度拍摄的同一个物体,而所有这些相片都会投影到你当前所观察的视角上。看到这里,我想你已经对Photo Tourism有了基本的了解了,一想到这是14年前的学生项目,就让人感叹美国的高等教育水平和计算机科学技术确实很厉害,不管我们今天因为种种原因再怎么看待这个国家,他们的先进技术和教学方法还是要去多学习的,师夷长技不丢人。这也是我写这个专栏的其中一个原因。说回到Noah Snavely,他当时的指导老师包括了华盛顿大学的Steve Seitz教授,以及微软研究院的Rick Szeliski(就是著名的《计算机视觉-算法与应用》的作者)。也许正是这些因素,当微软2006年收购了一家做图像无损缩放的公司Seadragon后,就开始以Noah 的技术为基础开始了PhotoSynth的研发工作。但在记者访问项目的主持人, Seadragon的创始人Blaise Aguera y Arcas时,他讲到说Noah的原始论文中有很多很好的想法,但还没有做到PhotoSynth中。There were a lot of great ideas in Noah's original work, though, some of which still haven't made it into Photosynth.Blaise Aguera y Arcas也是一位牛人,他在TED上有精彩的介绍PhotoSynth的演讲,我把视频贴到这里,大家感兴趣可以点击看看:https://www./watch?v=wB7HstiwcXc&t=406s有了更好的平台的支持,Noah在Photo Tourism的基础上进行了更深入的研究。在2008年的SIGGRAPH,他展示了论文Finding Paths through the World's Photos和相关成果,他能够通过对图像数据的空间信息的分析,自动挖掘出大量图像拍摄时遵循的轨迹信息,从而能够做到让计算机像导游一样带领用户以最佳的路径浏览某个目标区域,见下面的动图:不仅如此,他还改进了图像间的颜色、亮度均衡技术,使得在切换视角导致图像变换时,不至于看起来很突兀。到了2009年,华盛顿大学的Sameer Agarwal等人和Noah一起,发表了更加震撼人心的研究成果Building Rome in a Day。如果说之前Noah的研究主要是在改进图像的浏览、渲染等方面,那么这一次他们则集中注意力在如何设计一个高计算性能平台,使得可以在几十小时内用几十万张互联网上抓取的互不相关的无序图像重建出一整个城市。最终,他们用15万张罗马城的照片,花21个小时重建了整个罗马,你可以看看下面这个超级庞大的点云图展示:下面是克罗地亚的中心城市Dubrovnik的重建结果,重建这里使用了57845张照片,总共花了22.5小时作者们的目标是能够在24小时内利用高达400万张图像进行罗马城的3D重建,在论文发布时,作者也提到离目标还有1个数量级的差别,他们会继续去改进这个系统——我没有查过现在的最新情况。但仅就这11年前的结果,已经给了我太多的想象空间了!这样的技术在很多领域都有重要的作用,我相信我们国内很多学校、公司也肯定已经在从事三维重建技术的研究和应用,但要论利用海量互联网无序图像进行城市级别的三维重建和图像浏览,无论如何Sameer Agarwal、Noah Snavely等都是这个领域的开拓者!
三. 核心技术简介
在整个上面所述的系统中,采用了大量计算机视觉、图形学中的技术,即便是2006年发布的Photo Tourism也是有很多可挖掘的点,而Noah当时还是个在读研究生——这也是我非常震撼的原因之一!由于篇幅原因,今天就仅能挑选其中最关键的两个技术做讲解,我会阐述的点包括:1、点云重建方法:Structure From Motion2、图像间的平滑切换:View Interpolation3.1 点云重建当看到15万个图像构成的罗马城的点云图时,你一定会在心中想到:这到底是如何实现的啊。实际上,三维重建有很多种方法,而作者在这里采用的是一种叫做Structure From Motion的方法。回忆一下我们之前讲过的小孔成像模型