光场相机重聚焦之三——Matlab光场工具包使用、重聚焦及多视角效果展示

这一小节说一下Matlab光场工具包的使用,展示重聚焦和多视角的效果。

从Lytro illum中导出的raw数据为.lfp格式的光场图像文件(约52M大小),该文件包含以下几部分:光场图像数据rawdata;metadata;相机序列号 serials;光场图像大小imgSize;拜尔格式 ‘grgb’。为了从.lfp文件中提取出光场图像rawdata,需要用到Matlab光场工具包,该工具包由D. G. Dansereau等人开发,目前有toolbox0.3,toolbox0.4两个版本,toolbox0.4的下载地址为:https://cn.mathworks.com/matlabcentral/fileexchange/49683-light-field-toolbox-v0-4?s_tid=srchtitle。这个网址还有配套的示例图片(sample 压缩包,另行下载就可以了),工具包的使用教程在工具包解压出来的文件夹里面(.pdf文件)。接下来就是对光场文件进行解码得到光场图像,并对光场图像进行去马赛克,色彩校正等操作得到RGB的彩色光场图像。

关于工具包的详细设置和使用方法,强烈建议参考这篇文章http://www.vincentqin.tech/2017/02/16/LightField%E5%85%89%E5%9C%BA/,作者写的很详细,我就不赘述了,当时刚开始使用工具包的时候向该文作者请教了很多东西,在此表示感谢~


 

从.lfp格式的光场文件中解析出RawImg到最终得到RGB图像有以下几个步骤,刚开始请仔细阅读工具包里的PDF文件

1.从相机里导出白图像(White Images):

根据matlab工具包解释,白图像是用光场相机在不同的曝光条件下拍摄白色平面得到的图像,这些图像主要有两个作用,一是可以用来校正由镜头阴影造成的图像四角偏暗现象;二是帮助定位微透镜中心的坐标。Lytro illum相机内置了34幅白图像,可以通过相机“导出配对数据”导出到本地。白图像是Raw图,可以通过PhotoShop打开,下面是我用PhotoShop CS5打开后的图像。

 

2.处理白图像:

通过对每一幅白图像进行处理,分别得到每一幅白图像对应的微透镜网格模型(lenslet grid model),如下图所示,并建立一个WhiteImagesdatabase映射表。

3.利用白图像对光场文件进行解码得到rawImage:

输入.lfp文件,工具包读取WhiteImagesDataBase映射表,工具包选取最合适的白图像和微透镜网格模型进行光场文件的解码,得到拜尔格式的光场图像(图像尺寸为7728*5368),如下图左所示,光场工具包中获取光场Raw图是一个中间过程,在LFLytroDecodeImage()函数里面的这条语句LensletImage = LFP.RawImg,保存LensletImage就是了。放大后可以看到每一个微透镜图像,如下图右所示。

           

4.对rawImage进行去马赛克操作(demosaic): Lytro Illum中拜尔格式分布为‘gbgr’,根据此格式对解码出的光场图像进行去马赛克操作,得到RGB彩色图像。

5.对去马赛克后的图像进行色彩校正(color correction):  对上一步得到的图像进行色彩校正,得到色彩校正后的图像。

好了,现在已经从Lytro Illum光场相机的.lfp文件得到我们想要的RGB光场图像(图像大小是7728*5368)了。


 

 得到RGB光场图像后就可以做重聚焦了,我用的是空域重聚焦方法就是shift-sum,先对子孔径图像按照重聚焦公式进行平移然后相加求平均,我设置的alpha值为0.2F-2F,中间的步长可以自己设置从而得到不同数量的重聚焦图片。我生成了256张重聚焦图片,用其中的50张做成了gif动图,如下图,展示一下重聚焦的效果。

 

子孔径图像是由物体发出的不同方向的光线成像得到的,在视角上会有差别,Lytro Illum一共有15*15=225个不同视角下的图像,做成gif动图展示一下效果:

通过5D光场数据矩阵得到多视角图像的代码如下,路径啥的自己设置:

 

 

 光场相机也是可以算深度图的,而且方法还不止一种,简单提一下,以后或许还会继续研究:

1.利用双目视觉的方法,根据不同视角下的子孔径图像匹配得出深度图。

2.利用聚焦法,根据不同深度下每一个像素点处的梯度或者纹理的不同,算出最清晰的那张图片对应的alpha值就可以得到深度图。

 

学习Lytro Illum光场相机基本流程就是这样了,当然难免有很多理解不到位和错误的地方,诸位大侠如有发现,请多多指正!谢谢~~~

     

转载于:https://www.cnblogs.com/riddick/p/6738277.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab是一种强大的科学计算与数值分析的工具,可以用于处理光场图像。光场图像是在一个特定的位置上接收到的光的脉冲能量的表示。在处理光场图像时,可以使用Matlab提供的丰富的图像处理工具和函数。 首先,可以使用Matlab的图像读取函数来加载光场图像。例如,imread函数可以读取各种图像格式的文件,并将其作为矩阵存储在Matlab的工作空间中。 然后,可以使用Matlab的图像处理工具箱中的函数对图像进行预处理。例如,可以使用imresize函数对图像进行缩放、imadjust函数进行亮度、对比度调整,或者使用图像滤波函数(如imfilter)进行噪声去除。 此外,Matlab还提供了一些特定于光场图像处理的工具箱,如光学工具箱(Optical Toolbox)和图像处理工具箱(Image Processing Toolbox)。这些工具箱中的函数可以用于对光场图像进行复杂的分析和处理,如光场构、光学参数计算等。 对于一些常见的光场图像处理操作,如去畸变、去散斑等,Matlab也有相应的函数可供使用。例如,可以使用matlab自带的图像校正工具箱中的函数对图像进行去畸变处理。 除了自身提供的函数,Matlab还支持用户自定义函数,使用者可以根据自己的需求编写特定的光场图像处理算法。 总之,Matlab提供了丰富的图像处理工具和函数,可以方便地进行光场图像的处理、分析和计算。无论是进行光学研究、计算机视觉还是其他领域的研究,Matlab都是一个强大的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值