光場相機是如何實現的?

傳說有一種光場相機可以在拍攝完成後改變對焦點,這是如何實現的?


光場相機原理:通過在普通相機鏡頭(主鏡頭)焦距處加微透鏡陣列實現記錄光線,再通過後期演算法(傅里葉切片定理,光場成像演算法)數字變焦。

原理圖如下:

( 圖引自Lytro創始人Ren Ng發表的光場相機文章[Light Field Photography with a Hand-held Plenoptic Camera]. )


這樣,光線通過主鏡頭後,打到微透鏡陣列上,並再次成像。那麼,放在微透鏡陣列後的像素,儘管仍然只記錄了光線的強度信息,但卻因其相對於某個微透鏡的位置而記錄了光線的方向信息。即,如微透鏡陣列是10*10,像素陣列是50*50,則每個微透鏡分到5*5個像素,這25個像素分別記錄了通過主透鏡的25個不同位置併到達此微透鏡的25根光線的強度信息。這樣,單純用微透鏡陣列和光電感測器,就相當於記錄了通過主透鏡的所有光線。在後期處理時,只需要對光線重新追跡即可完成重聚焦,因為光線在自由空間中的傳播是可以用兩個平面、四個坐標(四維量,學術上稱為光場)來唯一表示的,而成像過程只不過是對這個四維光場進行了一個二維積分,從而得到了二維圖像。光場相機相當於直接記錄了四維光場,不同焦深的圖像只不過是在做不同情況下的二維積分罷了。

當然,光場相機劣勢也明顯,空間解析度不足。這很顯然,因為用同樣的像素數量,傳統相機記錄二維圖像,像素數被完全使用;光場相機記錄四維圖像再做積分生成二維圖像,積分過程中就會有信息丟失(想像把平面點陣變成線點陣),自然二維圖像像素數量減少了,後果就是空間解析度不足。經典光場相機(Lytro)空間解析度與微透鏡陣列數量成正比。而且,要提高空間解析度,角度解析度就會下降,這之間有一個trade-off。


@王叢立已經把要點都說了,鑒於當初自己的無奈,我就再做進一步的補充。

  • Matlab模擬實驗

按照慣例應該是先要上圖的,ok,我先上我一年多以前用matlab模擬實現光場相機產生的圖,不夠精確,還請見諒。

下圖(1)是使用matlab模擬產生的光場相機觀測數據。

圖(1)

下圖(2)、圖(3)是圖中9個字母的位置關係(9個字母與相機的距離各不相同):

圖(2)

圖(3)

好了,下面是見證奇蹟的時刻了,如圖(4)所示,是根據圖(1)記錄的原始光場數據重聚焦得到的9幅圖像,分別聚焦在每個字母的位置。

圖(4)求輕噴,由於使用matlab模擬驗證,數據的離散化等一系列原因導致重構質量還有待提高,不過已經可以說明問題啦。

  • 光線記錄

結果已經展示,我也說說原理吧,都說有圖有真相,為了讓那些像當初的我一樣的人能夠更好的理解,我會在下面再上幾幅圖。

@王叢立也介紹啦,光場相機是因為在普通相機鏡頭(主鏡頭)焦距處加微透鏡陣列實現記錄光線的,然後根據記錄的光線實現重聚焦的。那麼是如何記錄光線的呢,我覺得這個可能是很多人想要了結的問題,下面再次上圖,如圖(5)所示,微透鏡s位於主鏡頭u的焦距處,感測器位於微透鏡s的焦距處(這個其實也很重要的,Ren Ng在他的論文中也說啦,下面會簡單的介紹)。

注意:由於微透鏡的焦距遠遠小於主透鏡的焦距,因此主透鏡可以看做位於微透鏡鏡的無窮遠處。從而可以認為主透鏡u上的深綠豎條區域經過某個微透鏡後正好聚焦在微透鏡後的某一個像素上,又由於微透鏡是主透鏡的幾百分之一,那麼近似於採樣的理解,可以認為這一個像素就是藍色的線內部所有光線的一個採樣。通過這種方式就記錄了相機內部的一條光線;同理,其他像素也都對應一條光線(這樣就是為什麼Lytro一代記錄了1100萬條光線,而二代記錄了4000萬條光線)。

圖(5)

