操宣鹏 陈一民
(上海大学计算机工程与科学学院 上海 200444)
基于轮廓的kinect深度图像的空洞填补
操宣鹏陈一民*
(上海大学计算机工程与科学学院上海 200444)
摘要针对Kinect获得深度图噪声的特点,以及现有去噪算法存在的问题,提出一种基于轮廓的自适应非对称高斯滤波方法。该方法针对Kinect能够同时获得深度图像和彩色图像的特点,利用彩色图找到场景中物体的轮廓;在对深度图进行填补时,利用轮廓选取合适的有效点;选取的有效点是非对称的,所以需要改变高斯滤波的对称性;另外,改变高斯滤波的尺度,使其随着被填补区域深度值的变化而变化,使得高斯滤波具有自适应特性。通过实验对比,表明该方法能准确地填补深度图的空洞,同时还能很好地保护图像中边缘信息。
关键词深度图空洞轮廓自适应非对称
0引言
增强现实AR(augmented reality)技术[1]是一种利用计算机系统产生三维信息来增强用户对现实世界感知的新技术。在增强现实中,虚拟物体模型的建立与真实感绘制效果会对用户的感知能力产生影响。从用户所处的真实场景中准确地重建出真实物体的三维模型在增强现实中占有重要的地位。
在三维模型重构中,深度图的准确获取是非常关键的一点,是后续所有工作的基础。利用Kinect来获的深度图像中,噪声较传统扫描仪要大,主要分为两部分:一是噪声点,是指深度图像中没有获得深度值的点状区域,它是Kinect随机生成的,具有不确定性;二是空洞,是指深度图像中未获得深度值的块状区域,它是由于Kinect的红外发射器和接收器的位置不同,导致景深较大物体在靠近景深较小物体边缘的时候,深度信息不能被获取,形成了较大面积的空洞。这种情况形成的空洞在不改变Kinect和场景相对位置时,是不能直接获得,只能通过选择邻域中的有效深度点进行计算得到。中值滤波算法,Tomasi[2-5]提出的双边滤波算法,Chang、Moulin[6-8]等提出的高斯滤波对于彩色图像有较好的表现。但是在深度图中,这些算法不能很好地填补大范围空洞。Camplani M[9]等提出了基于双边滤波改进的时空空洞填补策略,但是该方法时间复杂度太高。
本文针对上述问题,提出了一种基于轮廓的自适应非对称高斯滤波算法(OAAG),较好地解决上述问题。
1基于轮廓的OAAG算法空洞填补
本文提出的算法基本思想是:首先,对Kinect进行标定;然后对获得的同一场景中一系列图像进行处理,在去除零星的噪声点的同时,获得场景的模板深度图像;再利用获取的彩色图片取得场景的轮廓图;最后利用OAAG算法对模板深度图像的空洞进行填补,得到最终的深度图像。
1.1深度图噪点去除
定义Di(m,n)是获得的彩色图对应Kinect获得的一系列深度图,深度图有M×N个点,那么Di(m,n)∈Q,其中:
Q={Di(m,n)|m∈[1,M]∩n∈[1,N],i∈{1,2,3,…}}
从Kinect视频流中取出n帧连续深度图像:
D1,D2,…,Dn,点(m,n)在这n帧图像中相应位置值定义为:d1(m,n),d2(m,n),d3(m,n),…,dn(m,n)。
(1)
式(1)表示di(m,n)所表示的值是否为有效值,在默认的模式下,(0.8~4 m)为有效深度范围;在近模式下,(0.4~3.5 m)为有效深度范围。计算n幅深度图像中该点深度有效的个数Ssum,如果Ssum大于我们给定的阈值则Sth这个点可以被填补,然后计算出像素点n副图像中的平均值davg(m,n):
(2)
然后把得到davg(m,n)依次记录到深度模板Dv中对应的位置;否则丢弃。把最后得到的有效的点都记录得到被填补空洞的深度图模板Dv:
DV={davg(m,n)|m∈(1,M),n∈(1,N)}
(3)
1.2计算RGB图像的梯度图和提取轮廓
定义C(m,n)表示彩色图像转换的图像中,每个点的梯度变化率,C(m,n)∈P,其中P={C(m,n)|m∈[1,M]∩n∈[1,N]} 。若要得到很好的边缘信息往往需要达到亚像素级别。
首先将彩色图像按照式(4):对图像进行灰度化。
Gray=x×B+y×G+z×R
(4)
其中x+y+z=1,x、y、z的选取根据图像选取;然后对灰度图进行轮廓提取。图像中边缘通常是灰度值急剧变化部分,而梯度值反映为一阶导数的二维等效函数式。本文采用改进的Canny算法[10]进行轮廓提取。x、y方向的梯度计算公式:
(5)
在改进的Canny算法中,对于梯度的计算选取的是Isotropic Sobel模板[11],x、y方向的方差fx(m,n)、fy(m,n)分别为:
fx(m,n)=2I[m+1,n]-2I[m-1,n]+I[m+1,n+1]-I[m-1,n+1]+I[m+1,n-1]-I[m-1,n-1]fy(m,n)=2I[m,n+1]-2I[m,n-1]+I[m-1,n+1]-I[m-1,n-1]+I[m+1,n+1]-I[m+1,n-1]
(6)
其中:I[m,n]=(▽G(m,n))×davg(m,n)=▽(G(m,n)×davg(m,n))G(m,n)是图像高斯平滑滤波核;f(m,n)为原像素点的值。我们得到的该点的幅值方向:
(7)
θ(m,n)=arctan(fy[m,n]/fx[m,n])
(8)
Isotropic Sobel算子不仅能解决计算梯度幅值时准确边缘定位问题,还能抑制噪声。
利用插值法改进传统的Canny算法中非极大值抑制,根据该点的fx、fy符号、方向以及θ值进行选取插值的点,最后得到:
(9)
其中r(H1)、r(H2)、r(H3)、r(H4),分别为该点四周选取的插值点的幅值,若r(m,n)>X1、r(m,n)>X2同时成立,则r(m,n)为极大值点。最后对梯度进行双阈值处理得到轮廓。
1.3OAAG权值计算
对获得的深度模版进行空洞填补:设置一个W:Z×Z的滑动窗口,对窗口内的空洞点进行填补。首先判断窗口内的Davg的比例Davg% ,即窗口内有效的深度值点的个数和窗口内总的点数比例,如果Davg%小于给定的阈值Dth%。那就暂时不对这个窗口内的中心点进行填补,等待下一次遍历时候处理;如果大于Dth%,则再判断窗口中是否有轮廓点,如果没有轮廓点,则对中心点进行立即填补,如果含有轮廓点,那么这些轮廓信息会把窗口内的深度点分割成几个部分,需要分别对这几个部分的中心点进行填补,分别对这些部分的有效点比例进行计算,这个比例应该是每个部分的有效像素点个数和该部分总的像素点个数的比例。看这个比例是否大于给定的阈值Dth%,若小于阈值,则暂时不对该部分中心点进行填补;若大于阈值,则对这部分的中心点进行填补。
基于轮廓的自适应非对称高斯滤波(OAAG)邻域各点的权值计算表达式为:
(10)
其中:
(11)
式中,ε需要用实验确定。若被填补的点的窗口中没有轮廓,则g(Z)=1。
若被填补的点的窗口中有轮廓,则:
(12)
对权值进行归一化:
(13)
式中,W(m,n),即为最后的权值。
n为窗口内有效深度点个数。窗口每次移动一个像素,窗口遍历完所有深度点后,判断填补的效果是否达到要求,若没有,则根据对效果的需求选择需要的迭代次数,直至得到最后的深度图Dlast。
算法的流程图如图1所示。
图1 算法流程图
2实验结果和比较
在实验之前,首先对Kinect进行标定和对齐,以便获取的彩色图和深度图能够对齐。
2.1本文算法与传统滤波算法比较
目前常见的深度图去噪和空洞填补的方法有中值滤波、双边滤波、高斯滤波等。下面是分别用这些传统的去噪算法和OAAG算法对Kinect获得的深度图进行空洞填补,并进行比较。滑动窗口设为5×5。
图2为深度图对应的彩色图,图3是根据改进的Canny算法,从彩色图中获取的轮廓图。
图2 彩色图像 图3 轮廓提取
图4、图5分别是深度模版图所对应的Matlab显示的立体视图和平面视图,在图5中可以很直观地看出对应轮廓的部分出现了较大面积的空洞;对应在Matlab中,x、y轴表示该点在深度图中对应的坐标位置,单位是一个像素;z轴表示深度图中的深度值,单位是一个灰度值(深度值映射到灰度图像的一个像素值)。图像4中纯黑色部分表示空洞。不同的灰度值代表着不同的深度。
图4 深度图(Matlab) 图5 深度图原图
图6和图7分别表示中值滤波后深度图由Matlab显示的立体效果图和平面效果图,从平面图中可以看出对深度图中零星的噪声点处理的很好,但是对于空洞的填补效果比较差,并且在边缘处有明显的模糊。对空洞处理效果很差。
图6 中值滤波多次迭代效果(Matlab) 图7 中值滤波迭代多次效果
图8和图9分别表示深度图双边滤波处理后过后Matlab立体显示和平面显示的效果图。从两个效果图中可以看出图像边缘被明显的模糊,但空洞并没有很好的得到填补。
图8 双边滤波效果(Matlab) 图9 双边滤波效果
图10和图11分别表示深度图高斯滤波多次迭代过后由Matlab立体显示和平面显示的效果图。传统高斯滤波对图像边缘的模糊过于严重,多次迭代过后边缘基本模糊不清。
图10 高斯滤波多次迭代效果(Matlab) 图11 高斯滤波迭代多次效果
图12和图13分别是OAAG对空洞填补完成后,由Matlab显示的立体显示和平面显示图。在图12中,在相应的轮廓边上的颜色分别和轮廓两边的颜色相同,也就是轮廓两边的深度值分别和邻近的深度值相近。可以得出该算法对空洞填补的深度值和实际值相近,很好地对空洞进行了填补。图13中显示出的轮廓和图3中的轮廓一致,并且空洞填补的效果很好。
图12 深度图OAAG多次迭代效果(Matlab) 图13 深度图OAAG多次迭代效果
从上述实验中可以看出,本文提出的OAAG算法能够很好地解决传统滤波算法对深度图空洞填补的缺点,在有效填补空洞的同时能够很好地解决边缘模糊问题。填补后的深度值也较为精确。
2.2深度图处理前后的彩色纹理贴合效果比较
最后,我们将处理前后的深度图分别与RGB图像融合,按照对应坐标,把彩色纹理贴合到深度图中,最后通过点云库(PCL)显示出来。
从图14和图15可以看出,填补后的深度图贴合纹理信息后效果很好,可以使得三维重建的效果反映更真实的场景信息。
图14 Kinect获得原始深度图 图15 处理后深度图的融合效图的融合效果图
3结语
本文提出的基于轮廓的自适应非对称高斯滤波方法,通过彩色图中精确的轮廓信息来保存深度图中轮廓信息,保证在提高深度值填补准确性的同时,边缘在去噪过程中不会被模糊。文中提出的OAAG算法经过与传统算法的实验比较,明显提高了填补效果,并且填补的信息的准确性也要优于传统算法。通过该方法填补的深度图用于三维场景重建,可以更好地应用于
增强现实系统中,增加沉浸感的同时,也为三维注册、虚实融合、虚实交互等提供便利。
参考文献
[1] 陈一民,李启明,马德宜,等.增强虚拟现实技术研究及其应用[J].上海大学学报:自然科学版,2011,17(4):412-428.
[2] Smith S M,Brady J M.SUSAN a new approach to low level image processing[J].International Journal of Computer Vision,1997,23(1):45-78.
[3] Tomasi C,Manduchi R.Bilateral filtering for gray and color images[C]//Computer Vision,1998.Sixth International Conference on.IEEE,1998:839-846.
[4] 靳明,宋建中.一种自适应的图像双边滤波方法[J].光电工程,2004(7):65-68.
[5] 杜小燕,姜晓峰,郝传刚,等.点云模型的双边滤波去噪算法[J].计算机应用与软件,2010,27(7):245-246,264.
[6] Chang S G,Bin Y M Vetterli.Adaptive wavelet thresholding for image denoising and compression[J].IEEE Transactions on Image Processing,2000,9(9):1532-1546.
[7] Chang S G,Bin Y,Vetterli M.Spatially adaptive wavelet thresholding with context modeling for image denoising[C]//International Conference on Image Processing (ICIP 98),1998:535-539.
[8] Moulin P,Juan L.Analysis of multiresolution image denoising schemes using generalized Gaussian and complexity priors[J].IEEE Transactions on Information Theory,1999,45(3):909-919.
[9] Camplani M,Salgadol.Efficient spatio-temporal hole filling strategy for kinect depth maps[C]//Proceedings of SPIE,2012:8920.
[10] 张玲艳,闰丽,王大凯.图像梯度分类的概率模型及在边缘检测中的应用[J].Computer Engineering and Applications,2010,46(18):180-182.
[11] Kanopoulos N,Vasanthavada N,Baker R L.Design of an image edge detection filter using the Sobel operator[J].Solid-State Circuits,IEEE Journal of,1988,23(2):358-367.
KINECT DEPTH IMAGE HOLE FILLING BASED ON CONTOUR
Cao XuanpengChen Yiming*
(SchoolofComputerEngineeringandScience,ShanghaiUniversity,Shanghai200444,China)
AbstractFor the noise characteristics of depth map obtained by Kinect and the problems of existing denoising algorithm, we presented a contour-based adaptive asymmetric Gaussian filtering methods (OAAG). This method, aiming at the characteristic of Kinect that it can obtain the depth image and colour image simultaneously, uses colour image to find objects’ contour in the scene. When filling the depth, it selects the appropriate points with contour. Since the selected points are asymmetric, so it needs to change the symmetry of Gaussian filtering. Moreover, it changes the scale of Gaussian filtering to make it vary along with the changes of depth value of the area to be filled, this enables the Gaussian filtering to be adaptive. It is demonstrated through experimental comparison that the method can accurately fill the hole of depth image, and meanwhile it can well protect the edge information of image as well.
KeywordsDepth mapHoleContourAdaptiveAsymmetric
收稿日期:2015-01-12。国家科技支撑计划课题(2006BAK13B10);上海市科委基金项目(12510708400);上海市国际合作基金项目(0951 0700900)。操宣鹏,硕士生,主研领域:图像处理,增强现实。陈一民,教授。
中图分类号TP391.41
文献标识码A
DOI:10.3969/j.issn.1000-386x.2016.05.047