基本情况

  • 题目:In Defense of Classical Image Processing: Fast Depth Completion on the CPU
  • 出处:Ku, J., Harakeh, A., & Waslander, S. L. (2018, May). In defense of classical image processing: Fast depth completion on the cpu. In 2018 15th Conference on Computer and Robot Vision (CRV) (pp. 16-22). IEEE.
  • 开源代码:https://github.com/kujason/ip_basic

介绍

论文《In Defense of Classical Image Processing: Fast Depth Completion on the CPU》提出了一种用经典的图像处理算法进行深度补全的算法,不依赖于任何训练数据,没有使用深度学习模型。

主要贡献:

  • 1.提出了一种快速的深度补全的算法,能从稀疏的激光扫描的深度图中恢复完整的深度图,并且在CPU上可达到90Hz的频率。该算法的效果在KITTI depth completion benchmark中排名第一(公布时);
  • 2.该算法的表现超越了其他现有的CNN算法。

本文提出的算法一种包含8个步骤:

(1)Depth Inversion:对于稀疏图像的处理机制是应用OpenCV的形态学操作,用较大的像素值覆盖较小的像素值。数据集KITTI raw depth map,深度值范围在0~80米之间,没有有效深度值的位置用0填充。在这种情况下,如果直接应用膨胀操作会使大距离覆盖掉小距离,从而导致较近对象的边缘信息丢失。为了解决这个问题,将有效深度做一个invert,即D(inverted) = 100.0-D(input),这样在有效深度和空值之间有一个20m的buffer。

(2)Custom Kernel Dilation(用自定义的核进行膨胀操作):先填充最接近有效像素值的空值,关键在于kernel形状的设计,要使得最可能具有相同深度值的像素被填补。因此在这一步采用的是5*5的菱形kernel,形状如下图:

(3)Small Hole Closure(对小的空洞进行闭运算):经过第一步的膨胀操作后,仍任有一些小孔,由于这些区域没有有效深度值,考虑到物体的结构,发现膨胀后相邻的深度可以连接起来形成物体的边缘。因此在这一步用一个5*5的full kernel进行闭运算,连接相邻的深度值,填补小孔。

(4)Small Hole Fill(小孔填充):经过前面的步骤,深度图中仍然有一些小到中等size的洞没有被前填充。为了填补这些洞,首先计算一个空像素的mask,然后再进行7×7全内核膨胀操作。这个操作只会填补空像素,同时保持先前计算过的有效像素不变。

(5)Extension to Top of frame(延伸到顶部):考虑一些比较高的物体,如树木建筑物等,都到达了LiDAR点云的顶端。为了补齐这些物体的深度,将每一列的顶端的像素值向上延伸。

(6)Large Hole Fill(大洞填充):这一步来填充一些比较大的洞。用一个31*31的full kernel来进行膨胀操作,将所有仍然为空值的深度值填充起来,而其他位置的有效深度值不变。

(7)Median and Gassian Blur(中值/高斯模糊):前面步骤中的膨胀操作会引入一些噪声,为了去除这些噪声,先使用5*5 kernel的中值模糊,去除局部边缘的离群点。然后,再用5*5的kernel进行高斯模糊,对局部平面进行平滑,平滑尖锐的物体边缘。

(8)Depth Inversion:算法的最后一步是将前几步所使用的倒置深度值恢复到原来的深度编码,即D(inverted) = 100.0-D(input)。

综上,这个算法的设计思想采用了一种贪婪的策略,有效深度周围的空值可能具有相似的值,所以采用了先填充小hole在填充大hole的顺序,最后减少输出噪声和平滑局部平面。膨胀操作的关键在于kernel形状和大小的设计。size太大,填充的深度值大于实际其作用区域;太小,膨胀不足以使边缘通过后期的闭运算连接起来。

试验效果

最后,来欣赏一下实验效果(KITTI depth completion数据集):

将深度图投影到3D,分别为原始的velodyne扫描的深度图和经过算法补全后的深度:

效果还是棒棒哒~

存在问题

However,个人认为还是存在一些问题:

(1)LiDAR扫描的深度数据虽然是稀疏的,但是是比较均匀的稀疏分布(见实验效果图的第一张),所以用这种“先补小洞再补大洞”的策略是可以取得比较好的效果的,但对于其他稀疏分布不均匀的数据,效果并没有这么好(个人用DSO跑出来的深度图做了depth completion,不如人意)。

(2)LiDAR扫描的深度数据只在图像的底部大约2/3的区域有有效深度,所以诸如天空这种存在于图像顶部的物体可能基本没有有效深度。算法将稀疏输入中每一列顶端的有效深度向上延伸,尽管这种策略并不十分合理,但从3D投影的结果来看,效果还是很不错的。尽管在实际应用中我们可能只关注车道上的车辆,并不关心天空,但这种策略给填补较远处的深度提供了一个好的思路。

参考

【论文详解】In Defense of Classical Image Processing: Fast Depth Completion on the CPU

