APP下载

基于高分影像的林地变化检测和自动分割算法探讨

2022-02-21付晓燕岳彩荣蒋之富

山东林业科技 2022年6期
关键词:变化检测工具栏格网

付晓燕,岳彩荣,蒋之富

(1.西南林业大学,云南 昆明 650224;2.国家林业和草原局西南调查规划院,云南 昆明 650031)

森林资源动态监测已经成为林业的重要工作,当前森林资源变化检测主要依靠目视判读对比前后两期遥感影像,根据像素值对比发现森林资源疑似变化区域。但遥感影像内容丰富、覆盖区域往往比较大,通过人眼识别、手工区划变化区域,不仅工作量大、效率低,而且可能存在漏划、错划的情况[1]。目前,业内还没有非常有效的技术手段对遥感影像变化区域进行自动检测、区划。本文旨在通过研究多期遥感影像的变化特点,提出自动区划遥感影像变化区域的算法、方法,并在林业最为常用的地理信息系统软件ArcGIS上实现该算法,开发相应的插件和软件工具,以快速、较为准确地通过两期遥感影像对比自动获得监测区的变化图斑。

1 研究方法

利用ArcGIS插件开发技术和ArcObjects SDK,在研究现有的遥感影像变化检测算法的基础上,提出一种快速进行遥感影像变化检测和变化区域分割、提取算法,实现遥感影像变化检测半自动区划工具、遥感影像变化检测自动区划工具。

2 研究内容

研究内容主要涉及到ArcGIS插件开发技术、遥感影像数据管理模块开发、两期遥感影像自动检查和搜索算法、遥感影像变化检测和变化区域分割提取算法、算法优化等内容。需要指出的是,本文所说的林地,是指由林业主管部门管理的、有植被覆盖的土地。

2.1 遥感影像数据管理

在有限的时间和资源基础上,完全从底层开发影像数据管理功能已不太现实,采用现有的、成熟的软件平台可以将重点放在遥感影像变化检测算法的设计和改进上,忽略细枝末节。基于这个原因,作者采用目前业内最为成熟的ArcGIS软件,作为影像数据加载、显示、管理的基本平台,在ArcGIS软件上,采用插件开发技术、ArcObjects SDK进行影像数据处理、变化检测的定制开发。

2.2 遥感影像自动检查和搜索

目前现有的软件平台在进行变化检测时,均需要人为确保前后两期影像是否为同一个区域、坐标系是否一致、遥感影像范围是否一致,影像检测前往往需要裁剪、坐标系变换等工作,增加了人为工作量。为减轻人为工作量,笔者设计了影像区域检测模块,对影像的坐标范围、坐标系统进行变化检测,自动提取前后两期影像的公共范围。

2.3 遥感影像变化检测和变化区域提取算法研究

影像变化检测的关键在于变化检测和变化区域提取算法研究和设计,现有的软件平台主要采用监督分类、无监督分类两类算法,监督分类需要训练样本,人为干预地方很多,要实现自动变化检测,这一方法基本可以排除。无监督分类大多基于统计理论,如主成分分析、NDVI指数、相似像素聚类等。现有这些方法都基于严格的数学模型,从理论上说,能较好地提取变化区域,但在实际使用过程中,提取效果总是差强人意。笔者认为主要原因在于,这些算法往往是基于比较好的影像数据,设计算法的人也是基于规整的影像数据,没有考虑实际使用过程中诸多因素,如前后两期影像的一小部分存在阴影,两期影像校正效果不理想,局部存在偏移,两期影像范围不一致等等,导致产生很多偏差。故有必要对现有算法进行改进,在算法的检测过程中,对出现的偏差进行自动排除。

2.4 基于多线程下的优化算法

对于大范围的高分辨率遥感影像,数据量往往很大,难以一次性对整幅遥感影像进行分割,需要设计一种优化算法。本文采用的是异步分割算法,该算法在逻辑上将整幅遥感影像划分成多个格网,分割过程是按格网进行异步分割。格网只是逻辑划分,无需进行栅格影像切割,原因是ArcObjects开发的程序可同时对一幅遥感影像加载多次,这与多个ArcGIS进程可以加载同一幅影像是相类似的。当要分割一个格网区域时,只需要指定格网的左下角坐标、行数、列数和需要分割的影像文件位置,就可以指定一个分割范围,然后工具启动多个线程对格网进行异步分割。

计算机处理数据时有单线程和多线程之分,单线程就是进程内用1个主要线程进行数据处理,多线程是启用多个线程同时进行数据处理。为提升分割效率,遥感影像分割肯定需要启用多线程技术。现在的计算机处理器普遍在4核心以上,可以充分利用多核心的优势,进行异步分割。本文设计了一种算法,该算法在运行过程中,将会自动获取计算机物理核心数和可用内存,根据物理核心数,分配多个线程同时进行分割。对于4核心处理器计算机,工具最多启动2个线程;对于8核心计算机,工具最多启动6个分割线程;对于16核心以上处理器,工具最多启动14个分割线程。也就是说,对于一台16核心处理器的计算机,如果内存充足,工具将会启动14个分割线程同时进行分割。假设每个分割线程分割的格网大小是3500×3500个像素,高分遥感影像分辨率为2m,则每个分割线程分割的面积是7000×7000m,即49.0 km2,14个线程可以同时分割686.0 km2的区域,因为需要分割的遥感影像往往不是方形的,因此实际分割的有效区域可能会更小一些。通过多线程进行优化,可以极大地提升运行效率。

