前面有幾篇博客主要介紹了光場和光場相機相關知識,以及重對焦效果和多視角效果的展示。算是自己學習光場過程的一種總結。
這次貼上自己用OpenCV/C++編寫的重對焦算法實現(包含CPU版和CUDA GPU版),以及交互的Demo。放在我的開源中國碼雲上,連接在此:https://git.oschina.net/rxdj/refocus_LightFieldImg.git。
代碼的說明請參見readme。如有錯誤,請不吝賜教。
圖像是Lytro Illum二代相機拍攝並通過matlab光場工具包解碼得到的RGB彩色圖,微透鏡坐標也是matlab工具包中解碼白圖像時得到的中間結果。
主要參考文獻為:Tao M W, Hadap S, Malik J, et al. Depth from combining defocus and correspondence using light-field cameras[C]//Proceedings of the IEEE International Conference on Computer Vision. 2013: 673-680.
該文獻中有開源Matlab源代碼,使用的是Lytro 一代相機拍攝的圖像。一代和二代相機數據不同在於微透鏡個數以及每一個微透鏡后面的像素個數不一樣,對應修改代碼即可。