如果你看了我之前的文章44. Light Stage: 無限真實的人臉三維掃描——忘記幼稚的AI換臉吧,以及46. 對偶攝影 - 賭神往事,你一定會注意到一個關鍵術語:光傳輸矩陣(下圖中的T),它包含了場景中從光源l到目標圖像p的所有關鍵信息。
獲取光傳輸矩陣,對Relighting、光度立體以及對偶攝影等等應用場景中都非常重要。
然而,高效的獲取光傳輸矩陣非常困難,如下圖所示。T的尺寸是
而且,這還只是一個簡化的例子。事實上T通常是非對稱的,結構復雜,這給獲取它帶來了更多困難。因此有大量的研究集中在高效高質量的獲取光傳輸矩陣,這些研究通常會采用很多復雜的數值計算方法。
我今天想簡介的,是一個全新的獲取光傳輸矩陣并加以應用的思路,看完后讓人不禁眼界大開。這個技術來自于下面這篇論文:
這篇文章的一個核心思想是:雖然直接獲取T是非常困難的,但光傳輸矩陣T、光源l以及最終成像的圖像p之間確實有明確的關系
因此,可以利用這個特性,高效的實現一些會利用到Tl的數值計算算法。
先從最簡單的例子看起,這個例子介紹了一種叫做冪迭代法(Power Iteration)的算法,它的目標是獲取一個方陣的主特征向量,過程非常簡單易懂:
你可以看到這里應用到了
由冪迭代算法獲取的一系列向量形成了Krylov子空間:
基于這個子空間有一系列用于分析大型線性系統的迭代算法。由于光傳輸矩陣T正好也是形態各異的大型矩陣,因此也很適合用光學計算來代替這些算法中的數值計算部分。
作者介紹了兩種算法,一種叫做Arnoldi,它用于獲取大型矩陣T的一個低秩的近似矩陣。另外一種則叫做GMRES(廣義最小殘差法),它可以用于反向光傳輸,例如用于我之前介紹過的對偶攝影中。
當我們的訴求是對場景進行打光渲染時,可以用一個秩為K的小矩陣來近似替代全尺寸的光學傳輸矩陣。這個過程可以用Arnoldi算法來實現。
這個算法和冪迭代法的總體結構是一致的,我們來看看它們的區別:
這里面,ortho函數的作用是將pk投影到l1....lk的正交子空間中。
所以看起來Arnoldi的算法過程和冪迭代法是一致的。然而,由于Arnoldi算法的實現過程中,光照向量l中的值可以是負數,且T矩陣不一定是方陣,因此就多了一些變化,因此在用光學計算代替數值計算的過程中就有一些計算要點:
要點1:矩陣與任意向量的乘積
在Krylov的一系列算法中,通常會需要計算矩陣T與任意向量l的乘積,其中l的元素值可能有正,有負,而我們是無法用一個“負的光源”去作用于場景的。怎么解決這個問題呢?
很簡單,可以用兩個光源,一個代表正值元素(
要點2:解決T矩陣可能不對稱的問題
先看T矩陣什么情況下會是對稱的。通常來說,這要求投影儀投出的圖像和相機傳感器的分辨率一致,而且兩者的視角也是一致的,如下圖所示。很顯然,這種安排的作用很有限。
但我們可以先計算構造對稱矩陣T*
然后就可以很方便的沿用冪迭代算法的思想來分析T*了,這里:
這個式子用單個相機和投影儀的組合是很難做到光學實現的,但用兩對相機+投影儀的組合則可以辦到。
這里面左投影儀投射的圖案由右相機成像,而右投影儀發出的圖案由左相機成像。
采用上述兩個技術要點,就有了兩種情況下的Arnoldi算法實現:
下面的視頻展示了一個典型的過程
事實上,如果僅僅是想對場景進行重照明,可以不用計算出完整的近似矩陣,而只需要利用Arnoldi算法生成的一系列中間光照向量
這里第一步是把新的用于照明場景的l投影到
下面這個視頻展示了重照明的結果,注意帽子所投射的復雜陰影(既尖銳又柔軟),頭發和陰影中的復雜亮點,以及玻璃場景中的陰影、焦散和間接照明效果都非常逼真。
上面的視頻中僅僅用了40次迭代即可獲得很好的結果。我們來看看當迭代次數變化時對結果的影響,注意這里我們打光時用了點光源:
如果僅僅知道一幅照片,我們想知道它是在什么樣的光照情況下產生的,這時候就需要用到GMRES(廣義最小殘差)算法。
注意此時我們既不知道光源向量,也不知道光傳輸矩陣。這時候的算法其實和冪迭代法、Arnoldi算法具有一致的形態,其區別如下。其中上標+代表矩陣的偽逆
可以看到,它與Arnoldi算法唯一的區別就是輸入的向量
正如作者在論文中所述,本文最大的貢獻是在光域上替代復雜的數值計算。文中描述的Arnoldi算法以及GMRES算法僅僅是作者為了展示這種思想的兩個例子而已。事實上,作者說最關鍵是傳統上認為必須要獲取光傳輸矩陣T才能實現的一些操作,可以完全脫離T而實現。這就啟發了后續更大量的研究。
實際上,就我看來,這恰好是利用模擬器件來取代某些數字計算來提高效率的一個明證。其他的例子還有很多,例如我在43. 計算傳感器中提到的RedEye視覺傳感器架構在模擬域中提取ConvNet特征,以減少模數傳感器讀出開銷。
總之,通過本文我們再次強化了計算攝影學不僅僅是成像、圖像處理的認知,“計算”本身也可以是這個學科的研究內容和應用方向。
CMU 2017 Fall Computational Photography Course 15-463, Lecture 22
O’Toole and Kutulakos, “Optical computing for fast light transport analysis,” SIGGRAPH Asia 2010.