基于法线感知邻域的Kinect深度图修复算法

2021-08-09 03:23蔡旭航朱留存张震张恒艳程敬迪
电子技术与软件工程 2021年11期
关键词:深度图邻域空洞

蔡旭航 朱留存 张震 张恒艳 程敬迪

(1.扬州大学信息工程学院 江苏省扬州市 225127 2.北部湾大学先端科学技术研究院 广西壮族自治区钦州市 535011)

1 介绍

Kinect 相机是微软推出的XBOX360 的一款外设。由于其实用性强,成本低廉等优点,已经被广泛应用于三维重建[1],目标跟踪[2]等场合。深度图是由深度相机获取的一种存储RGB 图深度信息的图像,Kinect 相机获取深度图主要通过红外投射散斑和红外探测器探测散斑来获取场景的深度信息。然而使用Kinect 相机获取的深度图容易出现深度为0 的空洞区域。产生这种情况主要有两个原因[3]:

(1)由于距离相机较近的物体会遮挡住较远处的物体,而红外投射的散斑无法投射到被当前对象遮挡的对象上而导致红外探测器无法捕捉到任何信息,从而使深度像素变为0,如图1 所示。

(2)由于材料的不同会导致红外光投射到物体表面后出现多种行为,而只有光吸收材料才能接收由Kinect 投射的散斑,当遇到反光材料和透光材料时红外探测器则无法接收到红外投射器投射的红外光如图2(b)和图2(c)所示。

2 相关工作

为了解决直接用Kinect 获取的深度图像中存在大量空洞的问题,许多研究者都提出了深度图像的修复算法。文献[4]提出了一种像素滤波的方法,将5×5 滤波器模板分为内带和外带。然后统计0像素周围的有效像素,如果有效像素大于阈值,则出现最多的深度值将代替0 像素。该方法以高置信度填充像素值,但仅适应于小空洞。联合双边滤波是对双边滤波的改进,通过彩色图像的引导对深度图像进行滤波,文献[5]就采用联合双边滤波的方法进行深度图像的空洞填充任务,并且利用快速高斯变换替换高斯核函数使算法的运行速度提升。该算法对大面积空洞的填充效果较好,然而该方法降低了原始场景物体边缘轮廓的清晰度。由于单一滤波器的局限性,而深度图像的空洞类型不尽相同,因此有的研究者就提出了将多种滤波器结合进行深度图像滤波的方法。文献[6]提出利用超像素分割将图像的深度划分为无空洞区域、小空洞区域、大空洞区域和全空洞区域四种,然后针对不同的区域分别使用不同的滤波方法修复空洞。由于使用Kinect 相机采集的图像是连续帧,而相邻帧间图像的相机位姿变化不大,因此文献[7]提出了一种利用多帧深度图的时间相关性检测背景区域,结合彩色图像的高斯混合模型,填补空洞区域的像素。

由于Kinect 获取的深度图像空洞噪声类型较为复杂,而单一类型的修复方法无法面面俱到,因此本文先将图像中的空洞噪声分类再实施修复。为了提高运行速度,同时也为了提高深度修复的准确性,我们提出了在法线感知邻域内修复深度图像。

3 算法描述

3.1 深度图像空洞噪声分类

图1:前景遮挡导致深度图黑影区域图示

图2:对于不同材料红外光束行为图示

前面提到,由于Kinect 相机自身特点的原因,在获取深度图像时会出现两种类型的空洞噪声:由前景物体遮挡产生的空洞噪声和由物体表面反射或折射产生的空洞噪声。由前景物体遮挡产生的空洞噪声主要出现在物体的边缘区域,并且这类空洞噪声一般都比较狭长如图3(b)中的(1)所示。由表面反射产生的空洞噪声主要出现在物体的表面,并且这类空洞噪声面积较大如图3(b)中的(2)所示。

