一种低资源消耗的立体匹配硬件架构的制作方法

文档序号:17640122发布日期:2019-05-11 00:36阅读:204来源:国知局
一种低资源消耗的立体匹配硬件架构的制作方法

本发明涉及立体视觉技术领域,尤其涉及一种低资源消耗的立体匹配硬件架构。



背景技术:

立体视觉作为计算机视觉领域中一个重要的部分,是研究的热点,并广泛应用于机器人导航、工业测量、和军事等领域。双目立体视觉是基于视差原理,采用标准的立体匹配算法来分析图像中研究对象的深度信息,其基本原理是:首先采用在不同位置上的两个或多个摄像机对同一个目标进行拍摄,从不同的视角来获得二维图像;空间点在所得到的图像中的位置偏差根据像素匹配来计算;最后根据所得到的位置偏差利用三角测量原理来进行三维重建。立体匹配技术就是对空间中的景物进行不同视角的拍摄所得到的图像,进行计算一定的特征因素,在图像对之间寻找像素间一一对应的关系,获得深度图像。在立体视觉系统中,立体匹配的精度直接影响了三维重建的效果。大多数立体匹配算法主要由三个步骤组成,第一步是匹配代价的计算,找出两幅图像的所需特征;第二步使用基于像素的匹配代价函数,通过窗口来完成代价的聚合;第三步就是在整个图像范围内根据聚合的代价选择适当的视差值。

立体匹配算法主要可以分为三种:局部立体匹配算法,半全局立体匹配算法(sgm)和全局立体匹配算法。其中半全局立体匹配算法既用到了点本身及邻域的约束信息(这是局部立体匹配算法的特点),体现在聚合不同的方向上的匹配代价;又寻找最优路径使全局能量函数最小(这是全局立体匹配算法的特点),体现在了使用多个一维的平滑约束来近似二维平滑约束的改进的动态规划。半全局立体匹配采用动态规划方法实现,它平等的对待多个一维的路径,然后将各个一维路径的结果合并,并且通过对深度的不同变化加以不同惩罚来保证平滑性约束。算法对光照变化的影响不敏感,对噪声有较强的鲁棒性。

近年来,为了达到实时性处理的效果,双目立体视觉系统广泛采用硬件架构。但是,其硬件实现在分析精度和资源占用上存在矛盾,一般情况下,复杂的高精度算法需要占用较多的硬件资源,有些实现效果较好的高精度算法通过硬件实现是不合适的。所以设计一种低资源消耗的,且具备较好精度和实时性的双目立体匹配硬件架构是非常重要的。



技术实现要素:

本发明的目的是提供一种低资源消耗的立体匹配硬件架构,能够以较低的资源消耗实现了基于sgm的双目立体匹配算法,并达到实时性的要求。

本发明的目的是通过以下技术方案实现的:

一种低资源消耗的立体匹配硬件架构,整个架构为四级流水线结构,包括:

使用两组lififo模块,每一组lififo模块包含两个lififo模块构成乒乓缓存结构,两组lififo模块分别实现将初始路径代价数据以及左图像的灰度数据从左往右输出和从右往左的输出至路径代价计算单元;

路径代价计算单元为一个四级流水线结构,也即每四个周期完成一个像素点在视差搜索范围内所有视差下的路径代价值计算;对于两个竖直方向上的路径代价值分别单独存储在一个fifo模块中,对于两个方向相反的水平方向上的路径代价值分别存储在一个fifo模块与一个lifo模块中;

三个fifo模块与一个lifo模块中存储的路径代价值由路径代价聚合单元进行累加,得到累加后一个像素点每一视差下每个方向上的路径代价值;

通过视差选择单元根据wta原则,两两比较累加后的路径代价值,选出较小路径代价值及对应的视差,最终从所有路径代价值中选出最小路径代价值对应的视差。

由上述本发明提供的技术方案可以看出,立体匹配的算法使用了sgm的算法,这个算法较易于硬件实现,且可以在精度和资源之间达到一个很好的平衡;结合本发明上述硬件架构,不仅可以减少资源,还具备较好的精度和实时性等优点。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1为本发明实施例提供的低资源消耗的立体匹配硬件架构的示意图;

图2为本发明实施例提供的进行代价计算时所选择的四个路径代价计算方向示意图;

图3为本发明实施例提供的三种缓存模块结构示意图;

图4为本发明实施例提供的路径代价计算单元的设计架构示意图;

图5为本发明实施例提供的水平路径方向计算时的资源分配情况示意图;

图6为本发明实施例提供的竖直路径方向计算时的资源分配情况示意图;

图7为本发明实施例提供的等式计算单元的结构示意图;

图8为本发明实施例提供的单个视差下四个方向的路径代价值的累加情况示意图;

图9为本发明实施例提供的路径代价聚合单元中四个方向路径代价值的累加规则;

图10为本发明实施例提供的视差选择单元中求最小值及对应的视差的单元结构示意图;

图11为本发明实施例提供的视差选择单元中求最小值及对应的视差的规则。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

