一窺Google如何打造完美全景圖!
合作媒體:雷鋒網/作者:何忞
林詩容/編譯 2017-11-14 13:30

 (示意圖;來源為Pixabay)

 

Google地圖可以說是Google最受歡迎的應用了,而其中的街景功能則是它受人喜愛的原因之一。很多人已經習慣了用Google map查詢地址,用街景功能查看地點實景圖,甚至可以把附近的街道全景看個遍,可以說是非常實用的功能。

 

雷鋒網瞭解到,Google的街景是由無數的全景圖拼接形成的,而拍攝工作則是由一輛專業拍攝車完成,車頂裝載有由15部相機組成的叫做rosette的裝置。Google的工作人員開車在各個街道上進行拍攝,並利用軟體將照片拼接成全景圖的形式,最終成為我們在應用中看到的實時街景。但因為Google使用多個攝影鏡頭來捕捉每個圖像,因此可能會出現一些問題,比如相機幾何尺寸的校準誤差,15個相機之間的時差或視差。這些問題可能導致圖像被撕裂或無法對齊,下面這張雪梨歌劇院的街景圖就是一個典型的例子,但是,據雷鋒網瞭解,Google現在正在利用一種新的軟體算法解決這類問題。

 

 

光流算法(Optical Flow)

 

所以,Google是如何解決問題的呢?儘管把圖片對齊似乎是件簡單的事情,但Google必須在處理過程中計算大量變數。比如,上述提到的視差問題是因為rosette裝置中的每一個相機在空間位置上有一些輕微的差異導致的。相機位置的不同會讓每張圖片有些許的不同,而這些不同的角度就使得圖片拼接變得比較困難。

 

另一個問題在於時間點。rosette是一個15台相機組合的一套設備,但所有的相機必須保證在同一時刻按下閃光燈。想像一下:你坐在一輛行駛速度35km/h的車上,左右手分別拿了兩個相機,兩個手分別按下相機快門,大概左右手快門前後也得相差半秒,又因為車子在不斷移動,所以兩個相機拍到的畫面是不同的。那麼Google的15台相機一起工作的話,差距結果可想而知。上面提到的,只是在繪製街景全景圖時會遇到的兩個問題(當然還有其他問題),為瞭解決這些問題Google開始使用一種全新的光流算法(Optical Flow)。光流的意思是指,分析照片的軟體可以在重疊的圖像中發現對應的像素點,一旦找到這些重疊的像素點,軟體就可以糾正它找到的偏移量。

 

 

幾何問題

 

在解決了這些圖像差異的校準後,還必須確認在校準過程中,沒有出現更多的差異。因為在移動圖像一部分時,也會影響到圖像剩餘部分的排列方式,所以為瞭解這個問題,Google需要改變整個場景得到幾何排布,以確保整個圖片依然完整而正確。

 

Google的做法是,對圖像的其他部分進行拉伸和壓縮,保證所有內容的一直排列,它使用在光流算法處理過程中找到的像素點作為參考點,找到需要拉伸或壓縮的位置,這個過程其實並沒有那麼容易,但是Google會對照片進行採樣,來減輕算法的計算壓力。

 

 

最終,這個新的處理方法將會減少全景圖中出現的誤差影像,並改善圖片整體的幾何形狀,雖然這個新算法仍不是完美的,但Google現在已經可以在整合全景圖的每個部分時做得更好了。同時,因為改進軟體的原因,Google也不用再重新拍攝一次所有街景來提升圖片質量了。

 

Google已經將這個新的軟體技術應用在已有的街景圖像中。如果你有時間的話,可以去Google map中找找看一些著名地點全景圖的變化。Google去年聯合HTC Vive打造了一款VR應用Google Earth VR,並且將街景也加入其中,我們可從第一視角查看世界,而街景全景圖的提升,想必也將改善VR體驗。

 

圖文授權自 雷鋒網