在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的[轉]


在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

也許就是這一兩年之間,隨着VR熱潮的風起雲涌,“全景”這個詞匯被一次又一次地搬上了台面,再冠以“虛擬實景”,“3D實景”,“360度”,“720度”等種種名號,以至於被很多人當作了虛擬現實內容具體呈現形式的主要代名詞。

誠然,VR內容的缺失問題現在已經被越來越多的開發者和商業團體所關注,而全景拍攝的圖片和視頻,以及正在襁褓期的VR電影,無疑會成為一種很好的內容落地方式。它能夠在不需要過多的交互方式以及因此產生的學習成本的同時,帶給觀看者充分的沉浸式體驗,以及通過離線渲染和攝影得到各種極致的效果。

那么,全景的定義與實現過程究竟是怎樣的,人們可以如何去構建全景內容呢?本文會嘗試從多個不同的關鍵角度去進行講述,期望能夠對前赴后繼的創想者們有所助益。

1、投影方式

全景拍攝並非是多么時新的一個概念,事實上它甚至可以追溯到12世紀的《韓熙載夜宴圖》:

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

當然這並非真正意義上的沉浸式體驗,就算我們把這幅長畫給卷成一個圓筒,然后站在中心去觀看,也依然會覺得缺失了一點什么,沒錯,一個明顯的接縫,以及頭頂和腳下兩片區域的空白。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

出現這種問題的原因是很簡單的,因為宋朝人並沒有打算把這幅畫做成沉浸式的體驗——當然這是廢話——真正的原因是,畫面對應的物理空間視域並沒有達到全包圍的程度,也就是水平方向(經度)360度,垂直方向(緯度)180度。沒錯,說到這里,你一定想到了這張圖:

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

類似這樣的世界地圖也許在你家里的牆面上已經貼了有一些年頭了,也許自從升上大學之后你從未正眼瞧過它,但是它卻符合一張全景圖片需要的全部條件,你把它放到各種VR眼鏡里去觀看的話,就宛若陷入了整個世界的環抱當中。

這種能夠正確地展開全物理視域的真實場景到一張2D圖片上,並且能夠還原到VR眼鏡中實現沉浸式觀看的數學過程,就叫做投影(projection)。

 

而那張看起來平凡無奇的世界地圖,使用的就是一種名為Equirectangular的常見投影方式,它的特點是水平視角的圖像尺寸可以得到很好的保持,而垂直視角上,尤其是接近兩極的時候會發生無限的尺寸拉伸。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

下圖中對於這種投影方式的拉伸現象體現得更為明顯,注意看穹頂上的紋路變化,越是靠近畫面的頂端,就越是呈現出劇烈的扭曲變形。幸好,VR頭盔和應用軟件的意義也就在於將這些明顯變形的畫面還原為全視角的內容,進而讓使用者有一種身臨其境的包圍感。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

然而全景圖像的投影方式遠不止這一種,比如最近剛剛發布的理光Theta S以及Insta360全景相機,就采用了另外一種更為簡單而有效的投影策略:

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

通過它的兩個魚眼攝像頭輸出的畫面,各自涵蓋了180度的水平和垂直視場角,然后將兩個輸出結果“扣”在一起就是全視域的沉浸式包圍體了。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

當然,這種名為Fisheye的投影方式,生成的2D畫面事實上扭曲變形是更加嚴重的。而通過圖像重投影處理的方式將它變換到VR眼鏡中顯示的時候,受到圖像采樣頻率的限制(或者通俗點說,像素點大小的限制),這樣的扭曲被還原時會多少產生一定程度的圖像質量損失,因而也可能會造成全景內容本身的質量下降。

由此看來,作為全景內容的一種重要承載基體,投影圖像(或者視頻)不僅應當完整包含拍攝的全部內容,還要避免過多的扭曲變形以免重投影到VR眼鏡時產生質量損失。

那么,除了上述兩種投影方式之外,還有更多方案可以選擇嗎?答案是,當然了,而且有的是!

比如墨卡托投影(Mercator),它沿着軸線的拉伸變形比Equirectangular更小,對應實際場景的比例更為真實,但是垂直方向只能表達大約140度左右的內容;

 

又比如Equisolid投影,也有人稱之為“小行星”或者“720度”全景,它甚至可以把垂直方向的360度視域都展現出來,但是前提是使用者並不在乎巨大的扭曲變形可能帶來的品質損失:

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

那么,有沒有什么投影方式生成的畫面,是能夠覆蓋至少360度水平方向和180度的垂直方向,並且沒有任何畫面的扭曲變形呢?

答案是:沒有扭曲變形的單一圖像投影方式,是不存在的。然而,如果投影的結果畫面不是單一圖像的話,方法還是有的:

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

如果你正好是一位圖形開發或者虛擬現實軟件開發的從業者的話,這張圖對你來說應該是非常熟悉的,這就是Cubemap(立方體圖像)

