光场相机重聚焦--焦点堆栈深度估计法

11 篇文章 3 订阅
6 篇文章 5 订阅

光场相机重聚焦原理介绍及代码解析
光场相机重聚焦–焦点堆栈深度估计法
全部代码下载地址:
https://download.csdn.net/download/weixin_38285131/10441175

上一篇博客中介绍了光场相机重聚焦算法原理介绍,对光场图像进行重聚焦可以聚焦在不同的深度处,使位于不同深度物体清晰,因此,我们可以对光场图像进行重聚焦,然后进行深度估计。

焦点堆栈深度估计法原理介绍

计算焦点堆栈每一个像素的梯度,然后对每张图像梯度图像进行均值滤波,然后计算三个通道梯度值的平方和取均值,再开根号,即为该张图像的梯度值,焦点堆栈的同一位置像素梯度最大则说明该深度时该像素最清晰,也就是说该深度面上的物体最清晰,记录该深度的索引值。

焦点堆栈

焦点堆栈就是聚焦在不用平面处的一系列图像
因此,对光场原始图像进行256次重聚焦,这一系列重聚焦图像就称之为焦点堆栈。

梯度

梯度的概念可以自己了解一下

步骤:计算整副图像的梯度值,然后做均值滤波,每个通道梯度的平方去均值再开根号,为该图像的梯度值。

X方向梯度:
这里写图片描述
Y方向梯度:
这里写图片描述
该像素点梯度:
这里写图片描述

这里用到了Matlab的gradient函数,自己了解一下

梯度计算代码:

function img_gradient = DEFOCUS_ANALYSIS(img)//%img为double类型

grad_map = abs(gradient(IM_Refoc_alpha)) ;%梯度计算
h= fspecial('average',[5,5])    ;%定义一个均值滤波器
shear_std_map = imfilter(grad_map,h,'symmetric')                       ;%对梯度进行均值滤波
shear_std_map = ((shear_std_map(:,:,1).^2 ...%梯度图三个通道的平方相加取平均值 然后开根号,就是其梯度值
                    +shear_std_map(:,:,2).^2 ...
                    +shear_std_map(:,:,3).^2)/3).^(1/2)  ;

img_gradient = shear_std_map     ;%img_gradient就是这个图像梯度值,为[m,n]大小的单通道图像
end

放一张梯度图:
这里写图片描述

原图如下:
这里写图片描述
比较亮的地方就说明该张图片在整个焦点堆栈中梯度值较大,最清晰

结果展示

我们利用上一篇博客中的256层重聚焦生成的焦点堆栈进行深度估计

部分焦点堆栈展示:
这里写图片描述

关于索引值
比如第一个像素,在焦点堆栈中的第25张图像中梯度值最大,那么该点的索引值即为25,我们对整幅图像m*n个像素计算其索引值,256层重聚焦,因此索引值应该∈(0,256)

索引图像
这里写图片描述
部分索引值
这里写图片描述

然后可以根据焦距,像距和物距公式计算深度,1/U+1/V=1/F,alpha*F就是V,alpha为上一篇博客中讲到的
这种方法估计深度比较粗糙,而且在纹理重复和边界估计不准确,需要进行优化,比如MRF优化等

参考:
1.论文Depth from Combining Defocus and Correspondence Using Light-Field Cameras-W.Tao
2.Panoramic Reconstruction from Multiple Light-Field Images-Buyukalp,Yasin

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值