夜已深了,既然說了,我就說完吧,上面圖(5)說明了光場相機如何記錄一條光線,但是可能還是不夠清楚,索性再上兩幅圖,如圖(6)所示,此刻的某個微透鏡是不是很像傳統相機的主透鏡了,而主透鏡是不是就相當於位於無窮遠的場景了(這些都說廢話),回歸正題,大家是不是發現了,由於主透鏡、微透鏡陣列、感測器三者的位置關係,每個微透鏡後面的像素可以看做是該像素鏡像到主透鏡區域的過來的光線的採樣。

圖(6)下面再看圖(7),有完沒完啦,手機黨一定要淚奔啦,好吧,在此致以誠摯的歉意。OK,繼續,
其實此刻拿出圖(7)是為了說明一個前面沒有講到的問題,前面只說一個了一個像素記錄了一條光線,而沒有談到光線的方向信息。其實很簡單,由於每個像素的位置是固定的,每個像素對應的微透鏡的位置也是固定的,由於光線的直線傳播,很容易得出光線的方向信息。好吧,再通俗一點:以圖(6)和圖(7)為例,假設主透鏡後面有4個微透鏡,每個微透鏡後面有8個感測器(為了各種方便,此處都已平面空間為例,立體空間可以以此類推),圖(6)中的紅色感測器對應圖(6)中主透鏡的紅色區域,如果說這個微透鏡的坐標為s1(定值),而紅色區域的坐標為7,那麼紅色感測器記錄的這條光線就可以表示為:L(7, s),圖(6)中的光線就為L(u, s1),而圖(7)中的這些光線就為L(4,s)。所有的光線就對應L(u, s)。

圖(7)

  • 重聚焦

在說重聚焦之前有個問題需要說明下:看過光場相機原始數據的(或者看我模擬產生的數據)都知道,直接觀測數據是不能看的,是一個一個的圓形區域,因為每個微透鏡都對圓形的主透鏡成像,所以實際上光場相機上最終產生的圖像是對原始數據進行求和之後得到的,怎麼求和呢,就是每個微透鏡後面對應的像素加起來,所以一個微透鏡也就成了最終的一個像素,而微透鏡的尺寸是不能太小的,所以就導致了最終的成像解析度不高。

好吧,下面可以說重聚焦啦,我又要上圖了,如圖(8)所示:由於光線的直線傳播,既然知道了光線在垂直方向上的兩個坐標,又知道了兩個坐標之間的水平距離,而感測器記錄了光線的強度,根據這些條件,剩下的就是簡單的幾何問題啦,我就不說啦,一切都在圖上。實際上我們的聚焦不就是調整這個水平距離,讓光線到達聚焦平面嘛,現在既然知道了光線的方向和強度信息,當然可以隨意的重聚焦啦。

圖(8)

好不容易碰到一個自己曾經鑽研過的問題,所以就說了多了點,由於答的倉促,所以可能有些不足的地方,還請指出,另外歡迎探討。


之前在公眾號里寫過一篇相關文章,轉一下。

要了解光場相機,首先要了解一下普通相機的工作原理,一幅圖簡單說明。


按下快門,反光板彈起,光線被打到感光感測器上,由於到達感光感測器光線的多少的不同,紀錄下的光的強度而不同,因而產生的照片有的地方清晰,有的地方模糊,這個原理就跟對著太陽玩放大鏡一樣,當把太陽光聚焦到一個點的時候,到達那個點的光線數量就最多,亮度也就最強。

由於現實的物體每個位置都會反射出光線,而反射出的光線,通過相機的鏡頭一定會聚焦到不同位置,上個圖說明一下。

就是說,一個場景經過相機的鏡頭後,會形成不同的焦平面,調焦的過程其實就是調節感光板的位置,以使得不同的焦點打在感光板上,而根據上面的分析,越多光線聚集的點光強越大,該點越清晰。這就是為什麼調焦的過程中,你會看到的像會不斷變化,有的地方變清晰,有的地方越模糊。所以這種相機,當你按下快門的那一刻,其實就是選中了一個焦平面來成像。光場相機與之不同,它能紀錄下進入鏡頭的光線信息,不光是強度信息,還有光線方向信息。光場相機以Lytro相機為典型,所以以Lytro為例來說明,首先上幾張圖片,來感受一下。

Lytro的原理是其創始人吳義仁的一篇博士論文

Light Field Photography with a Hand-held Plenoptic Camera(點擊閱讀原文查看)

