光场相机由于能够捕获相机内部光线的强度和方向而得到整个光场,可以实现重聚焦(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)算法之二——匹配算法的更多相关文章

  1. 利用光场进行深度图估计(Depth Estimation)算法之一——聚焦算法

    前面几篇博客主要说了光场相机,光场相机由于能够记录相机内部整个光场,可以实现重聚焦(模糊线索)和不同视角的变换(视差线索),同时也可以利用这个特性进行深度估计(Depth Estimation). 先 ...

  2. 泡泡一分钟:Towards real-time unsupervised monocular depth estimation on CPU

    Towards real-time unsupervised monocular depth estimation on CPU Matteo Poggi , Filippo Aleotti , Fa ...

  3. 【HEVC帧间预测论文】P1.9 Coding Tree Depth Estimation for Complexity Reduction of HEVC

    Coding Tree Depth Estimation for Complexity Reduction of HEVC <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见: ...

  4. deep learning+ Depth Estimation

    Depth estimation/stereo matching/optical flow @CVPR 2017 Unsupervised Learning of Depth and Ego-Moti ...

  5. 萌新笔记——Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)

    最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLo ...

  6. Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)

    最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对“基数”以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了“HyperLogLog”,从而引出了Card ...

  7. [转帖]利用nginx实现负载均衡 | 哈希算法,sticky模块实现session粘滞

    利用nginx实现负载均衡 | 哈希算法,sticky模块实现session粘滞 2018年08月02日 10:06:03 Minza 阅读数 483 https://blog.csdn.net/ha ...

  8. 算法(二)之遗传算法(SGA)

    算法(二)之遗传算法(SGA) 遗传算法(Genetic Algorithm)又叫基因进化算法或进化算法,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,属于启发式搜索算法一种. 下面通过下 ...

  9. 隐马尔可夫模型HMM与维特比Veterbi算法(二)

    隐马尔可夫模型HMM与维特比Veterbi算法(二) 主要内容: 前向算法(Forward Algorithm) 穷举搜索( Exhaustive search for solution) 使用递归降 ...

随机推荐

  1. C# 全选中数字文本框内容

    /// <summary>        /// 全选中数字文本框内容        /// </summary>        /// <param name=&quo ...

  2. primer漏配问题解决

    在对之前的ITS数据(454数据)做split时,发现有一些reads没有被匹配上,但是barcode能够完全匹配,虽然之后的primer在中间漏了一个碱基,导致后面的碱基全部误匹配,从而导致这条re ...

  3. Head First设计模式之迭代器模式

    一.定义 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示: 主要解决:不同的方式来遍历整个整合对象. 何时使用:遍历一个聚合对象. 如何解决:把在元素之间游走的责任交给迭代 ...

  4. python 列表赋值和列表 sort 方法注意的问题

    列表赋值 >>> a = b = [] >>> a.append() >>> a [] >>> b [] >>> ...

  5. C# log4net 的配置

    项目的日志组件是必备可少的,任何项目中都需要.这样既方便前期的开发测试也方便项目后期的项目维护.C#项目的一个不错的日志组件是log4net,下面我就把桌面应用程序.控制台程序.网站中log4net的 ...

  6. Java中Optional使用注意事项

    前言 之前遇到过使用Optional之后带来的隐含bug,现在强调记录一下不好的用法,防止错用. Optional不能序列化,不能作为类的字段(field) 这点尤为重要,即类要纯粹.如果是POJO就 ...

  7. python3之异常处理,断言和反射

    1.异常基础 python在运行过程中,程序解释机制会测试代码,如检测不通过则会抛出异常. try: aa = 10 bb = ' cc = aa + bb except Exception as e ...

  8. 【转载】MySQL5.6.27 Release Note解读(innodb及复制模块)

    新功能   问题描述(Bug #18871046, Bug #72811): 主要为了解决一个比较“古老”的MySQL在NUMA架构下的“swap insanity”问题,其表现为尽管为InnoDB ...

  9. 86、flask之一些凌乱知识点

    本篇导航: session组件 上下文与内置函数 pymysql问题 模版问题 一.session组件 1.session组件简介 flask-session是flask框架的session组件,由于 ...

  10. MyBatis + MySQL返回插入的主键id

    这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增i ...