2.5 遥感影像半自动区划模块、自动分割模块实现

在Visual Studio 2010开发工具上,应用C#和.Net 4.0,结合ArcGIS插件开发技术,笔者将以上算法编写代码,封装成插件和对应的软件工具,以工具栏的形式镶嵌在ArcMap主界面上,既能方便林业工作人员调用,也能充分利用现有ArcGIS工具,提升工作效率。

3 关键算法

3.1 前后两期遥感影像自动检查和搜索技术研究

在用分割算法分割前,需要检查影像坐标系统、空间位置等是否正确。工具设计了影像质量检测和搜索算法,能根据遥感影像拍摄时间、遥感影像像素值,自动确定子区域划分方法。

3.2 变化区域搜索、像元聚类、自动分割算法实现

根据搜索到的前后两期遥感影像,在逻辑上划分成3500×3500个像素大小的格网,在格网内,再划分成2×2个像素的细小格网,按4个像素大小的区域进行像素比较,对细小格网内像素值很接近(如像素R、G、B值在15%以内)的,由该区域开始往外聚类,聚类后面积大于一定值(如100m2)的区域,标记本期疑似区域。对搜索到的前期遥感影像,按相同方法处理,由该区域进行聚类,标记为前期疑似区域。用本期疑似区域按空间位置选中前期疑似区域的结果,将选中区域调用ArcObjects的图层相减后,进行多部件打散,删除面积小于200m2的面,得到疑似前期林地转变成本期非林地图斑结果;分割结果中的前期疑似非林地图斑减本期疑似林地图斑,得到前期非林地转化成本期有林地图斑结果。

3.3 区划图斑边界调整算法

自动分割完成后,分割边界沿像素值边界前进,可能存在分割边界点过密、锯齿状明显的问题,实际应用仍然存在诸多不便,需要对图斑边界进行抽稀、修正、去除面积过小的内环(如内环面积小于50m2),按林业经营界线(如林班界)进行进一步分割,达到符合林业区划标准的要求。

3.4 变化区域自动分割算法优化

大范围的高分遥感影像,数据量极大,自动勾绘运行速度可能较慢,需要进一步优化,优化主要从两方面进行。

(1)尽量缩小自动分割范围。例如,在只需要监测林地减少的情况,结合林业经营资料,剔除非林地区域,仅仅在林地范围内进行自动勾绘;在只需要监测林地增加的情况,结合林业经营资料,剔除有林地区域;既要监测林地增加、也要监测林地减少的情况,尽量利用监测区域的行政边界,减少区划范围。

(2)充分利用现有计算机的多核心、大内存等优势,提高运算性能。现有的计算机一般都有四核甚至六核心以上处理,在变化区域勾绘时,充分利用多核心优势,同时异步分割多个3500×3500个像素格网,如在六核处理器的计算机上,通过多线程技术,同时对4个3500×3500个像素格网进行自动分割,对于具有16核心处理器的工作站,同时对14个3500×3500个像素的格网进行自动分割。

研究过程中发现,格网的形状最好为正方形,正方形方便程序处理和优化。格网范围也不能过大,格网大小不能超过3500×3500个像素但最好大于1000×1000个像,原因是ArcObjects开发的程序是基于32位进程的,32位进程占用的总内存不能超过4GB,在分割过程中,需要存储每个像素点的RGB分量、主要波段等信息,如果范围过大,会导致内存溢出。对于1m分辨率的高分遥感影像,3500×3500个像素相当于3500×3500m的区域,即12.25 km2;对于2m分辨率的高分遥感影像,3500×3500个像素相当于7000×7000米的区域,即49 km2,每个子区域的实际范围并不小。需要说明的是,因为要分割的遥感影像往往不是方形的,还存在一些背景区域,在边界上需要分割的有效影像会更小一些。格网如果划分过小,会导致格网数量增加,降低数据处理效率,增加后期融合的工作量。对于2m的高分遥感影像,云南省的一个县,格网划分个数一般在40~80个之间。对于16核心的计算机来说,可最多启用14个分割线程,每个线程分割时间大致在3~10分钟,每个计算机物理核心平均运行3到6轮可以分割一个县,运行时间视政区面积,大致在15~70分钟可以完成一个县的自动分割。

3.5 分割区域合并和消除

