一种基于OpenCL并行加速的SIFT特征匹配方法

文档序号:8412878阅读:1002来源:国知局
一种基于OpenCL并行加速的SIFT特征匹配方法
【技术领域】
[0001] 本发明属于遥感机理与方法技术领域,具体涉及一种基于OpenCL并行加速的 SIFT特征匹配方法。
【背景技术】
[0002] 在过去的几十年里,国内外研宄人员主要集中在通过购买以具有高运算速度的单 核CPU为计算核心的服务器、工作站等设备,多核CPU计算平台的应用,采用单指令多数据 流技术的并行处理结构等几种方式来加快信息处理速度,然而由于制造工艺技术的制约以 及CPU架构本身设计目标的局限,性能的提升很快就碰到了技术壁皇,同时SIFT特征匹配 算法复杂度高,导致影像匹配计算时间长,匹配速度较慢,因此,一方面,传统计算资源和计 算加速方法已经难以满足遥感影像SIFT特征匹配实时处理的需求,在实时性要求较高的 应用场合中,应用受到了限制,另一方面,由于硬件平台间互不兼容,软件跨平台可移植性 差的问题凸显。

【发明内容】

[0003] 本发明的目的在于克服现有技术的不足而提供一种处理速度快、兼容性能好、使 用范围广的一种基于OpenCL并行加速的SIFT特征匹配方法。
[0004] 一种基于OpenCL并行加速的SIFT特征匹配方法,它包括SIFT特征匹配并行计 算、基于OpenCL的棋盘式卷积运算和工作节点的任务分配及映射,所述的SIFT特征匹配并 行计算包括如下步骤:
[0005] 步骤1 :首先读取输入影像到主存,将不同尺度的高斯核数据由主存传入到GPU的 常量存储器中,在GPU中进行分步连续滤波加速高斯尺度空间金字塔的构建,并将高斯金 字塔存储在全局存储器内,然后高斯金字塔影像被回读到CPU,相邻尺度的两个高斯影像相 减得到DOG金字塔多尺度空间表示,当把候选特征点集合信息上传至GPU中后,便可在GPU 内对高斯差分金字塔所有候选特征点进行精确定位,计算关键点周围影像强度的主曲率, 通过一个2X2的Hessian矩阵计算特征值比率,检测关键点主曲率是否超过设定的阈值, 通过去掉多余的点后,确定关键点集合并精确标记关键点的位置和尺度,关键点位置、尺度 将在GPU中恢复;
[0006] 步骤2 :利用在GPU中计算的关键点集合信息,启动kernel计算在关键点附近像 素的梯度大小和方向,利用已经存储在全局存储器中的高斯权重函数,对关键点邻域窗口 内的各像素的梯度大小进行高斯加权并累加建立方向直方图,检测直方图的峰值,确定关 键点主方向;
[0007] 步骤3 :计算128维的SIFT描述符,以关键点为中心的16X 16影像数据块根据关 键点的尺度、位置和方向构造 SIFT描述符的过程,在CPU上实现则可以发挥CPU逻辑分支、 判断能力强的优势,尚效地完成任务;
[0008] 步骤4 :SIFT特征匹配,确定匹配点位,按照原始点的自然顺序将维度数据读入本 地存储器,优化的重点是距离计算,首先必须保证每个维度差值的平方在同一时刻被计算, 而不是使用内循环方式,其次保证维度数目的中间结果的累加方式高效;
[0009] 所述的基于OpenCL的棋盘式卷积运算包括如下步骤:
[0010] 步骤1 :卷积乘计算,在内核gaussConvolution启动后,待处理的影像数据就存放 在全局存储器中,高斯核函数数据存放在常量存储器中,工作组中各个工作节点将对应的 全局存储器和常量存储器的数据取出完成卷积乘运算后存入本地存储器中,根据单指令多 线程执行模型的工作原理可知,活动warp是以时间片分配的,工作节点调度程序定期从一 个warp切换到另一个warp,以最大限度利用多处理器的计算资源,只有指令中全部操作数 就位的warps拥有执行资格,调度协议按照优先级选择其中一个warp执行,各个warp之间 的执行次序是不确定的,可以是任何次序,由于在同一个warp中的这32个工作节点是被绑 定在一起执行同一指令的,这意味着warp中的每个工作节点传递的都是指令库中的相同 指令,指导工作节点执行一些操作或操纵GPU存储器;
[0011] 步骤2 :积的累加计算,当工作组中所有工作节点卷积乘计算完毕后,采用并行归 约求和算法计算出影像中某个像素点的卷积值,最后将计算结果通过主机端控制从设备端 转移到主机端的内存;
[0012] 所述的工作节点的任务分配及映射包括如下步骤:
[0013] 步骤1 :卷积并行中工作节点的任务分配及映射,根据卷积运算中卷积乘相互无 关的特性,卷积并行最自然的想法是每一个卷积乘由一个工作节点计算,即每个工作节点 负责将一个像素值与高斯模板值相乘,由于在卷积并行中采用并行缩减求和算法计算影像 中某个像素点的卷积值,因此每个工作节点还将负责一对卷积乘乘积值的求和,通过get_ group_id二维索引向量和get_local_id -维索引向量来寻址:
[0014] const unsigned int tid = get_local_id(0);
[0015] const int baseAddress = get_group_id(I)氺col+get_group_id(0)+tid ;
[0016] const int offset = col_GAUSS_MODELDIM ;
[0017] 步骤2 :剔除边缘点并行计算中工作节点的任务分配及映射,在候选特征点检测 完成后,形成了一个线性数据结构集合,因此可以分配一个工作节点去完成是否剔除一个 边缘点的判断,通过OpenCL在每个工作组中开辟512个工作节点并行判断是否保留该候选 特征点,工作节点地址映射关系如下所示:
[0018] const unsigned int tid = globalfforkSize[0]*get_group_id(0)+get_local_ id(0);
[0019] 步骤3 :欧氏距离并行计算中工作节点的任务分配及映射,关键点的128维描述子 可以看成是一个线性数据结构集合,因此可以分配一个工作节点去完成一对相应维度的差 平方计算,通过OpenCL在每个工作组中开辟128个工作节点并行计算出每一对维度的差平 方值,并将结果保存到本地存储器中,由于在欧氏距离并行中采用并行缩减求和算法计算 距离,因此每个工作节点还将负责一对差平方值的求和,此处的工作节点地址映射关系如 下所示:
[0020] const unsigned int tid = get_local_id(0)
[0021] const unsigned int bid = get_group_id(0);
[0022] 所述的SIFT特征匹配并行计算为SIFT特征匹配GPU并行化处理计算模式。
[0023] 所述的基于OpenCL的棋盘式卷积运算为一个顺序运算的过程。
[0024] 本发明具有以下优点:随着影像像幅的降低和滤波窗口的增大,GPU的加速效果 十分明显,影像对进行SIFT特征匹配单GPU运算的总加速比高,具有密集的计算任务和工 作量大的特点,并通过优化达到最佳效果,另外基于OpenCL的SIFT特征匹配算法通过并行 性分析,将许多计算分割在CPU和GPU之间分别计算,发挥了各自的计算优势,充分体现了 CPU+GPU异构计算的强大能力,实时性高,具有可移植性的Sift特征匹配并行算法实现了 平台无关性。
【附图说明】
[0025] 图1为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的SIFT特征匹配 并行算法执行模式示意图。
[0026] 图2为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的棋盘式卷积乘示 意图。
[0027] 图3为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的不同影像像幅 SIFT特征匹配GPU加速效率趋势图。
[0028] 图4为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的不同滤波窗口 SIFT特征匹配GPU加速效率趋势图。
[0029] 图5为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的SIFT特征匹配 效果的对比示意图。
【具体实施方式】
[0030] 下面结合实施例对本发明作进一步的说明。
[0031] 实施例1
[0032] 如图1、图2、图3、图4和图5所示,一种基于OpenCL并行加速的SIFT特征匹配方 法,它包括SIFT特征匹配并行计算、基于OpenCL的棋盘式卷积运算和工作节点的任务分配 及映射,所述的SIFT特征匹配并行计算包括如下步骤:
[0033] 步骤1 :首先读取输入影像到主存,将不同尺度的高斯核数据由主存传入到GPU的 常量存储器中,在GPU中进行分步连续滤波加速高斯尺度空间金字塔的构建,并将高斯金 字塔存储在全局存储器内,然后高斯金字塔影像被回读到CPU,相邻尺度的两个高斯影像相 减得到DOG金字塔多尺度空间表示,当把候选特征点集合信息上传至GPU中后,便可在GPU 内对高斯差分金字塔所有候选特征点进行精确定位,计算关键点周围影像强度的主曲率, 通过一个2X2的Hessian矩阵计算特征值比率,检测关键点主曲率是否超过设定的阈值, 通过去掉多余的点后,确定关键点集合并精确标
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1