预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于OpenCL的尺度不变特征变换算法的并行设计与论文 针对尺度不变特征变换(SIFT)算法实时性差的问题,提出了利用开放式计算语言(OpenCL)并行优化的SIFT算法。首先,通过对原算法各步骤进行组合拆分、重构特征点在内存中的数据索引等方式对原算法进行并行化重构,使得计算机网络算法的中间计算结果能够完全在显存中完成交互;然后,采用复用全局内存对象、共享局部内存、优化内存读取等策略对原算法各步骤进行并行设计,提高数据读取效率,降低传输延时;最后,利用OpenCL语言在图形处理单元(GPU)上实现了SIFT算法的细粒度并行加速,并在中央处理器(CPU)上完成了移植。与原SIFT算法配准效果相近时,并行化的算法在GPU和CPU平台上特征提取速度分别提升了10.51~19.33和2.34~4.74倍。实验结果表明,利用OpenCL并行加速的SIFT算法能够有效提高图像配准的实时性,并能克服统一计算设备架构(CUDA)因移植困难而不能充分利用异构系统中多种计算核心的缺点。0引言以尺度不变特征变换(ScaleInvariantFeatureTransform,SIFT)算法[1]为代表的基于特征的图像匹配方法近几年发展迅速,该算法对光照、角度或尺度变化的图像都有较好的匹配精度和适应性,但实时性差。为了提高实时性,在此基础上又衍生出了主成分分析(PrincipalComponentAnalysis,PCA)SIFT[2]、快速鲁棒特征(SpeedUpRobustFeature,SURF)检测[3]等改进算法。这些改进的算法尽管在速度方面有所提升,但实时性仍然不能满足实际应用要求且在抗尺度和抗旋转方面性能都有不同程度的下降,因此仍无法取代经典的SIFT算法[4]。近年来随着图形处理器(GraphicsProcessingUnit,GPU)计算能力的不断提升,利用GPU天然硬件并行的特性来加速非图形通用大规模运算逐渐受到人们的青睐,目前较为成熟并得到广泛应用的GPU并行编程模型为英伟达(NVIDIA)公司开发的统一计算设备架构(ComputeUnifiedDeviceArchitecture,CUDA)模型。文献[5-7]利用CUDA实现了SIFT算法关键步骤的GPU并行加速,取得了一定的加速效果。文献[8-9]在移动GPU平台上利用开放式计算语言(OpenComputingLanguage,OpenCL)实现了SIFT算法的并行加速,相对于移动中央处理器(CentralProcessingUnit,CPU)取得了4.6~7.8倍的加速效果。另外,完成同样的计算,GPU比CPU的功耗低87%,即利用OpenCL实现的GPU并行运算相对于传统的CPU具有更高的性能功耗比,但以上方法大多采用步骤分离的优化,没能充分利用GPU全局内存以及算法各步骤的中间计算结果,加速效果受显存带宽的制约。另外利用CUDA实现的算法只适用于NVIDIA显卡,移植困难,而目前的计算机系统大多是“CPU+协处理器”的异构系统[10],这使得CUDA无法充分利用异构系统中不同类型的计算核心。具有跨平台特性的开放式并行编程语言OpenCL的出现为解决此问题提供了契机,利用OpenCL设计的并行算法能够在CPU+(GPU、数字信号处理器(DigitalSignalProcessor,DSP)、现场可编程门阵列(FieldProgrammableGateArray,FPGA)等异构系统间移植[11-12],该特性使得经OpenCL优化的算法能够摆脱对硬件平台的依赖。自2010年OpenCL1.1发布以来,对OpenCL技术的应用研究逐渐兴起。陈钢等[13]对OpenCL内存操作作了深入的分析;Yan等[14]利用OpenCL实现了SURF算法的并行加速。OpenCL编程相比CUDA更为复杂[15],在软件开发方面也面临更多的挑战和困难,目前在PC平台上还没有利用OpenCL并行优化的SIFT算法出现。针对以上问题,本文对SIFT算法步骤及数据索引方式进行重构,提高其并行度,然后通过优化内存读取、合理利用OpenCL内存层次等策略对该算法进一步优化,在NVIDIAGPU平台上实现了SIFT特征的快速提取。为研究OpenCL的可移植性,将优化的GPU版本移植到Intel双核CPU平台上,实验表明优化后的算法在两种计算平台上的实时性都有一定提升。1SIFT特征提取算法流程SIFT算法最早由Lowe[1]在1999年提出并于2004年完善,由于其良好的匹配特性,目前已得到广泛研究与应用。SIFT特征点提取实质是在不同尺度空间上查找关键点(特征点),算法基本步骤如下。1)尺度空间构建。2)高斯差分金字塔空间构建。3)DOG空间极值点检测。DOG空间极值点检测就是将DOG图像中每个像素