计算机视觉方向简介 | 单目微运动生成深度图

2018 年 1 月 17 日 计算机视觉life sixgod

   坚持原创,点击上方蓝字关注


有什么用?

深度图在计算机视觉中有非常广泛的应用,比如前背景分割(用于背景虚化、美颜、重对焦等)、三维重建(用于机器人导航、3D打印、视效娱乐等)。目前能够直接快速获得深度图的方法就是使用深度相机,不同深度相机获取深度图原理见:《深度相机原理揭秘--飞行时间(TOF)》、《深度相机原理揭秘--双目立体视觉》、《深度相机原理揭秘--结构光(iPhone X 齐刘海原理)》。


但是很多时候由于硬件的限制,我们不能通过深度相机获得深度图。只能利用单目相机通过相关算法来间接计算深度图。比较有名的方法就是运动恢复结构(Structure from Motion),也就是说,我们需要移动(通常需要较大的移动)单目相机从而获得不同视角的多张图片才能间接得到深度图。


从微小运动中获取深度图(depth from small motion)是其中一个比较巧妙的、用单目相机间接获得深度图的方法。该方法利用非常微小的运动来计算深度图,这个“非常微小的运动”的目的是在用户察觉不到的时间(比如手机用户寻找最佳拍摄位置时的微小移动,或者用户拿着相机按快门前的预览时间,或者类似live photo等)内得到深度图。如果该方法可以获得较高质量的深度图,就可以一定程度(静态场景下)上替代基于RGB双目立体视觉的深度相机(如手机双摄,手机双摄介绍见《为什么会出现双摄像头手机?》系列文章)的功能。


下面来介绍该技术的一个应用。如下图所示,(a) 是输入的一个微运动视频中所有帧的平均叠加图,可以看到运动真的是非常微小的。(c) 是算法计算的深度图,从放大的细节来看,边缘还是很锐利的,(d) 是利用得到的深度图进行重对焦的效果。我们看到对焦主体比较清晰,而位于主体前后景深的物体都已经虚化。



什么原理?

本文的亮点之一就是可以对未标定的相机进行深度图和内外参数同时估计。大致流程如下:


1、以第1帧作为参考帧,检测当前帧和参考帧的Harris角点,用KLT法进行特征点匹配。


2、先假设初始的相机内参和畸变参数,利用光束平差法最小化重投影误差,迭代得到相机的内外参数、特征点对应的三维空间点。其原理示意图如下所示。Uij是第i张图像相对于图像中心的第j个特征点的畸变坐标,红色点是其去畸变后的坐标。蓝色点是重投影的坐标。目标就是最小化第i帧中红色点和蓝色点的位置误差。



3、根据得到的内外参数用平面扫描法进行稠密立体匹配,并采用赢家通吃的策略得到粗糙的深度图。微小运动有如下优势:由于时间短,移动小,视场角变化小,可以近似认为所有帧在该时间段内的灰度值保持不变。这个假设对于可靠的稠密像素匹配很重要。


4、将彩色图作为引导图,对深度图进行精细化。获得深度图的过程如下:

(a) 用赢家通吃的策略得到一个粗糙的深度图;(b) 去除不可靠的深度值;(c) 深度图精细化后的结果;(d) 参考图像。



该算法的伪代码流程图如下所示:



效果怎么样?

该算法测试效果如下图所示。下图左侧是用iPhone 6拍摄的1s时间的微小运动连续图像的平均图,从中可以看出运动非常小。右侧是算法输出的对应深度图。


该算法和其他算法在重对焦效果上的对比如下图所示。可以看到该算法能够在背景虚化的同时保持相对锐利的边缘。



尽管该算法设计的初衷就是用于微小运动的情况,但是如果运动特别微小,估计的相机位姿就会非常不稳定。另外如果图像边缘缺乏有效的特征点,会导致径向畸变参数的估计变的不准确。上述情况会导致深度图出现较大的误差。


该算法只适合于静态场景,如果有快速移动物体,该算法会失败。另外要注意的是,该算法估计的深度图是相对深度。


运行时间:


该算法是在个人台式机上进行测试。电脑配置:Intel i7-4970K 4.0Ghz CPU,16GB RAM。对于一个分辨率为1280x720的30帧的微小运动视频,该算法(未优化)完成特征提取、跟踪、光束平差需要1分钟。稠密立体匹配阶段耗时10分钟。


有什么参考资料?

本文算法对应的文章:

Ha H, Im S, Park J, et al. High-Quality Depth from Uncalibrated Small Motion Clip[C]// Computer Vision and Pattern Recognition. IEEE, 2016:5413-5421.


源码:

https://github.com/hyowonha/DfUSMC


上述论文的优化及加速版:

Monocular Depth from Small Motion Video Accelerated,2017 International Conference on 3D Vision



文末福利来了~万门大学推出了《29讲零基础Python入门》,扫码报名,限时免费~

本公众号陆续推出一系列计算机视觉细分方向的简要介绍,包括基本原理、效果、应用、论文,不涉及技术细节,敬请关注,也欢迎投稿(simiter@126.com)。


相关阅读

计算机视觉方向简介 | 从全景图恢复三维结构

计算机视觉方向简介 | 阵列相机立体全景拼接

注:原创不易,转载请注明来源,侵权必究。

登录查看更多
7

相关内容

计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【开放书】SLAM 中的几何与学习方法,62页pdf
专知会员服务
107+阅读 · 2020年6月5日
基于视觉的三维重建关键技术研究综述
专知会员服务
152+阅读 · 2020年5月1日
《强化学习》简介小册,24页pdf
专知会员服务
261+阅读 · 2020年4月19日
【中科院信工所】视听觉深度伪造检测技术研究综述
专知会员服务
39+阅读 · 2020年4月15日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
75+阅读 · 2020年2月3日
计算机视觉方向简介 | 多视角立体视觉MVS
计算机视觉life
14+阅读 · 2019年10月10日
已删除
将门创投
4+阅读 · 2019年8月22日
计算机视觉方向简介 | 视觉惯性里程计(VIO)
计算机视觉life
63+阅读 · 2019年6月16日
计算机视觉方向简介 | 基于单目视觉的三维重建算法
计算机视觉life
30+阅读 · 2019年4月9日
计算机视觉方向简介 | 室内场景的结构化重建
计算机视觉life
8+阅读 · 2018年11月13日
计算机视觉方向简介 | 阵列相机立体全景拼接
计算机视觉life
6+阅读 · 2018年1月3日
Generating Fact Checking Explanations
Arxiv
9+阅读 · 2020年4月13日
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Deformable Style Transfer
Arxiv
14+阅读 · 2020年3月24日
Revealing the Dark Secrets of BERT
Arxiv
4+阅读 · 2019年9月11日
Arxiv
4+阅读 · 2018年5月4日
VIP会员
相关资讯
计算机视觉方向简介 | 多视角立体视觉MVS
计算机视觉life
14+阅读 · 2019年10月10日
已删除
将门创投
4+阅读 · 2019年8月22日
计算机视觉方向简介 | 视觉惯性里程计(VIO)
计算机视觉life
63+阅读 · 2019年6月16日
计算机视觉方向简介 | 基于单目视觉的三维重建算法
计算机视觉life
30+阅读 · 2019年4月9日
计算机视觉方向简介 | 室内场景的结构化重建
计算机视觉life
8+阅读 · 2018年11月13日
计算机视觉方向简介 | 阵列相机立体全景拼接
计算机视觉life
6+阅读 · 2018年1月3日
相关论文
Top
微信扫码咨询专知VIP会员