基于GPU的无人机遥感影像快速拼接

2017-03-02 10:36孙和利彭政杰
地理空间信息 2017年2期
关键词:关键点金字塔线程

孙和利,彭政杰,李 娟,陈 镇

(1. 武汉大学 遥感信息工程学院,湖北 武汉430079 ;2. 武汉市黄陂区木兰房产测绘队,湖北 武汉430300 ;3. 武汉市黄陂区木兰房产测绘队,湖北 武汉430300 ;4. 武汉市房产测绘中心,湖北 武汉430015)

基于GPU的无人机遥感影像快速拼接

孙和利1,彭政杰2,李 娟3,陈 镇4

(1. 武汉大学 遥感信息工程学院,湖北 武汉430079 ;2. 武汉市黄陂区木兰房产测绘队,湖北 武汉430300 ;3. 武汉市黄陂区木兰房产测绘队,湖北 武汉430300 ;4. 武汉市房产测绘中心,湖北 武汉430015)

近年来,无人机遥感技术得到较快的发展,无人机遥感技术有着实时性强、灵活性强、低成本以及获取影像分辨率高的特点,在处理应急响应任务时,运用无人机遥感技术,优势极为明显。在无人机进行对地航拍时,所获取的是单张影像,由于像幅的限制,影像并不能覆盖完整的目标区域,相邻的多张影像都有着一定的重叠度,利用重叠区域来将多幅影像依次拼接,获得目标区域的一幅完整影像。随着各种传感器技术的提升,无人机上的相机所获取到的影像的分辨率越来越高,这对影像拼接的速度提出了新的要求。基于无人机遥感影像的特点,采用SIFT算子对无人机遥感影像进行拼接工作,并在CUDA平台下对配准算法进行加速处理,从而提高影像拼接的速度。

无人机遥感;影像拼接;CPU;GPU;CUDA;影像配准

目前,根据无人机遥感技术的研究状况分析来看,无人机遥感影像的像幅较小,需要大量的单幅影像才能完整地覆盖整个研究区域,另外,如果要得到完整的正射影像,需要在拼接的过程中花费大量时间,所以,研究如何提高无人机遥感影像的拼接速度,对于各种灾害的应急响应有着非常重要的意义。

1 无人机遥感影像拼接原理及实现

影像匹配是进行影像拼接的前提,按照提取特征的层次来看,可以分为三大类:基于灰度,基于特征以及基于解译的影像匹配[1]。无人机影像有几个突出特点:很难精确计算相邻两幅影像之间的空间位置关系,各影像之间重叠度大小不一致,旋转角变化没有明显规律,影像特征经常出现断开情况,因此,基于尺度特征提取的影像匹配算法是相对而言最适合无人机遥感影像匹配的[2]。

2004年,LOWE正式提出一种基于尺度空间的、对图像缩放、旋转甚至仿射变换保持不变性的图像局部特征描述算子——SIFT(scale invariant feature transform)算子,即尺度不变特征变换[3]。SIFT 算子有以下几个特点:①特征点是在多尺度空间中提取出来的,因此实际影像在尺度发生变化时,不会影响特征点的提取;②计算特征点描述子的时候,计算了关键点的梯度主方向,因此SIFT算法具有了旋转不变性;③对光照发生变化时并不敏感;④对仿射变换、噪声等也有比较好的抗性。SIFT算子的基本流程是建立尺度空间,得到高斯金字塔影像,然后将相邻高斯影像相减得到高斯差分尺度空间,在高斯差分尺度空间内,将每个点与相邻所有点进行比较,从而得到备选的特征点[1],通过三维二次函数对关键点位置进行精确定位,把一个128维的特征向量作为特征点的描述符,从而提高了匹配的稳健性。

1.2 几何变换模型求解

完成特征点匹配之后,就可以解算出影像之间的几何变换模型。几何变换模型的实质是单应矩阵。解算单应矩阵主要分为两部分,一是解算相对单应矩阵,二是解算绝对单应矩阵。相对单应矩阵是指计算出相邻两幅影像的几何变换模型,绝对单应矩阵是指得到每一幅影像在一个统一的坐标系中的几何变换模型[4]。

2 基于GPU加速影像拼接原理及实现

2.1 CUDA平台下SIFT算法设计

通过对基于SIFT算子的影像匹配算法的分析可知,在建立高斯金字塔影像、关键点探测、关键点主方向计算、相邻两幅影像关键点匹配这几个计算步骤中,数据运算具有高度的并行性,相互之间的数据依赖程度很小,非常适合在CUDA平台下进行并行计算的设计[5-6]。利用CPU-GPU对基于SIFT算子的影像匹配进行异构编程的算法流程如图1所示。

