谷歌地圖可以說是谷歌最受歡迎的應用了,而其中的街景功能則是它受人喜愛的原因之一。很多人已經習慣了用谷歌地圖查詢地址,用街景功能查看地點實景圖,甚至可以把附近的街道全景看個遍,可以說是非常實用的功能。
雷鋒網(公眾號:雷鋒網)了解到,谷歌的街景是由無數的全景圖拼接形成的。而拍攝工作則是由一輛專業拍攝車完成。車頂裝載有由 15 部相機組成的叫做 rosette 的裝置。谷歌的工作人員開車在各個街道上進行拍攝,並利用軟體將照片拼接成全景圖的形式,最終成為我們在應用中看到的實時街景。
但因為谷歌使用多個攝像頭來捕捉每個圖像,因此可能會出現一些問題。比如相機幾何尺寸的校準誤差,15 個相機之間的時差或視差。這些問題可能導致圖像被撕裂或無法對齊。下面這張雪梨歌劇院的街景圖就是一個典型的例子。但是,據雷鋒網了解,谷歌現在正在利用一種新的軟體算法解決這類問題。
光流算法(Optical Flow)所以,谷歌是如何解決問題的呢?儘管把圖片對齊似乎是件簡單的事情,但谷歌必須在處理過程中計算大量變量。比如,上述提到的視差問題是因為 rosette 裝置中的每一個相機在空間位置上有一些輕微的差異導致的。相機位置的不同會讓每張圖片有些許的不同,而這些不同的角度就使得圖片拼接變得比較困難。
另一個問題在於時間點。rosette 是一個 15 臺相機組合的一套設備,但所有的相機必須保證在同一時刻按下閃光燈。想像一下:你坐在一輛行駛速度 35km/h 的車上,左右手分別拿了兩個相機,兩個手分別按下相機快門,大概左右手快門前後也得相差半秒。又因為車子在不斷移動,所以兩個相機拍到的畫面是不同的。那麼谷歌的 15 臺相機一起工作的話,差距結果可想而知。
上面提到的只是在繪製街景全景圖時會遇到的兩個問題(當然還有其他問題),為了解決這些問題谷歌開始使用一種全新的光流算法(Optical Flow)。光流的意思是指,分析照片的軟體可以在重疊的圖像中發現對應的像素點,一旦找到這些重疊的像素點,軟體就可以糾正它找到的偏移量。
幾何問題在解決了這些圖像差異的校準後,還必須確認在校準過程中,沒有出現更多的差異。因為在移動圖像一部分時,也會影響到圖像剩餘部分的排列方式。所以為了解決這個問題,谷歌需要改變整個場景得到幾何排布,以確保整個圖片依然完整而正確。
谷歌的做法是,對圖像的其他部分進行拉伸和壓縮,保證所有內容的一直排列。它使用在光流算法處理過程中找到的像素點作為參考點,找到需要拉伸或壓縮的位置。這個過程其實並沒有那麼容易,但是谷歌會對照片進行採樣,來減輕算法的計算壓力。
最終,這個新的處理方法將會減少全景圖中出現的誤差影像,並改善圖片整體的幾何形狀。雖然這個新算法仍不是完美的,但谷歌現在已經可以在整合全景圖的每個部分時做得更好了。同時,因為改進軟體的原因,谷歌也不用再重新拍攝一次所有街景來提升圖片質量了。
谷歌已經將這個新的軟體技術應用在已有的街景圖像中了。如果你有時間的話,可以去谷歌地圖中找找看一些著名地點全景圖的變化。谷歌去年聯合 HTC Vive 打造了一款 VR 應用 Google Earth VR,並且將街景也加入其中,我們可次從第一視角查看世界。而街景全景圖的提升,想必也將改善 VR 體驗。
via androidauthority.com 雷鋒網編譯
雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。