基于Kinect相机的深度图像空洞修复及超像素分割算法*

2020-06-02 00:19刘国华段建春
计算机工程与科学 2020年5期
关键词:彩色图像空洞边缘

刘国华,段建春

(1.天津工业大学机械工程学院,天津300387;2.天津市现代机电装备技术重点实验室,天津300387)

1 引言

随着微软推出了消费级深度相机Kinect,深度图像的采集变得更加方便,在三维场景重建[1]、目标识别[2]和语义分割[3]等任务中融合深度信息和颜色信息RGB-D(RGB-Depth)成为了新的趋势。Kinect相机能够获取同一位置的彩色和深度图像,深度图像也叫距离图像,其中每个点像素的灰度值表示物体表面与相机的实际距离。但是,由于物体材质、镜面反射或区域遮挡等原因,Kinect相机在采集深度信息时容易在物体的边缘或内部丢失部分信息,即产生空洞(深度图像中空洞表现为像素值为零的区域)[4],深度图像中的空洞会给后期的图像处理带来很多困难。

针对上述问题,近年来许多研究人员开展了深度图像空洞修复方面的研究。通过滤波的方法修复空洞是简单且应用广泛的方式,但是滤波算法会模糊图像且对于较大的空洞修复效果不佳。比如Elguebaly等[5]提出了一种通过高斯滤波修复空洞的方法,实验结果表明,该方法针对小空洞或噪声具有较好的修复效果,但对于大面积空洞无效;王殿伟等[6]采用一种形态学优化空洞的方法修复深度图像空洞,该方法对较大空洞的修复效果较差;张志伟等[7]提出利用非负稀疏字典学习的方法修复空洞,取得了较好的结果,但该方法复杂度高,操控性较差,不适合推广。目前,通过彩色图像的边缘、纹理、颜色等特征辅助修复深度图像空洞是该领域的主要研究方向。Miao等[8]提出一种结合彩色图像边缘特征的空洞修复方法,但所采用的Canny算子在提取边缘特征时受图像纹理影响较大,且参数较为复杂,实验效果不佳;胡天佑等[9]提出一种先对图像超像素分割再修复空洞的方法,由于原始深度图像超像素分割的精度较低,所以修复效果较差;Lu等[10]通过将RGB-D稀疏值合成矩阵在低秩子空间约束中实现去噪和缺失深度值修复,算法复杂度较高;Qi等[11]提出一种结合深度图像结构信息和颜色信息的空洞修复方法,但彩色信息的融合方式较为简单,并不是较好的修复方式。

超像素分割是将图像过分割成一系列子区域,其中每个子区域表示一个超像素,使得每个超像素内部像素之间具有相似的颜色、纹理等特征。超像素分割在降低图像复杂度,提高图像处理速度等方面具有较强优势[12]。常见的超像素分割算法有线性谱聚类LSC(Linear Spectral Clustering)[13]、简单线性迭代聚类SLIC(Simple Linear Iterative Clustering)[14]、Normalized Cuts[15]、TurboPixels[16]等,其中LSC算法具有速度快、精度高等优势,应用较为广泛。LSC算法核心是核函数的设计,通过核函数将低维度的颜色特征信息映射到高维空间,最后通过K-means聚类算法实现超像素分割,但是这种基于颜色信息的分割算法在分割颜色相近的相邻目标时效果较差。

对于上述各空洞修复方法存在的问题,本文提出了一种结合彩色图像局部边缘信息的深度图像空洞修复算法。空洞修复完成后,本文融合深度和颜色信息重新建立了LSC算法核函数,并基于该核函数提出了一种融合深度信息的线性谱聚类超像素分割算法LSC-D(Linear Spectral Clustering-Depth)。

2 结合彩色图像边缘特征的深度图像空洞修复

将原始深度图像中尺寸小于5×5像素的空洞称为较小空洞,尺寸大于5×5像素的空洞称为较大空洞。本文提出的结合彩色图像局部边缘信息的深度图像空洞修复方法,首先通过双边滤波算法修复深度图像中较小的空洞,然后提取较大空洞区域对应彩色图像的边缘特征,并根据有无边缘特征将空洞进行分类修复。图1为本文深度图像空洞修复算法的流程图。

Figure 1 Flow chart of deep image hole repair algorithm in this paper图1 本文深度图像空洞修复算法流程图

图2a为通过Kinect相机获取的RGB图像,图2b为与RGB图像对应的深度图像,其中,黑色区域为空洞,可以看出在物体的边界位置更易产生空洞。使用普通的滤波方法修复空洞往往会造成边界信息的丢失,本文结合颜色信息将空洞分类修复,可以在修复空洞的同时最大程度保留真实的边界信息。