在深度图中,除了上述这两类空洞噪声以外还有一种,这类噪声的出现主要是因为Kinect 相机的RGB 图像传感器和深度图像的传感器有略微的偏移,对于同一帧的深度图像和彩色图像坐标无法完全匹配,需要通过配准使它们的坐标对齐,然而这一操作的结果会导致在深度图像的边缘部分会出现大面积深度为0 的空洞噪声如图3(b)中框(3)所示,本文将这一类噪声称为匹配深度噪声。

图3:深度图像中的三类空洞噪声

图4:法线感知非局部邻域示意图

图5:深度图修复结果比较

在进行正式的滤波之前我们通过Kinect 自带的算法获取已经匹配好的深度与彩色图像,并且在这一过程中获取匹配深度噪声的标记,在本文种我们将这一种空洞噪声称为第一类噪声。为了获取深度图中物体边界空洞噪声我们首先对RGB图像实行纹理滤波处理,这一步骤是为了使后面的边缘检测算法尽量不受到物体表面纹理的影响,我们采用文献[8]提出的纹理滤波方法,该方法在滤除物体表面纹理的同时能很好地保留物体的边界。然后我们使用Sobel 算子对图像进行边缘检测获得图像中物体的边缘,再将检测得到的物体边缘膨胀后对应到深度图像中。当深度图中像素为0 且检测为物体边缘时,就是由前景遮挡产生的空洞噪声,本文将这一类噪声称为第二类噪声。对于不属于一类和二类噪声的0 值深度,我们将其标记为第三类噪声,该类噪声多为存在于物体表面由光反射或吸收的原因而产生的噪声。

3.2 法线感知的非局部邻域

在我们的方法中,我们需要在一个足够大的窗口内进行搜索,同时我们计算在这一窗口内深度非0 点的深度置信度。在计算深度置信度前我们需要确定一个非局部邻域,对于每一个待修复的深度像素点p,我们记它的非局部邻域为,其中q 是邻域内的点。受到文献[9]的启发我们根据表面法线来定向搜索区域,使搜索区域在屏幕空间中各项异性,从而具有法线感知。该策略用于计算与待修补深度像素处于同一空间平面内的深度非0 像素点的深度置信度。

法线感知的空间切平面的二维图像投射范围的计算如式(1):

假设像素点p 为(xp,yp)T它的邻域像素点q 坐标为(xq,yq)则有:

其中x=(xp,yp)T,是协方差矩阵。

由于考虑到图像空间中的各向同性分布则有:

其中r 是包括阴影和非阴影样本的采样半径。虽然样本分布应该是空间各向同性的,但是由于真实场景中的大多数表面不面向观看方向,这导致图像空间中的各向异性分布。假设样本各向同性地分布在表面切平面上,然后基于以下等式将它们转换到图像空间:

其中x'表示曲面切面中的坐标。M 表示从切平面到图像平面的旋转矩阵变换,该矩阵可以通过表面法线计算得到。由(4)式可以得到x-u=M'x',同时M'是从M 中提取前两行和前两列形成的。图像平面的协方差矩阵∑由下式计算得到:

法线感知的非局部邻域其实就是将每个像素构建的圆形空间法切面投射到二维图像中变成椭圆形,如图4 所示。使用法线感知的非局部邻域不仅缩小了邻域像素的搜索范围,减少了运行时间,而且保证了查找的邻域像素与中心像素点处于相同的空间平面上,提高了深度修补的准确性。

3.3 深度置信度

在进行修复阶段我们使用法线感知非局部邻域窗口遍历深度图中每一个深度值为0 的像素点,由于深度值为0 的像素点的法线无法计算,我们使用该像素点距离最近的非0 像素点的法线作为该像素点的法线计算该点的非局部邻域。对于每一个0 像素点,计算其非局部邻域内每个深度值非0 像素点的深度置信度。对于不同类型的深度空洞由于其特点不同,我们采用不同的深度置信度计算策略。对于第二类噪声,我们使用式(6)计算点p 和其非局部邻域内的点q 之间的权重系数。该权重表明与中心点灰度接近且距离中心点越近的像素点权重越大。其中x 和y 分别表示像素的横坐标和纵坐标,I 表示像素的灰度值,σd和σr都是高斯函数的标准差。

对于第三类噪声,由于该类空洞噪声是由物体表面材料的反射或吸收效应引起的(即表面的反射率),而反射率可以通过图像的色度表示[10],为此我们在第三类噪声的权重系数中加入色度权重的影响,色度权重的计算如式(7)所示。该式中,ch 表示像素点的色度,σc同样是高斯函数的标准差。得到色度权重后再通过式子(8)得到第三类噪声的权重系数。

3.4 深度空洞噪声修复

在空洞噪声的修复阶段,我们将针对不同类型的空洞采用不同的修复策略。

(1)对于第一类噪声,由于它是由深度图与彩色图像匹配产生的,因此在彩色图像中有帮助恢复深度图中空洞噪声的信息,同时由于该类噪声面积较大,且在深度图中没有对应位置相似的信息,因此对于该类噪声我们考虑使用RGB 图像引导的联合双边滤波对该类噪声进行修复。

(2)对于第二类噪声,当非局部邻域遍历到该类噪声时,我们首先计算邻域内所有深度非0 像素点的深度权重,并且挑选出5个权重最大的深度。由于第二类空噪声是由前景物体遮挡后景物体所产生的,因此需要修复的噪声也是深度值较大的后景噪声,因此在挑选的5 个权重最大的深度里,我们选择深度最大值作为待修复点的深度。

(3)对于第三类噪声,我们同样计算待修复点的非局部邻域内所有深度非0 像素点的深度权重,最终挑选权重最大的深度值作为待修复点的深度值。

4 实验结果与分析

为了验证本文算法的可行性,实验选取Middlebury 标准数据库[11]和RGB_D 数据库中的深度图像进行修复,并且将修复的结果与文献[4]和文献[5]算法的结果进行比较。

图5(c)是文献[4]算法的结果,该算法对于深度图中较小的空洞具有较好的修复结果,然而对于大面积空洞该算法的修复效果并不明显。从图5(c)(1)和图5(c)(4)可以看出这一结论。图5(d)是文献[5]算法的结果,该算法可以修复在物体表面的一些大面积的深度空洞,但是对于由图像匹配产生的第一类空洞修复效果较差,边缘不清晰。该结论可以从图5(d)的(2)、(3)和(4)行可以看出。从图5(e)可以看出,本文算法对于三类空洞噪声都具有较好的修复结果,同时从图1(e)的(3)行的对比可以看出,对于图像右下角的电脑显示屏文献[4]的算法无法修复大面积的空洞噪声,而文献[5]的算法虽然可以修复大面积的空洞噪声,但是修复后的物体边缘被模糊化,而本文算法在修复空洞的同时也能很好的保留物体的深度边缘不被模糊化。

5 结论

针对Kinect 相机采集到的深度图像存在空洞噪声的问题,本文提出了一种基于法线感知非局部邻域的噪声去除方法。该方法首先将深度图中空洞噪声进行分类,然后根据不同噪声的类型在非局部邻域内采用分别采用联合双边滤波和不同的深度置信度策略填充空洞噪声。实验结果表面,该算法可以有效填充大面积的空洞噪声,同时也较好的保留了物体的边缘。该算法可以作为通过深度图像获取点云前的预处理工作,具有一定的实际意义。

猜你喜欢
深度图邻域空洞
稀疏图平方图的染色数上界
基于深度图的3D-HEVC鲁棒视频水印算法
基于邻域竞赛的多目标优化算法
关于-型邻域空间
用事实说话胜过空洞的说教——以教育类报道为例
基于时序扩展的邻域保持嵌入算法及其在故障检测中的应用
臭氧层空洞也是帮凶
Kinect深度图像快速修复算法