大幅面遥感影像多尺度分割与尺度转换-初探

概述

首先谴责某无良网站盗用本文的内容,同时还删除关键性的论文信息、联系方式等。

本篇博文介绍最近刚接收的一个工作,发表在IEEE Transactions on Geoscience and Remote Sensing上面,有兴趣的可以去读原文:A Bi-level Scale-sets Model for Hierarchical Representation of Large Remote Sensing Images,该工作是尺度集应用于大幅面遥感影像处理的初探,取得了一点基础成果,在此做下宣传,也希望有人能够参与共同推进!

面向对象的影像分析方法是当前高分遥感影像解译的主流方法,而影像分割是这一方法的基础。由于遥感影像中地物的多样性,影像分割需要的尺度也各不相同。因此多尺度分割方法是面向对象影像解译中常用的方法,并且,针对不同类型地物分析的需求,还需要调整分割尺度,以获取最佳的分割效果。这其中存在一个问题,在对一景影像进行分析的时候,往往需要多次调节分割参数,才能最终确定最佳的分析尺度。这往往是一个迭代交互的过程,耗时费力。

此外,当影像非常大的时候,这个过程非常耗时。例如,对于一景融合后的资源3号遥感影像,其大小超过24000*24000像素,4.8G,目前最新版本的eCognition 9.2要耗费超过15分钟进行一次分割,9.1版本要50分钟以上。调整几次参数,半天功夫就没有了。

在本文中,提出了一种双层尺度集模型,一次性的解决了多尺度分割调整尺度参数和高性能计算的问题。

尺度集模型

首先简要介绍一下尺度集模型。尺度集模型简单说就是一个经过尺度索引的二叉树模型,2006年由Guigues等人提出来的。尺度集模型可以把层次区域合并过程完整的记录下来,并记录整个过程中产生区域的层次关系,并将每个区域进行尺度索引。因此通过尺度集模型可以反算任意尺度的影像分割结果,从而解决调整分割尺度参数的问题。 

这里写图片描述

 

尺度集的建立方法

尺度集可以采用层次区域合并方式实现。层次区域合并方法是一种自底向上的区域合并方法,其示意图如下: 

自底向上的区域合并方法

 

在得到这个二叉树的同时,计算各个节点的尺度参数,并在最后将其用于各个节点的尺度索引,即可以得到一个尺度集模型。

区域合并中非常重要的是区域间的合并代价,本算法实验中采用的是eCognition原生算法的那套准则,区域合并是基于层次区域合并(利用区域邻接图的Region Adjacency Graph, RAG).

分块分层尺度集模型

利用传统的这个尺度集模型处理大幅面遥感影像时无法充分利用计算机的硬件资源,面临数据量巨大,处理效率低的问题。为此首先想到的便是采用分块方法,提高计算机资源的利用率。关于分块分割结果的拼接,其实非常容易实现,只要分块之间重叠足够大,就一定能够拼接好,毫无人工痕迹。但这其中有一个问题,当分割尺度非常大的时候,分块之间的重叠也需要非常大才能保证较大的区域能够完美拼接上。这无形中增加了计算量。在分割尺度较小的时候,分割得到的区域也较小,因此只需要较小的重叠区域就能够保证区域拼接的精度。那么如何在较小计算量的情况下既满足小尺度分割的需要,也满足大尺度分割的需要?

我的主要思想是提出一个双层尺度集(Bi-level Scale-sets Model, BSM)的思路。将整个模型分成两个层次,第一个层次解决小尺度分割的问题,将影像切分为带有重叠区的块,每个块分别进行尺度集建模,各个块之间进行并行化计算。最终通过这一系列的分块建模,在应用的时候将各个块的分割结果进行拼接,满足较小尺度的分割的需求。由于仅用于较小尺度的分割,因此区域较小,重叠区域也可以较小。第二层次解决较大尺度的分割的问题,基本思路是利用第一层次的模型,获得一个中等尺度的分割结果,并以此为基础,构建唯一一个覆盖全图的尺度集模型。由于这个模型的初始分割始于一个较大的尺度,因此区域的个数相比较少,计算量也不会很大。双层尺度集模型的基本结构如图所示: 

这里写图片描述

 

并行计算

由于底层的尺度集模型由不同的分块组成,各个分块之间并不相互干扰,因此可以方便的进行并行计算。最简单的实现方法是采用OpenMPI技术,实现自动的并行计算。在分块处理的时候为了避免无序的分块读写操作引起硬盘的性能下降,采用先分行,再分块的方式。即先将影像划分为一系列的横向条带,各个条带之间串行处理,每个条带内根据CPU核心数进行分块并行处理。基本原理如图: 

这里写图片描述

 

实验结果

  • 实验影像

    实验采用了深圳湾区域的WorldView2影像和ZY3影像。其中WorldView2影像4096×4096像素,8波段,0.5米分辨率;ZY3影像24000×24000像素,4波段,2.1米分辨率。

这里写图片描述

  • 实验1 - 效果展示

    首先展示采用分块处理的方式获取的影像分割结果概况。实验数据为深圳湾区域的WorldView2影像,4096*4096像素。分块采用4×4的方式,总共16块。下图展示了从尺度集模型反算的两个不同尺度的分割结果(标记图和矢量边界): 

    不同尺度分割结果

     

    从标记图中可以看出明显的分块痕迹,但是从矢量的边界中看不出任何的痕迹。并且可以看出该模型满足了小尺度和大尺度分割的需求。下图展示了5个不同尺度的分割结果(实际操作中通过拖动滑块实现尺度参数的转换,软件实时输出对应的分割结果): 

    5个尺度分割结果展示

     

  • 实验2 - 效率分析

    本实验仅分析使用不同数量CPU核心时的计算效率。使用的是ZY3遥感影像(24000×24000像素,4.8G),分块的大小为1000×1000像素,缓冲区大小为100个像素。采用的计算机为4核8线程,3.5GHz,64G内存,机械硬盘。下表为采用不同数量线程时对实验图像处理的时间(单位:秒):

线程底层尺度集反算中间尺度分割结果顶层尺度集总时间
1809.17241.187150.2971000.656
2515.20329.828151.407696.438
4308.22725.703151.640485.570
6247.67225.594150.968424.234
8214.06325.434150.110389.607

从表中可以看出采用多线程时可以明显的实现底层尺度集的加速,总时间从1000秒减小到389秒;而上层尺度集由于没有采用加速策略,时间没有明显变化。

- 实验3 - 对比分析

该实验中对比最新版的eCognition9.2,在该版本中,采用了最新的多分辨率分割(MRS)算法,实现了多核并行加速,相比之前的版本分割效率有明显的提升。首先对比两个算法在相同光谱、形状和尺度参数情况下的分割结果: 

这里写图片描述

你能看出来哪个更好吗?(左侧是我的方法,右侧是易康的)

 

然后采用不同尺寸的影像(从ZY3遥感影像中截取),分析其算法效率。(单位:秒)

Image SizeMRS(scale:30)MRS(scale:75)BSM
6000×600049.66856.15720.797
12000×12000204.516227.93891.774
24000×12000418.765470.031182.297
24000×24000917.578984.406389.607

从表格中可以看出,采用本文的方法其效率比最新版的eCognition软件多分辨率分割方法效率高出月2.5倍,并且其能够快速的反算不同尺度的分割结果。

软件成果

采用Visual Studio 2013开发,带有分割、矢量化等功能,还带有图像读写、显示、波段调整等基本功能。

这里写图片描述

7分钟处理一景巨大的遥感数据,一般两三千像素长宽大小的图像几秒钟搞定,拖动滑块搞定选择分割尺度的问题,有木有很激动?

总结

本文中提出了一种分层-分块的双层尺度集模型,通过实验分析证明该模型可以解决大幅面遥感影像多尺度分割的尺度转换困难和计算效率不高的问题,通过对比实验发现该模型相比最新版本的eCognition软件仍然具有明显的优势,具有非常高的实用性。

本博客就大幅面影像的分割和尺度转换进行了初探,构建了基本的计算框架,同时后期还有很多需要完善、优化的部分,比如模型优化、CPU/GPU并行计算、尺度转换的实时交互等问题。如果您也赞同我的观点,可以参与一起研究~~

本博文中技术细节并未详细展开,仅介绍算法思想。

可供参考文献:

[1] A Bilevel Scale-Sets Model for Hierarchical Representation of Large Remote Sensing Images, IEEE TGRS, 2016

[2] Unsupervised simplification of image hierarchies via evolution analysis in scale-sets framework, IEEE TIP, 2017

[3] Stepwise Evolution Analysis of the Region-Merging Segmentation for Scale Parameterization, IEEE JSTARS, 2018

[4] Scale-sets Image Analysis, IJCV, 2016

学术交流邮箱:zwhoo@szu.edu.cn;QQ群: 217312431;

主页:http://spatial.szu.edu.cn/user_details?id=15&type=教师