Figure 2 Color and depth images acquired by Kinect cameras图2 Kinect相机采集的彩色图像和深度图像

2.1 双边滤波

双边滤波[17]算法是一种非线性滤波算法,该算法既能较好地平滑噪声,又能够较好地保留图像的原始边缘特征。根据双边滤波的拟合机制,在图像中像素值变化明显的区域以保留边缘信息为主,在像素值变化较小的区域以消除噪声为主。基于双边滤波算法的平滑保边优势,本文采用该算法修复较小的空洞。

(1)

(2)

其中,Ωp表示以p像素点为中心的窗口,q=(u,v)表示像素p邻域内的像素点,Wp为归一化因子。Gr为衡量颜色相似性的核函数,Gs是用于测量p与邻域像素q空间相似性的核函数,Gr与Gs定义如下:

(3)

(4)

其中,σr和σs分别表示高斯函数的灰度标准差和距离标准差,其分别代表各自核函数的作用范围。

2.2 空洞的分类与修复

根据Kinect相机的成像原理,深度信息采集的过程中,在相邻物体遮挡区域或镜面反射区域容易造成深度信息丢失,这些区域在深度图像中表现为空洞[18]。其中,深度图像中的大部分空洞是由相邻物体遮挡造成的,由物体遮挡造成的空洞都位于物体的边缘位置,空洞所在区域丢失了真实的物体边缘信息。深度图像中少部分的空洞是由于场景中存在反光材质的物体造成的,比如显示器、镜子等,这种由镜面反射造成的空洞多发生在物体的内部,空洞所在区域的深度信息往往是连续的。仅在深度图像中难以区分空洞位于物体内部还是位于物体边缘处,本文通过结合颜色图像和深度图像对空洞进行分类,以期对不同原因造成的空洞进行分类修复。同时,深度图像中的背景与前景中的空洞产生原理相同,本文在空洞修复过程中不对背景与前景进行区分,而是将背景看做物体一同修复。

对于双边滤波后的深度图像提取像素值为0的区域(即空洞),通过连通性分析对各空洞区域进行标记,标记好的空洞区域用半径为4的圆形结构元素膨胀。如图3a所示,Ω为空洞区域,Φ为膨胀区域。提取Φ区域的外轮廓,根据提取到的轮廓分割出彩色图像的对应区域,对得到的每个彩色图像区域使用SE(Structured Edge)[19]算法提取边缘特征,并根据每个彩色图像区域有无边缘特征将空洞分为2类,第1类是位于物体内部的空洞,即没有边缘特征,第2类是在物体边缘处的空洞,即有边缘特征。

Figure 3 Schematic diagram of the hole filling algorithm图3 空洞填充算法示意图

第1类空洞存在于物体内部,所以深度值往往是连续的。为了提高空洞修复效率,本文采用均值填充的方法处理第1类空洞,即计算该空洞膨胀区域Φ内像素灰度值的均值,并以此修复该空洞区域。提取该空洞膨胀区域Φ的有效像素并通过式(5)计算像素均值,将得到的均值填充到该空洞区域Ω,该填充方法对于修复第1类空洞简单有效。

(5)

其中,m为膨胀区域Φ中所有的有效像素点数,xi为像素灰度值。

第2类空洞内包含边界信息,所以往往深度值是非连续的。该类空洞在修复过程中很难找出准确的边界,修复困难较大。本文首先通过彩色图像局部边缘分割空洞,再对分割后的子空洞分别由外而内逐点修复。如图3b所示,δΩ是空洞的外轮廓,edge为在局部彩色图像中提取到的边缘,本文算法根据边缘edge将空洞Ω分割为2个子空洞,分别为Ω1和Ω2,同理将膨胀区域Φ分割为Φ1和Φ2。以子空洞Ω1的修复为例,先修复Ω1外轮廓空洞,然后再逐步修复内部区域,直至所有区域内空洞都修复完成。对于Ω1外轮廓上任一点p,提取其邻域ε,并令ε(p)表示ε内有效像素点的集合,将p点修复后的灰度值用I(p)表示并在式(6)中定义:

(6)

(7)

w(p,q)=dir(p,q)×dst(p,q)

(8)

其中,dst(p,q)和dir(p,q)分别表示距离权值和法向权值,其定义如式(9)和式(10)所示:

(9)

(10)

其中,N(p)表示像素梯度。

图4为图2中标记区域的修复过程,根据彩色图像中的边界信息可以得知该空洞属于第2类空洞,膨胀空洞区域并提取彩色图像对应区域的边缘特征,将空洞利用提取到的边缘分割为2部分分别修复。空洞修复完成后,深度图像具有较高的深度准确性和边界准确性。

