一种深度图的计算方法与流程

文档序号:20785679发布日期:2020-05-19 21:40阅读:4602来源:国知局
一种深度图的计算方法与流程

本发明涉及计算机图像处理和计算机图形学领域,特别涉及一种深度图的计算方法。



背景技术:

深度图像(depthimage)也被称为距离影像(rangeimage),是指将从图像采集器到场景中各点的距离(深度)作为像素值的图像,它直接反映了景物可见表面的几何形状。像素点的深度值可通过内外参已知的两张图像通过三角测量计算,进行三角测量之前需要计算像素间的匹配关系,如图1所示p1,p2为匹配点。空间点p到成像平面距离即为该像素点的深度值。计算图像中所有像素的匹配关系称为立体匹配。

在立体匹配中,匹配问题可以看成是寻找两组数据相关程度的过程。立体匹配算法根据算法运行时约束的作用范围:分为局部(local)匹配算法和全局(global)匹配算法。

1、全局匹配算法

全局(半全局)立体匹配算法主要是采用了全局的优化理论方法估计视差,建立一个全局能量函数,其包含一个数据项和平滑项,通过最小化全局能量函数得到最优的视差值。其中,图割(graphcuts,gc)、置信传播(beliefpropagation,bp)、动态规划(dynamicprogramming,dp),粒子群算法(particleswarmoptimization,pso)、遗传算法(geneticalgorithm,ga)等优化算法都是常用的求解能量最小化的方法。全局匹配算法一般定义如下能量函数:

其中数据项edata(d)描述了匹配程度,平滑项esmooth(d)体现了定义场景的约束,c是匹配代价,p是不同两像素p和q视差的函数,一般称之为惩罚项(penalty),当p点和q点视差不相等时,p>0,且与两者差值越大,p值越大。当p和q视差相等时,p=0。由于全局匹配算法在数学上是一个能量函数的优化问题,因此可以找到最优解。这个问题被证明在二维空间是np困难的。因此,即使全局算法具有准确性较高的优点,其计算速度确非常慢,在实时性要求高的场合不适合使用全局立体匹配算法。

2、局部匹配算法

基于区域的局部立体算法是最早开始研究,算法成熟、计算简单、速度快,能进行图像实时处理,匹配精度较高。基本原理:在参考图像中选择一个点,选择该点邻域内一个支持窗口,然后依据一定的相似性判断准则,在待匹配图像中寻找与支持窗口最相似的子窗口,该子窗口所对应的像素点即为对应的匹配点。理想的支持窗口应该完全覆盖弱纹理区域,并在窗口内深度连续。与全局立体匹配算法相似,通过优化一个代价函数的方法计算最佳视差。但是,在局部立体匹配算法的能量函数中,只有基于局部区域的约束数据项,没有平滑项。局部匹配算法仅利用某一点邻域的灰度、颜色、梯度等信息进行计算匹配代价,计算复杂度较低,大多实时的立体匹配算法都属于局部立体匹配的范畴,但局部立体匹配算法对低纹理区域、重复纹理区域、视差不连续和遮挡区域匹配效果不理想。

为了提高局部匹配算法的精度,通常在匹配之前设定一个初始深度值,根据深度值可以估计最相似子窗口的搜索范围,初始深度值越准确搜索范围越小,因此计算复杂度越小且匹配错误的概率越小。同时初始深度值可作为一个约束项,最终深度值与初始深度值相差越大匹配代价也越大,因此最终深度值趋于和初始值近似,当初始值较为准确时则最终深度值趋于准确值。



技术实现要素:

为解决上述技术问题,本发明提供了一种深度图的计算方法,以达到提供一种更精确的深度图计算方法的目的。

为达到上述目的,本发明的技术方案如下:

一种深度图的计算方法,包括以下步骤:

步骤一,图像特征点提取与匹配;

步骤二,计算图像特征点对应的空间点及图像在空间中的位姿;

步骤三,根据图像的匹配关系及在空间中的相对位置选择相邻图象作为参考图像;

步骤四,利用参考图像的深度图初始化当前图像的深度图;

步骤五,根据当前图像的深度图初始化像素个数判断其是否为关键帧,若为关键帧,则利用图像特征点的空间坐标重新初始化其深度图;

步骤六,逐像素优化得到的深度图。

上述方案中,所述步骤一中,不同图像in(n=1,2,3,…n)间利用快速最近邻搜索算法做特征匹配计算图像间的同名点,利用同名点计算基础矩阵,通过对极约束筛选匹配误差大的同名点,一组同名点对应一个三维空间点p。

上述方案中,所述步骤二的具体方法如下:

设空间点p=(x,y,z)t,in中对应特征点坐标为pn=(un,vn)t,相机内参矩阵为k,则重投影误差可表示为:

计算开始时根据经验值随机初始化p的坐标与相机位姿tn,通过集束调整迭代优化p的坐标与相机位姿tn,逐步减小重投影误差,当重投影误差小于0.8时,认为此时p的坐标与相机位姿tn为真实值。

上述方案中,所述步骤三中,选择每张图像的参考图像时,候选的相邻图像需要满足两个条件:

(1)图像同名点足够多,设当前图像特征点数量为m,候选的相邻图像特征点数量为n,同名点数量为s,则需要满足

(2)图像间夹角足够小,设当前图像的法向量为候选的相邻图像法向量为则需要满足

上述方案中,所述步骤四的具体方法如下:

设当前图像需要初始化的深度图为icur,旋转矩阵为rcur,平移向量为tcur,参考图像的深度图为ingb,旋转矩阵为rngb,平移向量为tngb;

设ingb(x,y)为tngb中一点,坐标为(x,y),深度值d,设所有图像用相同相机拍摄,相机内参矩阵为k,则ingb相机坐标系下ingb(x,y)对应的空间点:

世界坐标系下的空间点:

pw投影到icur相机坐标系下的空间点:

pc_cur=rcurpw+tcur

pc_cur投影到icur中的像素坐标为:

icur(x,y)=kpc_cur

若icur(x,y)在图像范围内,设pc_cur=(x,y,z)t,则该点的深度值初始化z。

上述方案中,所述步骤五的具体方法如下:

统计初始化的像素点个数,若小于图像像素点总数的40%,则认为该图像没有足够的相邻图像或者相邻图像的深度图尚未计算,此时认为该图像为关键帧;关键帧深度图利用图像中的特征点进行初始化,特征点深度是已知的,因此可以利用特征点构建三角网,没有初始化的点通过插值计算在三角网中的值做为初始化深度值。

上述方案中,所述步骤六的具体方法如下:将当前图像与参考图像分别做局部匹配,匹配算法采用归一化互相关算法。

通过上述技术方案,本发明提供的深度图的计算方法具有如下有益效果:

1、提高初始深度图的精度。

2、减小匹配点的搜索范围,减少迭代优化次数,提高计算速度。

3、减少错误匹配点的出现概率,提高计算精度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为图像间的特征匹配示意图;

图2为本发明公开的深度图的计算方法流程图;

图3为利用参考帧初始化深度图的方法示意图;

图4为三角网初始化深度图的方法示意图;

图5为局部匹配的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

本发明提供了一种深度图的计算方法,如图2所示,该方法计算精度高,计算速度快。

如图1所示,i1、i2表示图像,o1、o2表示图像的相机中心,p表示图像中的特征点,图中p1,p2为同名点,p表示同名点对应的三维空间点,p到图像所在平面的距离即为像素点的深度值。计算图像的深度图即计算图像中所有像素点或者大部分像素点的深度值。

如图2所示,本发明包括以下步骤:

步骤一,对于给定的图像in(n=1,2,3),提取图像中的特征点,可采用sift、surf等方法。不同图像间利用快速最近邻搜索算法(flann)做特征匹配计算图像间的同名点,为了提高匹配鲁棒性与精度,利用同名点计算基础矩阵f,通过对极约束筛选匹配误差大的同名点,一组同名点对应一个三维空间点,如图中pn(n=1,2,3)为一组同名点,对应三维空间点为p。

步骤二,计算空间点p的坐标与图像in(n=1,2,3)对应的相机位姿tn(n=1,2,3)。

设空间点p=(x,y,z)t,in中对应特征点坐标为pn=(un,vn)t,相机内参矩阵为k,则重投影误差可表示为:

计算开始时根据经验值随机初始化p的坐标与相机位姿tn,通过集束调整迭代优化p的坐标与相机位姿tn,逐步减小重投影误差,当重投影误差小于0.8时认为此时p的坐标与相机位姿tn为真实值。

步骤三,根据图像之间的匹配关系及图像在空间中的坐标与朝向,计算图像的相邻关系,每张图像选择若干张候选的相邻图像作为参考图像。

设当前图像为i3,候选图像为i1,判断i3与i1是否相邻需要验证以下两个条件:

(1)图像同名点足够多,设i3特征点数量为m,i1特征点数量为n,同名点数量为s,则需要满足

(2)图像间夹角足够小,设i3的法向量为i1法向量为则需要满足

在满足条件(1)和条件(2)的图像中,选择距离最近的若干张图像作为i3的参考图像。设i3和i1的平移向量分别为t3,t1,则图像间的距离为:

dist31=|t3-t1|

设i3与i1、i2的距离dist31、dist32为最小的两个距离,则i1、i2为i3的参考图像。

步骤四,如图3所示,设i1、i2为i3的参考图像,此时可以利用i1、i2的深度图初始化i3的深度图。

p1(x,y)为i1中的一点且深度值为d,i3中p3的坐标位置与深度值未知,此时可利用p1计算p3的坐标与深度值。

设i1的旋转矩阵为r1,平移向量为t1,所有图像的相机内参为k,则i1相机坐标系下p1(x,y)对应的空间点:

世界坐标系下的空间点:

pw投影到i3相机坐标系下的空间点:

pc3=r3pw+t3

pc3投影到i3中的像素坐标为:

p3(x,y)=kpc3

p3的深度值为pc3与i3的距离。

利用同样的方法将i1、i2中已知深度的像素点映射到i3中,初始化i3中部分像素点的深度值。

步骤五,在步骤四中利用i1、i2的深度图初始化i3的深度图时,只是初始化i3中部分像素点,当前i3中没有足够数量的像素被初始化时认为i3为关键帧,关键帧需要利用三角网初始化法重新进行初始化。当图像中初始化的像素个数小于总像素数量的40%时则认为该图像为关键帧,如图4所示,图像中存在若干稀疏的特征点p3i(i=1……6),在步骤二中特征点的深度值已经进行过计算,通过这些特征点构造三角网格,网格内部的点通过三角形线性插值获取初始深度值。

步骤六,i3中像素点的初始深度值是不精确的,为了优化深度值,i3需要与i1、i2分别做局部匹配,匹配算法采用归一化互相关算法。

如图5所示i3与i2进行匹配时,p3的匹配点在直线l上,根据p3不同的深度值其匹配点在直线l上不同的位置,如p3的深度分别为p,p‘,p‘’时p3的匹配点分别为p2,p′2,p″2。设p3初始深度为p,则只需沿直线l在p2周围搜索匹配点即可,初始深度值置信度越高需要搜索的范围越小,计算量也越小。通过参考帧初始化的深度值置信度较高,因此可以减少计算量提高计算效率。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1