试用软件链接:https://github.com/zwhoo/Scale-Sets-Image-Analysis-Toolkit

  • 31
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
### 回答1: 遥感影像多尺度分割是遥感图像处理和机器学习领域的重要研究方向,其目的是将原始遥感影像分成多个具有不同语义的区域。Python作为一种广泛使用的编程语言,在遥感图像处理和机器学习领域也广泛应用。以下是Python实现遥感影像多尺度分割的方式: 1. 使用Python图像处理库(如opencv、PIL)读取原始遥感影像,并进行图像预处理(如尺度变换、颜色转换、滤波等)。 2. 对预处理后的遥感影像进行多尺度分割。常用的多尺度分割算法包括Fuzzy C-means聚类、K-means聚类、Mean-shift聚类等。Python中可以使用sklearn等机器学习库来实现这些算法。 3. 对多尺度分割结果进行后处理,包括去除小区域、填充空洞、边缘平滑等。这些后处理算法可以使用Python中的图像处理库来实现。 4. 最后将处理后的遥感影像输出为标准格式(如Tiff、png等)供后续应用使用。 需要注意的是,Python实现遥感影像多尺度分割需要较高的计算资源和较长的运行时间。因此,使用合适的硬件设备和优化算法是非常重要的。同时还要注意遥感影像多尺度分割算法的准确性和鲁棒性,避免过拟合和欠拟合现象的出现。 ### 回答2: Python在遥感影像多尺度分割中是一种成熟且广泛使用的编程语言。遥感影像多尺度分割是指将遥感影像通过均值漂移、分水岭等算法划分成多个区域,以便更好地分析和处理遥感数据。 Python中能够实现遥感影像多尺度分割的库很多,比如在scipy中的ndimage子模块查找图片的局部最大值,然后使用连通组分分离出不同的区域。还有在opencv-python库中的image分割模块实现图像分割。 在Python中实现遥感影像多尺度分割的具体步骤如下: 1. 读取遥感影像,并对其进行预处理:消除噪声、增强对比度等。 2. 使用算法处理影像,将其分为多个不同的区域。最常用的算法包括:均值漂移、分水岭、K均值聚类、基于区域的分割等。 3. 对分割结果进行后处理,使其更加平滑并去除不必要的分割。 4. 可以对分割结果进行分类与识别,以提取感兴趣区域。比如使用机器学习算法对分割结果进行分类,识别出其中的植被、水域、道路等。 Python的灵活性和开源性使得其成为遥感影像多尺度分割的理想工具。与其他语言相比,Python的开发速度快,且可以支持更多的算法和模型库。同时,Python拥有丰富的可视化工具,可以对分割结果进行可视化,能够更加直观地展示分割结果。此外,Python代码也易于分享,使得不同的研究者之间能够更方便地交流和合作。 ### 回答3: Python是一种广泛应用于各种领域的编程语言,包括遥感影像领域。在遥感影像处理中,多尺度分割是一种常用的方法,它可以对影像进行分层处理,将大尺度的结构分解成更小的尺度结构。Python提供了一系列强大的遥感图像处理库,如GDAL、OpenCV和Scikit-image,它们可以在实现多尺度分割时提供重要的支持。 多尺度分割的过程可以分为以下几个步骤: 1. 数据准备。首先,需要从遥感数据源中读取影像数据,这通常可以使用GDAL库来完成。读入的影像通常是大的TIFF文件,需要注意像素值的数据类型和投影坐标系。 2. 图像预处理。图像预处理是保证多尺度分割算法准确性的基础,常见的预处理方法包括灰度变换、直方图均衡、尺度变换等。这一步可以使用NumPy和Pillow库来实现。 3. 多尺度分割算法。多尺度分割算法有很多种,比如分水岭算法、区域生长算法、基于聚类的算法等。其中,分水岭算法是最常用的方法之一,可以使用Scikit-image库来进行实现。 4. 分割结果处理和后续分析。分割完成后,需要对分割结果进行后处理,这包括去除假阳性区域、合并通路等。此外,还需要对分割结果进行可视化、分类和存储等处理,这可以借助Pillow和NumPy库完成。 总的来说,Python在遥感影像多尺度分割中起到了非常重要的作用。Python提供了丰富的图像处理库和数据处理工具,可以帮助分析师更加高效地完成遥感影像多尺度分割任务。同时,Python还具有丰富的社区和文档资源,可以帮助用户充分掌握Python语言在遥感影像处理领域的应用。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值