簡單來說,他是在普通相機的基礎上,在鏡頭與感光板中加了一個微透鏡陣列,這個微透鏡陣列有什麼作用呢?它其實是起到了一個分散到達微透鏡陣列光線的作用,你可以把微鏡頭陣列想像成為普通相機的感光板,而Lytro的感光板其實是用很多個像素點去紀錄普通相機一個像素點中紀錄的信息,上個圖看看

從這個圖其實可以看出來,對於最終的成像來說,Lytro相機中的一個微透鏡,其實就相當於普通相機中的一個像素,比如說,Lytro相機中的微透鏡陣列規格是100*100,像素感光板像素是500*500,那麼最終成像的結果就是100*100,它是用5*5個像素點去紀錄到達一個微透鏡的光信息,這樣的紀錄,不僅包含了光強度信息,還包含了光的方向信息。

Lytro相機照出的照片為什麼可以隨時變焦?

有了以上的基礎,現在來進一步理解下,為什麼Lytro相機照出來的相片可以實現隨時變焦。

假設鏡頭平面為(u,v),成像平面為(s,t),對於在(s,t)成像光強的結果是可以被紀錄下來的,普通相機就是僅僅紀錄了這種在(s,t)平面成像的結果,它是一個只關乎(s,t)平面的函數。而光場相機不一樣,它想紀錄的是從鏡頭平面到成像平面中所有光的信息即,它想紀錄從(u,v)到(s,t)信息,它是一個四維的函數F(u,v,s,t),由於每一條光線,都可以用這樣的四維信息表示出來,所以,這個四維函數可以說是紀錄了進入鏡頭整個光場的信息。

Lytro是如何的到這個四維的函數的呢?

先看一下論文中的說明圖

假設某個微透鏡的中心坐標為(s,t),像素屏上某一像素的光強其實就是主鏡頭上的一個小區域(u.v)到(s,t)上光強的積分,假設主鏡頭上的區域無限小,那麼就可以通過這一個個的積分近似得到離散的函數F(u,v,s,t),而得到了這個函數就可以計算不同焦距成的像了,因為不同焦距,只是改變了s,t成像平面的值,而通過函數F(u,v,s,t)可以隨時計算出成像平面由(s,t)變換到(x",y")的成像函數,進而計算出該平面各點的光強值。

弄不懂這些具體計算方法的,其實可以用一個簡單的方法理解,就是由於加上了微透鏡陣列,我們通過各個像素點的光強值可以模擬計算出整個光場的四維函數,這就表明我們獲得了在這個區域內所有光的信息,那麼當你隨便在這個區域內放一個成像板,由於我們知道所有進入鏡頭光的方向,那麼能打到這個成像板上的光的條數和位置就都能輕鬆計算出來,光強也就很容易計算出來了,成像結果也就計算出來了。

公眾號關注虛擬現實產業,有興趣的可以關注下

http://weixin.qq.com/r/-EUYABzEAEF-rVhj9xDu (二維碼自動識別)


最近,出於興趣愛好,我研究了一下光場相機的工作原理,用mathematica模擬了一維光場相機的光線記錄和重聚焦成像過程。雖然這個問題已經是兩年前的問題了,而且已經有了很好的答案,但是我還是把自己的這篇原理總結放到這裡,僅為分享知識而為之。與其讓它爛到我的腦子和硬碟里,不如讓它爛到知乎里。

首先聲明,本人非相關專業領域人士,以下只能算是依我興趣愛好而寫,不保證任何專業性。

感謝@李超 @ccccw,他們的答案極大地啟發了我。

1.
傳統成像過程

要想理解光場相機的原理,必須先理解傳統成像過程的本質。所謂成像,不過是對物空間某一平面上光場強度分布的清晰重現而已。

我們先從一個點的成像開始,如下圖

點A發出的光線通過透鏡後在點A』匯聚。這裡需要注意:(1)我們假設透鏡是理想的薄透鏡,也就是說任意垂直於透鏡的光線通過透鏡後都匯聚於同一點,這一點就是透鏡的焦點;(2)不是所有從點A發出的光線都可以通過透鏡,透鏡直徑越大,通過的光線越多,相應地會影響成像,相關問題詳見攝影大牛的分析。

如果點A是這樣的

