透 鏡折射模擬 系 統GUI介面 魚 眼鏡頭成像 模 擬與真實照片比較
Ray-Tracing Based Interactive Camera Simulation 〔基於光跡追蹤法之互動式照相機功能模擬〕

ABSTRACT:
Camera simulation aims to enhance realistic rendering, lens design and augmented reality by accurately simulating geometrical optics. Here our work focuses on optical phenomena, such as depth of field, monochromatic aberration, distortion, and aperture exposure, that are based on real camera lens architecture. Our approach is modeling pixel equation using ray tracing algorithm to render scenes after calculating the effect of lens refraction. We also provided an interactive user interface to control camera parameters, allowing for visual display of the corresponding camera lens system and of synthetic rendering result. To promote the performance of ray tracing algorithm, we improved our system using GPGPU programing language, CUDA, and OptiX ray tracing engine that is capable of parallel processing massive multi-ray sampling. We further optimized the sampling method for real-time pixel pupil calculation.

SUMMARY (中文總結):
相機模擬是使用精確的幾何光學模擬,能夠提升影像成像、透鏡設計、以及擴增實境的真實性方法。我們將重點部分放在基於真實相機鏡頭結構與透鏡組的光學現 象,如景深、單色像差、扭曲形變、光圈曝光值等。 我們研究的方法是使用光跡追蹤演算法來實作成像公式,並在計算透鏡折射效果後對場景成像。我們也提供了互動式的使用者介面,讓使用者可以控制相機參數,並 且展示虛擬相機系統設計圖及合成的場景成像結果。 為了提升整體光跡追蹤演算法的效能,我們使用GPGPU 程式語言、 CUDA 及 OptiX光跡追蹤引擎,實作我們的系統並平行化大量光跡取樣計算。最後我們優化取樣方法以及即時的像素出瞳計算,讓整體效能更接近即時且互動式的相機模 擬。

在實作的方面,我們的系統分成五個元件實作,分別是透鏡表面資料轉換、GPU中光線與透鏡組的折射與傳遞計算、GPU中OptiX場景著色、GPU中分散 式演算法成像、GLUI圖形化使用者介面。

1. 透鏡表面資料轉換
假設透鏡皆為球狀透鏡,並考慮其曲率、透鏡間距、折射率與透鏡直徑,我們可以將透鏡資料轉換成一連串的球表面。每面透鏡由兩兩球面交集處形成,再對交集處 檢測直徑長度後,我們可以還原出透鏡組在三維空間的幾何分布。透過透鏡資料轉換,我們得到適合模擬複雜透鏡組的透鏡資料結構。

2. GPU中光線與透鏡組的折射與傳遞計算
假設從底片位置往透鏡表面投射出無數射線,可以得到相機對真實世界的成像。我們使用已經優化過的透鏡資料結構,進行光跡追蹤演算法 。每個GPU執行緒代表虛擬底片上一個pixel,由pixel在空間大小,隨機決定一位置與隨機朝向透鏡組的方向,發射一條光線。光線以此方向與位置作 為起始點,計算光線在透鏡組中經過每一個透鏡表面時的空間位置與折射方向。在這裡我們使用ray-sphere交集計算得到再透鏡表面的交集點,再 使用Snell's law計算折射。經過一連串符合幾何透鏡結構的計算後我們可以得知光線可能在透鏡中被阻擋或遮蔽而未穿透出透鏡組,亦或是一組由透鏡組發射出的射線對物件 世界做著色計算。

3. GPU中OptiX 場景著色
我們將由透鏡射出的光線交給OptiX做場景的著色計算。OptiX提供ray tracing algorithm的framework,我們利用OptiX協助光跡演算法中的物件mesh traversal 及 intersection 計算。在折色計算中,使用了phong shading及陰影計算來獲得更接近真實環境的著色。

4. GPU中分散式演算法成像
隨著時間增加,每個pixel會不斷的產生新的射線。我們將射線分成兩種,一種為無穿過透鏡組而給予著色值為全黑值;另一種為有穿越透鏡組並依pixel 與 光線在透鏡交集點的空間位置與距離計算其曝光權重。每個sampling ray的著色值與曝光權重及光圈權重做乘積後,隨著時間做累計與平均。最後將分散式計算結果交由OpenGL顯示成像結果。

5. GLUI圖形化使用者介面
我們提供使用者在虛擬空間中操控相機,並且可以調控光圈值、曝光時間、底片大小、以及最重要的透鏡資料。透鏡資料可以及時被修正後即時更新至系統中,並以 新的透鏡資料成像,可以輔助光學透鏡設計的成像畫面分析,或是在動畫設計上能夠提供更具有鏡頭效果的成像。


PROJECT MATERIAL: (picture gallery, video, software demo, talk slides, etc.)
CITATION:
  • D.S.M. Liu and C.W. Hsu, Ray-tracing based interactive camera simulation, Proceedings of the 13th IAPR International Conference on Machine Vision Applications, Kyoto, Japan, pp. 383-386, May 2013.