APP下载

基于RGB?D的深度图像修复算法研究

2019-04-04王福伟王霖伏燕军钟可君

现代电子技术 2019年2期
关键词:图像处理

王福伟 王霖 伏燕军 钟可君

关键词: Kinect; 深度数据; 图像处理; 空洞填充; 噪声滤波; 图像修复

中图分类号: TN911.73?34                        文献标识码: A                    文章编号: 1004?373X(2019)02?0143?04

Research on depth image restoration algorithm based on RGB?D

WANG Fuwei, WANG Lin, FU Yanjun, ZHONG Kejun

(Key Laboratory of Nondestructive Testing of Ministry of Education, Nanchang Hangkong University, Nanchang 330063, China)

Abstract: In allusion to the unstability of the original depth data obtained by the Kinect device, especially for the high noise and holes in the image, a depth restoration algorithm combining with color image guidance hole?filling and filtering is proposed in this paper. The grayscale image is used to separate and mark the hole area. The positions of hole points are analyzed and judged, and the holes are filled by combining with the color image. The improved median filtering algorithm is adopted to remove noises in the edge of the image. In comparison with the current main depth filtering restoration methods, the proposed algorithm makes full use of depth data and color image, and uses a large number of basic image processing algorithms in the processing process. The experimental results show that the proposed algorithm can solve the hole and noise problems well and restore depth data well.

Keywords: Kinect; depth data; image processing; hole filling; noise filtering; image restoration

自微软公司发布Kinect体感设备以来,该设备引起了广大科研人员的兴趣。由于Kinect可以同时获取到场景的深度数据与彩色数据,微软最初将其作为Xbox游戏外设,用于完成人机交互、动作跟踪识别等功能。随着国内外学者对Kinect设备研究的深入,发现该设备也可以应用到三维真实场景重建、医学模拟训练及军事复杂模拟等领域[1],并取得了良好的研究成果。但是,该设备在获取深度数据时,容易受到各种因素的干扰。由于深度数据是通过红外发射器发射编码散斑,再采用红外接收器接收场景散斑图进行解码。深度数据获取容易受到遮挡等原因形成的空洞及噪声的影响。这些空洞分布没有规律性,受被测物体本身的材质、所处背景的复杂度及环境光影响很大,图1给出的原始深度图,包含这些空洞与噪声。

针对以上获取深度数据的问题,国内外学者提出了许多的深度数据优化算法。文献[2]采用高斯滤波方法进行空洞修复,该方法利用非空洞点与空洞点欧氏距离来确定相关程度,进而确定空洞点处灰度值的估计值。该方法在充分利用空洞点位置信息的同时,忽略了空洞点形成原因,修复结果有局限性,尤其不适合因边缘遮挡造成的空洞区域。为解决边缘处的空洞问题,文献[3?5]采用了双边滤波的修复方法,该方法充分考虑了空洞点处的位置信息与像素信息,能够有效地消除边缘处较小的空洞噪声,但对于较大的空洞,该方法无法有效处理。文献[6?8]在双边滤波的基础上,提出联合双边滤波的修复方法。该方法通过引入一幅与原深度图像相似的彩色图,通过彩色图来计算像素的权值,有效提高了双边滤波中权值计算的准确度,但该方法仍无法修复较大的空洞。文献[9?13]提出用聚类的思想修复深度空洞区域,该方法采用彩色图聚类的结果作为引导,在空洞点处搜索引导图像的非空洞点,选取该点的深度值作为空洞填充值,這种方法优于联合双边滤波方法的处理方法,但该算法依赖聚类结果,鲁棒性难以令人满意。因此,本文提出结合彩色图引导填充空洞,然后使用改进的中值滤波算法进行深度修复,并通过实验证明,该方法能够有效填充深度图像较大的空洞区域,并滤除小的空洞噪点,取得很好的实验结果。

1  基于RGB?D的深度图像修复算法

在利用Kinect获取深度数据与彩色数据的过程中,由于是深度数据获取方式,所以深度数据受外界和自身因素影响很大。深度数据依靠红外发射并经过一块毛玻璃形成红外散斑,从而将场景中布满散斑,再利用接收器,这时就容易受到因遮挡、距离过近等因素影响产生空洞,而且这类空洞一般都比较大。因此,所提算法根据空洞所在区域填充较大的空洞,最后采用改进的中值滤波方法,过滤掉小的空洞。本算法描述如下。

1.1  较大空洞区域填充算法

1) 分离空洞

对采集到的深度图像进行二值化处理,并通过聚类算法找到空洞区域中心,得到形心坐标。首先,获取原始深度数据(如Kinect设备采集深度数据)。由于深度数据表示为场景中的点(或背景)到接收设备的实际距离,因此需要对深度数据进行格式转换,将深度图转化成普通的灰度图,便于后续处理。格式转换应用公式为:

[G(x,y)=Z(u,v)Zmax×255]   (1)

式中:[Z(u,v)]为深度图像的距离;[Zmax]为Kinect的最大测量范围;[G(x,y)]为转换后普通灰度图的灰度值。