Figure 4 Hole repair combined with color information图4 结合颜色信息的空洞修复

3 融合深度信息的线性谱聚类超像素分割

现有的超像素分割方法在分割颜色相近的相邻目标时准确度较差,而深度图像表示物体间的空间信息,这就为超像素分割提供了新的思路。本文提出了一种融合深度信息的线性谱聚类超像素分割算法(LSC-D),首先将空洞修复后的深度图像通过相机坐标变换矩阵转换到像素点的三维空间坐标,然后融合像素三维空间坐标和颜色信息重新建立LSC算法的核函数,最后通过核函数将数据点映射到16维特征空间并通过加权K-means聚类完成分割。图5为本文提出的超像素分割算法的流程图。

Figure 5 Flow chart of LSC-D superpixel segmentation algorithm 图5 LSC-D超像素分割算法流程图

3.1 像素三维空间坐标

深度图像中每个点的灰度值表示相机与目标之间的距离,是单维度信息,直接使用深度图像的灰度值会丢失2个维度的信息,所以要将深度图像通过相机坐标变换矩阵转化为三维空间信息。用(x,y)表示像素的位置,d表示该像素点对应的深度信息,则空间坐标(X,Y,Z)由以下公式获得:

(11)

其中,fx和fy分别表示相机在x轴和y轴方向的焦距,γ是这2个坐标轴之间的斜率,(x0,y0)表示相机的基准点位置坐标。

3.2 融合深度信息的线性谱聚类核函数

核函数是LSC算法的核心。LSC算法将图像像素p的特征表示为p=(lp,αp,βp,xp,yp),其中,(l,α,β)表示CIELAB颜色空间下的颜色特征,(x,y)为图像像素坐标,本文在此基础上增加了像素空间坐标(Xp,Yp,Zp) 3维特征信息,构建了(lp,αp,βp,xp,yp,Xp,Yp,Zp)8维特征矩阵,从而,融合深度信息的线性谱聚类核函数φ(p),如式(12)所示:

(12)

(13)

(14)

其中,p和q表示像素点,V表示图像像素集合,Cc、Cs和Cd分别为控制颜色、位置、空间坐标信息的权重,Cs=r×Cc,r=0.075。

将8维特征矩阵(lp,αp,βp,xp,yp,Xp,Yp,Zp)通过上述核函数φ(p)映射到16维特征空间,最后通过加权K-means对高维空间数据进行聚类,从而完成融合深度信息的超像素分割。

3.3 融合深度信息的线性谱聚类超像素分割算法(LSC-D)

本文提出的融合深度信息的线性谱聚类超像素分割算法(LSC-D)对于复杂图像的超像素分割具有一定的优势。LSC-D超像素分割算法流程如下:

输入:预处理后的RGB-D数据,超像素数K,平衡系数δ,迭代次数L。

输出:超像素分割结果。

步骤1将p=(lp,αp,βp,xp,yp,Xp,Yp,Zp)通过核函数φ(p)映射到高维特征空间。

步骤3初始化聚类中心mk为各区域内的像素特征均值,k=1,2,…,K,设置L(p)=0,d(p)=∞。

步骤4for(每个超像素聚类中心mk)

for(聚类中心邻域2S×2S内的每个像素p)

计算16维特征空间中φ(p)和mk之间的欧氏距离D

ifD

d(p)=D;L(p)=k;

end if

end for

end for

步骤5更新聚类中心mk。

步骤6直到mk收敛或迭代至L次。

步骤7将过小的区域合并到其邻域,分割完成。

4 实验结果及分析

本文实验采用Middle-bury图像库[20]提供的标准RGB-D图像作为实验数据进行验证。本文实验由2部分组成,一是对本文提出深度图像空洞修复算法实验验证,二是验证本文提出的LSC-D超像素分割算法的有效性。

4.1 深度图像空洞修复实验

为了验证本文结合彩色图像局部边缘特征的深度图像空洞修复算法的可靠性,选取3组RGB-D图像作为实验数据,并将本文算法与联合双边滤波JBF(Joint Bilateral Filter)算法[21]、快速行进算法FMM(Fast Marching Method)[22]的结果进行对比。其中,双边滤波窗口尺寸为5×5,σr为25,σs为200,图6是3种算法的深度图像空洞修复结果。

在图6中可以看出,本文算法修复后的深度图像不仅具有良好的边界性,同时也较准确地修复了空洞区域。从图6c中可以看出,JBF虽然准确修复了较小空洞,但是多数大空洞未得到有效填充。图6d中FMM修复后的深度图像边界缺失较为严重,比如Bowling图像中右侧区域修复误差较大。

Figure 6 Depth image hole repair results of the three algorithms图6 3种算法的深度图像空洞修复结果

为了量化评估各算法的空洞修复效果,计算了3种方法实验结果的峰值信噪比PSNR(Peak Signal to Noise Ratio)、均方根误差RMSE(Root Mean Square Error)和结构相似性SSIM(Structural Similarity Index),量化评估结果如表1所示。与JBF和FMM相比,本文算法空洞修复结果的平均PSNR和SSIM至少分别提高了3.601 6和0.022 5,RMSE至少降低了3.933 6,提高了深度信息的准确度。

Table 1 PSNR,RMSE,and SSIM values for the three repair algorithms

4.2 超像素分割实验

为了评估本文LSC-D超像素分割算法的效果,实验对比了3种基于颜色特征的超像素分割算法,它们分别是LSC[13]、SLIC[14]]和Turbopixel[16]算法。在实验过程中设置Art和Bowling图像的初始超像素个数为500,由于Moebius图像更复杂,所以设置初始超像素个数为700。设定SLIC的紧凑度因子为10,本文提出的LSC-D方法中的迭代次数设置为20,图7为各算法的超像素分割结果。

从图7中可以直观地看到,3种对比算法在低对比度区域分割效果较差,比如,Art图像右上角重叠的环形物体区域、Bowing图像右侧保龄球与背景重叠区域等。此外,从图7a中可见,SLIC算法分割得到的超像素规则性较差。而本文LSC-D算法由于融合了深度信息,分割结果不仅具有较高的准确度,并且得到的超像素具有较好的规则性。

除了图7中的主观结果外,实验还使用文献[23]中的超像素分割结果评测方法计算了各方法分割结果的边界召回率和欠分割错误率。

Figure 7 Superpixel segmentation results of the four algorithms图7 4种算法的超像素分割结果

边界召回率BR(Boundary Recall)用于衡量超像素分割与真实的分割结果边界之间的重合度,该参数的取值为[0,1],边界召回率数值越大,说明超像素分割越准确,其计算数学表达式如下所示:

(15)

其中,G表示真实分割边界的像素集合,H表示超像素分割结果中的边界像素集合,R用于判断最近邻的像素点与γ的距离是否超出设定范围内(且一般γ=2)。

欠分割错误率UE(Under-segmentation Error)描述的是图像在超像素分割后,未得到准确分割结果的边界像素占真实图像分割边界像素的比例,其数值越小,表示分割的精度越高。将真实边界像素集合表示为G=g1,g2,…,gk),超像素分割结果中的边界像素集合为H=(h1,h2,…,hL),欠分割错误率在式(16)中定义:

(16)

Figure 8 BRs and UEs for superpixel segmentation图8 超像素分割的边界召回率和欠分割错误率

实验分别设置100,300,500,700和900个初始超像素为实验节点,对4种算法进行测试对比。图8为4种超像素分割算法的边界召回率和欠分割错误率。从图8中可以看出,本文超像素分割算法通过融合颜色和深度信息,提高了对物体边缘尤其是颜色相近的物体边缘的识别能力,使得分割结果比对比算法有更高的边界召回率和更低的欠分割错误率。

5 结束语

针对Kinect相机获取的原始深度图像存在空洞的问题,本文提出一种结合彩色图像局部边缘信息的深度图像空洞修复算法。首先使用双边滤波修复较小空洞,根据有无彩色图像的局部边缘信息将较大空洞分为2类,对于第1类空洞进行均值填充修复,对第2类空洞先根据彩色图像局部边缘分割空洞再分别由外而内逐步修复,从而完成所有的空洞修复。本文融合空间坐标和颜色信息重新建立了线性谱聚类核函数,并基于此提出了一种融合深度信息的线性谱聚类超像素分割算法(LSC-D)。实验结果表明,本文空洞修复算法与对比算法比较,PSNR和SSIM值至少分别提高了3.601 6和0.022 5,RMSE值至少降低了3.933 6。本文提出的LSC-D超像素分割算法比其他算法有更高的分割精确度和更低的欠分割错误率。

猜你喜欢
彩色图像空洞边缘
锻造过程中大截面塑料模具钢中空洞缺陷的闭合行为
如何避免想象作文空洞无“精神”
基于FPGA的实时彩色图像边缘检测
基于专家模糊技术的彩色图像对比度增强方法
基于视觉注意的全参考彩色图像质量评价方法
基于最大加权投影求解的彩色图像灰度化对比度保留算法
一张图看懂边缘计算
空洞的眼神
班有活宝
在边缘寻找自我