編者按:本文來自微信公眾號“青亭網”(ID:qingtinwang),作者:任然,36氪經授權發布。 近日,專業光場影像公司Lytro推出了全新的光場攝像機Immerge 2.0,今年年初, Lytro還曾在D輪融資中獲得了6000萬美元的資金。光場技術一直被認為是一種終極的影像技術,Magic Leap著名的「魔法之躍」演示更是被奉為黑科技。 對于光場這個名詞,大家應該都有所耳聞。它到底是何方神圣?為何有如此大的魔力?今天我便來為大家盤盤它的道,探探它的底。 光場的概念,其實真沒什么復雜我們生活在一個充滿光線的世界,無論來自太陽還是人造光源,光線在我們周圍沿著每一個方向傳播,形成一個連續的光場。 簡單來說,光場就是整個三維空間內所有的光線。如果能將光線的傳播過程記錄下來,并且能在顯示端還原,就是完整的光場技術。 描述光場的全光函數是麻省理工學院教授阿德爾森(E.H.Adelson)于1991年提出的一組7維函數,其中包含任意一點光線的三維坐標(x, y, z)、任意傳輸方向(α, β),以及光的波長(λ)和時間(t),也就是P(θ,φ,λ,t,Vx,Vy,Vz)。 看到這里,也許有朋友已經產生了眩暈:三維坐標我懂,傳輸方向我懂,波長和時間我也懂,為啥合到一起我就不懂了呢?后邊那個P(θ,φ,λ,t,Vx,Vy,Vz)是個啥玩意兒? 其實不光你們看著暈,我解釋起來更暈。史蒂芬·霍金的《時間簡史》中有一句話:「這本書中的每一個數學公式都會使書的銷量減半」。我完全可以想象,如果后面再來幾段傅里葉切片之類的方程,估計你們就都退票去了。真叫人頭大…… 幸好,我們不接觸這些奇怪的數學公式,也可以理解光場的基本原理。不就是上面那個七維的函數不爽么?我跟你講(gang)哈,其實不光咱們看著不爽,研究光場的人也一樣不爽,相機和計算機就更不爽了。如果按照這個函數來采集光場,數據規模會過于龐大和復雜,無論是采集、存儲、解算都非常困難,所以已經有人提前一步把它干掉了。 在1995年,北卡羅來納大學的麥克米蘭(McMillan)提出了一種簡化函數。在數字影像中,波長(λ)可以直接通過像素顏色表示,時間(t)則可通過畫面幀的變化來體現,因此我們實際上只需關注光線的位置和傳播方向即可。新的簡化函數只包含三維坐標(x, y, z)和光線仰角及方位角(θ,φ),將定義光場所需的屬性從七維降低到了五維。 而由于光線在實際空間中傳播時只要不被遮擋,其輻射度就不會改變,因此這個五維函數可以將表達縱深信息的z值舍棄,進一步精簡為四維函數。在這種表示方式中,分別用兩個平面上的一個點來確定光線經過的路徑,這樣一來光線的方向和位置就都可以確定了。 好了,現在光場已經被充分簡化成了光線「從哪里來,到哪里去」的問題。為了不讓這難得的簡化成果付之東流,下面的內容里將不再出現任何數學公式,白話科普現在開始。 傳統影像采集方式我們知道了光場的基本概念,那么就有一個現實的問題擺在眼前:有沒有某種神奇的影像設備,可以將三維空間中的光場信息直接采集下來呢? 很可惜,這和我們小時候用被窩收集陽光不會成功一樣,能直接采集光場信息的高大上設備,在人類捉到野生哆啦A夢之前是不會出現的。 Why?我們先來回憶一下初中物理中的光學知識。 當一個蘋果擺在我們面前時,光線從四面八方照射到它表面的各個位置,又從它表面的各個位置反射到四面八方。我們能看到它,是因為一些光線進入了我們的瞳孔,投影在視網膜上。 這些光線攜帶了物體的立體信息,而人兩只眼睛接受的光線位置和方向不同,會產生雙目視差、移動視差、聚焦模糊等現象,我們的大腦可以從中獲取到蘋果的深度信息,最終讓我們感知到一個立體的蘋果。 而相機等傳統的影像采集設備,捕獲圖像的過程與我們的眼睛一樣,是通過凸透鏡成像系統將三維空間內經過視野范圍的光線匯聚到感光元件上。但單鏡頭的相機只能記錄光線的顏色,當感光元件上成像的一刻,光線便失去了所有的方向信息,成為了三維空間在二維感光平面上的一個投影。當然,無法記錄方向信息,光場也就無從談起。 既然現實中不存在可以直接采集光場信息的設備,那還研究這些干嘛?連最基本的光場采集都搞不定,光場顯示豈不是更沒指望? 別急,直線搞不定,咱們可以搞「曲線救國」,雖然沒有直接采集的設備,但是傳統的相機經過一番魔改還是可以完成這一艱巨任務的。從Lytro、Raytrix和OTOY等公司推出光場相機來看,現階段的光場采集設備主要有兩個方案:相機陣列和微透鏡陣列。 相機陣列方案,大力出奇跡高中老師曾經說過,「答題時要先看題目問的什么,帶著問題去讀題干,答案都在題干里。」 作為一名好學生,我表示這個方法確實屢試不爽。我們這次也先不去談艱澀難懂的設備原理,而是反其道而行之,「少啰嗦,先看東西」。 這是什么?百度說這叫集束手榴彈。好吧,圖片放錯了,不過相機陣列方案確實和集束手榴彈有異曲同工之妙。 集束手榴彈的理念很簡單,一顆手榴彈解決不了的問題就用兩顆,兩顆還解決不了就用一捆,簡單粗暴,直接有效。相機陣列方案也是一樣,通過增加鏡頭數量來記錄光場信息,幾十個甚至上百個鏡頭也是很壯觀的有木有! 那么為什么相機陣列方案要做成這樣暴力擴充規模的形式呢?做成這樣怎么就能記錄光場信息了呢?讓我們將這個問題帶入上面介紹的成像原理中來看看。 在普通的成像系統中,如果我們把鏡頭透鏡看成(x,y)平面,把透鏡中心看做平面中心(0,0),把感光元件所在平面看成(θ,φ)平面,那么拍出的照片可以看成是從x=0,y=0出發的光線在感光元件平面上的采樣。也就是說我們采集了通過(0,0)點射向(θ,φ)平面的所有光線,不同的θ和φ對應著感光元件的不同像素。 如果我們移動(0,0)這個中心,讓鏡頭在(x,y)平面上的每個位置都做一次采樣呢?這不就相當于采集了整個(x,y)和(θ,φ)間的光場么? So easy,媽媽再也不用擔心我的學習了!這也正是相機陣列方案的核心思想。 相機陣列方案的實質,就是在(x,y)平面的不同位置對(θ,φ)平面進行采樣,最終生成的圖像則是在(x,y)平面的某一個觀察點看到的畫面,我們可以把光場看做是一個場景的一批視圖,這些視圖是從一個二維平面上的緊鄰視點拍攝的。 如果這些視點分布的足夠密集,間距足夠小,便可以等效覆蓋了整個(x,y)平面;而如果每個視點的視場角也足夠大,那么就可以認為這個視點陣列能夠采集來自(x,y)平面每個點、向(θ,φ)平面每個方向傳播的光線,即是整個場景的光場。 一個16*16相機陣列,相機間距10cm,視場角90度,采集近2.7億條光線 顯而易見,(x,y)視點越多越密集,則采集光場信息的準確度越高。相機陣列方案可以做到很大的物理規模,輕松捕獲幾千萬甚至上億條光線,最終合成非常逼真的高分辨率圖像。 當然,龐大的規模也同時是相機陣列方案的缺點:對系統的組裝、移動都提出了很高的要求,而且相機陣列捕獲的數據量同樣龐大,對后期處理以及壓縮和傳輸帶來了很大挑戰。 微透鏡陣列方案,拒絕玄幻基于微透鏡陣列方案設計的光場相機,其內部有一個微鏡頭陣列被放置于相機主鏡頭的焦點所在平面,感光元件位于微鏡頭后面。每個微鏡頭后方均覆蓋了感光元件的一部分像素,這些像素被稱為一個「宏像素(micropixel)」。 這個結構看起來比相機陣列要玄幻一些,我們還是用同樣的問題來切入:微透鏡陣列方案又是怎么采集光場信息的呢? 不要被表象所迷惑,如果我們把示意圖中主鏡頭左邊的部分擋住,我們就會發現,微透鏡陣列方案的原理可以說與相機陣列方案如出一轍,就像下面這個樣子: X 這不就是一個迷你版的相機陣列方案嘛,每個微透鏡以及后面對應的宏像素都相當于相機陣列中的一個相機。來自景物的光線進入主鏡頭后,從不同方向投射到位于主鏡頭焦點處的微鏡頭陣列,并映射到微透鏡后面的宏像素上。這些宏像素便相當于相機陣列方案中的視點,宏像素的坐標便對應著光線的幾何位置,而宏像素中包含的每個像素則代表成像物體不同視角的信息。 微透鏡陣列方案可以在常規相機結構的基礎上進行改進,推出家用的小體積光場相機。而且微透鏡陣列相機的總像素數比相機陣列更少,生成的數據量也相應的要小很多,對儲存和傳輸來說無疑是一個重大利好消息。 但微透鏡陣列方案的也有一些缺點。首先,由于感光元件的總像素數有限,如果每個微透鏡覆蓋的像素多,相當于將更多的像素資源用于記錄光線的方向,最終圖像的分辨率就低。Lytro創始人吳義仁(Ren Ng)在2005年制作的光場相機,使用的是1600萬像素數碼機背,但最后輸出的圖像只有296×296分辨率,還不到9萬像素。 這張照片很有名,但誰能想到它的分辨率只有296*296呢? 第二,微透鏡陣列的結構等效于在相機陣列之前加了一個主鏡頭,所以主鏡頭的光圈必須要大,這樣才能保證光場中每一條光線的差異性。而且主鏡頭的光圈、焦距發生變化后,后期合成中就需要設置不同的參數,所以目前微透鏡陣列相機的對焦距離會有一定限制,微距和遠景的成像不是特別理想,變焦倍數也不會很大。 第三,透鏡成像的過程中會產生像差,微透鏡陣列方案需要主鏡頭和微透鏡兩套透鏡,光線兩次通過透鏡會讓像差加劇放大,不但難以矯正,而且會影響光場信息的準確性。 現在,光場的采集已經解決了,接下來的問題是,拍出來的東西我們怎么看? 拍出來是要給人看的看完上面那兩個方案,我們心里都應該有數,它們拍出來的東西肯定是非比尋常。拍了之后直接拿來看這種念頭根本想都不用想,看了它們拍的原圖后,你一定會瞬間想到一句歌詞,我打包票。 借我借我一雙慧眼吧,讓我把這紛擾看得清清楚楚明明白白真真切切…… 當然,你能拆就得能砌,能拍也得能看才行。人看不明白不要緊,辦法總是有的,能解決這個問題的就是勞苦功高的計算機,它替我們將這些記載著光場信息的圖像進行處理,還原為我們能直接觀看的形式。 解決問題的過程當然很復雜,其中要涉及到開篇時提到的數學公式,什么傅里葉啥啥和歐拉啥啥的。這里我們不講那些高深的處理算法,只用一個動圖就能向大家表達光場處理的實質:疊加。 沒錯,光場處理的實質就是疊加。光場相機拍攝的圖像記載了從每個視點觀察到的N條光線,就和初中數學里根據左視圖、主視圖和俯視圖推導幾何體形狀差不多,計算機可以將這些視點疊加融合,重新構筑出場景的四維光場。 然而,雖然拍攝的過程不至于像初中幾何題那樣只有粗糙的三視圖,但相機的物理結構畢竟存在制約,無論是相機陣列還是微透鏡陣列,視點都不可能無限多無限密集,那兩個視點中間的部分怎么辦,難道重新構筑出來的四維光場是不連續的?這樣的話,最終輸出的圖像就會有各種重影和邊緣發虛的問題了啊? 其實這種不連續并不可怕,只要使出「插值」大法便可解決問題。就像我們知道0和1之間還有0.1~0.9這些小數一樣,既然計算機已經重新構筑出場景的四維光場,那么只要借助場景的深度信息,在相鄰兩個視點的圖像之間運用插值算法,就能生成一個虛擬視點上的插值圖像。 通過這種插值,可以讓視點更密集,密集到兩個相鄰視點圖像上對應像素的位移都小于等于一個像素,從而在視覺上消除這些因為采樣不連續而造成的異常現象。 不過,插值只是一種后期補償手段,想要獲得良好的光場效果還是要保證足夠的前期采集量。插值算法本身就是不精確的,如果原本采集的光場信息過少,過度插值會讓最終還原出來的光場變得更糟。「開局兩張圖,中間全靠插值」是肯定不行的。 光場顯示,元芳你怎么看?講完了光場的采集和處理過程,現在終于到了最后一個步驟,光場顯示,也就是怎樣將結果呈現給我們看。 其實在經過上一步的處理之后,最終輸出的結果已經可以在傳統2D顯示設備上呈現了,但這樣所表現的顯然不是完整的光場,只是光場中的一個切片而已。不過依靠光場信息,我們也可以在2D顯示設備上玩出一些以前平面影像實現不了的花樣,比如重聚焦和視點變換等。 真正的四維光場成像,毫無疑問就是開篇提到的「魔法之躍」啦~開個玩笑,這個在體育館內展示的鯨魚,Magic Leap早就承認過是特效制作。不過這并不代表Magic Leap就是個靠CG蒙吃蒙喝的騙子,目前的幾種四維光場成像方案中,比較有代表性的就有Magic Leap的光纖投影成像,以及美國南加州大學的多投影陣列和由微透鏡陣列方案逆向而來的「微透鏡投影成像」。 Magic Leap研制中的光場眼鏡,使用眼鏡側面的光纖掃描投射器發出光線,同時其鏡片是一種被稱為「光子光場芯片」的特殊光學元件,內膜上襯有大量微型曲面鏡片,可以把圖像以設定好的深度在真實世界中對焦。光子光場芯片很薄,可以堆疊多層,在不同的深度上顯示不同的「切片」內容,實現真正的光場顯示。 另一種光場顯示方案是多投影陣列技術,美國南加州大學在2016年CVPR上展示過可實現1:1真人的裸眼光場顯示系統,該系統包括216個投影儀和6臺PC主機,占地一個房間大小。此系統不需要佩戴特殊眼鏡且能滿足多人多角度觀看,因此需要大規模的投影儀陣列來增加FOV,帶來了巨大的計算壓力,其計算量是傳統2D圖像的數倍。 而「微透鏡投影成像」則是我自己起的名字,因為它由微透鏡陣列方案逆向而來。如果我們把微透鏡陣列方案本末倒置一下,將感光元件變成顯示屏或投影儀,微透鏡置于前方,發出的光線經過微透鏡折射后進入人的眼睛。由于光路具有可逆性,這樣就逆向還原了拍攝時捕獲光線的路徑,也就是還原了光場。 結語其實和之前盤點移動處理器的時候一樣,光場采集方案除了相機陣列和微透鏡陣列之外,還有掩膜及其他孔徑處理方案。不過鑒于理論資料和實際應用都很少,我們這次便只拿相機陣列方案和微透鏡陣列方案開刀,讓掩膜及其他孔徑處理方案躲過一劫。
值得一提的是,第二代Lytro ILLUM的4100萬像素對于微透鏡陣列方案來說只是剛剛入門,實際輸出的光場照片只有400萬像素,勉強達到可沖印的需求。而且負責制定圖像標準的JPEG小組還沒有推出光場圖像的通用格式,幾家廠商都在使用各自不同的算法和格式,這無疑會對光場影像的傳播造成很多不便,不利于民用級光場相機的普及。 基于這些考慮,Lytro在11月30日停止了對Living Picture 圖片播放插件的支持,并關閉了官網的圖片瀏覽網頁pictures.lytro.com。他們將暫停民用級光場相機Lytro ILLUM系列,在未來一段時間內專注于工業級光場相機的開發。 總體來說,無論是前期采集、后期處理以及最終的顯示,有關光場的技術原理已經得到充分的驗證,剩下的只是設備性能、可制造性以及通用標準相關的問題。毫無疑問,光場設備在未來一定會大放異彩,為我們帶來革命性的視覺體驗。 |
|