对格式转换得到的灰度图像进行二值化处理,提取出灰度值为0的部分,即为所求区域。由上述转换公式也可以得出,该区域亦是深度数据的空洞。接着就可以求出较大空洞区域的形心坐标。

2) 填充空洞

空洞填充主要考虑了空洞形心点的位置,根据该点位于物体表面还是背景,确定填充像素的灰度值范围。首先,用彩色图来纠正灰度图像中物体与背景分离产生的错误。由于在彩色图片中,背景与物体的颜色信息存在很大的差异性。因此,本实验使用颜色相似特征引导灰度图确定空洞区域位置,具体步骤为:首先,在两幅图间建立映射关系;然后,就可以通过彩色图的颜色相似特征纠正灰度图分离背景与物体时产生的错误;最终确定空洞区域较为准确的位置。

空洞填充主要依据式(1)中的形心坐标的位置,来确定该区域选用的周边像素灰度值,最终完成填充工作。本文对此进行了改进,对位于背景中的空洞做八邻域选点,邻域点位于物体上时,将该邻域点灰度值置为0,并填入模板中,进行求解;反之则不变。对位于物体中的空洞,亦采用上述方法。本文主要采用3×3模板法,使用式(2)改进均值求解,依次填充空洞,直至修复完成。

[G′(x,y)=18-kabcdefghi]  (2)

式中:e为待求点的像素值;a,b,c,d,f,g,h,i分别为e的八邻域像素值;k(k不等于8)为八邻域中灰度值为0的点数目。

1.2  改进的中值滤波算法

采用基于较大空洞区域填充的方法进行处理后,可以得到比较好的深度修复图像,填充效果基本能够满足实际要求。但是,通过与原始深度图相比较,填充后的结果引入了新的噪声,因此考虑采用滤波的方式消除噪声。考虑到中值滤波对消除孤立点块非常有效,本文选用中值滤波方法来消除噪声。但是,对于细节较多的复杂图像,需要多次使用不同模板的中值滤波方能消除噪声,这样做工作量大,速度慢。本文改进了中值滤波的方法,让算法自动选择滤波窗口的大小,自动调整,以达到最好的滤除噪声的效果。其算法步骤如下,首先,设置3×3的初始化模板,计算初始化窗口的灰度值的最大值、最小值以及滤波中值。若滤波中值位于最大值与最小值之外,则增大窗口(即+2)。若滤波中值位于最大值与最小值之间,则判断待测点像素灰度值是否位于最大值与最小值之间,若在这个范围内,则像素灰度值不变;否则,待测点像素灰度值用滤波中值替换。按照这个算法,依次遍历全图像素,进行深度图去噪。

通过上述描述,可以清晰看出:首先,判断初始化窗口的滤波中值,如果不是噪点则进行下一步操作;其次,判断待测点是否为噪点,如果是,便用滤波中值替换,如果不是,则进行下一个像素点的判断。按照这个算法,依次遍历全图像素,就可以把整幅图的噪点全部滤除。

2  实验结果与分析

为验证所提算法的有效性,选取标准库[14]的待测图片作为原始数据,在PC机上基于OpenCV库的C++语言实现该算法。实验运行平台如下,主机CPU为Intel Pentium G3240,主频3.1 GHz,内存为8 GB,操作系统为Windows 7,软件环境为Microsoft Visual Studio 2010,OpenCV2.4.9库。

2.1  本文所提算法的实验验证

利用深度图像空洞的特性,根据连通性原则,确定大空洞形心坐标,进而对确定空洞所在位置有了更准确的描述,并进行标记,如图2所示。

其中:图2a)与图2b)为待处理的原彩色图与深度图;图2c)为对原深度图进行二值化处理,并提取出空洞区域;图2d)为图2c)根据连通性原则,对深度图较大空洞进行提取,最后进行膨胀腐蚀等操作,得到较大空洞区域的二值化图;图2e)为对图2d)进行空洞区域确定形心点并进行标记的结果。相比传统的k?means聚类方法,本方法使用了图像的基本操作(如膨胀、腐蚀、加减运算等),即获得了空洞区域。而k?means聚类方法则是对灰度化以后的彩色图像进行聚类处理,本身在灰度化彩色图像时,就丢失了部分图像信息,虽然后期k?means是基于灰度值进行聚类的,但是,仍旧无法忽略这部分影响。另一方面,基于k?means的聚類算法受初始值影响很大,尤其是k值(需要用户预先确定)的影响。同时,由于该方法在寻找形心时计算复杂且难以完成全局收敛,时间复杂度高,尤其是数据量大时,速度极慢,而本文算法较为简单,且预处理效果良好,对后续的工作进展有很大的指导意义,可以用在实时处理。

2.2  不同算法的对比验证实验

