谷歌街景的功能是如何实现的?


谷歌街景是谷歌一个很吸引眼球的工具,请问这个功能是如何通过技术手段实现的?普通爱好者能否通过较业余的设备制作出类谷歌街景?

谷歌街景 街景 技术

sariri 9 years, 8 months ago

如果追求谷歌街景那样的覆盖基本是没什么意义,业余拍的话可以追求一下高质量的全景照片,毕竟不管是谷歌,百度还是腾讯,街景图片需要处理的量实在是太大了,而每张照片又必须人工处理,所以肯定没办法做到十分的精美。

技术的原理不复杂,通过gps定位,确定每一张照片拍摄的位置。然后通过适当的技术手段,在地图上把每一个点和这些照片关联起来。而地图技术,本质上也很复杂但是已经相对完善和成熟。

业余拍摄全景照片的话,你需要一个单反相机,需要有一个广角镜头(最好是鱼眼,视角越广越省事嘛),需要有一个三脚架,有了这些,你就可以搞定基础的摄影步骤了,如果腰包够鼓,还需要一个。

普通爱好者能做吗?理论上,能。因为谷歌街景一开始,就是谷歌内部的几个“业余爱好者”利用谷歌赋予他们的20%的自由时间做出来的。 但是,事实上这个理论上简单的东西背后太复杂,复杂到普通人搞不定这巨大的数据处理能力。

前端的数据采集过程也很有趣,一辆谷歌街景采集车,对于谷歌的天才工程师和产品经理们来说,曾经是他们最严峻的挑战。因为谷歌强大的后台计算能力,谷歌地图强悍的技术团队,让谷歌街景的发明人对于数据采集回来之后如何实现应用并不担心。但是他们在制作街景采集车的问题上,着实费了一番力气。

  1. 首先,弄个车,顶几个摄像头,下面接个电脑,当然还有好多其他电子设备。开出去……结果发现,电脑供电不足。汽车发动机功率无法再带动一个单独的发电机。于是,往车上装一台独立的发动机,用来发电。可是自己装是装不好的,于是他们团队不得不专门聘请了专业的汽车工程师和电气工程师来完成对汽车的改装。
  2. 供电问题解决了,汽车开出去,采集一圈数据回来,发现数据都没了。原来路途颠簸,硬盘被颠坏了。于是他们的汽车工程师又不得不给他们车上的电子设备设计了一套专门的悬挂系统,保证怎么开车都不会损坏硬盘数据。
  3. 有些地方太窄,汽车开不进去。于是还得设计一个自行车街景采集系统……又是一堆事儿。

谷歌地图不光为街景采集回来的照片进行定位和标签,甚至对海量照片数据进行了扫描,读取相关文字信息,来修正地图信息。这个工作量和计算量,是普通爱好者无论如何也搞不定的。 除了运算能力之外,Google的Geek工程师们的思维方法恐怕也是普通业余爱好者难以企及的。比如我的采访对象告诉我说:

“Google当时有很多非常出色的工程师,他们的想法都非常大胆。当时我印象非常深刻的一个例子是,就是说因为地图里会出现一个问题,比如这个路口的建筑的门牌号是100号,下个路口是200号。但是这条街道中间的各个门牌号都不是线性排列的,原来我们是约摸估计150号是在这个路中间,但是Google的工程师提出,我们可以让机器一张一张去识别街景中的照片,找出门牌号来,这样就能精确定位门牌号的位置。其实这个工作非常非常难,因为一张图片里有各种各样的内容。包括以前地图上对一些商家的介绍,一个店它是几点开门几点关门,我们都要找人打电话一个一个去问,现在可以通过街景上拍到的照片,就能把这些信息识别出来。先不说解决这个问题的方法是好是坏,一般这种问题我是不会想到用这种方法去解决问题的,但是这些Google的工程师就会想到让机器去识别图片这种纯技术的解决方法,这是一种非常人的思路。”

miaofun answered 9 years, 8 months ago

首先,谁都没有谷歌(Google)自己清楚他们的街景是如何制作的,我们去谷歌(Google)街景台湾的网站,找到关于街景制作的花絮页面。 一目了然的看见街景制作基本就是两个方面, - 数据采集(Data Acquisition) - 数据处理(Data Processing)

一. 数据采集(Data Acquisition)

谷歌(Google)自己拥有各式各样的采集设备 如:

  • 街景车

image description

  • 街景背包(比较酷炫)

image description

  • 街景三轮车?

image description

  • 街景雪橇(这个更酷炫)

image description

大部分的谷歌街景是由他们,因地制宜的自己改装各式交通工具,完成数据采集。改装细节不得而知,但是必须有的设备或者技术如下:

  1. 高精度GPS: 通常还配备高精度IMU辅助高楼林立的情况下GPS的不足。
  2. 全景相机: 这个在之前的图片中都很显眼,相机通常都置于较高的未知,并且看得出对着各个方向都有镜头。
  3. 本地传输和存储设备: 通过谷歌的系统的体积来目测,基本可以肯定数据是在出去作业的时候存储在交通工具或者车上,根据Google网站的最终产品,大概可以猜测出,每隔3-5秒就会有一组包含各个方向照片的数据需要即时存储,这个我们在类似的项目中处理的方法也很简单,USB3.0直连SSD的PC,不仅传输速度可以保证,SSD也不会像传统硬盘一样怕颠簸。

二. 数据处理(Data Processing)

image description

1. 调整图像

拿到照片以后回来做的事情自然是后期 简单说是PS,详细说就是图像处理,调整调整色彩,明暗,饱和度。 之后,为了保护隐私,强大的谷歌开发了一套面部(车牌)识别算法,自动将一些敏感部位打上了马赛克,比如这种。

image description

2. 制作360°全景照片

将同一瞬间拍摄的不同方向的照片,拼接在一起。

当然也是根据相机装配时的角度,预设了算法,自动拼接。

大概是这样

image description

再把这样一张照片投影在一个球面,或者立方体上

image description

大家去网站上可以拖动浏览街景,其实就是在转动这样一个球体(立方体)。

3. Geo-reference

将每张照片的地理信息坐标提取出来和谷歌地图Google Map的主数据库做个关联就差不多搞定啦。

image description

最后回答题主关于业余制作类似应用:

请参考 Applied street view 一间德国公司,有全套解决方案,你可以按照他的原理自己制作一套,网址 Applied Streetview Camera

关于全景拍摄

中国全景网-全景网-360全景-360度全景

国外一些DIY全景相机介绍

支架+GoPro的方案

clabb answered 9 years, 8 months ago

Your Answer