基于Kinect相机的深度图像修复算法

2021-07-29 00:30刘继忠王聪
南昌大学学报(工科版) 2021年2期
关键词:中值空洞双边

刘继忠,王聪

(南昌大学机器人研究所,江西 南昌330031)

微软公司的Kinect产品发布之后,逐渐吸引了大量科研人员的关注。Kinect作为一款RGB-D相机,可以同时采集彩色(RGB)图像和深度图像,广泛应用于三维场景重建[1]、目标追踪系统[2]、同时定位与地图构建(SLAM)和机器人导航等领域。深度图像中把相机到场景的距离以灰度值的形式储存。在计算机视觉领域主要有3种获取深度信息的方法:第1种是单目相机,其不能直接得到物体与相机的距离,需经过相机平移后计算深度,但有尺度不确定性的缺点;第2种是双目相机,它可以通过两个相机的视差计算深度,但计算视差的运算量较大,消耗计算资源;第3种是RGB-D相机[3],如Kinect等,它可同时获得彩色图像和相对应的深度图像,因可以直接得到深度信息,且价格低廉,性价比较高。但是,Kinect在采集深度图像时,遇到区域遮挡、镜面反射等情况,所得图像会在这些区域产生大量空洞(即在深度图像里空洞对应区域的灰度值为0)和噪声[4]。因此,为了得到高质量的深度数据,需要对采集的深度图像进行修复,为后续的三维重建提供数据参考。

针对上述问题,许多研究人员对深度图像空洞修复和去噪进行了大量探索研究。其中,基于滤波的方法来达到修复的方式相对简单且应用广泛。Elguebaly等[5]提出了一种基于高斯滤波的修复方法,该方法有较好的修复效果,主要体现在处理小型空洞或噪声的情况,但在处理大面积的空洞时效果较差。Esfahani等[6]采用了基于双边滤波的修复方法,该方法能够有效地处理边缘处的较小的空洞噪声,且能同时考虑到空洞点处的像素信息与位置信息。Chen等[7]提出用聚类的思想修复深度空洞的区域,该方法采用彩色图聚类的结果为引导,在空洞点处搜索引导图像的非空洞点,选择该点的深度值作为空洞填充值,但该方法在使用时过于依赖聚类的结果,且鲁棒性欠佳。Lu等[8]提出一种通过利用噪声彩色图像来修复深度值缺失的区域,并进行去噪的方法,在低秩子空间约束中,通过RGB-D稀疏值合成矩阵来达到修复深度值和去噪的目的,深度图像处理效果较好。在进行深度图像处理时,滤波器大多只具有单一的修复空洞或去噪的功能。因此,本文提出了基于联合双边滤波器和中值滤波相结合的方法,来修复采集的原始深度图像中的空洞和噪声。通过实验证明,该方法即可以有效的修复深度图像的空洞区域,也能很好的去除噪声。

1 算法框架

使用Kinect设备获得彩色(RGB)图像和深度图像的信息,并将它们裁剪对齐,如图1所示。再使用基于联合双边滤波器和中值滤波相结合的方法,对采集的深度图像中的空洞和噪声进行修复,本文算法框架如图2所示。

图2 算法框图Fig.2 Algorithm block diagram

(a) 彩色图像

1.1 预处理

由于Kinect的彩色摄像头和深度摄像头的拍摄视点不同心(即不在同一位置),故应先将彩色图像与深度图像对齐[9]。本文使用张正友标定法来标定彩色相机与深度相机的内外参数,这里就不详细赘述。图3为Kinect相机示意图。

图3 Kinect v2相机Fig.3 Kinect v2 camera

根据Kinect相机参数可以得知,Kinect彩色相机分辨率为1 920×1 080,深度相机分辨率为512×424,深度图像帧率为30 fps,深度有效值的范围为0.5~4.5 m,深度相机的视角为水平70°、垂直60°,而超出这一范围的场景信息,都无法采集,此区域为边缘无效区域。为了更好地对图像进行处理,本文将用裁剪图像的方式去除边界无效区域信息,以此来保证整体的深度图像质量。

