CUDA架构下高光谱图像光谱匹配的快速实现
- 格式:pdf
- 大小:780.97 KB
- 文档页数:5
何国经等: CUDA 架构下高光谱图像光谱匹配的快速实现
· 5·
thread 。数个 thread 可以组成一个 block。一个 block 中的 thread 能存取同一块共享的内存( shared memory ) , 而且可以快速进行同步的动作。 每一个 block 所能包含的 thread 数目是有限的。不过,执行相同 程序 的 block, 可 以 组 成 grid。 不 同 block 中 的 thread 无法存取同一块共享内存 。 一般的图形显卡,如 GeForce 系列和 GTX 系 列都有 1 ~ 30 个 SM ( Streaming Multiprocessors,流 式多元处理器 ) 用来执行并行计算功能,每个 SM 可以看成包含 8 个 SP( Streaming Processor,流式处 理器) 。CUDA 利用多个 SM 间的粗粒度任务级或 数据级并行,以及 SM 内的细粒度数据并行实现同
L
d r ( x, y) =
( xi ∑ i =1
L
珋 珋 -x ) ( yi - y )
L
槡
( xi ∑ i =1
珋 -x )2
槡
( yi ∑ i =1
珋 -y )2 ( 3)
该方法将参考光谱向量和待测光谱向量看做 两个随机向量,通过计算两者之间的相关系数来 实现光谱匹配,相关系数越大,光谱相似性越高。
0
引
言
数据,能够采集 200 或更多波段的数据,这就为场 景中的每一个像素点提供了连续的光谱,相比于 传统的遥感手段所能获取的形状和亮度等信息, 光谱数据具有更高的目标探测与识别能力,同时 具有更强的抗干扰能力和伪装识别能力
[1 - 2 ]
高光谱遥感起源于 20 世纪 70 年代初的多光 谱遥感,它可以在许多很窄的毗边光谱波段获取
2011 年 第 4 期 2011 年8 月
航空兵器 AERO WEAPONRY
2011 No. 4 Aug. 2011
CUDA 架构下高光谱图像光谱匹配的快速实现
何国经,刘德连,张建奇
( 西安电子科技大学技术物理学院 ,西安 710071 )
要: 针对高光谱图像数据量大,光谱匹配计算耗时长的缺点,提出一种 CUDA 架构下的 高光谱图像光谱匹配快速实现方法 。首先,在分析高光谱图像特点的基础上,介绍高光谱图像光 摘 谱匹配的一般方法; 其次,介绍 CUDA 架构及其特点,依据 CUDA 架构的特点,将通常的高光谱 图像存储格式进行重新组织,并将参考光谱存储在共享内存中,以达到快速访问的目的; 最后, 将光谱匹配算法中的欧氏距离匹配法 、光谱夹角匹配法、光谱相关系数匹配法在 CUDA 架构下进 行实现。将该方法应用于实际的高光谱图像光谱匹配中,可极大地提高传统 CPU 计算的运算效率。 关键词: 高光谱; 匹配; CUDA; GPU 中图分类号: TP79 文献标识码: A 文章编号: 1673 - 5048 ( 2011 ) 04 - 0003 - 04
Abstract: To overcome the drawback of time consuming of spectral matching caused by the large volume of data in hyperspectral image, a new high speed approach based on CUDA is presented. Firstly, the traditional spectral matching approaches are introduced based on the analysis of the characteristic of hyperspectral image. Secondly,the framework and the characteristics of CUDA are briefly discussed. According to the characteristics of CUDA,the general storage format of hyperspectral image is reorganized, and the reference spectrum is stored in shared memory to accelerate the data accessing. Finally,the spectral matching approaches of Euclid distance, spectral angle map, and spectral correlation are implemented in CUDA. This proposed approach can highly improve the efficiency of CPU calculation. Key words: hyperspectral; matching; CUDA; GPU
槡
xi ∑ i =1
- yi( 1)来自1高光谱图像的光谱匹配算法
高光谱图像既含有场景的空间分布信息又含 有场景的光谱信息,组成一个具有三维结构的数 据立方体。一般的高光谱图像都具有数百个波段 的光谱数据,每个波段的分辨率可达 10 nm 左右。 下图是 AVIRIS
[15 ]
高光谱图像的示意图。
该方法通过度量参考光谱向量和待测光谱向 量之间的夹角,来实现光谱匹配。光谱夹角越小, 两者的相似性越高。该方法是光谱匹配算法中常 用的一种。 此外,还出现了光谱相关系数匹配法:
High Speed Spectral Matching Approach for Hyperspectral Image Based on CUDA
HE Guojing,LIU Delian,ZHANG Jianqi
( School of Technical Physics,Xidian University,Xi’ an 710071 ,China)
2
基于 CUDA 的高光谱图像光谱匹配算法
CUDA ( Compute Unified Device Architecture,统
一计算架构) 是由显卡制造商 NVIDIA 开发,用于 在 GPU 上进行通用计算的开发平台。它是一个全 新的软硬件架构,可以将 GPU 视为一个并行数据 计算的设备,对所进行的计算进行分配和管理,以 达到快速计算的目的。 在 CUDA 编程中,可以通过扩展的 C 语言在 GPU 上进行程序设计。CUDA 编程模型中将编程对 象分为主机端( CPU 端 ) 和设备端 ( GPU 端 ) ,分别 指在 CPU 上运行的程序和在 GPU 上运行的程序。 在 CUDA 架构下,显示芯片执行时的最小单位是
图1 高光谱成像
场景光线在进入成像光谱仪之后,可在 0. 4 ~ 2. 5 μm 的波段上成像,波段间隔 10 nm,成像数据 迭加在一起,就构成了高光谱图像。当然,也有其 他类型的成像光谱仪,在其他的波段上响应场景 辐射,其数据形式与此类似。 众所周知,地物目标的光谱特性是地面目标 物理属性的反应。由于光照条件、大气效应以及成 像系统的影响,在实际的高光谱图像中也会出现 “同物异谱” “异物同谱 ” 和 的现象,但是地面目标 的光谱仍然是迄今为止地物目标之间相互区分的 [16 - 17 ] 。针对高光谱图像的光谱维 最有利指标之一 数据,出现了很多光谱匹配算法,通过比较实际光
。高光
谱图像的光谱匹配算法作为高光谱图像处理中的 经典方法
[3 - 4 ]
,在军事目标的侦察与监视[5 - 6],病 ,灾害的预控[9] 等方面都有广泛
虫害的监测
[7 - 8 ]
的应用。众所周知,高光谱图像的一个突出特点就
· 4·
航空兵器 2011 年第 4 期
是该图像的数据量大,包含的信息多,由此导致算 法的运行速度慢、耗时长,严重制约了光谱匹配算 法的实时实现。近些年,特别是 2006 年之后,以 GPU 为架构的并行计算得到迅猛发展,目前已经 、大气辐射传输计算[12]、 [13 ] [14 ] 图像编码 以及光纤通信 等领域得到应用,显 在医学成像 与分割 著地提高了传统算法处理的效率,在国内外掀起 了一场以 GPU 为基础的并行算法设计热潮。鉴于 此,本文借助并行计算的最新研究成果 ,对光谱匹 配算法进行并行化设计,并将之在 GPU 上进行实 现,从而达到快速计算的目的。
收稿日期: 2011 - 04 - 25 基金项目: 航空科学基金( 20090181004 ) ; 中央高校基本科 K50510050003 ) 资助 研业务费( K50510050002 , 作者简介: 何国经 ( 1978 - ) , 男, 广西玉林人, 博士, 副教 授, 主要研究方向为光电成像系统性能评估 、 高性能计算。
[10 ] [11 ]
谱和参考光谱的相似程度来检测目标。其中最常 用的光谱匹配算法有欧氏距离匹配法、光谱夹角 匹配法和光谱相关系数匹配法 。欧氏距离匹 配法是光谱匹配方法中最简单最常用的方法,通 过计算待测光谱与参考光谱的欧氏距离来实现光 谱匹配。
L [18 - 19 ]
d E ( x, y) =
其中: x 为当前待测像素的光谱向量; y 为参考光 谱向量; L 为光谱的波段数。欧氏距离越远,两者 相似性就越差。 然而,实际的高光谱图像中同一种物质在不 同强度的光照条件下,会发生光谱的上下平移,此 时,同一种物质的光谱之间也会有很大的欧氏距 离。 为了克服光谱上下平移的问题,便出现了光 谱夹角匹配算法( spectral angle map,SAM) : d SAM ( x, y) = arccos xT y ‖x‖‖y‖ ( 2)
中,一个 block 经常有很多个 thread ( 如 256 个 ) , 远超过一个 SM 所拥有的 SP 数目。实际上,虽然 一个 SM 只有 8 个 SP,但是由于 SM 在进行各种运 算时都有等待时间,而内存存取的等待时间更长。 为了隐藏这些时间,CUDA 在执行程序的时候,是 成组的 thread 一起运行的,这些 thread 以 warp 为 单位。目前的 CUDA 装置,一个 warp 里面有 32 个 thread,分成两组各 16 个 thread 的 half - warp,也 就是说,一次至少执行 16 个 thread( 即 half - warp) 才能有效隐藏各种运算的等待时间 。 对于高光谱图像,既具有场景的空间分布信 息也具有光谱信息,是一个具有三维结构的数据 立方体,如图 2 所示。图中,X 和 Y 代表二维空间 维,λ 代表光谱维。由于计算机的内存是线性,这 种数据立方体必须转化为线性的,才能进行存储。 通常情况下,高光谱图像的数据存储采用的是向 x0, …, x0, …, 量互相连接的方式,即 x0, 0, 0, 0, 1, 0, L -1, x M - 1, x M - 1, x M - 1, N, L N - 1, 0, N - 1, 1 ,… , N - 1, L - 1 ,其中 M , 分别表示高光谱图像的高度、宽度和光谱维数。由 CUDA 程序在执行时是以 wrap 为 前面的论述可知, 单位执行的,一次读取数据时是 16 个 thread 同时 读取数据。但是,在 CUDA 架构下,这种读取需要 对应的数据是对齐的,所谓对齐是指第 1 个 thread 对应显存中的第一个数,第二个 thread 对应与之 相连的第二个数,以此类推。否则,这组 thread 的 数据读取就需要执行多次才能完成,而不是一次, 由此导致效率大幅度降低。本文设计的 CUDA 程 序在执行时每个像素的欧氏距离、光谱夹角、光谱 相关系数是由一个 thread 计算完成。当该 thread 读 取第一维数据时,与之在一个 wrap 中的其他 15 个