CN104732221A - 一种基于OpenCL并行加速的SIFT特征匹配方法 - Google Patents
一种基于OpenCL并行加速的SIFT特征匹配方法 Download PDFInfo
- Publication number
- CN104732221A CN104732221A CN201510160089.2A CN201510160089A CN104732221A CN 104732221 A CN104732221 A CN 104732221A CN 201510160089 A CN201510160089 A CN 201510160089A CN 104732221 A CN104732221 A CN 104732221A
- Authority
- CN
- China
- Prior art keywords
- parallel
- convolution
- working node
- gpu
- opencl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000001133 acceleration Effects 0.000 title abstract description 22
- 238000004364 calculation method Methods 0.000 claims abstract description 33
- 238000013507 mapping Methods 0.000 claims abstract description 30
- 230000008901 benefit Effects 0.000 claims abstract description 14
- 230000009467 reduction Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 5
- 238000009825 accumulation Methods 0.000 claims description 4
- 239000011159 matrix material Substances 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims 4
- 238000010168 coupling process Methods 0.000 claims 4
- 238000005859 coupling reaction Methods 0.000 claims 4
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000012797 qualification Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Landscapes
- Image Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于OpenCL并行加速的SIFT特征匹配方法,它包括SIFT特征匹配并行计算、基于OpenCL的棋盘式卷积运算和工作节点的任务分配及映射,具有将许多计算分割在CPU和GPU之间分别计算,发挥了各自的计算优势,充分体现了CPU+GPU异构计算的强大能力,实时性高,具有可移植性的Sift特征匹配并行算法实现了平台无关性。
Description
技术领域
本发明属于遥感机理与方法技术领域,具体涉及一种基于OpenCL并行加速的SIFT特征匹配方法。
背景技术
在过去的几十年里,国内外研究人员主要集中在通过购买以具有高运算速度的单核CPU为计算核心的服务器、工作站等设备,多核CPU计算平台的应用,采用单指令多数据流技术的并行处理结构等几种方式来加快信息处理速度,然而由于制造工艺技术的制约以及CPU架构本身设计目标的局限,性能的提升很快就碰到了技术壁垒,同时SIFT特征匹配算法复杂度高,导致影像匹配计算时间长,匹配速度较慢,因此,一方面,传统计算资源和计算加速方法已经难以满足遥感影像SIFT特征匹配实时处理的需求,在实时性要求较高的应用场合中,应用受到了限制,另一方面,由于硬件平台间互不兼容,软件跨平台可移植性差的问题凸显。
发明内容
本发明的目的在于克服现有技术的不足而提供一种处理速度快、兼容性能好、使用范围广的一种基于OpenCL并行加速的SIFT特征匹配方法。
一种基于OpenCL并行加速的SIFT特征匹配方法,它包括SIFT特征匹配并行计算、基于OpenCL的棋盘式卷积运算和工作节点的任务分配及映射,所述的SIFT特征匹配并行计算包括如下步骤:
步骤1:首先读取输入影像到主存,将不同尺度的高斯核数据由主存传入到GPU的常量存储器中,在GPU中进行分步连续滤波加速高斯尺度空间金字塔的构建,并将高斯金字塔存储在全局存储器内,然后高斯金字塔影像被回读到CPU,相邻尺度的两个高斯影像相减得到DOG金字塔多尺度空间表示,当把候选特征点集合信息上传至GPU中后,便可在GPU内对高斯差分金字塔所有候选特征点进行精确定位,计算关键点周围影像强度的主曲率,通过一个2×2的Hessian矩阵计算特征值比率,检测关键点主曲率是否超过设定的阈值,通过去掉多余的点后,确定关键点集合并精确标记关键点的位置和尺度,关键点位置、尺度将在GPU中恢复;
步骤2:利用在GPU中计算的关键点集合信息,启动kernel计算在关键点附近像素的梯度大小和方向,利用已经存储在全局存储器中的高斯权重函数,对关键点邻域窗口内的各像素的梯度大小进行高斯加权并累加建立方向直方图,检测直方图的峰值,确定关键点主方向;
步骤3:计算128维的SIFT描述符,以关键点为中心的16×16影像数据块根据关键点的尺度、位置和方向构造SIFT描述符的过程,在CPU上实现则可以发挥CPU逻辑分支、判断能力强的优势,高效地完成任务;
步骤4:SIFT特征匹配,确定匹配点位,按照原始点的自然顺序将维度数据读入本地存储器,优化的重点是距离计算,首先必须保证每个维度差值的平方在同一时刻被计算,而不是使用内循环方式,其次保证维度数目的中间结果的累加方式高效;
所述的基于OpenCL的棋盘式卷积运算包括如下步骤:
步骤1:卷积乘计算,在内核gaussConvolution启动后,待处理的影像数据就存放在全局存储器中,高斯核函数数据存放在常量存储器中,工作组中各个工作节点将对应的全局存储器和常量存储器的数据取出完成卷积乘运算后存入本地存储器中,根据单指令多线程执行模型的工作原理可知,活动warp是以时间片分配的,工作节点调度程序定期从一个warp切换到另一个warp,以最大限度利用多处理器的计算资源,只有指令中全部操作数就位的warps拥有执行资格,调度协议按照优先级选择其中一个warp执行,各个warp之间的执行次序是不确定的,可以是任何次序,由于在同一个warp中的这32个工作节点是被绑定在一起执行同一指令的,这意味着warp中的每个工作节点传递的都是指令库中的相同指令,指导工作节点执行一些操作或操纵GPU存储器;
步骤2:积的累加计算,当工作组中所有工作节点卷积乘计算完毕后,采用并行归约求和算法计算出影像中某个像素点的卷积值,最后将计算结果通过主机端控制从设备端转移到主机端的内存;
所述的工作节点的任务分配及映射包括如下步骤:
步骤1:卷积并行中工作节点的任务分配及映射,根据卷积运算中卷积乘相互无关的特性,卷积并行最自然的想法是每一个卷积乘由一个工作节点计算,即每个工作节点负责将一个像素值与高斯模板值相乘,由于在卷积并行中采用并行缩减求和算法计算影像中某个像素点的卷积值,因此每个工作节点还将负责一对卷积乘乘积值的求和,通过get_group_id二维索引向量和get_local_id一维索引向量来寻址:
const unsigned int tid=get_local_id(0);
const int baseAddress=get_group_id(1)*col+get_group_id(0)+tid;
const int offset=col_GAUSS_MODELDIM;
步骤2:剔除边缘点并行计算中工作节点的任务分配及映射,在候选特征点检测完成后,形成了一个线性数据结构集合,因此可以分配一个工作节点去完成是否剔除一个边缘点的判断,通过OpenCL在每个工作组中开辟512个工作节点并行判断是否保留该候选特征点,工作节点地址映射关系如下所示:
const unsigned int tid=globalWorkSize[0]*get_group_id(0)+get_local_id(0);
步骤3:欧氏距离并行计算中工作节点的任务分配及映射,关键点的128维描述子可以看成是一个线性数据结构集合,因此可以分配一个工作节点去完成一对相应维度的差平方计算,通过OpenCL在每个工作组中开辟128个工作节点并行计算出每一对维度的差平方值,并将结果保存到本地存储器中,由于在欧氏距离并行中采用并行缩减求和算法计算距离,因此每个工作节点还将负责一对差平方值的求和,此处的工作节点地址映射关系如下所示:
const unsigned int tid=get_local_id(0)
const unsigned int bid=get_group_id(0);
所述的SIFT特征匹配并行计算为SIFT特征匹配GPU并行化处理计算模式。
所述的基于OpenCL的棋盘式卷积运算为一个顺序运算的过程。
本发明具有以下优点:随着影像像幅的降低和滤波窗口的增大,GPU的加速效果十分明显,影像对进行SIFT特征匹配单GPU运算的总加速比高,具有密集的计算任务和工作量大的特点,并通过优化达到最佳效果,另外基于OpenCL的SIFT特征匹配算法通过并行性分析,将许多计算分割在CPU和GPU之间分别计算,发挥了各自的计算优势,充分体现了CPU+GPU异构计算的强大能力,实时性高,具有可移植性的Sift特征匹配并行算法实现了平台无关性。
附图说明
图1为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的SIFT特征匹配并行算法执行模式示意图。
图2为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的棋盘式卷积乘示意图。
图3为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的不同影像像幅SIFT特征匹配GPU加速效率趋势图。
图4为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的不同滤波窗口SIFT特征匹配GPU加速效率趋势图。
图5为本发明一种基于OpenCL并行加速的SIFT特征匹配方法的SIFT特征匹配效果的对比示意图。
具体实施方式
下面结合实施例对本发明作进一步的说明。
实施例1
如图1、图2、图3、图4和图5所示,一种基于OpenCL并行加速的SIFT特征匹配方法,它包括SIFT特征匹配并行计算、基于OpenCL的棋盘式卷积运算和工作节点的任务分配及映射,所述的SIFT特征匹配并行计算包括如下步骤:
步骤1:首先读取输入影像到主存,将不同尺度的高斯核数据由主存传入到GPU的常量存储器中,在GPU中进行分步连续滤波加速高斯尺度空间金字塔的构建,并将高斯金字塔存储在全局存储器内,然后高斯金字塔影像被回读到CPU,相邻尺度的两个高斯影像相减得到DOG金字塔多尺度空间表示,当把候选特征点集合信息上传至GPU中后,便可在GPU内对高斯差分金字塔所有候选特征点进行精确定位,计算关键点周围影像强度的主曲率,通过一个2×2的Hessian矩阵计算特征值比率,检测关键点主曲率是否超过设定的阈值,通过去掉多余的点后,确定关键点集合并精确标记关键点的位置和尺度,关键点位置、尺度将在GPU中恢复;
步骤2:利用在GPU中计算的关键点集合信息,启动kernel计算在关键点附近像素的梯度大小和方向,利用已经存储在全局存储器中的高斯权重函数,对关键点邻域窗口内的各像素的梯度大小进行高斯加权并累加建立方向直方图,检测直方图的峰值,确定关键点主方向;
步骤3:计算128维的SIFT描述符,以关键点为中心的16×16影像数据块根据关键点的尺度、位置和方向构造SIFT描述符的过程,在CPU上实现则可以发挥CPU逻辑分支、判断能力强的优势,高效地完成任务;
步骤4:SIFT特征匹配,确定匹配点位,按照原始点的自然顺序将维度数据读入本地存储器,优化的重点是距离计算,首先必须保证每个维度差值的平方在同一时刻被计算,而不是使用内循环方式,其次必须保证维度数目的中间结果的累加方式高效;
所述的基于OpenCL的棋盘式卷积运算包括如下步骤:
步骤1:卷积乘计算,在内核gaussConvolution启动后,待处理的影像数据就存放在全局存储器中,高斯核函数数据存放在常量存储器中,工作组中各个工作节点将对应的全局存储器和常量存储器的数据取出完成卷积乘运算后存入本地存储器中,根据单指令多线程执行模型的工作原理可知,活动warp是以时间片分配的,工作节点调度程序定期从一个warp切换到另一个warp,以最大限度利用多处理器的计算资源,只有指令中全部操作数就位的warps拥有执行资格,调度协议按照优先级选择其中一个warp执行,各个warp之间的执行次序是不确定的,可以是任何次序,由于在同一个warp中的这32个工作节点是被绑定在一起执行同一指令的,这意味着warp中的每个工作节点传递的都是指令库中的相同指令,指导工作节点执行一些操作或操纵GPU存储器;
步骤2:积的累加计算,当工作组中所有工作节点卷积乘计算完毕后,采用并行归约求和算法计算出影像中某个像素点的卷积值,最后将计算结果通过主机端控制从设备端转移到主机端的内存;
所述的工作节点的任务分配及映射包括如下步骤:
步骤1:卷积并行中工作节点的任务分配及映射,根据卷积运算中卷积乘相互无关的特性,卷积并行最自然的想法是每一个卷积乘由一个工作节点计算,即每个工作节点负责将一个像素值与高斯模板值相乘,由于在卷积并行中采用并行缩减求和算法计算影像中某个像素点的卷积值,因此每个工作节点还将负责一对卷积乘乘积值的求和;
下面是算法中涉及到的数据结构向OpenCL映射后的具体描述,通过get_group_id二维索引向量和get_local_id一维索引向量来寻址:
const unsigned int tid=get_local_id(0);
const int baseAddress=get_group_id(1)*col+get_group_id(0)+tid;
const int offset=col_GAUSS_MODELDIM;
步骤2:剔除边缘点并行计算中工作节点的任务分配及映射,在候选特征点检测完成后,形成了一个线性数据结构集合,因此可以分配一个工作节点去完成是否剔除一个边缘点的判断,通过OpenCL在每个工作组中开辟512个工作节点并行判断是否保留该候选特征点,这里的工作节点地址映射关系如下所示:
const unsigned int tid=globalWorkSize[0]*get_group_id(0)+ger_local_id(0);
步骤3:欧氏距离并行计算中工作节点的任务分配及映射,关键点的128维描述子可以看成是一个线性数据结构集合。因此可以分配一个工作节点去完成一对相应维度的差平方计算。通过OpenCL在每个工作组中开辟128个工作节点并行计算出每一对维度的差平方值,并将结果保存到本地存储器中。由于在欧氏距离并行中采用并行缩减求和算法计算距离,因此每个工作节点还将负责一对差平方值的求和。此处的工作节点地址映射关系如下所示:
const unsigned int tid=get_local_id(0)
const unsigned int bid=get_group_id(0);
随着影像像幅的降低和滤波窗口的增大,GPU的加速效果十分明显,影像对进行SIFT特征匹配单GPU运算的总加速比高,具有密集的计算任务和工作量大的特点,并通过优化达到最佳效果,另外基于OpenCL的SIFT特征匹配算法通过并行性分析,将许多计算分割在CPU和GPU之间分别计算,发挥了各自的计算优势,充分体现了CPU+GPU异构计算的强大能力,实时性高,具有可移植性的Sift特征匹配并行算法实现了平台无关性。
实施例2
如图1、图2、图3、图4和图5所示,一种基于OpenCL并行加速的SIFT特征匹配方法,它包括SIFT特征匹配并行计算、基于OpenCL的棋盘式卷积运算和工作节点的任务分配及映射,所述的SIFT特征匹配并行计算包括如下步骤:
步骤1:首先读取输入影像到主存,将不同尺度的高斯核数据由主存传入到GPU的常量存储器中,在GPU中进行分步连续滤波加速高斯尺度空间金字塔的构建,并将高斯金字塔存储在全局存储器内,然后高斯金字塔影像被回读到CPU,相邻尺度的两个高斯影像相减得到DOG金字塔多尺度空间表示,当把候选特征点集合信息上传至GPU中后,便可在GPU内对高斯差分金字塔所有候选特征点进行精确定位,计算关键点周围影像强度的主曲率,通过一个2×2的Hessian矩阵计算特征值比率,检测关键点主曲率是否超过设定的阈值,通过去掉多余的点后,确定关键点集合并精确标记关键点的位置和尺度,关键点位置、尺度将在GPU中恢复;
步骤2:利用在GPU中计算的关键点集合信息,启动kernel计算在关键点附近像素的梯度大小和方向,利用已经存储在全局存储器中的高斯权重函数,对关键点邻域窗口内的各像素的梯度大小进行高斯加权并累加建立方向直方图,检测直方图的峰值,确定关键点主方向;
步骤3:计算128维的SIFT描述符,以关键点为中心的16×16影像数据块根据关键点的尺度、位置和方向构造SIFT描述符的过程,在CPU上实现则可以发挥CPU逻辑分支、判断能力强的优势,高效地完成任务;
步骤4:SIFT特征匹配,确定匹配点位,按照原始点的自然顺序将维度数据读入本地存储器,优化的重点是距离计算,首先必须保证每个维度差值的平方在同一时刻被计算,而不是使用内循环方式,其次必须保证维度数目的中间结果的累加方式高效;
所述的基于OpenCL的棋盘式卷积运算包括如下步骤:
步骤1:卷积乘计算,在内核gaussConvolution启动后,待处理的影像数据就存放在全局存储器中,高斯核函数数据存放在常量存储器中,工作组中各个工作节点将对应的全局存储器和常量存储器的数据取出完成卷积乘运算后存入本地存储器中,根据单指令多线程执行模型的工作原理可知,活动warp是以时间片分配的,工作节点调度程序定期从一个warp切换到另一个warp,以最大限度利用多处理器的计算资源,只有指令中全部操作数就位的warps拥有执行资格,调度协议按照优先级选择其中一个warp执行,各个warp之间的执行次序是不确定的,可以是任何次序,由于在同一个warp中的这32个工作节点是被绑定在一起执行同一指令的,这意味着warp中的每个工作节点传递的都是指令库中的相同指令,指导工作节点执行一些操作或操纵GPU存储器;
步骤2:积的累加计算,当工作组中所有工作节点卷积乘计算完毕后,采用并行归约求和算法计算出影像中某个像素点的卷积值,最后将计算结果通过主机端控制从设备端转移到主机端的内存;
所述的工作节点的任务分配及映射包括如下步骤:
步骤1:卷积并行中工作节点的任务分配及映射,根据卷积运算中卷积乘相互无关的特性,卷积并行最自然的想法是每一个卷积乘由一个工作节点计算,即每个工作节点负责将一个像素值与高斯模板值相乘,由于在卷积并行中采用并行缩减求和算法计算影像中某个像素点的卷积值,因此每个工作节点还将负责一对卷积乘乘积值的求和;
下面是算法中涉及到的数据结构向OpenCL映射后的具体描述,通过get_group_id二维索引向量和get_local_id一维索引向量来寻址:
const unsigned int tid=get_local_id(0);
const int baseAddress=get_group_id(1)*col+get_group_id(0)+tid;
const int offset=col_GAUSS_MODELDIM;
步骤2:剔除边缘点并行计算中工作节点的任务分配及映射,在候选特征点检测完成后,形成了一个线性数据结构集合,因此可以分配一个工作节点去完成是否剔除一个边缘点的判断,通过OpenCL在每个工作组中开辟512个工作节点并行判断是否保留该候选特征点,这里的工作节点地址映射关系如下所示:
const unsigned int tid=globalWorkSize[0]*get_group_id(0)+get_local_id(0);
步骤3:欧氏距离并行计算中工作节点的任务分配及映射,关键点的128维描述子可以看成是一个线性数据结构集合。因此可以分配一个工作节点去完成一对相应维度的差平方计算。通过OpenCL在每个工作组中开辟128个工作节点并行计算出每一对维度的差平方值,并将结果保存到本地存储器中。由于在欧氏距离并行中采用并行缩减求和算法计算距离,因此每个工作节点还将负责一对差平方值的求和。此处的工作节点地址映射关系如下所示:
const unsigned int tid=get_local_id(0)
const unsigned int bid=get_group_id(0);
所述的SIFT特征匹配并行计算为SIFT特征匹配GPU并行化处理计算模式。
所述的基于OpenCL的棋盘式卷积运算为一个顺序运算的过程。
随着影像像幅的降低和滤波窗口的增大,GPU的加速效果十分明显,影像对进行SIFT特征匹配单GPU运算的总加速比高,具有密集的计算任务和工作量大的特点,并通过优化达到最佳效果,另外基于OpenCL的SIFT特征匹配算法通过并行性分析,将许多计算分割在CPU和GPU之间分别计算,发挥了各自的计算优势,充分体现了CPU+GPU异构计算的强大能力,实时性高,具有可移植性的Sift特征匹配并行算法实现了平台无关性。
实施例3
如图1、图2、图3、图4和图5所示,一种基于OpenCL并行加速的SIFT特征匹配方法,它包括SIFT特征匹配并行计算、基于OpenCL的棋盘式卷积运算和工作节点的任务分配及映射,以经过预处理的不同像幅大小的影像对滤波窗口为21×21进行SIFT特征匹配对比实验,分别运行SIFT特征匹配的CPU系统、单GPU系统和多GPUs系统,并记录处理时间,见表1,以489×561像幅的影像对进行不同滤波窗口大小的SIFT特征匹配对比实验,分别运行SIFT特征匹配的CPU系统、单GPU系统和多GPUs系统,并记录处理时间,见表2。
表1 不同像幅SIFT特征匹配串并行性能对比
表2 不同滤波窗口SIFT特征匹配串并行性能对比
Claims (3)
1.一种基于OpenCL并行加速的SIFT特征匹配方法,它包括SIFT特征匹配并行计算、基于OpenCL的棋盘式卷积运算和工作节点的任务分配及映射,其特征在于:所述的SIFT特征匹配并行计算包括如下步骤:
步骤1:首先读取输入影像到主存,将不同尺度的高斯核数据由主存传入到GPU的常量存储器中,在GPU中进行分步连续滤波加速高斯尺度空间金字塔的构建,并将高斯金字塔存储在全局存储器内,然后高斯金字塔影像被回读到CPU,相邻尺度的两个高斯影像相减得到DOG金字塔多尺度空间表示,当把候选特征点集合信息上传至GPU中后,便可在GPU内对高斯差分金字塔所有候选特征点进行精确定位,计算关键点周围影像强度的主曲率,通过一个2×2的Hessian矩阵计算特征值比率,检测关键点主曲率是否超过设定的阈值,通过去掉多余的点后,确定关键点集合并精确标记关键点的位置和尺度,关键点位置、尺度将在GPU中恢复;
步骤2:利用在GPU中计算的关键点集合信息,启动kernel计算在关键点附近像素的梯度大小和方向,利用已经存储在全局存储器中的高斯权重函数,对关键点邻域窗口内的各像素的梯度大小进行高斯加权并累加建立方向直方图,检测直方图的峰值,确定关键点主方向;
步骤3:计算128维的SIFT描述符,以关键点为中心的16×16影像数据块根据关键点的尺度、位置和方向构造SIFT描述符的过程,在CPU上实现则可以发挥CPU逻辑分支、判断能力强的优势,高效地完成任务;
步骤4:SIFT特征匹配,确定匹配点位,按照原始点的自然顺序将维度数据读入本地存储器,优化的重点是距离计算,首先必须保证每个维度差值的平方在同一时刻被计算,而不是使用内循环方式,其次保证维度数目的中间结果的累加方式高效;
所述的基于OpenCL的棋盘式卷积运算包括如下步骤:
步骤1:卷积乘计算,在内核gaussConvolution启动后,待处理的影像数据就存放在全局存储器中,高斯核函数数据存放在常量存储器中,工作组中各个工作节点将对应的全局存储器和常量存储器的数据取出完成卷积乘运算后存入本地存储器中,根据单指令多线程执行模型的工作原理可知,活动warp是以时间片分配的,工作节点调度程序定期从一个warp切换 到另一个warp,以最大限度利用多处理器的计算资源,只有指令中全部操作数就位的warps拥有执行资格,调度协议按照优先级选择其中一个warp执行,各个warp之间的执行次序是不确定的,可以是任何次序,由于在同一个warp中的这32个工作节点是被绑定在一起执行同一指令的,这意味着warp中的每个工作节点传递的都是指令库中的相同指令,指导工作节点执行一些操作或操纵GPU存储器;
步骤2:积的累加计算,当工作组中所有工作节点卷积乘计算完毕后,采用并行归约求和算法计算出影像中某个像素点的卷积值,最后将计算结果通过主机端控制从设备端转移到主机端的内存;
所述的工作节点的任务分配及映射包括如下步骤:
步骤1:卷积并行中工作节点的任务分配及映射,根据卷积运算中卷积乘相互无关的特性,卷积并行最自然的想法是每一个卷积乘由一个工作节点计算,即每个工作节点负责将一个像素值与高斯模板值相乘,由于在卷积并行中采用并行缩减求和算法计算影像中某个像素点的卷积值,因此每个工作节点还将负责一对卷积乘乘积值的求和,通过get_group_id二维索引向量和get_local_id一维索引向量来寻址:
const unsigned int tid=get_local_id(0);
const int baseAddress=get_group_id(1)*col+get_group_id(0)+tid;
const int offset=col-GAUSS_MODELDIM;
步骤2:剔除边缘点并行计算中工作节点的任务分配及映射,在候选特征点检测完成后,形成了一个线性数据结构集合,因此可以分配一个工作节点去完成是否剔除一个边缘点的判断,通过OpenCL在每个工作组中开辟512个工作节点并行判断是否保留该候选特征点,工作节点地址映射关系如下所示:
const unsigned int tid=globalWorkSize[0]*get_group_id(0)+get_local_id(0);
步骤3:欧氏距离并行计算中工作节点的任务分配及映射,关键点的128维描述子可以 看成是一个线性数据结构集合,因此可以分配一个工作节点去完成一对相应维度的差平方计算,通过OpenCL在每个工作组中开辟128个工作节点并行计算出每一对维度的差平方值,并将结果保存到本地存储器中,由于在欧氏距离并行中采用并行缩减求和算法计算距离,因此每个工作节点还将负责一对差平方值的求和,此处的工作节点地址映射关系如下所示:
const unsigned int tid=get_local_id(0)
const unsigned int bid=get_group_id(0)。
2.如权利要求1所述的一种基于OpenCL并行加速的SIFT特征匹配方法,其特征在于:所述的SIFT特征匹配并行计算为SIFT特征匹配GPU并行化处理计算模式。
3.如权利要求1所述的一种基于OpenCL并行加速的SIFT特征匹配方法,其特征在于:所述的基于OpenCL的棋盘式卷积运算为一个顺序运算的过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510160089.2A CN104732221A (zh) | 2015-03-30 | 2015-03-30 | 一种基于OpenCL并行加速的SIFT特征匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510160089.2A CN104732221A (zh) | 2015-03-30 | 2015-03-30 | 一种基于OpenCL并行加速的SIFT特征匹配方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104732221A true CN104732221A (zh) | 2015-06-24 |
Family
ID=53456095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510160089.2A Pending CN104732221A (zh) | 2015-03-30 | 2015-03-30 | 一种基于OpenCL并行加速的SIFT特征匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104732221A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105115511A (zh) * | 2015-07-24 | 2015-12-02 | 浙江工业大学 | 一种面向月面导航的自适应的地标选取方法 |
CN107358238A (zh) * | 2017-03-01 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种提取图像特征信息的方法及系统 |
WO2018000724A1 (zh) * | 2016-06-28 | 2018-01-04 | 北京大学深圳研究生院 | 基于gpgpu平台的cdvs提取过程加速方法 |
CN108275530A (zh) * | 2018-01-18 | 2018-07-13 | 柯钢 | 一种基于机器学习的电梯安全预警方法 |
CN109522185A (zh) * | 2018-11-19 | 2019-03-26 | 江苏镭博智能科技有限公司 | 一种模型分割提高运算速度的方法 |
CN109903162A (zh) * | 2019-03-01 | 2019-06-18 | 山东大学 | 一种加速区块链MCMC随机选择的ReRAM及其工作方法 |
CN110764774A (zh) * | 2019-09-05 | 2020-02-07 | 桂林航天工业学院 | 一种基于dsp平台sift算法硬件加速方法 |
CN111079771A (zh) * | 2019-12-16 | 2020-04-28 | 广东小天才科技有限公司 | 点读图像的特征提取方法、系统、终端设备及存储介质 |
CN111401482A (zh) * | 2020-04-29 | 2020-07-10 | Oppo广东移动通信有限公司 | 特征点匹配方法及装置、设备、存储介质 |
CN111445503A (zh) * | 2020-03-25 | 2020-07-24 | 桂林电子科技大学 | 基于gpu集群上并行编程模型的金字塔互信息图像配准方法 |
CN113486729A (zh) * | 2021-06-15 | 2021-10-08 | 北京道达天际科技有限公司 | 基于gpu的无人机影像特征点提取方法 |
CN113935897A (zh) * | 2020-06-29 | 2022-01-14 | 深圳辉煌耀强科技有限公司 | 细胞图像拼接方法、装置、计算机设备及存储介质 |
CN117437451A (zh) * | 2023-12-21 | 2024-01-23 | 芯瞳半导体技术(山东)有限公司 | 图像匹配方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100027895A1 (en) * | 2006-08-31 | 2010-02-04 | Osaka Prefecture University Public Corporation | Image recognition method, image recognition device, and image recognition program |
CN103345382A (zh) * | 2013-07-15 | 2013-10-09 | 郑州师范学院 | 一种cpu+gpu群核超算系统及sift特征匹配并行计算方法 |
-
2015
- 2015-03-30 CN CN201510160089.2A patent/CN104732221A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100027895A1 (en) * | 2006-08-31 | 2010-02-04 | Osaka Prefecture University Public Corporation | Image recognition method, image recognition device, and image recognition program |
CN103345382A (zh) * | 2013-07-15 | 2013-10-09 | 郑州师范学院 | 一种cpu+gpu群核超算系统及sift特征匹配并行计算方法 |
Non-Patent Citations (3)
Title |
---|
肖汉: "基于CPU+GPU的影像匹配高效能异构并行计算研究", 《中国博士学位论文全文数据库信息科技辑》 * |
肖汉等: "面向OpenCL架构的Harris角点检测算法", 《计算机科学》 * |
马歌等: "基于OpenCL的Prewitt算法的并行实现", 《现代电子技术》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105115511A (zh) * | 2015-07-24 | 2015-12-02 | 浙江工业大学 | 一种面向月面导航的自适应的地标选取方法 |
US10643299B2 (en) | 2016-06-28 | 2020-05-05 | Peking University Shenzhen Graduate School | Method for accelerating a CDVS extraction process based on a GPGPU platform |
WO2018000724A1 (zh) * | 2016-06-28 | 2018-01-04 | 北京大学深圳研究生院 | 基于gpgpu平台的cdvs提取过程加速方法 |
CN107358238A (zh) * | 2017-03-01 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种提取图像特征信息的方法及系统 |
CN108275530A (zh) * | 2018-01-18 | 2018-07-13 | 柯钢 | 一种基于机器学习的电梯安全预警方法 |
CN109522185A (zh) * | 2018-11-19 | 2019-03-26 | 江苏镭博智能科技有限公司 | 一种模型分割提高运算速度的方法 |
CN109903162A (zh) * | 2019-03-01 | 2019-06-18 | 山东大学 | 一种加速区块链MCMC随机选择的ReRAM及其工作方法 |
CN110764774A (zh) * | 2019-09-05 | 2020-02-07 | 桂林航天工业学院 | 一种基于dsp平台sift算法硬件加速方法 |
CN110764774B (zh) * | 2019-09-05 | 2023-03-28 | 桂林航天工业学院 | 一种基于dsp平台sift算法硬件加速方法 |
CN111079771A (zh) * | 2019-12-16 | 2020-04-28 | 广东小天才科技有限公司 | 点读图像的特征提取方法、系统、终端设备及存储介质 |
CN111445503A (zh) * | 2020-03-25 | 2020-07-24 | 桂林电子科技大学 | 基于gpu集群上并行编程模型的金字塔互信息图像配准方法 |
CN111445503B (zh) * | 2020-03-25 | 2023-04-25 | 桂林电子科技大学 | 基于gpu集群上并行编程模型的金字塔互信息图像配准方法 |
CN111401482A (zh) * | 2020-04-29 | 2020-07-10 | Oppo广东移动通信有限公司 | 特征点匹配方法及装置、设备、存储介质 |
CN111401482B (zh) * | 2020-04-29 | 2024-03-19 | Oppo广东移动通信有限公司 | 特征点匹配方法及装置、设备、存储介质 |
CN113935897A (zh) * | 2020-06-29 | 2022-01-14 | 深圳辉煌耀强科技有限公司 | 细胞图像拼接方法、装置、计算机设备及存储介质 |
CN113486729A (zh) * | 2021-06-15 | 2021-10-08 | 北京道达天际科技有限公司 | 基于gpu的无人机影像特征点提取方法 |
CN117437451A (zh) * | 2023-12-21 | 2024-01-23 | 芯瞳半导体技术(山东)有限公司 | 图像匹配方法、装置、设备及存储介质 |
CN117437451B (zh) * | 2023-12-21 | 2024-04-16 | 芯瞳半导体技术(山东)有限公司 | 图像匹配方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104732221A (zh) | 一种基于OpenCL并行加速的SIFT特征匹配方法 | |
CN103345382A (zh) | 一种cpu+gpu群核超算系统及sift特征匹配并行计算方法 | |
Ullah et al. | Benchmarking Jetson platform for 3D point-cloud and hyper-spectral image classification | |
Martinez et al. | Moped: A scalable and low latency object recognition and pose estimation system | |
Banz et al. | Real-time semi-global matching disparity estimation on the GPU | |
WO2019010183A1 (en) | PROCESSOR OF DEEP VISION | |
CN101499168B (zh) | 基于脊线跟踪与海森矩阵的结构光光条中心提取方法 | |
CN205486304U (zh) | 低功耗便携式实时图像目标检测与跟踪装置 | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
Ito et al. | A GPU implementation of dynamic programming for the optimal polygon triangulation | |
CN103617085A (zh) | 一种cpu+gpu协同计算并行框架 | |
CN106991638A (zh) | 一种基于序列影像Harris‑DOG特征提取的多粒度并行优化的方法 | |
CN104615584B (zh) | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 | |
CN104899840A (zh) | 一种基于cuda的引导滤波加速优化方法 | |
Mahmoudi et al. | Multi-CPU/multi-GPU based framework for multimedia processing | |
CN102074003A (zh) | 基于均值漂移的嵌入式图像跟踪系统 | |
CN116434012A (zh) | 一种基于边缘感知的轻量型棉铃检测方法及系统 | |
CN115170381A (zh) | 一种基于深度学习的视觉slam加速系统及方法 | |
Hao et al. | A highly efficient surface defect detection approach for hot rolled strip steel based on deep learning | |
CN113344765B (zh) | 一种频域天文图像目标检测方法及系统 | |
CN105160349A (zh) | 一种基于GPU平台的Haar检测目标算法 | |
Liu et al. | Parallelizing convolutional neural networks on intel many integrated core architecture | |
CN114140502B (zh) | 一种基于嵌入式gpu的图像光流计算方法、装置以及设备 | |
CN102231202B (zh) | 面向向量处理器的sad向量化实现方法 | |
Yun et al. | Low-Power Lane Detection Unit With Sliding-Based Parallel Segment Detection Accelerator for FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150624 |
|
RJ01 | Rejection of invention patent application after publication |