那麼分別將像平面至於位置1、2和3,我們將得到如下圖所示的像。

可以看到,我們只有在平面1處才能得到最接近於點A的像點A』,而在平面2和平面3處點A的像會彌散開,一個點的像成了一個「餅」,這也就是失真了。

我們可以認為現實中的物體是由很多點元組成的,每個點或者自己發光,或者反射照射到其上的光。組成物體的每個點(稱之為物點)通過透鏡後成像,所有的點的像集合起來便呈現出物體的像。如果每個物點的像都近似為一個點(稱之為像點),那麼便會呈現出清晰的像。相反,如果物點的像是類似上面像平面2和3的情況,是一個「餅」,那麼相近的點的像就會相互重疊,物體的像就會變得模糊。只有當像平面剛好在某一位置附近時(類似像平面1),才會得到清晰的像,這也就是照相機為什麼要調焦。當然,現實中的物體是在三維空間分布的,距離透鏡的距離都不相同,在不同的像平面處可以得到不同距離的物體的清晰的像(下面會給出一個簡單的程序模擬)。

舉個最簡單的例子,如果前面例子的物由兩個點組成,如下

那麼在平面1、2和3出會分別得到

可以看到只有在平面1處才能給出清晰的像,從而還原出物的情況。而在平面2和3處,由於兩個點的像彌散成了兩個「餅」,他們相互重合,從而無法得到清晰的像,也就無法還原出物的情況(我們無法分別出是兩個點)。

至此,需要做一說明,上面給出的單點和兩點成像的例子,並不是由程序模擬透鏡成像過程給出的,而是我自己為了說明問題而畫的示意圖。下面的成像例子,是我用mathematica給出的透鏡成像過程的模擬,確實是由程序模擬給出的。

我用mathematica模擬了一維成像過程。現實中的圖像都是二維的,真實的成像過程也是二維的,但是為了簡單起見(我也不能把太多精力花在自己的愛好上),這裡只進行了一維情況的模擬,但是足以說明白問題。首先必須理解一維圖像,所謂一維圖像就是顏色分布只在一個維度上變化,另一個維度不變,比如

這就是一個一維圖像(笛卡爾坐標系),顏色分布只在豎直方向變化,在水平方向不變。再比如

這也是一個一維圖像(極坐標系),顏色分布只在極軸方向上變化,在幅角方向不變。下面的模擬,我們僅在笛卡爾式一維圖像上進行。

首先分析成像背後的數學,看下圖

我們分別在物、透鏡和像處建立豎直向上的y軸坐標系,取物上的一點,坐標為yO(請原諒我直接給出的是程序中的變數名,其實這樣更直觀),遍歷透鏡上所有的點,坐標記為也yL。那麼根據yO、yL和物距disO,就可以得到入射光線的角度aL_in,再根據透鏡的焦距F,可以得到經過透鏡折射後的光線的角度aL_out,最後根據yL、aL_out和像距disI,就可以得到該光線投射到像平面上的位置yI。簡單理一下計算過程

(yO, yL, disO) –&> aL_in

(yL, aL_in, F) –&> aL_out

(yL, aL_out, disI) –&> yI

最後我們將這條光線攜帶的顏色和光強信息投射到像平面yI處就完成了該點的成像過程。將物上的每一個點元都進行這樣的過程,就可以得到完整的像。(常寫程序的人應該很容易理解這個過程。)

下面三幅圖片分別用了當做處在距透鏡不同距離的物(從左到右對應從近到遠)

為了不相互遮擋,上圖中三個類似條形碼的「物」在豎直距離上相互錯開了,如下圖所示

通過程序分別計算了距透鏡不同距離的三個像平面上的像,分別獲得了物1、2和3的清晰的像,如下圖所示

可以看到,在某一像距上我們只能獲得某一物距的平面上的清晰的像,其他平面的像都是模糊的(這也涉及到景深的問題,詳情請移步單反大牛的回答)。

2.
光場相機原理

我們進一步分析傳統成像的數學過程,再一次看這幅示意圖

(yO, yL, disO) –&> aL_in

(yL, aL_in, F) –&> aL_out

(yL, aL_out, disI) –&> yI