推荐理由:本书从资深国际采购人员视角讲解出口操作,在全球经济环境严峻的当下,给予中国外贸人打破交易瓶颈的解决方案。本书的繁体版《外贸大神的32节客户成交课》登陆香港书展,受到港澳台读者的认可与好评。

由图1可知,在CUDA平台下基于SIFT算子的影像配准主要分为以下几个步骤:

1)将待配准的影像读入到主存中,高斯核函数对应的卷积模板传到GPU端的常数存储器当中,在GPU端利用高斯模板对影像作卷积运算,生成高斯金字塔影像[7]。

2)将得到的高斯金字塔影像数据传回到CPU端,将相邻影像相减,生成高斯差分金字塔影像。继续在CPU端进行极值点的检测,并记录所得到的极值点的坐标以及所在影像的尺度。

图1 CUDA平台下影像配准示意图

3)得到备选的极值点坐标以及尺度信息之后,将这些数据传入到GPU端,通过计算特征点的对比度,删除一些低对比度的点,通过计算特征值比值去删除一些边缘响应点。去除掉这些多余的备选点之后,将剩下的特征点的坐标以及尺度记录下来[8]。

4)在GPU端用另外一个内核函数继续计算选出的关键点的主方向,得到每个关键点的梯度幅值以及方向角度。利用高斯权函数对关键点所在16×16领域的像素梯度信息进行加权运算,绘制成直方图,得到关键点的主方向。

5)将关键点的信息以及主方向参数回传到CPU端,在CPU端计算出关键点的描述子。由于在生成种子点以及特征向量长度归一化计算过程中,存在较多的逻辑运算,数据之间存在较强的依赖性,计算强度也较小,利用GPU进行并行计算,效果并不好。因此关键点的描述子选择在CPU端进行。

6)得到关键点的主方向以及描述子之后,接下来将这些数据传入GPU端,进行特征点的匹配。通过将左影像的关键点的特征向量遍历右影像的关键点,进行特征向量的欧氏距离运算,通过设定阈值,完成特征点的匹配。

CPU以及GPU二者有着各自的计算优势,CPU更擅长逻辑性强的控制运算,GPU擅长高密度的并行运算,另外,由于CPU端与GPU端的数据传输速度较慢,因此,尽量将数据放在两端进行计算,减少二者的数据访问,缩短访问延迟时间。若能充分利用CPU和GPU的计算优势,那么影像拼接的速度就能大大提高。

2.2 GPU端并行计算实现

2.2.1 高斯金字塔影像生成

在CPU端将影像数据读入到内存之后再传入到GPU端的设备存储器中,然后根据影像的分辨率确定并行计算所需要的网格数。利用GPU构建高斯金字塔影像需要设置6个内核函数,用于处理各个计算步骤。每一个内核函数需要分配相应的线程块数以及线程块内的线程数。线程块数以及块内线程数由所需要处理的影像数据的大小来决定。

根据对高斯滤波的特点分析可知,在对影像每个像素进行像素计算的时候,数据之间是相互独立的,因此在进行高斯滤波计算时,可以将构建高斯金字塔的过程分解成一系列彼此独立的卷积运算。卷积运算由两部分组成:乘运算以及加和运算。

对影像进行高斯滤波计算,是分为行、列两个维度进行的,设置两个内核函数来完成行和列的卷积运算。对行和列进行卷积计算的过程是基本一致的,以行为例来说明。首先,将线程网格内的线程块设置成二维,将影像数据分成多个部分映射到各个线程块上,而线程块内的每个线程分别去加权计算每一块影像数据中的每个像素。当每个线程块完成对影像的高斯滤波计算之后,得到了每个像素的卷积值,最后将计算结果组成高斯金字塔影像,并将该影像数据回传到CPU端,用于高斯差分金字塔影像的生成。

2.2.2 关键点精确定位

特征点检测完毕之后,会得到一个特征点的数据集合,该集合是线性结构的,可以通过设置一个内核函数,在每个线程块内开辟512个线程,对特征点数据集合进行并行判断计算,从而确定是否留下该备选点。

2.2.3 关键点匹配

关键点的匹配过程是将左影像的特征点的特征向量与右影像的特征点的特征向量进行欧氏距离运算。一般情况,影像上的特征点数目较多,影像分辨率越高,则数目会更多,同时每个特征向量有128维的数据,因此,如果用传统的串行计算方法,速度会非常慢。根据对算法的分析可知,在进行特征点匹配的过程中,每个特征点之间没有关联,并且欧氏距离运算当中的差的平方计算也是独立的。因此,可以分配线程块来计算对应关键点间的欧氏距离,然后用线程来对应差的平方计算。最后通过三次归约并行计算,得到累加结果,并对该结果进行开平方即可得到左右两幅影像的欧氏距离。

2.3 实验结果与分析

