pdf code

In Defense of Classical Image Processing: Fast Depth Completion on the CPU

这篇文章解决的问题是从CPU实现深度补全,这篇是AVOD(暂未有简介)以及Syn-Multi-view的前置.

并不是最好的算法,不过是一个代码使用难度不高(基本只有基本的numpy 与 opencv运算),速度快(90HZ)且精确度尚可的算法.更关键是完全没有使用图像数据

总体流程

image 此图总览了整个算法的完整流程,下面从问题的数学定义以及算法步骤进行介绍。

问题数学定义

对于一张图片,一个稀疏的深度图,找到一个, 其中,问题可以描述为:

流程介绍

Depth Inversion

从数据特性上,kitti中的点的距离从0到80m,不过,空像素同样为0,这不利于基础OpenCV的计算。因此进行一个操作,对非空像素计算,会形成20m的缓冲区。方便形成一个valid or not 的mask.

自定义Dilation

首先尝试让空像素被附近的有效像素覆盖(dilation),最终采用的是diamand kernel

image

小洞填补

先计算一个non-empty mask,使用 full 核进行dilation,non-empth的点不改变。

Extension

为了补充比较高的物体,比如树和天空,将每列最高的有效点直接连接到最外部。

大洞补充

最后一步填补前文完全没有补充的点,由于没有图片数据,使用一个的核,寻找最靠近的未填补点。

Blur

连续使用一个中位数模糊,以及一个高斯模糊。

Depth Inversion

将第一步的深度转回来。