本发明实施例提供一种低资源消耗的立体匹配硬件架构,如图1,整个架构为四级流水线结构,包括:

使用两组lififo模块,每一组lififo模块包含两个lififo模块构成乒乓缓存结构,两组lififo模块分别实现将初始路径代价数据以及左图像的灰度数据从左往右输出(先进先出)和从右往左的输出(后进先出)至路径代价计算单元;

路径代价计算单元为一个四级流水线结构,也即每四个周期完成一个像素点在视差搜索范围内所有视差下的路径代价值计算;对于两个竖直方向上的路径代价值分别单独存储在一个fifo(先进先出)模块中,对于两个方向相反的水平方向上的路径代价值分别存储在一个fifo模块与一个lifo(后进先出)模块中;

三个fifo模块与一个lifo模块中存储的路径代价值由路径代价聚合单元进行累加,得到累加后一个像素点在每一视差下每个方向上的路径代价值;

通过视差选择单元根据wta(winnertakeall,赢者通吃)原则,两两比较累加后的路径代价值,选出较小路径代价值及对应的视差,最终从所有路径代价值中选出最小路径代价值对应的视差。

为了便于理解,下面结合多个附图对整个硬件架构及硬件架构中各个部分做详细的介绍。

本发明实施例中,为了在节约资源的前提下尽可能的不损失精度,选择四个方向进行路径代价计算,如图2所示,四个方向包括:两个竖直方向ltb(从左上到右下,(1,-1))与tb(从上到下(0,-1)),以及两个水平方向lr(从左到右(1,0))与rl(从右到左(-1,0)),这四个方向可以较好的在精度损失和资源消耗上达到平衡,其中,rl方向与lr方向相反,所以需要使用lififo缓存模块将输入的初始代价同时以从左往右和从右往左的方向输出给后续计算模块。在路径代价计算完成之后,还需要一个lifo的缓存模块将rl方向的路径代价重新反方向输出出来,以保证和其余三个方向的数据流保持同步性。

上述硬件架构中所涉及的三种缓存模块的结构可参见图3。fifo缓存是一种数据先进先出的缓存结构,即最先输入的数据最先输出;lifo缓存是一种数据后进先出的缓存结构,即最后输入的数据最先输出;lififo缓存是可以同时实现数据先进先出和后进先出的缓存结构,即可以同时输出最先进入的数据和最后进入的数据,这个缓存结构是为了达到可以同时计算lr和rl两个方向路径代价的目的。

还参见图1,图1中每一组lififo模块中,保持着一个lififo在读数据,另一个lififo在写数据,为了实现逻辑资源的节约,rl方向与lr方向的路径代价计算共用一个路径代价计算单元(pathcostcalculationunit,pccu),ltb方向与tb方向的路径代价计算共用一个路径代价计算单元;

由于竖直方向的路径代价计算从第二行开始需要上一行的路径代价数据,所以每行的tb和ltb方向的路径代价需要缓存在fifo中用于下一行的路径代价计算,如图1所示,每行的tb方向和ltb方向的路径代价值分别缓存在一个fifo模块中。对于水平方向,由于rl和lr方向计算路径代价的数据流顺序是相反的,所以水平方向的路径代价值需要缓存在lifo和fifo模块中,将lr方向的路径代价值单独缓存在一个fifo模块中,将rl方向的路径代价值单独缓存在一个lifo模块中,从而实现在读取lifo和fifo中代价值数据后,可以实现四个方向路径代价值的数据流方向的同步性。最后将我们获得的每个像素在64个视差下四个方向的路径代价值同时送入到pcau(pathcostaccumulationunit,路径代价聚合单元)中。

一、路径代价计算单元

路径代价值计算公式为:

其中,p-r点为像素点p在路径方向r上的前一个像素点,r=ltb、tb、lr、rl,d=0~63,lr(p,d)表示像素点p在路径方向r上视差d下的路径代价值;第一项c(p,d)表示像素点p在视差d下的初始路径代价值;lr(p-r,d)表示p-r点的在路径方向r上视差d下的路径代价值,lr(p-r,d±1)包含了lr(p-r,d+1)与lr(p-r,d-1)分别表示p-r点的在路径方向r上视差d+1、d-1下的路径代价值,表示p-r点的在路径方向r上任意视差k下的最小的路径代价值,p1为设定的参数,p2是与左图像的灰度数据相关的参数:pp2为预设的参数,abs_gray为当前像素点和前一个像素的灰度差的绝对值;

如果p点为路径方向r上的第一个点,lr(p,d)=c(p,d)。

