一种基于gpu的双目匹配算法的方法及处理装置

文档序号:1773184 发布日期:2019-12-03 浏览:12次 >En<

阅读说明:本技术 一种基于gpu的双目匹配算法的方法及处理装置 (A kind of method and processing unit of the binocular ranging algorithm based on GPU ) 是由 符强 罗鑫禹 孙希延 纪元法 任风华 严素清 付文涛 于 2019-08-22 设计创作,主要内容包括:本发明实施例公开了一种基于GPU的双目匹配算法的方法及处理装置,用于提升双目视觉中图像匹配算法的运算效率,改善双目深度感知技术的实时性。本发明实施例方法包括:获取第一图片数据和第二图片数据,第一图片数据和第二图片数据分别由不同的摄像头获取的;根据第一图片数据和第二图片数据,进行代价计算,得到代价值;根据代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;根据代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值;根据第一方向的代价聚合值、第二方向的代价聚合值、第三方向的代价聚合值和第四方向的代价聚合值,确定视差值。(The method and processing unit of the embodiment of the invention discloses a kind of binocular ranging algorithm based on GPU improve the real-time of binocular depth cognition technology for promoting the operation efficiency of image matching algorithm in binocular vision.The method comprise the steps that obtaining the first image data and second picture data, the first image data and second picture data are respectively by different camera acquisitions;According to the first image data and second picture data, cost calculating is carried out, cost value is obtained;It is polymerize according to the synchronous cost for carrying out first direction, second direction and third direction of cost value and is calculated, obtains the cost polymerizing value of the cost polymerizing value of first direction, the cost polymerizing value of second direction and third direction;It is polymerize according to the cost that cost value carries out fourth direction and is calculated, obtains the cost polymerizing value of fourth direction;According to the cost polymerizing value of first direction, the cost polymerizing value of second direction, the cost polymerizing value of the cost polymerizing value of third direction and fourth direction, parallax value is determined.)

一种基于GPU的双目匹配算法的方法及处理装置

技术领域

本发明涉及图像处理领域,尤其涉及一种基于GPU的双目匹配算法的方法及处理装置。

背景技术

随着科学技术的发展,无人机器人正在被广泛的应用在各个方面,无人机器人有一个共同的需求,需要对距离进行感知。目前常见的测距方法主要有两大类:主动测距和超声波测距,红外测距,双目视觉测距等。虽然主动测距方式原理较为简单,实时性较高,但是易受到物体反射面、外界光线环境等的影响,因此主动测距方式在无人机器领域并不被作为主要测距方式。

双目视觉测距,通过两个摄像头获取景物图像,利用不同的景物在两个摄像头之间的成像位置不同,设法计算出视差,然后依据估算出来的视差计算出最终距离。现有的双目视觉测距算法,由于在图像匹配阶段有较大的计算量,因此实时性较难以保证,无法将双目视觉技术很好的应用在无人机器人上。

发明内容

本发明实施例提供了一种基于GPU的双目匹配算法的方法及处理装置,用于提升双目视觉中图像匹配算法的运算效率,改善双目深度感知技术的实时性。

有鉴于此,本发明第一方面提供一种基于GPU的双目匹配算法的方法,可以包括:

获取第一图片数据和第二图片数据,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的;

根据所述第一图片数据和所述第二图片数据,进行代价计算,得到代价值;

根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;

根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值;

根据所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,确定视差值。

可选的,在本发明的一些实施例中,所述根据所述第一图片数据和所述第二图片数据,进行代价计算,得到代价值,包括:

根据所述第一图片数据和所述第二图片数据,通过不同排布的block进行代价计算,得到代价值,其中,每个block中的每个线程对应处理一个像素。

可选的,在本发明的一些实施例中,所述根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值,包括:

根据所述代价值,通过SGM双目图像匹配算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;

所述根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值,包括:

根据所述代价值,通过SGM双目图像匹配算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

可选的,在本发明的一些实施例中,所述根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值,所述根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值,包括:

