前面有几篇博客主要介绍了光场和光场相机相关知识,以及重对焦效果和多视角效果的展示。算是自己学习光场过程的一种总结。
这次贴上自己用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 一代相机拍摄的图像。一代和二代相机数据不同在于微透镜个数以及每一个微透镜后面的像素个数不一样,对应修改代码即可。