因为在分割过程中,划分了多个格网,因此异步分割后还需要对分割结果进行融合、合并操作,将按格网的分割结果融合成一个整体。融合操作主要采用ArcObjects的Merge算法进行合并,合并后调用ArcObjects的GP工具的融合算法,按类别进行融合和消除,并删除面积小于200m2的细碎图斑。在工具运行过程中,可以调用ArcGIS的工具箱来进行一些常见的空间分析运算,这也是插件开发最大的优点。

4 运行效果

4.1 工具栏封装效果

为便于使用,作者将算法封装成多个模块,利用C#4.0程序设计语言和Visual Studio 2010开发软件,编写成2个ArcGIS插件“遥感影像变化监测半自动区划工具”和“遥感影像变化监测自动区划工具”,辅助判读工具可以内嵌在ArcMap 10.2以上的版本中,方便与ArcGIS的其他工具协同操作,封装后的工具栏运行效果见图1,上面的工具为半自动区划工具,下面的工具为自动分割工具,因工具栏过短,无法显示所有的文字。

图1 工具栏运行效果Figure 1 Segmentation toolbar running effects

4.2 半自动区划工具运行效果

半自动区划原理类似于Photoshop中的魔法棒,仍然需要借助人力查找到某个变化区域,在变化区域点一下鼠标,或者绘制一条线段,工具利用分割算法自动分割该变化区域,因为需要人力找到变化区域,因此称为半自动区划工具。通过在屏幕上单击某个区域,工具自动将该区域相邻的像素进行聚类和勾绘,勾绘方法和效果如图2所示。在图2的左图,找到变化区域后,手工点一个点或者绘制一条线段,工具将会自动分割并将结果形成面。勾绘结果自动平滑后,效果不亚于手工勾绘。绘制过程中,如果存在已有图斑,工具还能自动扣除已经有的图斑,如图2右下角的一小块图斑,工具可以自动扣除,省去了手工捕捉的繁琐工作过程。

图2 半自动区划工具运行效果Figure 2 Semi-automatic segmentation running effects

4.3 自动分割工具运行效果

因自动分割工具并不需要手工勾绘图斑边界,因此自动分割工具栏按钮要比辅助判读工具栏界面简洁,自动分割工具栏只有6个按钮(如图1下半部分工具栏)。该工具栏最重要的按钮是最右边的遥感影像自动分割按钮,点击该按钮后,自动分割运行界面如图3所示。自动分割时需要录入本期、前期遥感影像,通过图3界面左侧的功能区进行数据录入,通过图3右侧的进程监控区域进程分割进程监控。

图3 自动分割工具运行效果Figure 3 Automatic segmentation running window

自动分割运行效果如图4所示,图4为云南省昆明市高分1号遥感影像,遥感影像分辨率为2 m,图4中左图为本期变化后的影像,图4右图为前期未发生变化的影像,黄色边界为自动分割获取的变化区域。自动区划能获取到变化区域,但是在边界线方面仍然不是很精细,存在人工进一步调整的必要。

图4 自动分割运行效果Figure 4 Automatic segmentation running results

5 结语

本文设计的方法,优点是采用多线程技术,提取速度较快,特别是对变化较为明显的区域,效果较好。自动和半自动勾绘的边界非常接近专业人员的勾绘(如图2所示)。分割算法不仅适用于高分辨率遥感影像,也适应于无人机航拍的高清影像。算法为笔者自行编写,可以随时根据业务需要进行定制和更改,可以根据卫星影像情况进行优化。但是改进现有算法对计算机技术和算法要求很高,需要做很多测试,笔者在实现过程中也发现一些不足的地方,亟待解决,主要体现在以下3个方面:

(1)细长型的地物识别,可能会存在间断的问题(如图5所示)。如在林区开挖的小路,因路面宽度较小,受树冠阴影影响较大,可能会存在间断的问题,如何对其改进也是技术上的一大难点。

图5 难以连续分割的狭长小路Figure 5 Narrow path that is difficult to be divided

(2)遥感影像质量较差时(如存在云、雾覆盖)难以自动区划,需人工辅助区划。云雾覆盖导致的误判,需要借助深度学习才能有所缓解,下一步研究往深度学习方向拓展。

(3)两期影像配准时要比较准确,不能出现同一位置前后两期影像偏差较大的情况。虽然在研究过程中对编写的算法进行了一定的偏移容差限制,但同一地物前后两期遥感影像配准偏差太大时,容易导致误判。

猜你喜欢

变化检测工具栏格网
用于遥感图像变化检测的全尺度特征聚合网络
“玩转”西沃白板
基于多尺度纹理特征的SAR影像变化检测
遥感数据即得即用(Ready To Use,RTU)地理格网产品规范
云南地区GPS面膨胀格网异常动态变化与M≥5.0地震关系分析
实时电离层格网数据精度评估
矢量点状数据抽稀方法的研究与实现
基于稀疏表示的视网膜图像对变化检测
基于Landsat影像的黄丰桥林场森林变化检测研究
设计一种带工具栏和留言功能的记事本