首页> 中国专利> 一种利用视频序列帧间相关性的深度图像计算方法

一种利用视频序列帧间相关性的深度图像计算方法

摘要

本发明公开一种利用视频序列帧间相关性的深度图像计算方法,包括:步骤1、对左右视点相机拍摄的图片进行校正;步骤2、对于第一帧的左右图片的点p,在最大视差搜索范围计算匹配代价,进行视差优化、视差细化,得到初始视差值d1;第一帧的视差梯度为g1;步骤3、对于下一帧的p点的计算,当p点不是异常点或边缘点,以上一帧p点的视差值为基准设定视差搜索范围,否则以最大视差搜索范围计算匹配代价,进行视差优化、视差细化,并得到当前帧的视差值及视差梯度,实现实时的立体匹配。本发明利用视频序列中上一帧的视差,大幅缩小了当前帧算法的计算量,能够在保证原有算法匹配精度的条件下,减小耗时,提高在实际应用场景中的效率。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-09-20

    授权

    授权

  • 2017-08-08

    实质审查的生效 IPC(主分类):G06T7/55 申请日:20170322

    实质审查的生效

  • 2017-07-14

    公开

    公开

说明书

技术领域

本发明涉及计算机立体视觉领域,更具体的,涉及一种利用视频序列帧间相关性的深度图像计算方法。

背景技术

立体视觉是近年来计算机视觉领域中最广泛的研究课题之一。它是从同一场景不同视点拍摄的图片中获得场景深度信息的技术。获得从不同视点的两个相机拍摄的图片,针对这两幅图片计算场景中的点在两幅图片上的对应点的水平位移,这个过程就被称为双目立体匹配,水平位移就被称为视差。立体视觉在许多领域中被广泛使用,例如障碍物检测,驾驶辅助,三维重建和运动检测等。

随着消费电子的发展,立体视觉应用的场景越来越广泛。如图1所示,一般来说,大多数立体匹配算法可以概括为四个步骤:

(1)匹配代价计算

(2)代价聚合

(3)视差优化/计算

(4)视差细化(后处理)

而具体步骤的实施细节取决于算法本身。根据步骤1、2、3的不同,大多数算法分为两种主要类型,局部算法和全局算法。局部算法主要基于窗口进行代价聚合(步骤2),对于一个给定的点,视差优化(步骤3)中计算得到的能量值仅仅取决于一个限定窗口内的所有点的像素值。局部算法通常能很清晰地分成步骤1、2、3。例如,传统的平方差求和算法(sum-of-squared-differences),它的计算步骤如下:

(1)匹配代价是在给定某个视差下,计算左边视点的图和右边视点的图中对应的两个点的平方差。

(2)代价聚合就是对限定窗口内所有点的匹配代价求和。

(3)视差优化则是对每个点挑选出聚合代价最小的视差值。

除此之外,经典的局部算法还有绝对值求和算法(sum-of-absolute-differences):匹配代价是计算对应点的绝对值;自适应权重算法(adaptive-support-window):即在代价聚合过程中根据窗口内的点与中心点的颜色、距离赋予不同权重,再将其代价相加;归一化互相关算法(Normalized Cross Correlation):计算图像间的互相关值。Census变换:将窗口内像素灰度大小的相对值转化成比特数,然后比较左右对应点的比特数的汉明距离。

局部算法具有高速度和低能耗,但是局部算法得到的匹配精度有限,较难满足复杂场景的需求。与局部算法相比,全局算法有更好的匹配精度。全局算法对于平滑项作出了假设,并将立体匹配问题变成了一个能量优化问题。大部分全局算法跳过了代价聚合(步骤2),考虑匹配代价和平滑项,针对全局的点提出了能量函数,然后最小化能量函数,获得视差。而对能量函数最小化的优化算法主要有图割(graph cuts),置信度传播(BeliefPropagation)等。但是相比于局部算法,全局算法的计算量更大,能耗更高。

在实际应用中,特别是对于移动设备而言,如何平衡立体匹配算法的速度和精度就是研究重点之一,也就是如何在有限的资源内实现的精度较高的实时匹配算法。在众多算法之中,半全局匹配(Semi-Global Match)就是在平衡了匹配精度和运算时间后表现较好的一种算法,得到了广泛的使用。半全局匹配算法提出了一个全局的能量函数,与全局算法对全局的点进行优化不同,它将每个点的能量函数分为8or 16个方向的路径,只需要对每条路径求值,然后将所有路径的值相加就是该点的能量,而对于单一路径的求值可以采用动态规划求解。随着硬件的发展,越来越多的硬件平台(GPU、FPGA等)被利用来实现立体匹配,特别是半全局匹配,以达到实时运行的目的。然而,目前的算法大多只针对静态的单帧图像进行处理,并不考虑视频序列下的立体匹配。目前并没有相关的工作研究,而实现精确的实时立体匹配对于移动平台来说代价仍然昂贵。