根据所述代价值,确定第一方向的代价值、第二方向的代价值、第三方向的代价值和第四方向的代价值;

根据所述第一方向的代价值、所述第二方向的代价值和所述第三方向的代价值,通过蝶形排序算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;

根据所述第四方向的代价值,通过蝶形排序算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

可选的,在本发明的一些实施例中,所述根据所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,确定视差值,包括:

将所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,在不同视差值的情况下进行累加,得到与所述不同视差值对应的累加聚合值;

通过蝶形排序算法,确定与所述不同视差值对应的累加聚合值中的最小值为视差值。

本发明第二方面提供一种处理装置,可以包括:

获取模块,用于获取第一图片数据和第二图片数据,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的;

处理模块,用于根据所述第一图片数据和所述第二图片数据,进行代价计算,得到代价值;根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值;根据所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,确定视差值。

可选的,在本发明的一些实施例中,

所述处理模块,具体用于根据所述第一图片数据和所述第二图片数据,通过不同排布的block进行代价计算,得到代价值,其中,每个block中的每个线程对应处理一个像素。

可选的,在本发明的一些实施例中,

所述处理模块,具体用于根据所述代价值,通过SGM双目图像匹配算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;根据所述代价值,通过SGM双目图像匹配算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

可选的,在本发明的一些实施例中,

所述处理模块,具体用于根据所述代价值,确定第一方向的代价值、第二方向的代价值、第三方向的代价值和第四方向的代价值;根据所述第一方向的代价值、所述第二方向的代价值和所述第三方向的代价值,通过蝶形排序算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;根据所述第四方向的代价值,通过蝶形排序算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

可选的,在本发明的一些实施例中,

所述处理模块,具体用于将所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,在不同视差值的情况下进行累加,得到与所述不同视差值对应的累加聚合值;通过蝶形排序算法,确定与所述不同视差值对应的累加聚合值中的最小值为视差值。

本发明第三方面提供一种处理装置,可以包括:

收发器,处理器,存储器,其中,所述收发器,所述处理器和所述存储器通过总线连接;

所述存储器,用于存储操作指令;

所述收发器,用于获取第一图片数据和第二图片数据,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的;

所述处理器,用于调用所述操作指令,执行如本发明第一方面及第一方面任一可选实现方式中所述的基于GPU的双目匹配算法的方法的步骤。

本发明第四方面提供一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如本发明第一方面及第一方面任一可选实现方式中所述的基于GPU的双目匹配算法的方法的步骤。

从以上技术方案可以看出,本发明实施例具有以下优点:

在本发明实施例中,获取第一图片数据和第二图片数据,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的;根据所述第一图片数据和所述第二图片数据,进行代价计算,得到代价值;根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值;根据所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,确定视差值。本发明利用GPU并行运算,适宜大规模计算的特点,将GPU引入到双目匹配算法中,提升双目视觉中图像匹配算法的运算效率,以及提升双目匹配算法的实时性。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,还可以根据这些附图获得其它的附图。

图1为本发明实施例中代价聚合与视差计算融合的一个示意图;

图2为本发明实施例中基于GPU的双目匹配算法的方法的一个实施例示意图;

图3A为本发明实施例中GPU的stream的一个时序示意图;

图3B为本发明实施例中代价计算的一个设计示意图;

图3C为本发明实施例中代价聚合的一个设计示意图;

图3D为本发明实施例中代价计算优化的一个示意图;

图3E为本发明实施例中存放基准像素的数组Shared_base长度的示意图;

图3F为本发明实施例中蝶形排序算法的一个示意图;

图4为本发明实施例中处理装置的一个实施例示意图;

图5为本发明实施例中处理装置的一个实施例示意图。

具体实施方式

本发明实施例提供了一种基于GPU的双目匹配算法的方法及处理装置,用于提升双目视觉中图像匹配算法的运算效率,改善双目深度感知技术的实时性。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,都应当属于本发明保护的范围。

本发明利用图形处理器(Graphics Processing Unit,GPU)并行运算,适宜大规模计算的特点,将GPU引入到双目匹配算法中,以提升双目匹配算法的实时性。但是为了让双目匹配算法发挥更好的效果,对在GPU上的实现进行了重新设计。即针对双目匹配算法的运算过程,设计了一系列的GPU优化方案。首先在整体算法架构上,为了提升数据重复利用率,本发明将代价聚合与视差计算融合到了一起,如图1所示,为本发明实施例中代价聚合与视差计算融合的一个示意图。

下面以实施例的方式,对本发明技术方案做进一步的说明,如图2所示,为本发明实施例中基于GPU的双目匹配算法的方法的一个实施例示意图,可以包括:

201、获取第一图片数据和第二图片数据,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的。

可以理解的是,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的,那么第一图片数据可以是由左摄像头获取的,第二图片数据可以是由右摄像头获取的。可以针对不同的双目匹配算法不同的运算流程,设计不同的GPU资源分配方案。如图3A所示,为本发明实施例中GPU的流(stream)的一个时序示意图。本发明设计了3条streams并行的思路,提升匹配算法的运行效率。如图3A所示,在代价聚合阶段,让GPU同时计算3个方向的代价。由于本发明将代价聚合和视差计算进行了融合,因此必须要确保代价聚合中其他方向的运算都进行完毕之后,才能执行视差计算的操作,而同一个stream中的任务遵循按顺序执行的原则,执行代价聚合‘↑’时一定保证了前三个方向的代价聚合计算已经完成。

在代价计算阶段,由于计算代价的单个计算步骤十分简单,易于进行并行运算,因此比较简单实用高效的设计思路是让每一个线程负责一个像素。这样,一个指令周期就可以直接处理完一幅图片。因此,首先设计一个二维block,每个block的x方向包含32个线程,y方向包含32个线程,其中,可以理解的是,32正好是一个线程束(warp)的线程数。接着,设置了一个二维的线程格(grid),grid的x方向将包含cols/blockDim.x个blocks,grid的y方向将包含cols/blockDim.y个blocks。如图3B所示,为本发明实施例中代价计算的一个设计示意图。

在代价聚合阶段,每个Blocks设计处理两个像素的最优视差,而为了提升数据交互的效率,利用在同一个warp中的线程(thread)可以直接互相共享数据的原理,将一个像素某方向上所有视差大小的计算用一个warp来完成。一个warp最大包含32个thread,本发明设计用一个warp完成一个像素全部视差代价的计算,故处理两个像素总共需要两个warp,因此一个blocks中包含64个线程。为了满足通过32个线程计算全部的视差代价,这里设计每个线程处理MAX_DISPARITY/32个视差。整体的思路类似于代价计算,每个block处理两行像素,利用block中的for循环逐步处理一行中的其他像素,资源结果分配如图3C所示,图3C为本发明实施例中代价聚合的一个设计示意图。

需要说明的是,对于不同的方向,GPU结构也不相同,但是总体思路都是每个grid处理一行或者一列,每个blocks处理两个像素。即通过基于GPU的双目视觉匹配优化算法,双目视觉匹配算法的运算效率有显著的提升。示例性的,在英伟达TX2处理器上图片处理速度达到42FPS,可以应用于无人机避障系统当中。

202、根据所述第一图片数据和所述第二图片数据,进行代价计算,得到代价值。

所述根据所述第一图片数据和所述第二图片数据,进行代价计算,得到代价值,可以包括:根据所述第一图片数据和所述第二图片数据,通过不同排布的block进行代价计算,得到代价值,其中,每个block中的每个线程对应处理一个像素。

下面对代价计算进行一个简要的说明,本发明实施例中可以采用中心对称的census变换进行代价计算,该方法可以在抗光线影响能与传统census一样好的情况下,减少一定量的存储内存。本发明利用GPU的并行性,对中心对称的census变换实现了优化,具体优化思路如下所示:

首先设计一个二维线程块(block),每个block的x方向包含32个线程,y方向包含32个线程。可以理解的是,之所以选择32,是因为这正好是一个warp的线程数。接着,设置了一个二维的grid,grid的x方向将包含cols/blockDim.x个blocks,grid的y方向将包含cols/blockDim.y个blocks。

对于中心对称的census变换,由于单个计算步骤十分简单,易于进行并行运算,因此,比较简单实用高效的设计思路是让每一个线程负责一个像素。这样,一个指令周期就可以直接处理完一幅图片。GPU的资源结构如图3B所示,以摄像头采集的图片分辨率为640*480为例进行说明。这里首先设计一个二维block,每个block的x方向包含32个线程,y方向包含32个线程,之所以选择32,是因为这正好是一个warp的线程数。接着,设置一个二维的grid,grid的x方向将包含cols/blockDim.x个blocks,grid的y方向将包含cols/blockDim.y个blocks,以640*480为例,grid的x方向cols/32=20个blocks,grid的y方向将包含row/32=15个blocks。这样处理,刚好可以让每一个线程都处理一个像素点。

接着是代价的计算,由双目视觉的理论可知整个匹配代价空间为W×H×D,因此本发明也根据这个思路进行设计。如图3D所示,为本发明实施例中代价计算优化的一个示意图。

由于传统的代价计算的空间为W×H×D,而某个像素在某个方向下的视差代价其实也是一个像素代价,因此传统的代价计算实现将有大量的内存冗余。为了最大限度提升数据重复利用率,减少数据存储量,本发明并没有像census变换一样让每个线程都处理一个像素,而是让每个blocks处理一行像素,利用block中的for循环逐步处理一行中的其他像素,每个像素的全部视差由threads一次性获得。即每个grid将分配H个blocks,每个blocks分配D个threads,block中的for循环将重复W次。

示例性的,可以设计480个block,每个block中设计128个threads。这样每一个blocks负责一行处理一行的像素。这样的话,本发明对应的变量数据结构也不同于传统方案,存放基准像素的数组Shared_base长度为D,而存放待比较像素的数组Shared_match长度为2D,数据结构如下图3E所示,图3E为本发明实施例中存放基准像素的数组Shared_base长度的示意图。Shared_match前一个D存放的前一段128个像素的代价,后一个D存放紧接着的下一段128个像素的代价。

203、根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值。

所述根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值,可以包括:根据所述代价值,通过SGM双目图像匹配算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值。

需要说明的是,对于代价聚合,本发明的聚合理论采用SGM(semi-globalmaching)双目图像匹配算法,在这个过程中,需要分多个方向进行代价聚合。因此,为了进一步提升运算效率,可以将使用多条stream参与代价聚合。示例性的,在这个例子中,仅聚合四个方向的代价,所以‘→’的代价聚合值由stream0处理,‘↓’的代价聚合值由stream1处理,‘→’的代价聚合值由stream2处理。但是出于增大数据利用率考虑,本发明并没有将‘↑’的代价聚合值分为stream3,而是使用stream1,因为为了提高内存利用率,在进行‘↑’号方向计算的同时,将完成计算最优视差的运算任务,因此必须要确保其他方向的运算都进行完毕才能执行该步操作,而同一个stream中的任务遵循按顺序执行的原则,因此就形成了3个方向并行计算,第四个方向的代价计算等他们计算完后再进行视差优化的设计思路。

由于SGM算法需要完成如下公式计算:

Lr(p,d)=C(p,d)+min(Lr(p-r,d),

Lr(p-r,d-1)+P1

Lr(p-r,d+1)+P1

其中,在上述公式中,各个参数所指示的含义如下:

Lr(p,d):某个匹配点P的r方向的代价聚合值;

C(p,d):某个匹配点P的匹配代价值;

Lr(p-r,d):某个匹配点上一个匹配点的相同视差下的匹配代价聚合值;

Lr(p-r,d-1):某个匹配点上一个匹配点的视差减一下的匹配代价聚合值;

Lr(p-r,d+1):某个匹配点上一个匹配点的视差加一下的匹配代价聚合值;

MinLr(p-r,i):某个匹配点上一个匹配点的所有视差下的代价聚合之的最小值(后面k的公式与之相同);

P1,P2:可调整参数,对视差进行补偿,用来对算法进行微调。

一个像素的代价需要涉及到相邻像素点,需要比较相邻像素点的相邻视差的代价,相邻像素点的当前视差代价,以及相邻像素点的全部视差的代价的最小值,因此这里存在更多的数据重用与数据交互,而传统的方案一样让每个线程处理一个视差代价,会因为不同线程间的数据通信而降低并行运行效率,本发明提出了一种更加高效的处理方案,针对不同的方向,有不同的架构设计策略,以‘→’方向为例,其设计策略可以参考图3C所示。

204、根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

所述根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值,可以包括:根据所述代价值,通过SGM双目图像匹配算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

205、根据所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,确定视差值。

所述根据所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,确定视差值,可以包括:将所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,在不同视差值的情况下进行累加,得到与所述不同视差值对应的累加聚合值;通过蝶形排序算法,确定与所述不同视差值对应的累加聚合值中的最小值为视差值。

可以理解的是,每个Blocks设计处理两个像素的最优视差,而为了提升数据交互的效率,利用在同一个warp中的thread可以直接互相共享数据的原理,将一个像素某方向上所有视差大小的计算用一个warp来完成。而目前TX2平台帕斯卡(pascall)架构下一个warp最大包含32个thread,本发明设计用一个warp完成一个像素全部视差代价的计算,故处理两个像素总共需要两个warp,因此一个blocks中包含64个线程。为了满足通过32个线程计算全部的视差代价,这里设计每个线程处理MAX_DISPARITY/32个视差。整体的思路将类似于代价计算,每个block处理两行像素,利用block中的for循环逐步处理一行中的其他像素。因此将设计一个一维的grid,每个grid包含rows/2的blocks。以640*480的图像处理为例,这个grid将包含480/2=239个blocks,每个blocks将包含64个线程,每个线程处理128/32=4个视差的代价。

根据SGM算法,需要计算和d*=mindS(p,d)的值。常规方法是通过普通排序方法在数组间排序,从而得到最小值,例如对于冒泡法,至少需要排n×(n-1)/2。而对于GPU来说,可以达到更高的效率,本发明设计了一种蝶形排序算法,利用在同一个warp中的thread可以直接互相共享数据的原理,通过_shuf_xor_sync指令,显著较少排序次数。首先是相邻线程间值进行数据交换,将原本线程中的旧数据与新数据进行大小比较,实现找出相邻线程间找出数据最大值,这样数据量将减少一半;然后,是间隔1个线程间进行数据交换,经过此轮比较,实现找出连续4个线程间的最小值,这样数据量又将减少一半;继续进行比较,直到最后32个线程的数据缩减到1个数据为止。该方法可以减少比较次数,降低运算复杂度,通过这种蝶形排序运算,每次移位,需要比较的数量较少二分之一,因此只需要比较次即可,大大较少了比较次数。图3F为本发明实施例中蝶形排序算法的一个示意图。

示例性的,判断128个视差点的中的最小视差匹配代价。由于一个线程处理4个视差的匹配代价,因此首先判断比较4个视差的最小值,总共需要进行3次比较。此步骤之后,128个值将会缩小到32个值需要比较大小,这32个值分别在32个不同的线程中。然后,对线程使用shfl_xor_sync(val,2),就是隔着1个格子进行交换,即线程2的值被放到了线程0的位置,同样地,让他们进行大小比较,得到线程0,1,2,3的最小值,同理其他线程,这样需要比较的val值又被减小一半,剩下8个val值。同理,之后在移位4次,移位8次,移位16次,逐步比较完32个线程的大小。

在本发明实施例中,针对双目视觉匹配算法进行了深度优化,提出了一系列基于GPU的优化结构设计方案。提出了针对SGM算法寻找最小匹配代价的问题,提出了一种蝶形排序算法,只需运算次就可以找出最优视差。增加代价计算的利用率,本发明重新设计了代价的数据结构,可以最大程度的保护保证数据重用。

本发明实施例提供了一种新的基于图形处理器(Graphics Processing Unit,GPU)的双目视觉图像匹配方法,可以极大的提升运算效率,在匹配精度不变的前提下,减少处理时间。即可以提升双目视觉中图像匹配算法的运算效率,改善双目深度感知技术的实时性。

如图4所示,为本发明实施例中处理装置的一个实施例示意图,可以包括:

获取模块401,用于获取第一图片数据和第二图片数据,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的;

处理模块402,用于根据所述第一图片数据和所述第二图片数据,进行代价计算,得到代价值;根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值;根据所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,确定视差值。

可选的,在本发明的一些实施例中,

处理模块402,具体用于根据所述第一图片数据和所述第二图片数据,通过不同排布的block进行代价计算,得到代价值,其中,每个block中的每个线程对应处理一个像素。

可选的,在本发明的一些实施例中,

处理模块402,具体用于根据所述代价值,通过SGM双目图像匹配算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;根据所述代价值,通过SGM双目图像匹配算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

可选的,在本发明的一些实施例中,

处理模块402,具体用于根据所述代价值,确定第一方向的代价值、第二方向的代价值、第三方向的代价值和第四方向的代价值;根据所述第一方向的代价值、所述第二方向的代价值和所述第三方向的代价值,通过蝶形排序算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;根据所述第四方向的代价值,通过蝶形排序算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

可选的,在本发明的一些实施例中,

处理模块402,具体用于将所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,在不同视差值的情况下进行累加,得到与所述不同视差值对应的累加聚合值;通过蝶形排序算法,确定与所述不同视差值对应的累加聚合值中的最小值为视差值。

如图5所示,为本发明实施例中处理装置的一个实施例示意图,可以包括:

收发器501,处理器502,存储器503,其中,收发器501,处理器502和存储器503通过总线连接;可以理解的是,收发器501可以是图像捕获器。

存储器503,用于存储操作指令;

收发器501,用于获取第一图片数据和第二图片数据,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的;

处理器502,用于调用所述操作指令,执行如下步骤:

获取第一图片数据和第二图片数据,所述第一图片数据和所述第二图片数据分别由不同的摄像头获取的;

根据所述第一图片数据和所述第二图片数据,进行代价计算,得到代价值;

根据所述代价值同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;

根据所述代价值进行第四方向的代价聚合计算,得到第四方向的代价聚合值;

根据所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,确定视差值。

可选的,在本发明的一些实施例中,处理器502,用于调用所述操作指令,执行如下步骤:

根据所述第一图片数据和所述第二图片数据,通过不同排布的block进行代价计算,得到代价值,其中,每个block中的每个线程对应处理一个像素。

可选的,在本发明的一些实施例中,处理器502,用于调用所述操作指令,执行如下步骤:

根据所述代价值,通过SGM双目图像匹配算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;

根据所述代价值,通过SGM双目图像匹配算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

可选的,在本发明的一些实施例中,处理器502,用于调用所述操作指令,执行如下步骤:

根据所述代价值,确定第一方向的代价值、第二方向的代价值、第三方向的代价值和第四方向的代价值;

根据所述第一方向的代价值、所述第二方向的代价值和所述第三方向的代价值,通过蝶形排序算法,同步进行第一方向、第二方向和第三方向的代价聚合计算,得到第一方向的代价聚合值、第二方向的代价聚合值和第三方向的代价聚合值;

根据所述第四方向的代价值,通过蝶形排序算法,进行第四方向的代价聚合计算,得到第四方向的代价聚合值。

可选的,在本发明的一些实施例中,处理器502,用于调用所述操作指令,执行如下步骤:

将所述第一方向的代价聚合值、所述第二方向的代价聚合值、所述第三方向的代价聚合值和所述第四方向的代价聚合值,在不同视差值的情况下进行累加,得到与所述不同视差值对应的累加聚合值;通过蝶形排序算法,确定与所述不同视差值对应的累加聚合值中的最小值为视差值。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于加速稳健特征的高效大尺度立体匹配算法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!