1.2 空洞修复

Kinect在采集深度数据时[10],在镜面反射区域或邻近物体遮挡区域容易造成深度图像信息丢失,它们在深度图像上会以空洞形式存在,该空洞区域的深度值为0。联合双边滤波[11]是基于双边滤波发展演化而来,双边滤波器[12]是一种非线性滤波器,采用了加权平均的思想。主要是用周边像素灰度值的加权平均代表某个像素的强度,所用的加权平均基于高斯分布。双边滤波的权重不仅考虑像素的欧氏距离,还考虑像素领域中的颜色差异[13]。由于它结合了像素间的空域信息和灰度相似性,对于离它距离较远或与其像素值差别较大的点都不会对该点像素值造成太大影响,因此可以很好地保护边缘,但双边滤波的权值不稳定。双边滤波器计算公式如下:

(1)

(2)

式中:Jp为滤波后的像素值;Kp为归一化因子;Ω为待修复像素点p的邻域;f表示空域权重;g表示值域权重,二者分别引入了像素间的距离与像素值的差别,一般f和g都是以点p为中心的高斯滤波器。

(3)

1.3 去噪

Kinect v2属于飞行时间(time of flight,TOF)的深度相机,即测量光在Kinect相机到场景的飞行往返时间以获得距离。而基于光学的测距在采集图像时会产生噪声的干扰。噪声类型主要是椒盐噪声。对于椒盐噪声的存在,本文将采用中值滤波来处理。中值滤波是Tukey于1971年提出,是一种非线性滤波技术。对于均值滤波等线性滤波器在处理图像时,会造成图像细节模糊,而在一定的条件下,中值滤波可以避免这种情况,并且中值滤波对图像扫描噪声等的处理效果较好,同时也能对图像的边缘信息有很好的保留,实现保边去噪的效果[14]。其基本原理把数字图像或数字序列中的某一点值,用其邻域中的各点值的中值替代。通过这种方法对孤立的噪声点具有很好的消除作用。

简单来说,当使用中值滤波在对图像进行处理时,会取3×3(或5×5、7×7等)的函数窗,从图像的边缘开始横向或竖向依次进行移动处理,并计算以点[i,j]为中心的函数窗像素中值,具体操作如下:

1) 在每次移动时,对于点[i,j],把邻域窗口内的图像像素值进行排列;

设在邻域窗口内的各像素值为x1,x2,…,xn,接下来对于一维数列x1,x2,…,xn,把n个数据按大小排列:xi1≤xi2≤…≤xim,则公式如(4);

(4)

2) 取其统计中的中值作为该点[i,j]新值。

一般采用长度为奇数点(即2n+1,n为正整数)的邻域。当窗口在深度图像数据上移动时,经过中值滤波后输出窗口内各像素的中值作为新的像素值,来取代原窗口中心像素值。当像素点为偶数时,中值即为像素排序后的中间两个的平均值。通过这种方式,遍历完整幅深度图,即可将噪声滤除。

2 实验结果与分析

本文算法在Visual Studio 2013平台上结合OpenCV 2.4.9用C++实现,处理器为Inter i5-8300H 2.3 GHz主频的PC机,8 G内存,Windows 10操作系统,传感器Kinect v2通过USB 3.0接口连接PC机。为了验证本文的有效性,通过与联合双边滤波和高斯滤波进行定性和定量对比实验。

2.1 中值滤波的窗口选择

对于中值滤波的窗口大小选择,本文使用Middlebury数据库中的数据集Cones图像来进行试验。本文先通过人为添加强度40%椒盐噪声到深度图像,然后使用不同窗口的中值滤波进行去噪,最后根据结果对比来选择合适的中值滤波窗口。实验结果如图4所示。