路径代价计算单元的结构如图4所示,该结构可以根据上述方式来计算路径代价,用四级流水线结构来完成一个像素点在视差搜索范围内所有视差下的路径代价值计算,即,第一级计算p-r点在视差0~63下的最小路径代价值(即采用分时复用的策略,由于每个像素在每一个视差下完成一个ecu(等式计算单元)的计算需要两个周期,所以为了节约资源,在三个阶段(一级对应一个阶段)内完成视差0~63下的路径代价的计算,根据分时复用策略,第二和第三级计算p-r点在视差0~31下的路径代价值的计算,第三和第四级计算p-r点在视差32~63下的路径代价值的计算。

图5介绍了水平路径方向的资源分配情况,每个像素点在每个方向上计算视差0~63下的路径代价需要在四个stage(阶段)内完成,每一级对应一个stage(阶段);对于每个像素点,lr方向运算到第三和第四级时,rl方向开始进行第一级和第二级的运算;当rl方向运算到第三级和第四级时,lr方向开始进行下一个像素的第一级和第二级的运算。这样,rl和lr方向就可以共用一个pccu来同时计算所有视差下路径代价值,实现资源复用,对于每个像素可以节省一个pccu的硬件资源。

图6介绍了竖直路径方向的资源分配情况。对于每个像素点,tb方向运算到第三和第四级时,ltb方向开始进行第一级和第二级的运算;当tb方向运算到第三级和第四级时,ltb方向开始进行下一个像素的第一级和第二级的运算。这样,tb和ltb方向就可以共用一个pccu来同时计算所有视差下路径代价值,实现资源复用,对于每个像素可以节省一个pccu的硬件资源。

图7介绍了pccu中的ecu的结构。cmptree(comparetree比较树)得到了也即,路径方向r上前一个像素点在64个视差下路径代价值的最小值,路径代价值计算公式中的其余部分通过等式计算单元实现;

等式计算单元分成两个计算周期,第一个周期内计算lr(p-r,d±1)+p1、以及由于cmptree与第一个周期已经获得了路径代价值计算公式中的后两项结果,而第一项为直接输入的数据,因此第二个周期内直接对这些数据按照公式进行加减即可获得计算结果,即完成的计算。

二、路径代价聚合单元。

路径代价聚合单元进行路径代价值的累加公式为:

s(p,d)=∑rwr(p)*lr(p,d);

其中,wr(p)对应于lr(p,d)的权重。

为了达到一个较好的精度效果,各个方向的权重可以进行如下设置:ltb和tb方向的权重设置为1,lr和rl方向权重设置为0.5。

图8介绍了每个像素在单个视差下完成四个路径方向的累加结构。对于每个像素点,单个视差下四个方向路径代价值的累加使用三个stage来完成,stage1完成tb和ltb方向路径代价的累加,stage2将stage1的结果与lr方向的路径代价值累加,stage3将stage2的结果与rl方向的路径代价值累加。每个周期需要一个加法器来进行累加计算,由于加法器的分时复用,所以每个像素在单个视差下完成四个方向路径代价的聚合在三个周期内完成,只需要一个加法器。

图9介绍了每个像素在64个视差下完成四个路径方向的累加规则,此模块同样为四级流水线结构。在累加过程中,第一个周期开始计算视差0~15内单个视差下四个方向路径代价值(cycle1~cycle3),第二个周期开始计算视差16~31内单个视差下四个方向路径代价值(cycle4),第三个周期开始计算视差32~47内单个视差下四个方向路径代价值(cycle5),第四个周期开始计算视差48~63内单个视差下四个方向路径代价值(cycle6)。cycle7之后,每四个周期会输出一个像素在视差0~63下的聚合代价,完成64个视差下四个方向的路径代价聚合只需要48个加法器。

三、视差选择单元。

视差选择单元的计算公式为:

其中,dmax为视差搜索范围的最大值,即dmax=63。

图10介绍了视差选择单元的结构。视差选择模块采用了wta(winnertakesall,赢者通吃)策略,两两比较聚合代价,选出较小聚合代价对应的视差值,逐像素从64个聚合代价中选出最小聚合代价对应的视差值,即最优视差值。视差选择单元包含若干个二选一数据选择器(min模块),对于每个像素点,将一个视差下四个方向路径代价值的累加值作为二选一数据选择器的输入,每个二选一数据选择器输入两个累加值,将较小的路径代价值的累加值及对应的视差值输出,送入下一级二选一数据选择器继续进行比较,依次类推,再根据图11中的比较规则,最终从所有路径代价值中选出最小路径代价值的累加值及对应的视差,

图11介绍了通过比较64个聚合代价来找到最小值及其视差的规则,此视差选择模块也是四级流水线结构。按照视差范围将四个方向路径代价值的累加值分为四类,并分成四个周期依次执行,四类依次为:视差0~15、16~31、32~47、48~63下四个方向路径代价值的累加值;执行四个周期后,每一个周期将输出一个最小的路径代价值的累加值及对应的视差,再比较这四个最小的路径代价值的累加值,选出其中最小的路径代价值的累加值所对应的视差(最优视差)。

以上所介绍的各个过程都是以一个像素点为对象进行的介绍,当所有像素点都进行了上述计算过程后都可以选出一个最优视差,所有像素点的最优视差则组成了的最优视差图。

本发明实施例提供的上述立体匹配硬件架构,所涉及的立体匹配的算法使用了sgm的算法,这个算法较易于硬件实现,且可以在精度和资源之间达到一个很好的平衡;结合本发明上述硬件架构,不仅可以减少资源,还具备较好的精度和实时性等优点。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

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