曾智:更加「真實」的現實,探索下一代全景拍攝技術
導語
本文是由未來影像高精尖創新中心舉辦的ICEVE2017(北京國際先進影像大會暨展覽會)的精華演講等整理而成的系列專題文章,本系列內容涵蓋專家專訪、大會報道、行業紀實等,致力於梳理和提煉ICEVE大會的精華內容並傳播給行業和大眾。
曾智 中國科學院自動化研究所高級工程師、成都觀界創宇科技有限公司首席研究員
各位嘉賓大家下午好,我是來自成都觀界創宇科技有限公司的曽智,我們公司以及團隊可能是國內最早從事全景拍攝設備研發的團隊。很高興大會組委會邀請我來,與大家分享一下我們在這幾年研發VR拍攝設備的一些心得以及我們對未來方向的一些思考。
首先,這個VR拍攝設備,肯定是因為VR和AR爆發所引發的一些全景拍攝需求。我們的兄弟公司IDEALENS是專門生產VR頭顯設備的,所以我們對VR內容的需求及VR內容的匱乏深有體會。除了VR遊戲的APP應用以外,視頻也是非常大的一個需求。其中全景視頻又是因為它特別適合VR設備觀看,而且展示一種全新的體驗,所以我們才建立了這樣一個團隊,很早就開始研發VR全景的拍攝設備。
然後,在全景拍攝設備出現之前,大部分團隊還是使用這種傳統的相機拍攝,用傳統的相機,比如GoPro, 組成一個「支架」或者「狗籠」來拍攝。它存在一些缺陷,首先同步就很難保證,全景視頻就會出現一些瑕疵,同時它的開關機、數據的導出和管理都存在一些問題,所以做出一款為全景視頻拍攝的設備是很有意義的。
這兩年,市場上也出現了很多款相應的設備,包括小的、中型的、大型的,我們可以看到它們的頭數是從少到多,當然它們的成本也是從小到大,這裡面就面臨著成本及效果之間的折衷。
接下來,我重點要跟大家分享的是,在研發這些設備的過程中遇到的一些問題以及解決方案。
第一個問題就是畫質與拼接之間的矛盾。為了實現更好的畫質,對實現縫合拼接帶來很大的困難。如果為了拼接簡單,最後出來的畫質又達不到要求,這是為什麼呢?首先如果要獲得更好的畫質,我們當然希望使用更好的相機、更好的鏡頭,但是這種設備往往體積過大。
這是一組紅龍的攝像機組成的全景相機的裝置(rig),我們可以看到它相鄰兩個鏡頭之間的距離非常大,這樣會導致我們拍攝的畫面,特別是比較近的畫面,兩個鏡頭拍攝的畫面視差會很大。
視差就是同樣的一個場景在兩個鏡頭畫面里出現了很大的偏差,對後期拼接的難度會很大,最後出來的片子如果不經過人工的話,會很難直接輸出質量很好的片子。另外一方面,因為相機的FOV(視場角)越小,它的靶面上像素的利用率就高,出來的畫面越清晰,畫質更好。但是小FOV相機組成的全景相機裝置(rig)很難——少量的話——是很難覆蓋出360度的球面,所以往往就需要很多相機,包括我們出的這款P21, 它就需要21個才能覆蓋出要拍攝的整個環境,並且它每一個鏡頭實際上FOV也不算很小,也是廣角鏡頭,大於傳統的相機。這種為了追求更好的畫質使用小FOV相機,會導致相機數量很多,因為相機數量多了,拼接的效率自然會下降,難度也會加大,這也導致了畫質和拼接的矛盾。
另外一個我們遇到的問題,因為為了在VR和AR裡面去體驗,我們希望真實地呈現看到的虛擬環境,能夠盡量地逼真,但是全景相機拍攝的畫面本質上還是二維的圖像。從這個可愛的圖裡可以看到,實際上全景相機拍攝的畫面也是由一些球面的畫面組成的,它本質上是二維的,是沒有三維信息的,真實感難以得到提升。
可能有人會說,全景的視頻也有3D的,但是3D全景視頻存在一些固定的缺陷,因為我們現在一般所採用的3D全景視頻模型,一般假定我們的左右眼畫面像右圖一樣圍繞著一個圓圈上去移動,所以在我們的實踐畫面裡面,比如我們在戴上鏡之後朝正前方看,其實只有最中間的一列像素對應的是真實看到的畫面,但是其他的像素其實往往是在其他位置上看到的信息,這樣必然會導致不管是拼接還是最終出現的3D效果的一些瑕疵。
另外一方面,根據我們目前全景3D視頻的模型,它基本上只能保證中間一圈有3D的效果,我們往上看,特別是往上再旋轉一下,3D效果肯定是沒有的,而且往往會引起一些不太好的畸變、各方面體驗很差的感覺。另外由於它本質上是二維的圖像,所以缺少了自由度,我們不能在全景視頻中漫遊觀看,因為在看一個高質量的全景視頻的時候,我們往往有要去移動它或者看某一個物體背後的衝動,但是實際上,現在的全景視頻不具備這種支持。
上面這些問題,我們團隊在實際的研發過程中,也嘗試著去進一步提高體驗來彌補這些問題帶來的不好影響。
首先是全景相機的硬體設計。最開始我們列舉了市面上出現的各種全景相機,可以看到它們其實都是根據具體的應用場景設計的,因為很難有一款相機它能支持所有場景,或者是所有應用環境的拍攝。
所以根據不同的場景我們要合理地選擇,包括感測器(Sensor)靶面大小,鏡頭大小以及鏡頭的FOV。對於一些比較日常使用的環境,我們對畫質要求不是那麼高,我們可以使用兩目鏡頭,它的FOV很大,它的畫質往往會受影響,但是因為它兩個鏡頭的距離很近,它的拼接很簡單,拼接結果也會很好,拼接效率也會很高。但是一些大型的應用,包括拍攝一些比較遠的場景的時候,就需要一些更好更高級的相機組建一個裝置(rig)來實現更好的畫質,因為它的拍攝是比較遠的,對近處的拍攝不會有太多東西,所以我們不用太考慮拼接問題,這是硬體。
另外一方面是重點,就是盡量減小相鄰鏡頭的光心距離,我們剛才看的那張圖裡面的紅龍機器,它的光心距離很遠,導致拼接很難。根據我們的應用場景合理地選擇相機之後,就要儘可能地減少相鄰相機的光心距離。
通過幾個方法可以實現,一個是可以適當地增加相機的數目,另一個是加強結構的緊湊度,甚至還有一些廠家使用一些創造性的結構,採用反射的方式,本來很大的鏡頭,如果說是直接向外排,像紅龍一樣,它會有很大的光心距離,但是它用這種巧妙的方式保證鏡頭之間的距離是縮小的,用更好的相機實現難度更低的拼接,我覺得這是非常有創意的。
另外一個改進思路,就是提高拼接演算法,我們團隊從一開始就使用基於光流的拼接演算法。一個好的演算法可以提高拼接對視差的魯棒性。就是說雖然由於設計的原因畫面可能存在視差,但是由於演算法能夠足夠好,我們可以通過拼接進行彌補。這個光流其實在拼接裡面的意思跟我們傳統理解的光流不一樣,它主要還是為了計算像素之間的匹配關係,就是當我們要把兩幅畫面進行拼接,需要知道這兩幅畫面之間是怎麼對齊的,而光流的方法能保證我們獲得像素之間的對應關係,能夠實現更好的拼接。
另外一方面,我們前面說了,這種光流的方法,要使用像素之間的匹配關係去計算,這個計算量往往是很大的,如果直接採用這種方法,或者是以前傳統的做法,它的計算是很慢的,而全景視頻要求很高的拼接效率,甚至有一些應用要求直播,是需要實時的,所以我們團隊一開始把光流演算法在GPU上實現,利用GPU的並行化把演算法也進行並行化,加速整個拼接過程。經過努力我們發現通過GPU加速之後,拼接速度基本上能夠提高數十倍,在C4上我們基本上是實現了實時的光流拼接,我們能達到每一幀只需要三十分之一秒以下,可以實現直播級的,而且這個直播過程是使用光流拼接,達到非常好的拼接效果。
另外一個改進思路是,我們希望全景相機拍出來的全景畫面提供深度數據。從這張示意圖上可以看到,上面是我們拍攝的一組全景畫面,下面是我們根據畫面的情況來實時算出來的深度,這樣就相當於賦予了我們全景畫面於一體的感覺。現在有很多常見的RGBD相機,它們採用的深度測量方案包括了常用的這些:結構光、飛行時間,這個「ToF」叫做「time of flight」(飛行時間), 另外一個比較傳統的方法叫做雙目立體。
我們發現全景相機天然地具備雙目立體深度計算的硬性條件。從這個圖上可以看到藍色的表示全景相機里的一組鏡頭,紅色點是觀測點。通過FOV的設計之後保證每一個觀測點都被兩個鏡頭拍到,這樣就可以利用雙目立體的方法,利用它們在畫面中的視差計算目標點的深度,這個方法可以把全景相機的深度計算出來,使我們的相機變成一台RGBD的相機。加入深度之後有什麼好處呢?像素深度計算,其實它跟前面的光流演算法類似,它也是基於準確的像素匹配。
從上面這張圖可以看到,我們需要知道每一個像素點在不同的相機上出現的位置在哪,從另一角度說,我們需要把兩個鏡頭拍到畫面對應的點找出來。這其實跟光流計算很類似。增加了深度信息數據對全景視頻有哪些意義呢?首先它可以保證更準確的拼接,因為我們在拼接過程中最大的障礙就是視差,但是如果有了深度信息,知道了什麼是前景,什麼是背景,然後前景跟前景對齊,背景跟背景對齊,同時在融合過程中也可以利用深度信息,因為最近的應該疊加在上面,這樣就能夠保證實現更準確的拼接。
另外,深度數據對於做後期特效的團隊特別有用,如果他們要往全景視頻裡面疊加東西的話,如果沒有深度數據就很難準確疊加。比如我們看到的這個畫面,我們希望做一個虛擬的鳥圍著一個人轉,假如我們不知道它的深度數據是非常麻煩的,如果提供深度資料,再去做特效就會起到事半功倍的作用。另外一個深度數據對全景視頻的好處,就是幫助實現局部6自由度,我們有了深度數據之後,當我們觀看者頭部在微微移動的時候,我們可以根據深度數據,重新渲染出適當的畫面,來保證能夠看到近似於6自由度的效果,這也是深度數據非常有用的地方。
全景視頻加上深度數據,它就能夠保證真正立體的真實視界嗎?我覺得是不夠的,它還是一個平面,只是說對於這個平面上的每個點我們知道它在三維空間中的位置,而要實現真正立體真實感的全景視頻,可能有兩種思路:一個是重建,另外一個是光場技術。它們之間既有聯繫也有區別。重建其實是為了得到空間中每一個點的光學信息,包括顏色各方面;光場比它更進一步,它要把空間中每一個點上朝各個方向上的光的情況都要記錄下來,我們可以獲得更好的效果。但是現在還沒有實現。另外重建是我們公司現在的一個重點。我們把它叫「四維重建」,因為它實時地進行三維重建,包括了空間中的三維以及時間中的一維,三維重建可以把它看作照片,四維就是建築的三維模型,在每一個時間點上能夠實現一個有點類似於剛才教授講的「free video」那種效果,這樣能夠讓觀測者從各個角度觀看我們拍攝的對象。
我們公司在做這一塊時,基本上是使用RGBD相機組進行環拍,我們現在面對的還不是像全景相機一樣對整個環境進行四維重建,我們現在第一步還是對一個小範圍的對象進行重建。RGBD相機主要是我們自己研發的,是利用前面的深度計算技術實現的,同時充分利用GPU的並行加速計算來保證整個重建過程的快速性、實時性,可以獲得像實時直播一樣所拍對象的四維模型。
我已經講得差不多,總結一下,我分析了全景內容製作過程中的一些問題,希望通過加入深度數據來改進全景內容的效果,為了實現真正更好的真實性的立體感,希望未來面向實時四維建模進行工作。
謝謝!