它相當於一個由六幅圖像拼合組成的立方體盒子,如果假設觀察者位於立方體的中心的話,那么每幅圖像都會對應立方體的一個表面,並且在物理空間中相當於水平和垂直都是90度的視域范圍。而觀察者被這樣的六幅畫面包圍在中心,最終的視域范圍同樣可以達到水平360度,垂直360度,並且畫面是絕對不存在任何扭曲變形的。

如下:

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

這是一種很理想的投影結果了,並且如果你恰好懂得使用一些離線渲染軟件或者插件來制作和輸出全景內容的話,這一定是最合適的一種選擇。然而,在實際拍攝當中我們卻幾乎不可能用到這種立方圖的記錄方式,原因很簡單——我們現有的拍攝設備難以做到。

2、拼接與融合

如果說有六台攝像機,它們的FOV角度被嚴格限定為水平和豎直都是90度,然后造一個一絲不苟的支架,把這六台攝像機牢固而穩定地安裝到支架上,確保它們的中心點嚴格重合在一起,並且各自朝向一個方向——這樣的話,輸出的圖像也許能夠正好符合立方圖的標准,並且可以直接使用。

然而,無論攝像機鏡頭的感光面積,焦距參數(以及因此計算得到的FOV視場角度),還是支架的鋼體結構設計與制作,都無法確保精確地達到上面要求的參數,幾mm的光學或者機械誤差看似無傷大雅,但是對於嚴絲合縫的立方圖圖像來說,必然會在最終呈現的沉浸式場景中留下一條或者多條明顯的裂縫。更何況還有支架運動時產生的振動問題,以及相機鏡頭老化產生的焦點偏移問題,這些看似細小的麻煩各個都足以讓我們剛剛構建的理想物理模型化為泡影。

理想和現實的差距如此之大,幸好我們還有解決的辦法——沒錯,如果在拼接的地方留下足夠大的冗余,然后正確識別和處理兩台攝像機畫面重合的區域,這樣不就可以做到六幅畫面的輸出和組成全景內容了嗎——而這正是全景內容制作的另一大法寶,圖像的拼接與邊緣融合。

下圖是360Heros系列全景攝像機。

它使用了6個GoPro運動相機以及一個支架來輔助完成拍攝,這六台相機分別朝向不同的方向,如果采用4X3寬視角設定的話,其水平和垂直FOV角度約為122度和94度

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

在全景視頻拼接和輸出軟件中讀取六台攝像機的輸入流或者視頻文件,並且設置它們在支架上的實際方位信息(或者直接獲取數碼相機本身記錄的姿態信息)。這樣我們就得到了足夠覆蓋全視域范圍的視頻內容。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

正如我們之前所描述的,因為無法做到精確的對齊,因此需要在每台相機的視域角度上提供必要的冗余,因而得到的視頻畫面互相之間會存在一定的交疊關系,直接輸出全景畫面的時候,可能會存在明顯的疊加區域或者錯誤的接邊。雖然目前幾種常見的全景視頻處理工具,諸如VideoStitch,Kolor等具備一定程度的自動邊緣融合功能,但是很多時候我們還是免不了要自己手動去裁切和調整這些邊緣區域(例如下圖中使用PTGui來進行各幅畫面接縫的修正),擇取畫面質量更高或者畸變更小的邊緣區域,並且確保畫面之間是嚴格對齊的。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

這樣的工作耗時耗力,並且有一個重要的前提,就是作為輸入源的畫面必須能夠覆蓋360度全視域並且存在冗余。

正如我們之前所計算的,如果采用六個相機拼裝的方式,那么每個相機的FOV角度不應小於90度,對於GoPro Hero3系列相機來說,此時必須采用4x3的寬視域模式,如果是16x9的寬高比設置,那么垂直方向的FOV角度很可能無法達到要求的數值,進而產生“無論如何都拼接不上”的問題——當然我們可以通過在支架上調整各個相機的朝向角度,或者增加相機的數量,來避免這一問題的產生,不過無論從何種角度來看,采用接近1x1的寬高比的寬視域相機都是一個更為理想的選擇。

如果只是為了輸出一張全景圖片的話,那么上面的步驟通常來說已經綽綽有余,不需要再考慮更多的事情。但是,不會動的圖片是很難讓戴上VR頭盔的人哇哇大叫的,能看到身邊戰火紛飛,或者野鬼出沒的動態景象才更加刺激。如果你正在考慮如何制作如是的VR電影,那么有一個問題不得不提出來,那就是——

同步性——簡單來說,就是你手中所有的攝像機如何精確保證同時開始,以及在錄制的過程中保持幀率的一致性。

這看起來似乎並不算什么問題,然而如果兩台攝像機的開始時間不一致的話,會直接影響到它們的對齊和拼接結果——甚至如果場景中存在大量的動態元素或者相機位置在這個過程中發生了改變的話,結果可能根本是無法對齊的。因此,對於需要大量攝像機同時參與的全景拍攝工作而言,同步開始以及同步錄制的需求就變得分外重要了。