2.3.1 实验环境

软件环境:系统为Windows7,开发环境为Microsoft Visual Studio 2010,opencv 2.4,CUDA版本为5.0;

硬件环境:实验机型为Lenovo E530,处理器为 Intel(R) Core(TM)i5-3210M CPU @2.50 GHz 2.50 GHz,内存为4.00 GB,64位操作系统,显卡为NVIDIA GeForce GT 635M显存为1 GB。

2.3.2 实验结果

实验一 通过不同大小的影像进行特征点提取以及特征匹配,将串行处理的计算结果与利用GPU加速后的结果进行对比,得到的数据如表1所示。

表1 不同大小的影像配准串并行计算对比

实验二 将三条航带共30张无人机影像分别在CPU端和CUDA平台进行拼接(编号分别为 IMG_4903-IMG_4912,IMG_4966-IMG_4975,IMG_5027-IMG_5036),将串行拼接结果和利用CUDA平台加速后的结果进行对比,得到的数据如表2所示。

表2 不同平台下影像拼接耗时对比

2.3.3 实验分析

通过实验一可知,当影像像素较少时,串行计算和并行计算速度相差不大,但随着影像像素的增加,经过GPU加速后的影像配准算法,速度有了明显的提升,而且影像像素越多,所得到的加速效果也更加明显。如今的无人机遥感影像的分辨率已经越来越高,需要处理的数据量也越来越大,而由实验数据可知,当遥感影像的数据量足够大的时候,仅仅是CPU端的串行处理,速度已经非常缓慢,而经过GPU加速后,速度有了明显的提升,因此,可以得出结论,当需要处理的遥感影像数据越大的时候,GPU加速的效果就会更好。当影像像素较少的时候,CPU和GPU对影像拼接的速度相差并不是十分大,这是因为CPU端和GPU端进行数据传输会耗费一定量的时间,但是当数据量增大时,进行配准所耗费的时间逐步占据主导地位,因此,当数据量增大到一定程度时,通过CPU和GPU协同合作,可以有效提高对无人机遥感影像的配准速度。

通过实验二可以看出,经过GPU加速后的无人机遥感影像拼接,时间上有了明显的缩短。结合实验一,随着影像像素增加,对比串行处理和并行处理可知,利用GPU加速后的影像拼接所消耗的时间大大减少。

3 结 语

通过GPU的无人机遥感影像快速拼接技术,详细介绍了无人机遥感影像拼接过程所需要的理论基础,并在CPU端实现了无人机遥感影像的拼接,阐述了利用GPU对影像拼接过程中配准算法的加速原理,在CUDA平台下,进行CPU-GPU异构编程,实现配准算法的加速,从而加速无人机遥感影像拼接。

[1] 张春美.特征点提取及其在影像匹配中的应用研究[D].郑州:解放军测绘学院,2008:4-7

[2] LOWE D G. Distinctive Image Features from Scale-invariant Keypoints[J].International Journal of Computer Vision, 2004,2(60): 91-110

[3] ZHANG Yongjun. Photogrammetric Processing of Low Altitude Image Sequences by Unmanned Airship[C].The International Archives of the Photogrammetry,Remote Sensing and Spatial Information Science,Beijing,2008:751-757

[4] 王勃.基于特征的无人机影像自动拼接技术研究[D].郑州:解放军测绘学院,2011

[5] HSU G S,LIN C Y ,WU J S.Real-time 3-D object Recognition Using Scale Invariant Feature Transform and Stereo vision [C].4th International Conference on Autonomous Robots and Agents,2009

[6] 苏丽丽.基于CPU-GPU集群的分子动力学并行计算研究[D].大连:大连理工大学,2009

[7] KIM J,PARDK E,CUI Xuenan,et al.A Fast Feature Extraction in Object Recognition Using Parallel Processing on CPU and GPU[C]//IEEE International Conference on Systems, Man and Cybernetics,2009

[8] WARN S,EMENEKER W,COTHREN J,et al.Aceelerating SIFT on Parallel Architectures[C].IEEE International Conference on Cluster Computing and Workshops.2009

P237

B

1672-4623(2017)02-0009-03

10.3969/j.issn.1672-4623.2017.02.003

2016-09-27。

项目来源:国家自然科学基金资助项目(41101417)。

孙和利,副教授,研究方向为摄影测量与遥感。

猜你喜欢
关键点金字塔线程
“金字塔”
聚焦金属关键点
肉兔育肥抓好七个关键点
A Study of the Pit-Aided Construction of Egyptian Pyramids
基于国产化环境的线程池模型研究与实现
海上有座“金字塔”
神秘金字塔
浅谈linux多线程协作
医联体要把握三个关键点
线程池技术在B/S网络管理软件架构中的应用