利用光场进行深度图估计(Depth Estimation)算法之二——匹配算法
光场相机由于能够捕获相机内部光线的强度和方向而得到整个光场,可以实现重聚焦(refocus)和视角变换等功能。进而可以进行深度估计获取深度图,前面说过利用重聚焦的图像进行深度估计,今天说一下利用不同视角的图像进行深度估计。
仍然是以Lytro Illum为例
由于每一个微透镜后面的15*15个像素能够记录来自主镜头的225条光线信息,因此取每一个微透镜后面同一位置的像素可以得到一个视角下的图像,遍历15*15个像素,就能够得到225个不同视角下的图像。这些图像之间视角上又偏移,即视差,可以使用匹配的方法进行深度的计算。还是以Tao的文献里的算法来说,这次说的是correspondence,就是各个视角下图像的匹配关系。
Tao的算法里是利用整个传感器获得的光场图像进行计算的,图像尺寸为8115*6510(单个视角下的图像尺寸为541*434,也就是微透镜的个数)。只要能够理解坐标之间的关系,这样就不用提取每一个视角的图像了。
先贴一下源文献里的介绍:主要就是这两个公式(4)和(5),并不复杂。

算法过程如下:
1.重聚焦过程中获取不同像平面下的传感器图像(光场图像8115*6510),一共256幅。
2.对每一幅光场图像,取每一个微透镜后面对应15*15个像素的平均值,然后在窗口内求出方差。这样可以得到一幅方差图(图像尺寸541*434),为了增加鲁棒性,会对方差图做一个均值滤波的操作得到匹配代价图。
3.方差作为匹配代价,针对每一个宏像素点处,遍历所有的匹配代价图,去方差最小的那一幅,记录其索引值(0~255)。
4.根据索引值找到对应的alpha值,从而得到像距V=alpha*F。
5.根据物象公式1/U +1/V = 1/F 就可以求得该像素点处的深度。
博主之前做过双目立体匹配获取视差图(stereo matching),感觉这个匹配的过程有点儿古怪,和stereo matching 不太一样。后来细想,其实还是相通的,只不过融合了refocus后,求深度的过程就简单化了。求方差的过程其实就是计算matching cost ,在微透镜后的窗口内计算方差就是对每一个视角与平均值average进行匹配。而大家知道,重聚焦其实就是shift-sum-average过程,如果微透镜后面的像素点值越接近,那么shift-sum-average后的点就越清晰,否则就会越模糊。方差就能够体现这一重要特性。方差越小,说明该点是重聚焦后所有图像对应位置最清晰的点,也就是在对焦的平面上,这样其实就由转化为了看哪一点最清晰的问题了,和defocus模糊线索殊途同归。
该文献中最后利用马尔科夫随机场MRF对这两种深度图进行了全局优化,目前还没有完全理解,以后理解了再写出来。
现在模糊线索和视差线索都介绍完了,纯属自己看文献和代码的理解,如有错误的地方,还望不吝指教~~~
参考文献
[1] 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.
[2] 杨德刚, 肖照林, 杨恒, 等. 基于光场分析的多线索融合深度估计方法[J]. 计算机学报, 2015, 38(12): 002437-2449.
利用光场进行深度图估计(Depth Estimation)算法之二——匹配算法的更多相关文章
- 利用光场进行深度图估计(Depth Estimation)算法之一——聚焦算法
前面几篇博客主要说了光场相机,光场相机由于能够记录相机内部整个光场,可以实现重聚焦(模糊线索)和不同视角的变换(视差线索),同时也可以利用这个特性进行深度估计(Depth Estimation). 先 ...
- 泡泡一分钟:Towards real-time unsupervised monocular depth estimation on CPU
Towards real-time unsupervised monocular depth estimation on CPU Matteo Poggi , Filippo Aleotti , Fa ...
- 【HEVC帧间预测论文】P1.9 Coding Tree Depth Estimation for Complexity Reduction of HEVC
Coding Tree Depth Estimation for Complexity Reduction of HEVC <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见: ...
- deep learning+ Depth Estimation
Depth estimation/stereo matching/optical flow @CVPR 2017 Unsupervised Learning of Depth and Ego-Moti ...
- 萌新笔记——Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)
最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLo ...
- Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)
最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对“基数”以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了“HyperLogLog”,从而引出了Card ...
- [转帖]利用nginx实现负载均衡 | 哈希算法,sticky模块实现session粘滞
利用nginx实现负载均衡 | 哈希算法,sticky模块实现session粘滞 2018年08月02日 10:06:03 Minza 阅读数 483 https://blog.csdn.net/ha ...
- 算法(二)之遗传算法(SGA)
算法(二)之遗传算法(SGA) 遗传算法(Genetic Algorithm)又叫基因进化算法或进化算法,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,属于启发式搜索算法一种. 下面通过下 ...
- 隐马尔可夫模型HMM与维特比Veterbi算法(二)
隐马尔可夫模型HMM与维特比Veterbi算法(二) 主要内容: 前向算法(Forward Algorithm) 穷举搜索( Exhaustive search for solution) 使用递归降 ...
随机推荐
- php消息队列之 think queue消息队列初体验
使用thinkphp 5的 消息队列 think queue ● php think queue:listen --queue queuename ● php think queue:work -- ...
- CSS开发规范
虽然很久之前整理过一份简单的CSS规范,但是当时写的也不是很全面,有些细节也没有照顾到.记录一份较详细的版本,以备不时之需. 命名规范 [强制] class一律使用小写字母+下划线格式命名 例: cl ...
- Odwiedziny[POI 2015]
题目描述 给定一棵n个点的树,树上每条边的长度都为1,第i个点的权值为a[i]. Byteasar想要走遍这整棵树,他会按照某个1到n的全排列b走n-1次,第i次他会从b[i]点走到b[i+1]点,并 ...
- .net core .net standard .net framework
由于对微软的技术比较感兴趣,所以最近就在研究用Visual Studio Code开发一个Asp.net core项目并且准备从后端开始干起. 一开始用dotnet new console创建了一个控 ...
- TPYBoard v102 驱动28BYJ-48步进电机
TPYBoard v102 驱动28BYJ-48步进电机 实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoard v102 1块 微型步进电机(28BYJ-48) 1个 ...
- hadoop的安装和配置(三)完全分布式模式
博主会用三篇文章为大家详细说明hadoop的三种模式: 本地模式 伪分布模式 完全分布模式 完全分布式模式: 前面已经说了本地模式和伪分布模式,这两种在hadoop的应用中并不用于实际,因为几乎没人会 ...
- 【ASP.NET 系列】浅谈缓存技术在ASP.NET中的运用
本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过涉及架构部分的内容 你只需关心Cache即 ...
- H5开发中的故障
本篇博文会不断的收录我在做H5页面时遇到的问题以及解决方案,当然有的问题,我也没有遇到好的解决方案,所以如果你有解决的办法,请务必不吝赐教! H5开发中的故障 微信APP返回按钮不刷新页面 ...
- Nginx是如何处理Request的?
nginx是如何匹配过来的请求,然后做处理的呢?这个匹配的过程可以分为两步: 1.选择server 2.选择location 选择server 仅仅匹配server name 加入Nginx的配 ...
- PHP使用文件流下载文件方法(附:解决下载文件内容乱码问题)
1.flush - 刷新输出缓冲 2.ob_clean - 清空(擦掉)输出缓冲区 此函数用来丢弃输出缓冲区中的内容. 此函数不会销毁输出缓冲区,而像 ob_end_clean() 函数会销毁输出缓冲 ...