对于中值滤波来说,窗口越小,细节保留的会越多,但会有一部分椒盐噪声还没有滤除,如图4(d)和图4(e)所示,3×3窗口的中值滤波过后的深度图像,可以明显看出存在大量的噪声;5×5窗口的中值滤波过后未能完全滤除,仍存在少许的噪声。图4(f)中,经过7×7窗口的中值滤波过后,已经明显没有椒盐噪声;当窗口尺寸大时,虽然对噪声滤除效果更好,但是图像细节会丢失。图4(g)相对于图4(f),在面具之上的部分背景的深度信息细节已经开始丢失,杯子里的木条中间部分也因深度信息丢失出现断层现象。相对于其他尺寸的窗口,7×7窗口的中值滤波去噪的效果更好,图像细节更完整。故本文选择中值滤波的窗口大小为7×7。

(a) Cones原始彩色图 (b) Cones原始深度图 (c) 添加噪声 (d) 窗口数3×3

2.2 Middlebury数据库数据实验结果

选择Middlebury数据库中的Midd1图像作为测试图像,并在深度图像中人工添加一些空洞和噪声。本次实验中,添加椒盐噪声到深度图像中,同时在该深度图像添加黑色的区域,该区域表示空洞,即深度值为0。本文将添加空洞和噪声后的深度图像作为待修复图像,如图5(c)所示。实验结果表明,经过高斯滤波后,图像中有大量的噪点,且对空洞的填充效果不佳;联合双边滤波对添加的空洞基本上能很好地修复,但是图像中的物体边缘出现漂移。本文算法对空洞修复和去除噪声都有较好的效果,修复后的物体边缘光滑。表1为各种方法的均方误差(RMSE)和峰值信噪比(PSNR)的结果,与高斯滤波和联合双边滤波相比,本文所提出的方法的RMSE值有所下降,PSNR的值有所增加,具有更好的修复效果。

(a) Midd1原始彩色图 (b) Midd1原始深度图 (c) 添加黑洞和噪声的深度图像

表1 Midd1的RMSE和PSNR值Tab.1 Midd1’s RMSE and PSNR values

2.3 Kinect采集数据实验结果

通过Kinect传感器采集一组室内深度图像,并使用高斯滤波、联合双边滤波和本文方法进行处理,所得的实验结果如图6所示。从图6的实验结果表明,高斯滤波对于深度图像中的物体边缘区域的空洞修复效果不好;联合双边滤波对桌子以及上面的物体边缘,黑板边缘、柜子边缘等区域的空洞能够修复,但物体边缘会出现漂移,且图像部分区域会有模糊现象。本文方法能很好地修复物体边缘的空洞,而且物体轮廓更清晰。

(a) 彩色图 (b) 深度图 (c) 高斯滤波 (d) 联合双边滤波 (e) 本文算法

3 结语

针对Kinect相机采集深度图像存在空洞和噪声,提出了一种基于联合双边滤波和中值滤波相结合的深度图像处理方法,完成了对深度图像的修复。实验通过开源数据集和Kinect自采数据作为实验对象,并使用不同的方法来进行对比。数据集通过向深度图像中添加人工噪声和空洞,从RMSE和PSNR值进行了对比。修复后的PSNR有所增加,RMSE相对减少,空洞修复和去噪效果较为理想。实验结果表明,经本文方法修复后的深度图像轮廓更加清晰,物体边缘更加光滑,修复的效果更好。

猜你喜欢
中值空洞双边
番茄出现空洞果的原因及防治措施
隧道内超短边多公共转点双边角交会测量技术探讨
如何避免想象作文空洞无“精神”
双边投资协定与外商直接投资
与2018年全国卷l理数21题相关的双边不等式
Lagrange中值定理的巧妙应用
高等数学中拉格朗日中值定理的教学处理
Lagrange中值定理在微分学中的应用
微分中值定理教法研讨
基于不确定性严格得分下双边匹配决策方法