基于cuda的大幅面遥感影像快速分割方法

文档序号:10570717阅读:639来源:国知局
基于cuda的大幅面遥感影像快速分割方法
【专利摘要】本发明公开了一种基于CUDA的大幅面遥感影像快速分割方法,该方法以“按像元处理”的并行策略设计了三个高效的GPU核函数,实现了并行化的分形网络分割方法,很大程度地提高了分割效率,同时针对大幅面遥感影像采取了“分块分割?快速合并结果”的分割策略,解决了影像数据量过大而导致的显存不足的问题。相比现有遥感影像分割技术,本发明无论在分割效果、分割效率上均达到了较高的水准,尤其是针对大幅面遥感影像分割,本发明的效率优势更为明显而且稳定性更好,同时对计算机硬件条件要求不高,实用性强,有利于推广使用。
【专利说明】
基于CUDA的大幅面遥感影像快速分割方法
技术领域
[0001] 本发明涉及遥感影像分割技术,尤其涉及一种基于CUDA的大幅面遥感影像快速分 割方法。
【背景技术】
[0002] 面向对象的遥感影像分析方法是针对高分辨率遥感影像自动化信息提取中被广 泛使用的方法,其在国土资源管理、水土流失监测、城市规划等应用领域发挥着重要作用。 影像分割是面向对象遥感影像分析的重要步骤,它将影像划分为一系列互不重合、内部像 素属性一致、具有一定实体意义的对象。影像分割效果的好坏对面向对象遥感影像信息提 取的精度有很大的影像。
[0003] 为了适应不同的需求,研究人员发展了大量的影像分割方法。然而在目前所发展 的影像分割方法中,很难保证同一方法在同一分割参数中对所有地物进行正确分割,因此 基于多尺度多层次的对象分析成为了当前面向对象信息提取的主流方法。由Baatz和 Schape提出分形网络演化方法作为一种成熟的分割方法,其结合了对象的光谱特征和形状 特征,分割精度高,同时易于输出不同尺度的分割结果,而且不同尺度间上下层次关系清晰 明确,因此该方法在多尺度分析中相比其他方法中具有独特的优势因而得到了广泛应用。
[0004] 分形网络演化方法的缺点是运算量较大,运行效率低下。随着IKONCKQuickbird、 GeoEye,以及国产高分1号、高分2号等高分辨率观测卫星陆续发射以及传感器技术的提升, 遥感影像在空间分辨率和时间分辨率不断提高。随之而来的是遥感影像数据量急剧增长, 这给运算量本身较大的影像分割算法效率带来极大的挑战。在这个背景下,如何有效改进 影像分割算法效率已成为迫切需要解决的问题。
[0005] 在另一方面,多核CHJ与GHJ作为现有计算机中所配置的两种最常见的并行处理 器,成为了当前单机系统高性能计算中能够被开发的最主要的计算资源。其中GPU目前在计 算性能、核心数目等方面发展极为迅速,远远超过多核CHJ的发展速度。在金融、工程、科学 计算等领域,GPU并行计算得到了广泛应用。而且统一计算架构(compute unified device architecture,CUDA的出现大大提高了GPU的可编程特性,降低了开发成本,许多遥感领域 工作者开始尝试GPU并行计算来提高影像处理效率。而影像分割方法作为一类运算密集型 的任务,对其进行并行化设计具有很大可行性,可以充分发挥GPU大规模并行计算的优势。

【发明内容】

[0006] 本发明要解决的技术问题在于针对现有技术中大幅面遥感影像分割方法运行效 率过低的缺陷,提供一种基于CUDA的大幅面遥感影像快速分割方法。
[0007] 本发明解决其技术问题所采用的技术方案是:一种基于CUDA的大幅面遥感影像快 速分割方法,包括以下步骤:
[0008] 1)对输入的大幅面遥感影像进行分块处理获得影像子块,所述分块处理的分块大 小以及分块数量根据当前显卡可用显存容量以及影像数据量计算;
[0009] 2)采用基于CUDA的并行分割算法依次对各个影像子块进行分割;
[0010] 2.1)为影像子块中的每个像元分配内存空间,所述内存空间用于记录像元以及其 所属分割对象的必要信息以满足运算需求;所述必要信息包括:像元所属对象的ID;像元是 否在所属对象的边缘上;像元所属对象的光谱信息,包括各波段的均值、方差;像元所属对 象的形状信息,包括对象面积、周长以及外包矩形区域;异质度最小的相邻对象ID以及异质 度值;
[0011] 2.2)分割对象初始化,将每一个像元看作是一个初始分割对象,初始化对象的属 性信息;所述对象的属性信息包括:对象的属性信息包括对象各个波段的光谱属性信息以 及形状属性信息;
[0012] 2 ? 3)计算相邻对象异质度:
[0013]局部运算部分:取待处理像元,首先搜索相邻对象,以线程所处理像元的"上下左 右"四邻域进行搜索,若邻域对象ID与当前像元所属对象ID不相同,则说明找到相邻对象, 接下来根据两对象的属性信息计算其异质度,最后将相邻对象中与当前对象异质度最小的 对象ID以及其异质度值保存在GPU共享内存中。这里需要说明的是,搜索相邻对象是在对象 边缘上的像元中进行的,如果不在对象边界上面,则该像元的"上下左右"四个相邻区域肯 定与其属于同一个分割对象,因而搜索不到相邻对象。因此,若线程处理的像元不在对象的 边缘上,该线程将会直接结束。局部运算完成之后,调用jyncthreads ()函数使得各个线程 计算结果同步。
[0014] 全局运算部分:该部分基于局部运算的结果,将对象边缘中每一个像元的计算结 果进行比较,得到对象最小异质度的相邻对象及其异质度值;
[0015] 2.4)合并异质度小于阈值的相邻对象并计算新对象的属性信息;然后,跳转到步 骤2.3);
[0016] 在内存中记录了每一个像元所属对象的ID值,若两相邻对象间异质度小于阈值, 则将其中ID值较大的对象ID更新为ID值较小的对象的ID,这里的阈值是根据用户经验设定 的。
[0017] 2.5)若步骤2.4)中没有新对象合并,则当前影像子块分割运算完成;
[0018] 3)对影像子块拼接处的分割对象进行重新分割,消除影像分块而导致的拼接线; 具体如下:
[0019]将分块拼接线处的对象所包含的像元进行掩膜处理,利用步骤2)中的并行分割算 法以掩膜影像作为输入参数进行掩膜分割。
[0020]按上述方案,所述步骤1)中采用按行均匀的数据分块方式对输入的大幅面遥感影 像进行分块处理。
[0021 ] 按上述方案,所述步骤2.2)通过应用1]1;[1:13112601^6(^8核函数实现。
[0022] 按上述方案,所述步骤2.3)通过应用0&1〇11]^丨6116丨61'核函数实现.
[0023] 按上述方案,所述步骤2.3)中局部运算部分完成之后,调用jyncthreads函数使 得各个线程计算结果同步。
[0024] 按上述方案,所述步骤2.4)通过应用|/[6坪6013」6(^8核函数来实现。
[0025]本发明产生的有益效果是:本发明方法对大幅面影像采取了分块策略,充分利用 了系统资源,而高效的分块结果合并策略保证了分块分割结果的正确性,同时不会对整体 分割效率带来过大的影响。因此本发明针对大幅面遥感影像分割方法运行效率相比传统串 行方法具有绝对优势。
【附图说明】
[0026] 下面将结合附图及实施例对本发明作进一步说明,附图中:
[0027] 图1是本发明实施例的方法流程图;
[0028] 图2是本发明实施例方法对影像分块示意图。
[0029] 图3是本发明实施例并行分割算法流程图。
[0030] 图4是本发明实施例分割算法内存分配示意图。
[0031] 图5是本发明实施例分割过程中影像对象ID示意图。
[0032] 图6是本发明实施例方法影像分块拼接线消除示意图。
[0033] 图7是本发明实施例方法的性能测试结果。
【具体实施方式】
[0034]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明 进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限 定本发明。
[0035] 如图1所示,本发明所述的基于CUDA的大幅面遥感影像分割方法,其包括以下步 骤:
[0036] 步骤1:对输入的大幅面遥感影像进行分块处理,如图2所示,为了便于影像数据读 取以及分块处理结果的合并,采用按行均匀的数据分块方式。根据当前显卡可用显存容量 以及影像数据量计算分块大小以及分块数量。
[0037]设原始影像的大小为WXH,系统当前可用显存为a,每个像元在分割运算中所占用 字节为P。其中P是根据影像像元类型以及分割所用的对象属性特征而确定的。若其满足下 式条件时,需要对输入影像进行分块处理。
[0038] W ? H ? p^;a
[0039]按照按行均匀的数据分块方式,设影像子块的列数、行数分别为w、h,其应当满足 下式条件: (w = W
[0040] ^ 7
[h7*/?- p<a
[0041] 影像子块的列数是确定的,接下来需要计算其行数。设分块数目为n,前n-1个影像 子块行数为ho,最后一个影像子块行数为hi,其计算方法如下式: /?0.=.卜/.(柃'川
[0042] < h、= H ht、 ?4(好-輯〇」+1
[0043] 步骤2:采用基于CUDA的并行分割算法依次对各个影像子块进行分割。如图3所示, 本发明提供的并行分割算法需要三个不同的GHJ核函数相互配合,为了充分利用GPU大规模 并行计算的特性,核函数为影像子块的每一个像元分配一个单独的线程进行处理,每个核 函数具体特征将会在后续步骤中介绍。并行算法主要通过如下几个步骤来实现:
[0044] 2a)分配显存和计算资源,如图4所示,为影像子块中的每个像元分配内存空间,记 录像元以及其所属分割对象的必要信息以满足运算需求。分割对象是影像中相似像元的聚 合而形成的具有一定实体意义的对象,比如建筑物、道路等;
[0045] 其信息包括:1.像元所属对象的ID; 2.像元是否在所属分割对象的边缘上;
[0046] 3.像元所属对象的光谱信息,包括各波段的均值、方差;4.像元所属对象的形状信 息,包括对象面积、周长以及外包矩形区域;5.异质度最小的相邻对象ID以及异质度值。 [0047] 2b)分割对象初始化,这一步通过Initial izeObject s核函数实现,将每一个像元 看作是一个初始分割对象,初始化对象的属性信息。开始时一个像元就是一个分割对象,然 后逐层合并相似的对象,得到最终分割结果;对象的属性信息包括对象各个波段的光谱属 性信息(均值、方差)、以及形状属性信息(对象面积、外包矩形区域)
[0048] 2c)计算相邻对象异质度,这一步通过CalculateHeter核函数实现,其分为局部运 算和全局运算两个部分。
[0049] 局部运算部分:首先搜索相邻对象,以线程所处理像元的"上下左右"四邻域搜索 进行的,若邻域对象ID与当前像元所属对象ID不相同,则说明找到相邻对象,接下来根据两 对象的属性信息计算其异质度,最后将相邻对象中与当前对象异质度最小的对象ID以及其 异质度值保存在GPU共享内存中。这里需要说明的是,搜索相邻对象是在对象边缘上的像元 中进行的,因此,若线程处理的像元不在对象的边缘上,该线程将会直接结束。局部运算完 成之后,调用jyncthreads ()函数使得各个线程计算结果同步。
[0050] 全局运算部分:该部分基于局部运算的结果,将对象边缘中每一个像元的计算结 果进行比较,得到对象最小异质度的相邻对象及其异质度值。其具体做法是将共享内存中 的局部运算结果与全局内存中对应的值进行对比,如果共享内存中异质度小于全局内存的 异质度,则将全局内存的异质度替换为局部内存的异质度,同时更新其相邻对象的ID值。为 了避免写操作的冲突,这一部分的运算是在线程的临界区中进行,即采用CUDA原子操作技 术进行数据比较以及改值的操作,使得全局内存中数据的更改同一时刻只能在一个线程中 进行。
[0051] 2d)合并异质度小于阈值的相邻对象并计算新对象的属性信息,这一步通过 MergeObjects核函数来实现。为了便于计算,规定将ID值更大的对象合并到ID较小的对象 中去,如图5所示,这样每一个对象的ID与对象像元在影像子块中最小索引值相一致。如果 当前线程处理像元的索引与对象ID相同(图5中绿色像元),则还需要计算合并后对象的属 性信息,并在全局内存中进行更新。
[0052] 2e)判断前面步骤中是否有新对象合并,若没有,则当前影像子块分割运算完成, 否则回到步骤2c。
[0053]步骤3:对影像子块拼接处的分割对象进行重新分割,用以消除影像分块而导致的 拼接线,保证分割结果的正确性(如图6所示)。该步骤将分块拼接线处的对象所包含的像元 进行掩膜处理,利用步骤2中的并行分割算法进行掩膜分割,与步骤2不同,该步骤增加掩膜 影像作为输入参数,只处理掩膜部分的像元。
[0054] 本发明相比传统串行算法的性能提升效果如图7所示,测试平台为:
[0055] Intel Core I7CPU,4GB;NVIDIA GeForce GTX770,4GB,1294个CUDA核心数。
[0056] 从测试结果中可以看出,影像幅面越大越能发挥并行计算的优势,加速比也越高。 本发明所采用的测试数据在不同分割尺度下加速比最高可以57。在更大幅面的影像分割 中,传统串行算法的性能开始急剧下降,这是由于对象属性信息需要占用大量内存空间,需 要将数据缓存在计算机硬盘中,从而导致分割过程中频繁地进行内存I/O造成庞大的额外 开销,而本发明对大幅面影像采取了分块策略,充分利用了系统资源,而高效的分块结果合 并策略保证了分块分割结果的正确性,同时不会对整体分割效率带来过大的影响。因此本 发明针对大幅面遥感影像分割方法运行效率相比传统串行方法具有绝对优势。
[0057] 应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换, 而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【主权项】
1. 一种基于CUDA的大幅面遥感影像快速分割方法,其特征在于,包括以下步骤: 1) 对输入的大幅面遥感影像进行分块处理获得影像子块,所述分块处理的分块大小以 及分块数量根据当前显卡可用显存容量以及影像数据量计算; 2) 采用基于CUDA的并行分割算法依次对各个影像子块进行分割; 2.1) 为影像子块中的每个像元分配内存空间,所述内存空间用于记录像元以及其所属 分割对象的必要信息以满足运算需求;所述必要信息包括:像元所属对象的ID;像元是否在 所属对象的边缘上;像元所属对象的光谱信息,包括各波段的均值、方差;像元所属对象的 形状信息,包括对象面积、周长以及外包矩形区域;异质度最小的相邻对象ID以及异质度 值; 2.2) 分割对象初始化:将每一个像元看作是一个初始分割对象,初始化对象的属性信 息;所述对象的属性信息包括:对象的属性信息包括对象各个波段的光谱属性信息以及形 状属性信息; 2.3) 计算相邻对象异质度: 局部运算部分:取待处理像元,首先搜索相邻对象,以线程所处理像元的"上下左右"四 邻域进行搜索,若邻域对象ID与当前像元所属对象ID不相同,则说明找到相邻对象,接下来 根据两对象的属性信息计算其异质度,最后将相邻对象中与当前对象异质度最小的对象ID 以及其异质度值保存在GHJ共享内存中; 全局运算部分:基于局部运算的结果,将对象边缘中每一个像元的计算结果进行比较, 得到对象最小异质度的相邻对象及其异质度值; 2.4) 合并异质度小于阈值的相邻对象并计算新对象的属性信息;然后,跳转到步骤 2.3); 2.5) 若步骤2.4)中没有新对象合并,则当前影像子块分割运算完成; 3) 对影像子块拼接处的分割对象进行重新分割,消除影像分块而导致的拼接线;具体 如下: 将分块拼接线处的对象所包含的像元进行掩膜处理,利用步骤2)中的并行分割算法以 掩膜影像作为输入参数进行掩膜分割。2. 根据权利要求1所述的大幅面遥感影像快速分割方法,其特征在于,所述步骤1)中采 用按行均匀的数据分块方式对输入的大幅面遥感影像进行分块处理。3. 根据权利要求1所述的大幅面遥感影像快速分割方法,其特征在于,所述步骤2.2)通 过应用InitializeObjects核函数实现。4. 根据权利要求1所述的大幅面遥感影像快速分割方法,其特征在于,所述步骤2.3)通 过应用CalculateHeter核函数实现。5. 根据权利要求1所述的大幅面遥感影像快速分割方法,其特征在于,所述步骤2.3)中 局部运算部分完成之后,调用_syncth readS函数使得各个线程计算结果同步。6. 根据权利要求1所述的大幅面遥感影像快速分割方法,其特征在于,所述步骤2.4)通 过应用MergeObjects核函数来实现。
【文档编号】G06T7/00GK105931256SQ201610390844
【公开日】2016年9月7日
【申请日】2016年6月3日
【发明人】王晓威, 刘修国, 陈启浩
【申请人】中国地质大学(武汉)
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1