實際上,我們只需要知道透鏡後半部分的信息,就可以計算出距離透鏡任意距離的平面上的像。也就是說我們只要知道了透鏡後所有光線(當然實際操作時要做一定的離散化)的yL和aL_out,就可以計算出距離disI處平面上的yI。當然光線攜帶的信息不止yL和aL_out,還有顏色和光強,這裡統一記做info_cmos。再進一步,針對於某一物空間,我們只需要記錄了透鏡後所有光線的(yL, aL_out, info_cmos)信息,就可獲得任意disI處平面上的像。對於不同物距的物,我們總能在某一disI處獲得該物的清晰的像,這也就實現了所謂的重聚焦過程。

那麼如何記錄光線的(yL, aL_out, info_cmos)信息呢?info_cmos可以通過CMOS來記錄,那麼yL和aL_out呢?這也就是光場相機要乾的事。

Lytro通過微透鏡陣列的方法記錄了光線的(yL, aL_out)信息(@李超的回答中給出了詳細的解釋),如下

在光場相機中,主透鏡和微透鏡陣列的距離為主透鏡的焦距F,微透鏡陣列和CMOS的距離為微透鏡的焦距f。從主透鏡發出的每一條光線(yL, aL_out)通過某一微透鏡yLM後都會在被CMOS記錄在不同的位置yS,那麼反過來,通過(yLM, yS)可以反推出(yL, aL_out)。這其實也就是Lytro記錄光線方向的方法。(應該每一個微透鏡都對應一塊CMOS區域,以防止不同微透鏡光線信息的相互重疊。這種某種程度的防止光線信息的重疊,其實也就是Lytro可以記錄光線信息的關鍵之所在,因為重疊就意味著信息的丟失。)

如果傳統相機的成像過程可以表示為

(yO, yL, disO) –&> aL_in

(yL, aL_in, F) –&> aL_out

(yL, aL_out, disI) –&> yI

那麼Lytro拍攝過程就是

(yO, yL, disO) –&> aL_in

(yL, aL_in, F) –&> aL_out

(yL, aL_out, F, f) –&> (yLM, yS)

重聚焦過程就是

(yS, yLM, F, f) –&> (yL, aL_out)

(yL, aL_out, disI) –&> yI

其實,Lytro把傳統相機的成像過程分成了兩個過程,把中間結果(yL, aL_out)存儲了下來。

下面是mathematica模擬的光場相機的光線記錄和重聚焦成像過程。依舊是這三個物

空間分布和前面的傳統成像過程的模擬一樣。通過光場相機的光線記錄過程後,得到

這張圖非常大(4710*4710),即使這樣也無法將程序模擬記錄的光線信息完全展現出來,因為信息量實在有點大(可能是取樣太多了,可是取樣少了得到的結果不理想)。下面是根據這幅圖記錄的信息,重聚焦得到的在距透鏡不同距離的三個像平面上的像,分別獲得了物1、2和3的清晰的像

結果和前面的傳統成像基本一樣。

3.
一些體悟

傳統成像過程為什麼無法記錄完整的光線信息呢,引用@ccccw的話「光場相機記錄四維圖像再做積分生成二維圖像,積分過程中就會有信息丟失」。以下給出我的一個理解。

如上圖,yI點的CMOS記錄的顏色和強度信息info_cmos(yI)是由從透鏡發出的無數光線的顏色和強度信息info_cmos(yL, aL_out)疊加而成的。這是一個不可逆過程,也就是說根據info_cmos(yL, aL_out)可以得到info_cmos(yI),可是根據info_cmos(yI)是無法反推出info_cmos(yL, aL_out)的。或許我們可以根據幾何關係反推出匯聚到yI點的所有光線的yL和aL_out,但是卻無法確定每條光線的info_cmos信息(特別是如果這些光線來自不同的物點)。其實這樣說已經非常羅嗦了,說白了,這就是定積分的不可逆性導致的。

P.S. 寫完了才發現,我寫得這個總結可讀性有點差,這是有違我的初衷的,可能確實是水平所限吧。


轉一個博客里的答案
光場相機原理


推薦閱讀:

如何評價 施耐德APO-SYMMAR-L 150/5.6 這隻鏡頭?
焦外二線性到底是啥意思?
有哪些你相見恨晚的相機?
購買單反相機清潔套裝的必要性和使用需要注意什麼事項?
隨著後期技術的進步,是不是相機鏡頭本身的素質已經不再重要了?

TAG:攝影 | 攝影器材 | 光學 | 攝影技術 | 光學鏡頭 |