论文笔记_S2D.42_2018-CRV_为经典图像处理辩护:在CPU上的快速深度补全相关推荐

  1. 【深度补全算法】基于RGBD相机的深度补全算法(非Lidar)论文与GitHub代码总结

    目录 前言 一.经典的深度补全算法(2018-2019) 1.Deep Depth Completion of a Single RGB-D Image 2.Indoor Depth Completi ...

  2. 论文笔记_S2D.77_2013_TOR_使用RGBD相机的3D建图(RGBD SLAM V2)

    目录 基本情况 摘要 介绍 系统流程 特征提取 运动估计 EMM:Environment Measurement Model 回环检测 图优化 建图OctoMap 参考 基本情况 出处:Endres ...

  3. 【论文笔记】DRL safety专题经典论文6篇

    文章目录 引子 AI safety in RL 高维约束策略优化(CPO) DDPG+SafeLayer 人为干预 降低专家信息的质量来节约成本 自动重置+及时早停 总结 引子 论文来自spinnin ...

  4. 【论文笔记】DSIFN:用于高分辨率双时相遥感图像变化检测的深度监督图像融合网络

    本文是论文<A deeply supervised image fusion network for change detection in high resolution bi-tempora ...

  5. 论文笔记 Deep Gaussian Processes for Calibration of Computer Models 用于校准计算机模型的深度高斯过程

    0.摘要 黑盒计算机模型的贝叶斯校准为量化模型参数和预测的不确定性提供了一个既定的框架.传统的贝叶斯校准涉及计算机模型的仿真和使用高斯过程的加性模型差异项:然后使用马尔可夫链蒙特卡罗进行推理.这种校准 ...

  6. 论文笔记(五)FWENet:基于SAR图像的洪水水体提取深度卷积神经网络(CVPR)

    FWENet: a deep convolutional neural network for flood water body extraction based on SAR images 作者:J ...

  7. 深度补全(Sparsity Invariant CNNs)-论文阅读-翻译

    (由于是直接从word上复制的,可能存在格式问题) Sparsity Invariant CNNs翻译 Abstract 本文考虑了基于稀疏输入的卷积神经网络,并将其应用于稀疏激光扫描数据的深度上采样 ...

  8. 论文笔记 Traffic Data Reconstruction via Adaptive Spatial-Temporal Correlations

    IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS 2019 0 摘要 数据缺失仍然是交通信息系统中的一个难点和重要问题,严重制约了智能交通 ...

  9. Deep Learning for Image and Point Cloud Fusion in Autonomous Driving: A Review(自动驾驶图像点云融合深度学习综述)论文笔记

    原文链接:https://arxiv.org/pdf/2004.05224.pdf II.深度学习的简要回顾 B.点云深度学习 本文将点云深度学习方法分为5类,即基于体素.基于2D视图.基于点.基于图 ...

  10. 论文笔记:SAITS: SELF-ATTENTION-BASED IMPUTATION FOR TIMESERIES

    对time-series 使用self-attention来进行补全 1 introduction 传统的处理缺失数据的方式一般有两个分类 直接删去只有部分观测值的样本 使用数据补全,将合适的数据填入 ...

最新文章

  1. 数据库中的字段varchar类型和char类型的区别?
  2. 一位海外华人的质问:谁在误导中国人艳羡美国?
  3. Android应用开发:数据存储和界面展现-2
  4. 【杂谈】一本书同时学分类,检测,分割,三维重建,GAN,难道它不香吗?文末送两本
  5. Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)
  6. vbs调用WebService -- 使用xmlhttp
  7. 16级大一c语言考试题及答案,2013年计算机二级C语言上机试题十六及答案
  8. 【ant项目构建学习点滴】--(3)打包及运行jar文件
  9. 【运动学】基于matlab模拟布朗运动(可输入温度)【含Matlab源码 1610期】
  10. mobile的一些link
  11. IGBT基本工作原理及IGBT的作用是什么?
  12. Unicode与中文互转(反斜杠u(\u)开头的16进制Unicode编码转换成中文汉字
  13. 【bzoj2242】计算器 离散对数
  14. 射影几何笔记7:直线方程
  15. 计算机网络未识别网络,电脑网络出现未识别的网络,无Internet访问的解决办法...
  16. POI解析.xlsx格式的Excel文件
  17. ubuntu18.4.02配置静态IP和DNS并ping外网
  18. 【Oracle】并行等待之PX Deq: Table Q Normal
  19. 【已解决】TF_REPEATED_DATA ignoring data with redundant timestamp for frame
  20. 0003 渗透测试标准

热门文章

  1. ReactNative中iOS和Android的style分开设置教程
  2. ajax中xmlhttp.readyState==4 xmlhttp.status==200 是什么意思
  3. Python-UDP编程
  4. 面向对象的JavaScript-008-Function介绍
  5. (转载)PHP环境搭建-记录
  6. Shell script 笔记
  7. GitHub实现G D O S自动签到
  8. VS error C3867: 非标准语法;请使用 来创建指向成员的指针
  9. linux测试at命令,linux at命令:(定时执行脚本)
  10. 康普顿效应是弹性碰撞吗_弹性填料用于洗涤塔