一种深度图像缺失数据的插值方法
技术领域
本发明涉及图像处理方法,尤其是涉及一种针对深度图像采集过程中的缺失数据,进行估值和插补的方法。
背景技术
随着科学技术的进步,深度图像传感器在人机交互、机器人导航、物体识别、3D建模等领域得到了广泛应用。深度图像传感器主要采用了基于“light-coding”的立体视觉图像实时获取技术,可以实时获取目标区域内的RGB-D图像(即同时包含彩色RGB信息与深度信息的图像),其主要产品以微软公司的Kinect为代表,还有华硕公司的Xtion-Pro等类似产品。
“light-coding”是PrimeSense公司开发的深度测量技术。基于“light-coding”技术的深度图像传感器主要包括红外激光散斑发射装置、红外摄像头、彩色摄像头以及运算处理器等装置,其通过红外激光散斑发射装置向目标区域发射激光光斑,并利用红外摄像头抓取激光光斑图像,由于不同距离、方位的物体其反射的光斑大小和分布各不相同,由此就可实现待测空间范围内的实时深度图像获取;再结合另一彩色摄像头同步拍到的彩色图像,通过校正与匹配,从而实现RGB-D图像的实时获取。
但是,由于这类深度图像传感器主要依赖发射、反射激光散斑来测量距离,其获取的深度图像中,经常由于视差、镜面反射、物体吸光、物体过远等原因,产生大量没有深度值的空洞(即像素的深度值为0),这会给深度图像的后续处理带来很大困难。为解决这一问题,本领域技术人员研究开发了针对深度图像缺失数据的修复技术(即重新确定深度值为0的像素的深度值),如中国发明专利“深度图像后处理的方法”(申请号201110460155.X),其针对立体匹配算法产生的深度图像,可以修复深度图像中遮挡区域、低纹理区域的不可信点,从而获取精确平滑的深度图像,但其只能处理少量的数据缺失,对于较大面积的数据缺失情况不能很好地处理。又如学术论文“Kinect深度图像快速修复算法”(王奎等2012年10月发表于上海大学学报),公开了一种深度图缺失数据的修复方法,但是该方法只适用于修复因遮挡产生的数据缺失,而对于由镜面反射产生的大面积数据缺失情况难以处理。
发明内容
本发明的目的是提供一种深度图像缺失数据的插值方法,具有估算准确度高、实时运行能力强的优点。
为解决现有技术中深度图像传感器采集的深度图像存在大量数据缺失,常用图像处理方法又不能很好修复的技术问题,本发明一种深度图像缺失数据的插值方法,包括以下步骤:
一、针对深度图像中缺失数据的像素,提取包含缺失数据像素的所有深度子图像;
二、根据每个深度子图像中缺失数据的像素所占总像素的比例,将所有深度子图像划分为两类;
三、针对两类深度子图像,分别采用基于时间和空间邻域信息聚类分析的估算方法与基于局部邻域最大值的估算方法,对缺失数据进行估算;
四、针对深度图像,将其中的缺失数据相应地替代为根据第三步获得的估算值,获得修复好的深度图像;
其中所述缺失数据是指深度图像中的像素深度值为0的状态,也指像素缺失深度值。
进一步地,本发明一种深度图像缺失数据的插值方法,其中在上述步骤一中,所述提取包含缺失数据像素的所有深度子图像,按以下方式实现:
(一)以深度图像中其个缺失深度值的像素为中心,提取边长为10~20像素的正方形区域,作为一个深度子图像;
(二)以步骤(一)的方式,遍历深度图像中所有缺失深度值的像素,提取所有深度子图像;
其中,在步骤(二)的遍历过程中,如果某个缺失深度值的像素已经包含在一个深度子图像中,就不再以其作为中心来提取深度子图像。
进一步地,本发明一种深度图像缺失数据的插值方法,其中在上述步骤二中,所述将所有深度子图像划分为两类,按以下方式实现:
(一)针对某个深度子图像,统计其中包含的像素总数,记为L;并统计其中包含的缺失深度值的像素数,记为N;
(二)计算缺失深度值的像素数N和像素总数L的比值,记为V=N/L;
(三)当V﹥T时,将该深度子图像归于第一类;当V≦T时,将该深度子图像归于第二类;
其中T为预设阈值,T的取值范围为(0,1]。
进一步地,本发明一种深度图像缺失数据的插值方法,其中在上述步骤三中,按以下方式对缺失数据进行估算:
(一)当深度子图像属于第一类时,采用基于时间和空间邻域信息聚类分析的估算方法对缺失深度值的像素进行深度值估算,即:
(二)当深度子图像属于第二类时,采用基于局部邻域最大值的估算方法对缺失深度值的像素进行深度值估算,即:
在公式[1]和[2]中,表示t时刻(x,y)坐标位置的深度估算值,D(x,y,t-idt)表示t-idt时刻(x,y)坐标位置的深度值,dt表示帧间隔时间;k表示在连续的m帧中(x,y)坐标位置的有效深度值个数;α表示系数,其取值范围为[0,1],α与k/m的大小相关;D′(x,y,t)表示对(x,y)坐标位置的时间邻域和空间邻域进行聚类分析之后对(x,y,t)位置的深度值进行的估算;max{DR(x,y,t)}表示在以(x,y)坐标位置为中心的局部范围内的最大有效深度值。
进一步地,本发明一种深度图像缺失数据的插值方法,其中D′(x,y,t)按以下方式获得:
(一)针对缺失深度值的(x,y,t)位置,提取空间域Rxy和时间域Tt内所有的像素点,组成像素点集合Pxyt;其中空间域Rxy为以(x,y)为中心、边长为10个像素的正方形区域;时间域Tt为t时刻之前连续10帧的总时间;
(二)针对像素点集合Pxyt,利用彩色图像的R、G、B分量数值作为特征向量[r,g,b],以(x,y,t)位置的彩色分量值作为初始值,运用K-mean聚类算法将像素点集合Pxyt分成3~4类;
(三)根据像素点集合Pxyt的分类,确定(x,y,t)位置的所属分类,并计算所属分类中有效深度值的均值,作为D′(x,y,t);如果(x,y,t)位置所属分类中所有点的深度值均无效,则取像素点集合Pxyt的分类中具备有效深度值最多的分类,并计算该分类中有效深度值的均值作为D′(x,y,t)。
本发明一种深度图像缺失数据的插值方法与现有技术相比,具有以下优点:本发明针对深度图像采集过程中的缺失数据,提供的缺失数据的估值和插补方法,同时兼顾了时间域历史信息和空间域彩色相关信息,不但估值准确度高,而且具备较强的实时运行效率,能满足深度图像中大面积缺失数据的估值和插补要求。
下面结合附图所示实施例对本发明一种深度图像缺失数据的插值方法作进一步详细说明:
附图说明
图1为本发明一种深度图像缺失数据的插值方法的流程图;
图2为本发明一种深度图像缺失数据的插值方法中,属于A类的深度子图像缺失深度值的估算方法的流程图。
具体实施方式
首先需要说明的,本具体实施方式所处理的深度图像来源于Kinect深度图像传感器,数据包括深度图像和彩色图像:
(1)深度图像:t时刻拍摄范围内的实时深度图像以D(x,y,t)表示,图像大小为640*480,像素深度值(即深度图像中的像素值)的范围为[0-8096],表示空间中该点到摄像头平面的距离,其中深度值为0的像素表示数据缺失的像素,也就是需要本发明对该像素的深度值进行重新估算与插值的像素。
(2)彩色图像:t时刻与深度图像对应的拍摄范围内的实时彩色图像以I(x,y,t)表示,图像大小为640*480,彩色图像包括R、G、B三通道,每个通道中像素值的范围为[0-255]。
深度图像传感器在工作过程中,会同步采集、记录深度图像和彩色图像的数据,即创建内存空间,并在其中按时间顺序记录K帧的深度图像数据和彩色图像数据,作为历史数据,K可取值10~20。
深度图像的历史数据可表示为:D(x,y,t-K),D(x,y,t-K+1),…D(x,y,t)
彩色图像的历史数据可表示为:I(x,y,t-K),I(x,y,t-K+1),…I(x,y,t)
其中,t时刻的深度图像D(x,y,t),为需要对其中的缺失数据进行处理的图像,即利用本发明对其中的深度值为0的像素进行重新估算深度值并进行插补的图像。如图1所示的流程图,本发明具体实施方式的步骤如下:
步骤一,针对t时刻的深度图像中缺失数据的像素,提取包含缺失数据像素的所有深度子图像。提取深度子图像的实现方式如下。
(1)针对t时刻深度图像D(x,y,t),以某个缺失深度值的像素为中心,直接在深度图中提取边长为20像素的正方形区域,作为一个深度子图像;其中正方形的边长并非一定取值20,应根据具体要求确定,通常情况下,正方形区域的边长取值范围为10~20像素均可。
(2)以上述(1)的方式,遍历深度图像D(x,y,t)中缺失深度值的像素,并提取相应的深度子图像,一个深度子图像对应一个缺失深度值的区域;在遍历过程中,如果某个缺失深度值的像素已经包含在一个深度子图像中,就不再以其作为中心来提取深度子图像。
经过(1)和(2)两个步骤,深度图像D(x,y,t)中的缺失深度值的部分就被划分成多个深度子图像,且所有深度子图像均不重合。
步骤二,根据每个深度子图像中缺失深度值的像素所占总像素的比例,将所有深度子图像划分为两类,具体的分类方式如下:
(1)针对某个深度子图像,统计其中包含的像素总数,记为L;并统计其中包含的缺失深度值的像素数,记为N;本具体实施方式中,L=20*20=400;
(2)计算缺失深度值的像素数N和像素总数L的比值,记为V=N/L=N/400;
(3)当V﹥T时,将该深度子图像归于A类;当V≦T时,将该深度子图像归于B类。
上述(3)中,T表示预设阈值,其取值范围为(0,1],作为具体实施方式,本发明中T的取值为0.2;另外,将深度子图像的分类用字母A和B表示,只是为表述方便,只要能使两类从表述上区分开也可采用其他的表示方式,如第一类、第二类。
步骤三,针对两类深度子图像,分别采用基于时间和空间邻域信息聚类分析的估算方法与基于局部邻域最大值的估算方法,对缺失深度值的像素进行深度值估算。深度值估算的具体实现方法如下:
(1)当深度子图像属于A类时,则采用基于时间和空间邻域信息聚类分析的估算方法对缺失深度值的像素进行深度值估算,即:
(2)当深度子图像属于第B类时,则采用基于局部邻域最大值的估算方法对其中的缺失深度值的像素进行深度值估算,即:
在公式[1]和[2]中,表示t时刻(x,y)坐标位置的深度估算值,D(x,y,t-idt)表示t-idt时刻(x,y)坐标位置的深度值,dt表示帧间隔时间;k表示在连续的m帧中(x,y)坐标位置的有效深度值的个数;α表示系数,其取值范围为[0,1],α与k/m的大小相关;D′(x,y,t)表示对(x,y)坐标位置的时间邻域和空间邻域进行聚类分析之后对(x,y,t)位置的深度值进行的估算;max{DR(x,y,t)}表示在以(x,y)坐标位置为中心的局部范围内的最大有效深度值。
如图2所示的流程图,对于公式[1]中的D′(x,y,t),按以下方式获得:
(1)针对缺失深度值的(x,y,t)位置,提取空间域Rxy和时间域Tt内所有的像素点,组成像素点集合Pxyt;其中空间域Rxy为以(x,y)为中心、边长为10个像素的正方形区域;时间域Tt为t时刻之前连续10帧的总时间;
(2)针对像素点集合Pxyt,利用彩色图像的R、G、B分量数值作为特征向量[r,g,b],以(x,y,t)位置的彩色分量值作为初始值,运用K-mean聚类算法将像素点集合Pxyt分成3~4类;
(3)根据像素点集合Pxyt的分类,确定(x,y,t)位置的所属分类,并计算所属分类中有效深度值的均值,作为D′(x,y,t);如果(x,y,t)位置所属分类中所有像素的深度值均无效,则取像素点集合Pxyt分类中具备有效深度值最多的分类,并计算该分类中有效深度值的均值作为D′(x,y,t)。
步骤四,针对深度图像中所有缺失深度值的位置,采用步骤三获得到的相应估算值进行代替,从而获得修复好的深度图像。
以上实施例仅是对本发明的优选实施方式进行的描述,并非对本发明请求保护范围进行的限定,在不脱离本发明设计原理和精神的前提下,本领域工程技术人员依据本发明的技术方案做出的各种形式的变形,均应落入本发明权利要求书所确定的保护范围内。