冯朝晖,李 芹,韩留生,薛国超,赵红颖
(1. 北京大学地球与空间科学学院,北京 100871; 2. 山东理工大学建筑工程学院,山东 淄博 255000; 3. 山东科技大学测绘科学与工程学院,山东 青岛 266590)
近年来遥感环境监测技术日新月异,高分卫星影像也越来越普及,为遥感信息提取提供了可靠数据来源[1]。但高分影像中针对单个像元进行分类的算法因存在瓶颈而制约着很多应用,因此结合目标形态结构、光谱信息等面向对象的算法在遥感水体提取分割中发挥着越来越重要的作用[2]。水体提取中较为传统的有图像变换方法、单一波段阈值方法。文献[3]利用TM4和TM5波段设定经验阈值提取水体。单一的波段阈值分割方法原理较简单,但是对于水体和非水体的过渡区域无法正确划分,因此有必要对传统阈值分割进行改进。应用于遥感图像目标提取的算法还包括形态学方法[4]、聚类分割方法、边缘检测分割方法[5]和基于分水岭的算法[6]。分水岭算法在发展过程中非常具有代表性的沉浸模型[7]是一种基于地形和区域增长理论的算法,并且后来针对该算法的过度分割问题也有一些改进[8-9]。但如果将分水岭算法直接用来提取水体,分割结果特别差[10],这是由于地物类型复杂多样且存在“同谱异物”现象造成的。单一的分水岭算法并不能解决复杂的分割问题,一些改进的分水岭变换算法虽然解决了一部分问题,但依然存在分割目标破碎、地物类型误判、过度分割导致结果不完整等缺点,因此有必要针对水体本身特性设计提取方法。
综上,本文针对水体地物本身的光谱和形状特性,结合目标水体的光谱信息分量和形态学原理,设计利用改进的分水岭算法对水体进行分割提取的试验算法,以期使分水岭算法对水体提取达到较好的效果。
高分二号(GF-2)卫星的多光谱空间分辨率为4 m,全色空间分辨率1 m,辐射分辨率10 bit,重访周期5 d。高分卫星具有较高的空间分辨率、辐射分辨率,重访周期较短,可以为地方河道信息提取提供很好的数据来源。
潍坊位于山东半岛中部,区域内有潍河南北贯穿,流入渤海湾,是潍坊地区最重要的地表水源。本文中选取潍坊市2015年5月16日的高分影像(119.1°E,36.7°N)用于水体提取研究。
2.1.1 标准分水岭算法
分水岭分割是以拓扑形态学理论为基础的图像分割算法[11],其核心思想是把图像想象为地理学中的地貌,各像素值代表这一点海拔高度,那么积水盆地为包含局部极小值点及其影响的区域,分水岭则是这些集水盆地的边界。分水岭的形成是一个浸入过程,在整个地表的每个局部极小值下部扎孔,再将地表浸入水中,各局部极小值所涵盖的区域随着浸入水深的增加而增加,此时在两个集水盆之间的部分就是分水岭[12]。生成分水岭的过程是通过迭代标注计算的,文献[7]将其分为两步,首先对图像中所有点按灰度级从低到高排序,然后在淹没时对各极小值点采用先进先出(FIFO)结构判断和标注其影响域。
2.1.2 基于Canny边缘检测的分水岭算法
该方法是首先采用高斯滤波线性平滑滤波器除去图像噪声,然后通过Canny算子[13]计算得到边缘,最后找到算子提取的边缘轮廓并存储,通过这些边缘极值作为标记进行分水岭分割。这就相当于文献[14]中从梯度图的极小值点作为标记进行分水岭分割。
2.1.3 基于形态滤波与标记的分水岭分割方法
基于形态滤波与标记的分水岭分割首先对图像用混合开闭重构进行滤波,其次计算图像的Sobel算子梯度图,接着进行混合开闭重构计算,然后用H-minima方法找到梯度图的局部最小值并进行标记,最后对标记图和原图进行分水岭变换提取图像中的水体目标[14]。
本文利用光谱信息分量图和形态学原理改进的分水岭变换提取水体的具体过程如图1所示。一方面对原始图像中红绿蓝三波段进行阈值控制提取出水体的光谱信息分量,并进行闭运算修饰,得到光谱信息分量前景标记;另一方面将原始图像二值化并膨胀得到背景标记。将光谱信息分量前景标记和背景标记叠加得到整体分水岭变换标记图,最后由标准分水岭变换得到水体提取结果。
2.2.1 目标水体光谱分量获取
遥感图像中地物的光谱特性是指自然界存在的地物都有吸收、反射、向外发射太阳辐射能的特性[15],不同的地物本身反射或吸收电磁波的特性也不同。由于不同地物在不同波段的反射特性表现为在不同波段的像素值大小,因此本文利用水体在遥感图像上呈现暗色,在红绿蓝3个波段的反射率都比较低的特性,提取在3波段像素值都比较低的部分作为遥感图像中水体的光谱信息分量图。具体做法是采用阈值控制,使得3个波段像素值都低于20(阈值由多次试验经验所得)的像素保留,其他的像素值都修改为255。如图2所示,其中(a)和(b)是原始图像,分别是潍坊市潍城区北侧和南侧的潍河河道,(c)和(d)则分别是(a)和(b)所对应的水体光谱分量图。
2.2.2 基于形态学的前景标记修饰和背景标记生成
(1) 基于形态学膨胀的背景标记生成。形态学中图像A由结构元素B膨胀表达为[16]
A⊕B=[ACΘ(-B)]C
(1)
图3(g)和图4(g)是分别对原始影像1和原始影像2经过阈值分割后的二值图进行膨胀修饰的结果,如此即可获取到目标的形状特征信息图。
(2) 基于形态学闭运算[16]的前景标记修饰。闭运算定义为对图像A先膨胀,再腐蚀
A∘B=(A⊕B)ΘB
(2)
它可以连接较近目标物、填充目标细小空洞[17]。图3(f)是对图2(c)的水体光谱分量图先进行二值化并黑白反转,再进行闭运算的结果,以达到将水体目标内部空洞填充的目的,使得接下来的分割操作得到的目标水体更加完整,从而避免内部破碎。在通过数学形态学运算进行前景标记修饰和背景标记生成之后,叠加前景图和背景图得到复合标记图,如图3(h)和图4(h)所示,然后在复合标记图中进行标准分水岭分割即可得到本文的试验结果。
为了验证本文算法对于水体提取的有效性,本文选择了山东潍坊地区潍河水域的高分图像开展试验,并且实现了OpenCV[18]中手动标记种子点的分水岭算法、基于Canny边缘的分水岭算法、结合形态滤波和标记的分水岭分割方法等多种不同算法与本文算法水体提取效果的比较。本文算法用C++和Matlab实现。
图3和图4是文献[14]和本文分别对原始图像1和原始图像2的分割结果。其中图3(a)和图4(a)分别为原始图像1和原始图像2;图3(b)和图4(b)为相应的Sobel梯度图;图3(c)和图4(c)为混合开闭重构形态修正后的梯度图像;图3(d)和图4(d)为运用扩展极小变换H-minima算法[19]分别对图3(c)和图4(c)进行极值标记的结果图像;图3(e)和图4(e)是在图3(d)和图4(d)的标记图中用分水岭变换进行水体提取的结果。试验结果对比表明文献[14]方法只能提取部分轮廓并且不准确,提取的水体破碎不完整,而本文算法先对获取的光谱信息分量图进行闭运算修饰(如图3(f)和图4(f)所示),再结合膨胀运算获得背景图(如图3(g)和图4(g)所示),通过叠加得到整体复合标记图(如图3(h)和图4(h)所示),最终得到水体提取的结果(如图3(i)和图4(i)所示),以及水体目标的分割线(如图3(j)和图4(j)所示)。本文算法明显对水体提取相对较完整,轮廓较清晰,效果优于文献[14]。
图5是运用多种不同分割方法对原始图像1和图像2的分割结果对比。图5(b)和图5(g)是采用了OpenCV[18]中手动标记种子点的分水岭算法,其中图5(b)用了3个标记点,图5(g)用了13个标记点,可以看出种子点过多或过少都会导致提取的水体部分缺失或误添,很难找到合适种子点的数目和坐标位置,而即使找到合适标记点,也不能保证它分割的全部是水体,如图5(b)和图5(c)与图5(e)相比主体水块右上角误判,非水体部分依然过多地划分为水体的范围。而在图5(g)和图5(h)中,都会对原始河道水体提取得过宽,这是由于它自动将图像中河道两边的深红色部分也进行灌水标记,使得最后的结果不准确。另外采用这种方法需要手动标记种子点,无法实现自动提取。
图5(d)和图5(i)是运用高斯滤波和Canny边缘检测算子提取图像边缘,然后通过标记轮廓的方式找到重要的标记点和标记线,最后执行分水岭分割。虽然可以将一些地物分块,但无法将水体与其他地物区别开来,并且水体块破碎,即使改进算法可将相同水体区域合并也无法得到完整结果,只是破碎会减弱,并且目标水体与周围地物仍会混淆。
相对于前面提到的几种分割方法对于水体无法取得理想提取效果而言,本文算法通过试验对比验证了它可将水体目标与其他地物相区别并提取出来,且完整不破碎,也无需人工手动标记,是一种可以自动实现的有效的水体提取方法。
本文针对水体在遥感图像中的特殊光谱特性,并结合其形状特性采用了标准分水岭算法进行分割。将实现结果与多种方法进行了对比分析,证明本文提取的水体目标突出,可与周围地物明显区分,提取结果完整准确,是一种有效的水体提取方法。