发明内容

针对上述现有技术中的问题,本发明公开了一种利用视频序列帧间相关性的深度图像计算方法,减少立体匹配的计算时量,整体或部分地解决一个或多个上述问题或缺点。

本发明是通过如下技术方案实现的,本发明包括以下步骤:

步骤1、左右视点相机对同一场景进行拍摄,对拍摄的图片进行校正,获得校正后的左右不同视点的相同尺寸视频序列帧。

步骤2、对于第一帧的左右图片的点p,在最大视差搜索范围内计算匹配代价,根据p点的视差搜索范围及代价值进行视差优化,根据p点的视差搜索范围及视差优化中得到的p点的能量值进行视差细化;得到初始视差值d1;第一帧的视差梯度为g1。

步骤3、进行下一帧的计算,对于p点:当p点不是异常点或边缘点,以上一帧p点的视差值为基准设定视差搜索范围,计算匹配代价;否则,以最大视差搜索范围计算匹配代价;根据p点的视差搜索范围及代价值进行视差优化,根据p点的视差搜索范围及视差优化中得到的p点的能量值进行视差细化;得到当前帧的视差值及视差梯度;

步骤4、得到视频序列深度图像,实现实时的立体匹配。

进一步的,保留计算过程中的各个点的能量值,并且记录该点的搜索范围为后续步骤视差优化和视差细化做准备。

步骤2进一步包括如下技术特征:令视差搜索范围为(0,D),其中D为视差搜索最大值;对于第一帧的左右图片,采取半全局匹配算法计算初始视差值,并保留计算过程中的各个点的能量值Energy[0]~Energy[D-1];其中采用census变换计算匹配代价cost[0]~cost[D-1],对于能量函数在8个方向上进行累计优化,针对优化得到的原始视差图进行视差细化。

进一步的,视差细化(后处理)过程包括:亚像素求精,奇异值检测,合理化视差等手段。

步骤3进一步包括如下技术特征:进行下一帧第i+1帧的计算,当计算点p的代价值时,查找到上一帧第i帧p点的视差值di,第i+1帧的点p的视差搜索范围以di为基准,从(0,D)缩减到(di-range,di+range),range为设定的搜索范围。

设定阈值t1,t2,求取上一帧第i帧视差的梯度图Gi,分别判断两个条件:

(1)代价计算过程中,在(di-range,di+range)内计算的代价值最小值min(cost)>t1;

(2)点p在Gi中的梯度gi>t2;

满足条件(1)的点为异常点,满足条件(2)的点为边缘点,只要满足其中之一,则扩大当前的搜索范围为(0,D),返回继续计算未计算的代价值,并且记录该点的搜索范围为后续步骤视差优化和视差细化做准备。

进一步的,当进行第i+1帧的计算时,对于视差搜索范围之内的点,计算对应于该点范围内的能量值;对于视差搜索范围之外的点,直接继承第i帧该点该范围外的能量值。

进一步的,在视差细化过程中,只对步骤3中确定的视差搜索范围进行视差的细化,确定最优视差;在点p视差搜索范围内寻找令能量函数最小的视差值,该视差即为点p的视差。

本发明具有以下有益效果:1、实时应用中,由上一帧图像所得到的视差保留至当前帧。通过检索上一帧视差的信息,缩小当前帧视差的搜索范围,具体表现在匹配代价计算,视差优化以及细化方面。该算法在保证原有算法匹配精度的条件下,提高了整个算法在实际应用场景中的效率。2、对误差增大的边缘点、异常点,对应的扩大视差搜索范围,减少可能引起的误差。3、本发明的计算方法中保留计算过程中的各个点的能量值、各个点的视差搜索范围为后续步骤视差优化和视差细化做准备,利用视频序列帧间相关性减少了大量的计算量。因此本发明的整个过程能大幅减少立体匹配的计算时间,同时保障了算法的精度,在实时平台上具有极大应用前景。

附图说明

图1为基于单帧图像的深度图像匹配的结构。

图2是本发明实施例的深度图像计算方法的结构。

图3是本发明实施例的起始帧的算法流程。

图4是本发明实施例的后续帧的算法流程。

具体实施方式

为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明。

当实时地实现立体匹配时,获得的都是一系列连续的图像帧,而帧与帧之间有许多的相关性,这些相关性能够被用来减少整个算法的计算量。如图2所示,本实施例的处理步骤包括:

1、左右视点的相机对同一场景进行拍摄,对于拍摄的图片进行校正,获得校正后的左右不同视点的相同尺寸图片。

2、不妨令视差搜索范围为(0,D),其中D为视差搜索最大值。对于第一帧的左右图片,采取未改进的半全局匹配算法计算初始视差值,并保留计算过程中的各个点的能量值Energy[0]~Energy[D-1]。其中采用census变换计算匹配代价cost[0]~cost[D-1],对于能量函数在8个方向上进行累计优化,利用能量函数优化得到能量值Energy[0]~Energy[D-1],针对优化得到的原始视差图进行视差细化。视差细化(后处理)过程主要包括:亚像素求精,奇异值检测,合理化视差等手段。对于改进的算法,视差细化过程不变。详情请看图3。

3、进行下一帧的计算,当计算点p的代价值时,查找到上一帧p点的视差值d1,那么当前帧的点p的视差搜索范围则以d1位基准,从(0,D)缩减到(d1-range,d1+range),range为设定的视差搜索范围,一般取2~3即可。图片尺寸越大,range的值越大。匹配代价计算(此处即为census变换)计算获得了(d1-range,d1+range)范围内的代价值cost[d1-range]~cost[d1+range]。

4、缩小匹配范围减少了匹配的时间,但对于边缘处的视差值,误差会增大。主要在于:

(1)、算法本身有误差,上一帧的视差本身有误差,而当前帧的视差搜索范围是基于上一帧的视差值为基准搜索的,那么部分视差会以上一帧误差点为基准进行搜索,导致结果与真实情况不符。而当前帧的计算也会产生新的误差。

(2)、对于物体的边缘,边缘两边的视差值相差较大。那么对于上一帧位置在p点的边缘点而言,在当前帧边缘点移动至p+n处,而当前帧的点p仍然以上一帧边缘点点p的视差为基准搜索视差值,就会造成误差。

针对误差,设定阈值t1,t2,求取上一帧视差的梯度图G,分别判断两个条件

(1)代价计算过程中,在(d1-range,d1+range)内计算的代价值最小值min(cost)>t1。

(2)点p在G中的梯度g1>t2。

满足条件(1)的认为该点为异常点,满足条件(2)的认为该点为边缘点,只要满足其中之一,则扩大当前的搜索范围为(0,D),返回继续计算未计算的代价值。

若p点满足(1)或(2),根据已扩大的视差搜索范围(0,D)计算未曾计算的代价值cost[0]~cost[d1-range]&cost[d1+range]~cost[D-1],由此得到p点在视差搜索范围(0,D)的代价值cost[0]~cost[D-1],并且更新该点的视差搜索范围为后续步骤视差优化和视差细化做准备。如果不满足判定条件(1)和(2),就认为合格,直接进入下一步骤,视差优化。

5、代价计算过后就是视差优化。如果点p的搜索范围为(d1-range,d1+range),则计算并更新能量值Energy[d1-range-1]~Energy[d1+range-1],如果点p的搜索范围为(0,D),计算并更新能量值Energy[0]~Energy[D-1]。未在范围内的值保持不变。然后在点p搜索范围内寻找令能量函数最小的视差值,该视差即为点p的视差。详情看图4。

6、在视差细化后处理过程中,只对前述步骤确定的搜索范围进行视差的细化,确定最优视差。

为了说明整个运行时间的改善。假设共有N个点,视差搜索范围为(0,D),则在代价累计、视差优化、视差细化方面原算法共需要3DN次相关运算,而优化后的算法,不考虑计算量很小的梯度计算的话,假设需要保留搜索范围D的比例为n,缩小后的范围为2range+1,不考虑计算过程中的判断,则需要3*(2range+1)*(1-n)*N+3*n*N*D次相关运算。对于640*480,D=64,range=2,n=0.1的情况,则后者的计算量占前者的44%,考虑到梯度计算,计算量在50%左右。

所以整个过程能大幅减少立体匹配的计算时间,同时保障了算法的精度,在实时平台上具有极大应用前景。

以上的实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。本发明未涉及的技术均可通过现有的技术加以实现。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号