要從硬件上根本解決這個問題,可以用到“同步鎖相”(genlock)的技術,即通過外部設備傳遞時間碼來控制各台相機的同步運行(典型的例如Red One專業電影攝像機)。當然並不是所有的攝像機都具備專門的Genlock接口,這種情況下,也可以考慮一些傳統或者是看起來略微“山寨”的同步方法,例如:路見不平一聲吼……

在拍攝開始的時候,演員大吼一聲,或者用力拍一下巴掌。然后在進行拼接的過程中,找到每個視頻當中吼聲對應的時間節點,作為同步開始的位置,然后再進行全景視頻的拼接。這種方法雖然並沒有什么精確性可言,但是同樣沒有開銷什么額外的成本;但是確保了基本的同步起始位置之后,再進行視頻的細微調節和拼縫工作,卻無疑從相當程度上簡化了后期制作的難度。

類似的方法還有給所有的攝像機蒙上黑布,然后開始拍攝的時候快速抽走,等等。總之在硬件條件無法完全具備的前提下,就是八仙過海各顯神通的時候了。

3、立體與偽立體

細心的你可能已經發現,之前討論的所有全景視頻的拍攝過程都忽略了一個要點:無論采用何種投影方式,生成的都只是一幅360度的全景內容,放在PC或者網頁端去觀看當然沒有任何問題,但是如果要將這樣的內容輸入到VR頭盔顯示器上,結果恐怕是不正確的。為了將畫面賦予立體感並呈現到人的眼中,我們提供的內容必須采用左右眼水平分隔顯示的模式:

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

這看起來只是將原來的全景畫面復制了一份而已,但是悉心觀察的話,在靠近畫面邊界的位置就會發現,左右畫面的內容存在了一定的偏移。因為人的雙眼是存在一定的視角差的,雙眼各自看到的圖像有一定的差異,再通過大腦的解算就可以得到立體的感受。景物距離人眼越近,這種視差就越明顯,遠處的景物則相對沒有很強的立體感。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

而任何一種現有的VR眼鏡,都需要通過結構的設計確保佩帶者的左右眼都只能看到實際屏幕的一半,也就是分別看到分隔后的左右眼畫面內容,從而模擬了人眼的真實運作機制。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

這種情形下,全景內容的拍攝設備也需要做出一些對應的改動,比如將原來的6台相機改成12台相機,即每個方向都有左右眼兩台相機負責拍攝;支架的構建形式也因此與原來的設計大相徑庭(圖中為360 Heros3 Pro12,使用了12台GoPro運動相機)。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

 

對於拼接和融合軟件來說,倒是並沒有什么特別需要做的,只是要先后兩次讀取六個視頻流,處理后輸出兩個不同的全景視頻,分別對應左右眼的畫面內容。之后再通過后期工具或者應用程序將它們合並到一幅畫面中即可。

當然了,另辟蹊徑的路子也有很多,比如從2011年就震動了Kickstarter的眾籌者,卻直到如今VR全景應用大火卻依然沒有按期發出的Panono,它的設計原理是通過均勻分布在球體上的36個攝像頭來拍攝,拼接並得到左右眼的全景圖像。

這個設計雖然看起來拽得飛起,實際上卻是萬變不離其宗:朝向不同方向的36台攝像機拍攝的畫面,疊加在一起足以覆蓋水平360度和垂直360度的視域范圍,並且一定可以覆蓋兩遍!再加上自身精准的結構設計和安裝姿態,這樣就能夠從內部准確計算出拼接后的全景圖像,並且直接按照左右眼兩幅圖像的標准輸出視頻流或者文件,其能夠輸出的實際分辨率也是相當可觀的。

在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

與之相仿的還有Bublcam(四個遍布球身的超大廣角鏡頭),Nokia的OZO(8個遍布球身的廣角鏡頭),以及Jaunt研發中的產品等等。它們都具備直接輸出立體形式的全景內容的能力。

當然了,最不濟的情形下,我們還有一種選擇,就是自己假造一種立體模式……

將原始的全景畫面復制成兩份,其中一份向左偏移一點,另一份向右偏移一點,然后各自做一個輕度的透視變換(為了模擬視線角度的偏轉)。這樣構成的“立體”畫面在多數情形下也具有一定的立體欺騙效果,但是對於近處的景物,或者左右眼畫面中的景物存在遮擋關系的時候(比如模擬臉貼在門上,一只眼被門閂擋住的情景),則會有明顯的瑕疵。當然了,對於依然對VR全景內容處於懵懂階段的愛好者來說,這也許暫時不是什么嚴重的問題了。

 

轉至:http://www.leiphone.com/news/201512/bMLT4bE88swBjG19.html?foxhandler=RssReadRenderProcessHandler


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM