一种基于视频的快速模板匹配gpu实现方法

文档序号:9304694阅读:200来源:国知局
一种基于视频的快速模板匹配gpu实现方法
【技术领域】
[0001] 本发明涉及一种模板匹配方法,具体地说,是涉及一种基于视频的快速模板匹配 GPU实现方法。
【背景技术】
[0002] 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配或相似部分的技术。 很多视频分析应用场景,例如车辆、行人的跟踪中,都选择性地加入了模板匹配的辅助功 能,以达到能够适应复杂场景的目的。
[0003] 模板匹配算法为了确定匹配区域,不得不滑动模板图像与原图像进行比较, 图像块一次一个像素(从左往右,从上往下)地滑动在每一个位置,都进行一次度量 计算来表明它与那个位置的匹配度(或者说图像块和原图像的特定区域的相似度),最后 匹配度量值最大或者最小的位置即为图像最匹配的部分。
[0004]目前,最基本的快速模板匹配度量值计算方法大概以下有六种: 1、平方差匹配SQDIFF
6、标准相关匹配CCOEFF_NORMED
I表示图像,T表示模板,R表示结果,模板与图像重叠区域之间求和。
[0005]上面算法公式来源于《Opencv教程基础篇》p327。
[0006]随着从简单的测量(平方差)到更复杂的测量(相关系数),我们可获得越来越 准确的匹配(同时也意味着越来越大的计算代价)。
[0007]但是,就算最简单的平方差测量,在模板大小为180*160,图像大小为1920*1080 时,在处理器i7、内存8G的机器上利用CPU运行现有的模板匹配算法也需要花费超过 1.5s,这样的速度难以满足人们的实际需要,成为了影响其加入实时视频检测算法的瓶颈。

【发明内容】

[0008]本发明的目的在于提供一种基于视频的快速模板匹配GPU实现方法,解决现有技 术中模板匹配算法实现速度低下、难以满足人们实际需求的问题。
[0009] 为了实现上述目的,本发明采用的技术方案如下: 一种基于视频的快速模板匹配GPU实现方法,包括以下步骤: (1) 将图像数据复制到GPU设备中,图像复制到设备的操作和图片模板匹配分为两个 独立的流执行同时进行,一个执行当前帧的图片模板匹配计算过程操作,一个执行下一帧 的图像复制操作; (2) 将图像模板数据存储在共享内存中,将图片数据存储在纹理内存中,利用纹理存储 器随机取数与图像模板进行匹配度计算; (3) 采用多线程并行计算的方式同时进行计算,且一个线程计算一个位置的模板匹配 度量值; (4) 确定模板匹配度量值的最大值或最小值,即得到模板匹配的结果。
[0010] 进一步地,所述步骤(4)的具体方法如下: a. 原子操作的块内全局值(块内共享原子值)加上当前线程结果的负值的最终结果与 零进行比较,如果小于〇,则最大值为当前线程结果,否则最大值不变; b. 循环a操作,直到块内所有线程完成a操作,最大值即为块内所有线程模板匹配结果 的最大值; C.利用全局原子值在b操作求得的所有块内共享原子值中求取最大值,其最终最大值 对应的线程计算位置即为模板匹配的最佳位置。
[0011] 与现有技术相比,本发明具有以下有益效果: (1)本发明采用下一帧图像数据的传输和上一帧图像的模板匹配计算并行的方式,两 个独立流同时进行,充分缩短了整体的运行时间,提高了实现效率。
[0012] (2)本发明利用共享内存读写速度仅次于寄存器的特性,将模板数据存于寄存器 中,加速了数据读取的过程;而将图像数据存储在纹理内存中,利用纹理存储器随机取数的 优势,同样加速了读取速度,进一步提高模板匹配的实现效率。
[0013](3)本发明采用一个线程负责一个滑动位置计算的方式,提高了计算密度,充分利 用了GPU多小核庞大线程数的并行资源,既实现了大规模的并行,内部又可以利用寄存器 累加每个像素点位置的计算结果值,使运行速度达到最大,有效缩短了模板匹配度的运算 时间。
[0014] (4)本发明采用共享内存和全局内存二阶的原子操作,利用多线程同时得出出最 大或最小值,进而进行综合比较,简单、方便、快速。
【附图说明】
[0015] 图1为本发明的流程示意图。
【具体实施方式】
[0016] 下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于 下列实施例。 实施例
[0017] 本发明公开的基于视频的快速模板匹配GPU实现方法,主要针对现有的图像模板 匹配算法运行效率低,难以满足人们实际需求的问题,而进行的算法优化。本发明不改变现 有模板匹配算法的基本原理,只是对操作方式进行调整,可直接应用在现有的设备中,具有 成本低、效率高,实现简单方便的特点。
[0018] 如图1所示,本发明的具体实现方法如下: (1)将图像数据复制到GPU设备中,图像复制到设备的操作和图片模板匹配分为两个 独立的流执行同时进行,一个执行当前帧的图片模板匹配计算过程操作,一个执行下一帧 的图像复制操作。
[0019] (2)将图像模板数据存储在共享内存中,将图片数据存储在纹理内存中,利用纹理 存储器随机取数与图像模板进行匹配度计算。
[0020] 由于图像模板数据量相对比较小,且每个线程利用到的模板数据相同,因此,将图 像模板数据存储在共享内存中,可以有效提高读取速度。同时,图片数据读取操作由于呈现 局部的形式,每次读取的数据均不相同,并且需要进行多次读取,因此将图片数据存储在纹 理内存中,利用纹理存储器随机取数的优势,可以大大提高读取速度。
[0021] (3)采用多线程并行计算的方式同时进行计算,且一个线程计算一个位置的模板 匹配度量值。
[0022] 模板在图片中每一次滑动位置的计算由一个线程完成,如此既可以保证线程读取 数据时的连续性,也高效率地利用了并行线程。由不同匹配度量值计算方法的计算公式可 以看出,都是单个像素的结果累加,因此单个线程内部利用同一个寄存器保存累加计算结 果,更加方便,高效。
[0023] (4)确定模板匹配度量值的最大值或最小值,即得到模板匹配的结果。
[0024] 具体地说,首先,将原子操作的块内全局值(块内共享原子值)加上当前线程结果 的负值的最终结果与零进行比较,如果小于〇,则最大值为当前线程结果,否则最大值不变; 然后,循环上述操作,直到图像块内所有线程均完成上述操作,得到的最大值即为块内所有 线程模板匹配结果的最大值;最后,利用全局原子在所有共享原子值中求取最大值,其最终 最大值对应的线程计算位置就是最佳的模板匹配位置。
[0025] 原子操作可以保证一个线程在执行过程中不会被其他线程中断,上述方法可以降 低单纯使用全局原子内存在访问上存在的竞争,大大提高访问速度,缩短匹配时间,提高效 率。
[0026] 通过上述方法,可以明显缩短模板匹配的时间,大大提高匹配效率,从而满足人们 对模板匹配效率的要求,提高了模板匹配算法的实用价值,具有很高的应用前景。
[0027] 上述实施例仅为本发明的优选实施例,并非对本发明保护范围的限制,但凡采用 本发明的设计原理,以及在此基础上进行非创造性劳动而作出的变化,均应属于本发明的 保护范围之内。
【主权项】
1. 一种基于视频的快速模板匹配GPU实现方法,其特征在于,包括以下步骤: (1) 将图像数据复制到GPU设备中,图像复制到设备的操作和图片模板匹配分为两个 独立的流执行同时进行,一个执行当前帧的图片模板匹配计算过程操作,一个执行下一帧 的图像复制操作; (2) 将图像模板数据存储在共享内存中,将图片数据存储在纹理内存中,利用纹理存储 器随机取数与图像模板进行匹配度计算; (3) 采用多线程并行计算的方式同时进行计算,且一个线程计算一个位置的模板匹配 度量值; (4) 利用全局原子和共享原子确定模板匹配度量值的最大值或最小值,即得到模板匹 配的结果。2. 根据权利要求1所述的一种基于视频的快速模板匹配GPU实现方法,其特征在于,所 述步骤(4)的具体方法如下: a. 原子操作的块内全局值加上当前线程结果的负值的最终结果与零进行比较,如果小 于〇,则最大值为当前线程结果,否则最大值不变; b. 循环a操作,直到块内所有线程完成操作,最大值即为块内所有线程模板匹配结果 的最大值; C.利用全局原子值在b步骤中求得的所有块内共享原子值中求取最大值,其最终最大 值对应的线程计算位置即为模板匹配的最佳位置。
【专利摘要】本发明公开了一种基于视频的快速模板匹配GPU实现方法,包括以下步骤:(1)将图像数据复制到GPU设备中,图像复制到设备的操作和图片模板匹配分为两个独立的流执行同时进行,一个执行当前帧的图片模板匹配计算过程操作,一个执行下一帧的图像复制操作;(2)将图像模板数据存储在共享内存中,将图片数据存储在纹理内存中,利用纹理存储器随机取数与图像模板进行匹配度计算;(3)采用多线程并行计算的方式同时进行计算,且一个线程计算一个位置的模板匹配度量值;(4)利用全局原子和共享原子确定模板匹配度量值的最大值或最小值,即得到模板匹配的结果。本发明可以明显缩短模板匹配的时间,提高了模板匹配算法的实用价值。
【IPC分类】G06F17/50
【公开号】CN105022889
【申请号】CN201510469830
【发明人】曹泉, 余坚毅
【申请人】深圳市哈工大交通电子技术有限公司
【公开日】2015年11月4日
【申请日】2015年8月4日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1