通过对不同的深度修复效果进行直观的比较,得出在处理不同的实验背景的深度图,结果有较大的差异。对比实验结果如图3所示。其中:图3c)双边滤波的结果表明,在深度图空洞较大的区域和部分边缘区域,修复效果不好,并且物体边缘被模糊化;图3d)在双边滤波算法不足的基础上进行了改进,不再单独依赖颜色空间与坐标空间的sigma值,而是通过引入一幅与原始深度图相同大小的彩色图,解决了双边滤波计算权值时出现翻转带来的错误。从实验结果中可以清晰看出,引入的彩色图对深度图修复影响显著。尤其当引入的彩色图非常复杂时,进行深度修复后,边缘会出现漂移,这也间接表明联合双边滤波在处理复杂背景的图片时,存在极大的限制。而本文所提算法在分析以上算法的优缺点后,充分考虑空洞形成的原因,先将较大空洞分离出来,进行该部分的空洞的填充,再对离散较小的噪点进行滤波操作,最终完成整幅深度图的修复操作,实验取得了良好的实验结果,见图3e)。这表明,该算法具有较强的鲁棒性,能够处理较为复杂的三维真实场景。但是,对于极复杂背景的情况,所提算法仍存在一定的局限性。

3  结  语

本文针对应用三维重建过程中Kinect传感器获得的单幅深度图存在空洞噪声的问题,提出结合彩色图引导填充空洞并滤波的深度修复算法。该算法通过定位空洞点的位置,进而利用彩色图颜色特性相似性原则,确定空洞点位于前景或背景,有效地进行了像素级别的填充。在初步填充完成以后,通过改进的中值滤波算法,消除掉填充可能带来的噪点。实验结果表明,空洞填充效果较为理想,修复结果边缘平滑,能够应用在较小范围的场景重建。但是,该算法对于复杂背景及较暗的环境处理效果不明显,深度数据存在较大误差,希望下一步工作能够在更好的图像分割或者多帧图片方面寻求突破。

参考文献

[1] P?HLMANN S T L, HARKNESS E F, TAYLOR C J, et al. Evaluation of Kinect 3D sensor for healthcare imaging [J]. Journal of medical and biological engineering, 2016, 36(6): 857?870.

[2] FENG S, MURRAY?SMITH R, RAMSAY A. Position stabilisation and lag reduction with Gaussion processes in sensor fusion system for user performance improvement [J]. International journal of machine learning and cybernetics, 2017, 8(4): 1167?1184.

[3] ESFAHANI M A, POURREZA H. Kinect depth recovery based on local filters and plane primitives [J]. Integral methods in science and engineering, 2017, 2: 53?63.

[4] GUO L, CHEN X, CHEN Y, et al. Colored 3D surface reconstruction using Kinect sensor [J]. Optoelectronics letters, 2015, 11(2): 153?156.

[5] 王孝通,金鑫,徐晓刚,等.联合双边图像插值[J].中国图象图形学报,2011,16(12):2117?2123.

WANG Xiaotong, JIN Xin, XU Xiaogang, et al. Joint bilateral image interpolation [J]. Journal of image and graphics, 2011, 16(12): 2117?2123.

[6] CAMPLANI M, SALGADO L. Efficient spatio?temporal hole filling strategy for Kinect depth maps [J]. Proceedings of SPIE, 2012, 8290: 1?10.

[7] 刘田间,郭连朋,朱禛,等.一种深度图像修复算法研究[J].信息技术,2017(6):107?111.

LIU Tianjian, GUO Lianpeng, ZHU Zhen, et al. A depth image inpainting algorithm [J]. Information technology, 2017(6): 107?111.

[8] 李应彬,冯杰,张华熊,等.基于改进双边滤波的Kinect深度图像空洞修复算法研究[J].工业控制计算机,2013,26(11):105?106.

LI Yingbin, FENG Jie, ZHANG Huaxiong, et al. New algorithm of depth hole filling based on intensive bilateral filter [J]. Industrial control computer, 2013, 26(11): 105?106.

[9] CHEN W, YUE H, WANG J, et al. An improved edge detection algorithm for depth map inpainting [J]. Optics and lasers in engineering, 2014, 55: 69?77.

[10] WANG Z, HU J, WANG S, et al. Trilateral constrained sparse representation for Kinect depth hole filling [J]. Pattern recognition letters, 2015, 65: 95?102.

[11] L CARAFFA L, TAREL J P, CHARBONNIER P. The guided bilateral filter: when the joint/cross bilateral filter becomes robust [J]. IEEE transactions on image processing, 2015, 24(4): 1199?1208.

[12] HAYAT M, BENNAMOUN M, EI?SALLAM A A. An RGB?D based image set classification for robust face recognition from Kinect data [J]. Neurocomputing, 2016, 171: 889?900.

[13] MALINEN M, FR?NTI P. K?means: clustering by gradual data transformation [J]. Pattern recognition, 2014, 47(10): 3376?3386.

[14] Anon. Middlebury datasets [EB/OL]. [2017?12?24]. http://vision.middlebury.edu/stereo.

猜你喜欢

图像处理
海战场侦察图像处理技术图谱及应用展望
人工智能辅助冠状动脉CTA图像处理和诊断的研究进展
基于ARM嵌入式的关于图像处理的交通信号灯识别
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
Bayesian-MCMC算法在计算机图像处理中的实践
改进压缩感知算法的图像处理仿真研究
基于图像处理的定位器坡度计算
基于图像处理的晶圆表面缺陷检测
对图像处理中ROF全变分模型的两种算法的比较研究