其他分享
首页 > 其他分享> > 英特尔®RealSense™深度摄像机D400系列的深度后处理

英特尔®RealSense™深度摄像机D400系列的深度后处理

作者:互联网

英特尔®RealSense™深度摄像机D400系列的深度后处理

文章目录

Introduction

英特尔®实感™D4xx深度摄像头可以每秒高达90帧的速度传输实时深度(即测距数据)和色彩数据,并且所有生成深度数据的处理都由嵌入式D4 ASIC在板上完成。 这实际上应该给主机处理器留下几乎为零的负担,然后主机处理器可以专注于手头应用程序对深度数据的使用。 尽管可以调整超过40个影响深度计算的参数,但应注意,ASIC不会执行任何后处理来清除深度,因为如果需要,则留给更高级别的应用程序使用。 在本文中,我们讨论了一些可以在主机上执行的简单后处理步骤,以提高针对不同应用程序的深度输出,并探讨了在主机计算和延迟方面进行的取舍。 我们已经在可以使用的英特尔实感SDK 2.0(libRealSense)中包括了开放源代码示例代码,但是请务必注意,存在许多不同类型的后处理算法,此处介绍的算法仅用作 入门基础。 librealsense后处理功能也全部包含在Intel RealSense Viewer应用程序中(如下所示),因此该应用程序可以用作快速测试依据,以确定是否值得探索Intel后处理方面的改进。

img

简单的后处理

如另一本白皮书中所述,要获得最佳的原始深度感,英特尔实感D4xx摄像机,我们通常建议英特尔实感D415以1280x720分辨率运行,英特尔实感D435以848x480分辨率(具有 只有少数例外)。 但是,尽管许多更高级别的应用程序确实需要以最佳高分辨率运行的深度精度和低深度噪声的好处,但对于大多数使用情况,它们实际上并不需要这么多的深度点,即高x和y分辨率。 实际上,必须处理大量数据可能会对应用程序的速度和性能造成负面影响。 因此,我们的第一个建议是考虑在收到输入后立即对输入进行采样:

  1. Sub-sampling :虽然可以通过例如每第n个像素简单地抽取深度图来进行子采样,但我们强烈建议对输入深度图进行更智能的子采样。 我们通常建议对像素及其附近的邻居使用“非零中位数”或“非零均值”。 考虑到计算负担,我们建议对小因子子采样(例如:2、3)使用“非零中位数”,对大因子子采样(例如:4、5 …)使用“非零均值” 。 因此,例如,当将子采样设置为4(或4x4)时,“非零均值”将需要取一个像素及其15个最近邻居的平均值,而忽略零,然后在以4 in x和y。 虽然这显然会影响深度图的xy分辨率,但应注意,所有立体声算法确实都涉及一些卷积运算,因此使用适度的二次采样(❤️)捕获后降低xy分辨率将对图像的影响降至最小。 xy深度分辨率。 X-Y分辨率降低2倍,应将随后的应用程序处理速度提高4倍,而子采样4则应将计算量降低16倍。 此外,智能子采样的一个好处是它还将使用“非零均值”或“非零中位数”函数(计算负担稍高)对数据进行一些基本的空洞填充和平滑处理。 “非零”是指以下事实:深度图上将存在应为零的值。 这些是深度图中的“孔”,代表不符合置信度指标的深度数据,并且相机提供的值不是零,而是错误的值。 最后,子采样实际上也可以帮助实现点云的可视化,因为除非将其放大,否则很难看到非常密集的深度图。

一旦深度图被压缩到较小的x-y分辨率,就应该考虑更复杂的空间和时间滤波器。 我们建议首先考虑添加一个边缘保持空间滤波器。

  1. Edge-preserving filtering : 这种类型的滤波器会在尝试保留边缘时平滑深度噪声。 考虑下面图1中的示例,该示例将2D范围数据发送到一个10x10mm的盒子,该盒子放在距离深度摄像头500mm的墙壁附近。 如右图所示,深度测量中会有噪音。 理想的理想测量值在左侧。 如果我们应用普通的平滑滤波器,我们将看到深度噪声将减小,但是我们还将看到盒子的不同边缘也被平滑,如图2所示。针对的是墙边的物体>

Figure 1. Conceptual cross-section of a 10x10mm box placed near a wall. A depth camera will measure the wall and the box with some depth noise, as seen on the right. The ideal noise-free measurement is seen on the left.

图1。靠近墙壁放置的10x10 mm盒子的概念性横截面。 深度相机将测量带有一些深度噪波的墙和盒子,如右图所示。 理想的无噪音测量如左侧所示。

Figure 2. Applying a smoothing filter to the noisy measurement in Figure 1 will smooth the data but may result in unwanted artifacts, such as rounded or elongated edges, or overshoot. In the upper left we apply a Median Filter with left rank=5. In the upper right we apply a simple moving average of window size 13. In the lower left we apply a bidirectional exponential moving average with alpha=0.1. In the lower right, we apply the type of edge-preserving filter described in this paper, where we use an exponential moving average with alpha=0.1, but only under the condition of neighboring pixels having a depth difference of less than a threshold step-size of delta=3. This last filter will serve as the basis for the edge-preserving filter adopted here.

图2。将平滑滤波器应用于图1中的噪声测量将平滑数据,但可能会导致不需要的伪影,例如圆角或拉长的边缘,或过冲。在左上角,我们应用左秩=5的中值滤波器。在右上角,我们应用窗口大小为13的简单移动平均值。在左下角,我们应用α=0.1的双向指数移动平均值。在右下角,我们应用本文描述的边缘保持滤波器类型,其中我们使用α=0.1的指数移动平均值,但仅在相邻像素的深度差小于δ=3的阈值步长的情况下。最后一个滤波器将作为本文采用的边缘保持滤波器的基础。

我们在“librealsense”示例中使用的边缘保持过滤器是一种简化的域转换过滤器,但我们再次强调,这只是可以应用的许多过滤器中的一种。对于该过滤器,我们在X轴和Y轴上光栅扫描深度图,然后再扫描两次,同时使用确定平滑量的α(α)参数计算一维指数移动平均值(EMA)[https://en.wikipedia.org/wiki/Moving_average]. 具体的递推公式为:

undefined

其中,α系数表示权重降低的程度。 Yt是新记录的瞬时值(视差或深度),St-1是在任何时间段t的EMA值。