光场相机重聚焦原理介绍及代码解析
光场相机重聚焦–焦点堆栈深度估计法
全部代码下载地址:
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

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

  1. 光场相机重聚焦原理介绍及代码解析

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

  2. matlab光场成像,光场相机重聚焦原理③——Matlab光场工具包使用重聚焦及多视角效...

    光场相机重聚焦原理③--Matlab光场工具包使用重聚焦及多视角效 光场相机重聚焦原理③--Matlab光场工具包使用.重聚焦及多视角效果展示 目录 1.从相机里导出白图像(White Images) ...

  3. 光场相机重聚焦原理之——光场的参数化表征

    转自https://www.cnblogs.com/riddick/p/6725273.html 博主最近在搞光场相机方面的研究啦,好了废话不多说,开始!  1. 一些前言废话 首先,来一下光场的基本 ...

  4. 光场相机重聚焦原理①——光场的参数化表征

     1. 一些前言废话 首先,来一下光场的基本概念,来自百度百科.光场(light field):就是指光在每一个方向通过每一个点的光量.从概念里,你至少可以得到两点信息:1.光场包含光的方向:2.光场 ...

  5. 光场相机重聚焦原理③——Matlab光场工具包使用、重聚焦及多视角效果展示

    目录 1.从相机里导出白图像(White Images): 2.处理白图像: 3.利用白图像对光场文件进行解码得到rawImage: 4.对rawImage进行去马赛克操作(demosaic): 5. ...

  6. 光场相机重聚焦原理②——Lytro Illum记录光场

    目录 1.光场相机内部如何记录光线的方向? 2.Lytro illum中光场如何参数化表示? 3.Lytro illum如何实现重聚焦? 上一节中大概讲述了光场相机和光场的参数化表示,这一节就说一下光 ...

  7. 光场相机重聚焦之二——Lytro Illum记录光场

    转自https://www.cnblogs.com/riddick/p/6731130.html 上一节中大概讲述了光场相机和光场的参数化表示,这一节就说一下光场相机内部是如何记录光场以及实现重聚焦的 ...

  8. Lytro 光场相机重对焦C++实现以及CUDA实现

    前面有几篇博客主要介绍了光场和光场相机相关知识,以及重对焦效果和多视角效果的展示.算是自己学习光场过程的一种总结. 这次贴上自己用OpenCV/C++编写的重对焦算法实现(包含CPU版和CUDA GP ...

  9. CVPR 2021 Oral | 室内动态场景中的相机重定位

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 关键词:动态场景,相机重定位 导  读 本文是对发表于计算机视觉和模式识别领域的顶级会议 CVPR 2 ...

最新文章

  1. SQL Server 中 sysobjects表
  2. 驳斥苹果“诊断后门论”,声援扎德尔斯基
  3. css浮动+应用(瀑布流效果的实现)
  4. 教你从零开始搭建一款前端脚手架工具
  5. linux的for循环怎么写,Linux命令:for循环写法总结
  6. 2019计算机国二操作题,2019年3月计算机二级C++操作练习题及答案(十二)
  7. cygwin使用笔记
  8. 讨论一个比较有意思的业务需求
  9. 题目1080:进制转换(任意进制直接转换方法)
  10. wex5 导入mysql_wex5 sqllite本地数据库的运用
  11. Matlab入门:界面认识
  12. 调频去加重 matlab,调频广播中预加重和去加重问题的讨论.doc
  13. 如何在南方CASS中内插高程点
  14. 家藏四库图书系列书目(经典)
  15. 接口自动化-Cookie、Session、Token鉴定解决方案
  16. 江苏大学计算机学院换届,关于计算机学院各支部选举结果的批复
  17. u盘服务器安装win7系统,服务器u盘安装win7系统
  18. MarkdownPad2 插入数学公式Mathjax
  19. 无法连接虚拟设备 ide1:0,因为主机上没有相应的设备。 您要在每次开启此虚拟机时都尝试连接此虚拟设备吗?
  20. 2019联想创新科技大会:“端边云网智”一切就绪

热门文章

  1. 【SGU 448】Controlled Tournament(状态压缩动态规划)
  2. 已知坐标用matlab画图,已知45个点X Y Z的坐标值已知,如何用matlab画出网格图,每......
  3. TP-wr703N TTL刷机以及刷u-boot/breed教程记录
  4. 警告毕业生 面试让交培训费的都是骗子 千万别上当
  5. python画圣诞树【方块圣诞树、线条圣诞树、豪华圣诞树】
  6. 解决Win10系统由于INF文件失效导致安卓MTP驱动安装失败的问题
  7. pdfminer __init__() got an unexpected keyword argument ‘codec‘解决方案
  8. lamp mysql什么意思_什么是lampapache+mysql+php
  9. 域服务器 文件服务器,域服务器文件服务器
  10. 每天5分钟玩转Kubernetes | Cluster IP底层实现