上帝视角任意切换:三维重建和图像渲染是怎么结合的?

共 6417字,需浏览 13分钟

 ·

2020-09-02 18:27

↑ 点击蓝字 关注极市平台

作者丨HawkWang
来源丨计算摄影学
编辑丨极市平台

极市导读

 

本文介绍了3D图像网站PhotSynth及其前身Photo Tourism,并讲解了它们的两大核心技术——点云重建和图像间的平滑切换。


一. 从PhotoSynth谢幕讲起

2017年2月6日,微软正式关闭了PhotoSynth的网站和相关服务。这可能是世界上第一个3D图像创作、分享应用,它的落幕可能有微软自身商业策略的调整,可能也和产品本身实际为微软带来的收益不符有关。但无论如何,这个系统在我看来堪称是三维重建和图像渲染、浏览技术的经典作品。因此这一篇文章就从它讲起。
PhotoSynth的一大特色,是可以允许人们用上帝视角来观察某个特定的景点,并且可以任意切换视角。用户看到的图像实际上可以是从成百上千互联网上获取的图像中渲染而成的,比如下面这样:


可以让用户任意切换视角,像在游戏中一样:

在10年前的iPhone手机上,我们就可以利用PhotoSynth生成逼真的3D全景照片:


这么早就开发了如此牛的应用,而且又说关闭就关闭,微软太舍得了!真是不知道手里还掌握着多少黑科技啊。

. 14年前的研究项目-Photo Tourism

实际上,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.youtube.com/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 Motion
2、图像间的平滑切换:View Interpolation
3.1 点云重建
当看到15万个图像构成的罗马城的点云图时,你一定会在心中想到:这到底是如何实现的啊。实际上,三维重建有很多种方法,而作者在这里采用的是一种叫做Structure From Motion的方法。
回忆一下我们之前讲过的小孔成像模型

可以看到,一个三维空间中的点X,会被一个投影矩阵P投影为二维图像上的点x。这里的矩阵P由几个部分组成:

对于我们现在的SFM问题,我们仅仅知道的是二维图像信息x,P的各个组成部分,以及三维点信息X,都是未知数。所以SFM问题就是同时求解P和X的问题,这需要足够多的图像信息x才能稳定求解。
在下面这个示意图中,我们有三幅已知图像,展示了同一个立方体,它的几个角点是实现确认并已经一一对齐好了的。现在我们首先估计出这个立方体的角点的三维坐标Xi,估计出三个图像对应的相机参数(用投影矩阵P来表示),那么我们可以重新把Xi投影到三幅图像上。这些重新投影回图像的角点,和原来我们在图像上观察到的角点之间可能有一些误差,你可以看到X1实际上投影到了右边这幅图的绿色点上,和原来的红色角点之间就有了误差。
这个误差正是我们想要利用的,SFM问题变成了最小化这个误差的问题:
这是一个非线性最小二乘优化问题,最小化这个式子的过程,称为Bundle Adjustment,一般可以用Levenberg-Marquardt一类的方法来求解。
作者面临的问题规模是非常巨大的。例如重建意大利罗马的Trevi Fountain时,作者提到有466张输入图像,大于10万个3D点——很显然,这是一个规模巨大的问题。作者提到在他们之前的所有SFM算法系统都只是针对相对简单的问题,而他们则通过采用一系列优化措施使得可以在大规模的无序自然图像数据集上进行SFM。这些措施包括但不限于:
1、利用姿态估计添加新相机信息到已有数据中
2、选择最适合的两幅图像作为整个优化的基础
3、对重建的点云的质量做精确的判别,判别通过后才加入点云之中
4、利用图像自身所带的EXIF信息来优化估计
当然,在城市级别的重建时,作者更多展示的是各种大规模计算机系统级别的工程手段,你可以看到下图作者展示的复杂的计算系统,由超多的节点和复杂的Pipeline组成:
下图展示了作者的重建效率,你可以看到重建罗马时,用了15万张图像,496个计算单元,21个小时来完成。这些计算单元在2009年时就有32 GB的内存和1 TB的硬盘——这确实说明,高科技是要靠钱堆出来的啊~
在这个过程中,Noah一个非常重要的贡献是开源了他开发的SFM软件库 Bundler,现在以及可以在github上可以下载到:github.com/snavely/bund,你也可以尝试去用用,体验一下。
3.2 图像间的平滑切换
Noah在Photo Tourism中展示的另外一个关键技术点是在图像与图像之间自然、平滑的切换。这本身并不是特别新鲜的技术,但作者通过两个关键点将效果做到了最佳:
1、根据用户的操作或是自动计算的轨迹,系统计算出虚拟相机的视角
2、通过虚拟相机的视角,进行视角插值(View Interpolation)
对于第一点,当虚拟摄像机从一张照片移动到另一张照片时,系统会对如下信息做线性的插值:
1、相机的位置
2、相机方向
3、相机视差
这样当移动到目的照片时,整个画面会尽可能多的占满屏幕。
作者尝试了两种View Interplolation的方式,第一种是比较复杂的基于两个相机的三维信息进行的虚拟视场生成,第二种则是我们传统意义上的Morphing,作者称为Planar morphs,即将两个图像投影到某个平面上(其实就是利用单应矩阵进行投影),然后对投影后的图像进行融合。
对这两种方法,一本非常有名的书籍Computer Vision for Visual Effects(作者Richard J. Radke)有详细的介绍,下面是两种方法的演示视频。我们先看看Morphing的原理。你可以看到,我们是将两幅图像通过某种变换方式投影到中间状态,然后融合中间状态的图像,得到最终的图像M。Richard在书中采用的是光流计算两个图像间的稠密变换场进行第一步的变换,而Noah则仅仅采用了单应矩阵来进行中间状态的投影,我理解这是因为他搜集的大量是景物照片,这些照片中感兴趣的区域都可以近似的看做是平面,这也是为啥他称作为Planar Morphs
下面是Richard在书中展示的Morphing效果
然而,在某些时候,特别是两个图像差异较大的时候,Morphing很难得出逼真的效果,即便是图像间的匹配已经计算得非常精确了。例如下面这个展示,你可以看到虽然我们从一个图像平滑的切换到了另外一个图像,但整个过程却显得非常不自然,你可以看到直线变得弯曲了。
这时候View Synthesis这种技术就很有用了,事实上View Synthesis是基于图像的渲染领域的主要问题之一,它的目的是利用已知的图像创建虚拟视角的逼真的新图像。有很多方法来做虚拟视角图像的生成,Richard在书中提到的方法原理如下,你可以看到这是通过先把图像利用三维旋转信息校正到同一平面进行融合,然后再反变换回原始空间来完成的。
而我们今天的主角Noah则在Photo Tourism论文中阐述了一种更加复杂的基于三角剖分、纹理映射的方法,这显然是典型的计算机图形学的思想。从理论上讲View Synthesis的效果会更加逼真,但Noah也提到由于Planar morphs的效果更加鲁棒,他将这种方法作为了默认的插值方法。

四. 总结

PhotoSynth已经落幕,但其背后的技术核心却已经在这么十几年间得到了很大的发展。得益于并行计算技术,GPU技术等高性能计算手段的发展,今天人们可以更加容易的进行大规模的三维重建了。而虚拟视角生成等技术也早已在很多领域得到了应用(比如VR),我们在Google 街景等应用中也能够看到它的身影。但通过互联网上的海量无序图像数据来重建整个城市,乃至整个地球,依然是一个超级震撼人心的想法。
一想到Noah在学生时代就能做出如此庞大而新颖的系统,再对比下我自己读书时是如何水过去的,就感到惭愧。希望这篇文章能给你启发,如果你还是学生,希望能看到前人的榜样,努力学习和探索,不负青春。
参考资料

CMU 2017 Fall Computational Photography Course 15-463, Lecture 20

Photo Tourism项目页面上的视频、论文

Finding Paths through the World's Photos项目页面上的视频、论文

Rome in a day项目页面上的视频、论文

Computer Vision for Visual Effects主页上的视频,以及书籍本身


推荐阅读



添加极市小助手微信(ID : cvmart2),备注:姓名-学校/公司-3D-城市(如:小极-北大-3D-深圳),即可申请加入极市3D等技术交流群:每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~

△长按添加极市小助手

△长按关注极市平台,获取最新CV干货

觉得有用麻烦给个在看啦~  
浏览 62
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报