沈兵
(重庆市勘测院,重庆 401123)
随着近40年来遥感技术的快速发展,获取到的遥感影像越来越具有高空间分辨率、高光谱分辨率和高时间分辨率的特性[1]。尤其,随着遥感影像空间分辨率的不断提高,传统的基于像素的图像处理技术已经难以表达高分影像上丰富的空间信息,新的面向对象的图像处理技术逐渐成为处理分析高分影像的主流手段。
图像分割是面向对象的图像处理技术的关键步骤,它是将图像分成若干个相互独立的子区域的过程,每个子区域内部具有相同或者相似的性质,各个子区域之间保持较高的异质性[2]。其目的是为了得到面向对象方法的基本处理单元:地物对象。现有的图像分割算法大都可以分为基于边界的分割方法[3]和基于区域的分割方法[4]两大类。基于边界的分割方法是通过寻找影像上的边缘点来达到分割的目的,对噪声的影响非常敏感,同时对影像的质量具有很高的要求;基于区域的分割方法则是从区域的内部出发,通过特定的种子点向外生长扩张,如果种子点周围领域内的点具有同质性,则认为这些点和种子点属于同一个区域,典型的区域分割算法有分水岭分割[5]。但是,基于区域的分割同样对噪声敏感,并且由于众多细碎的局部极小值区域的存在,影像分割的结果会存在较多的伪区域,过分割现象较为严重[6]。为解决这个问题,通常对有意义的局部极小值区域进行标记,称为种子区域或标记区域,在此基础上进行标记分水岭分割[7];或者对分割后相邻的细小区域进行合并[8]。其中,种子区域的确定决定了标记分水岭分割的精度,一般依据整体的信息熵进行全局阈值分割来得到,这很容易忽略了影像上的局部信息,无法将不同的分割区域分隔开来。并且上述方法都没有融入先验的矢量边界信息,而在面向对象的变化检测过程中通常会利用GIS矢量数据辅助获取地物像斑[9]。
为了克服上述分割方法带来的问题,文章提出了一种基于矢量约束的阈值标记分水岭分割算法。以GIS矢量数据的先验知识为约束,在进行区域标记的过程中综合考量全局阈值和局部阈值,并设定最小面积参数限制伪标记区域的产生。
基于矢量约束的阈值标记分水岭分割算法首先将GIS矢量数据的边界映射到影像上,形成一层约束边界,称为第一次分割;然后提取影像的梯度,在梯度图像上进行阈值标记,获取有意义的种子区域,在第一次分割的基础上以种子区域为起点展开分水岭分割,称为第二次分割。整体的算法流程如图1所示。
图1 算法流程图
边界映射的目的是为了将矢量数据的边界映射到遥感影像上,如图2所示。矢量数据一般都具有特定的平面投影坐标,每一个矢量节点在该坐标系下都具有唯一的平面横纵坐标,影像上的栅格像元以左上角像元为起点,也都具有固定的行列号坐标,如起点的行列号坐标为(0,0)。边界映射的第一步就是将矢量节点与影像上的像元对应起来,将矢量节点坐标转换为像元的行列号坐标,节点转换的公式如下所示[10]:
(1)
(2)
式中r表示转换后的行号,c表示转换后的列号;x,y表示矢量节点平面横纵坐标;x0,y0表示栅格左上角像元在相同空间坐标下的平面横纵坐标;xc,yc表示影像x方向和y方向的空间分辨率。一般情况下xc和yc相等且都为正,平面投影坐标的y轴与影像上行列号坐标的y轴方向相反,因此y0大于等于y。
矢量数据的节点映射到影像对应的像元上,此时区域的边界仍然是不连续的边界点,如图2中(b)图所示。通过直线光栅化可以在间断的边界点之间建立一条直线段,从而将不连续的边界点映射成一条条完整的边界线。因此,边界映射的第二步是利用数值微分法(Digital Differential Analyzer,DDA)进行直线的光栅化操作。
图2 边界映射示意图
遥感影像上,同质的区域内部梯度值较低,幅度变化也较为平缓;异质区域之间的边缘处梯度值较大,幅度变化也较为剧烈。因此分水岭分割通常是在提取梯度影像的基础上进行的。本文利用Sobel算子提取影像的梯度,为阈值标记和分水岭分割提供了数据基础。
阈值标记是对梯度影像进行阈值处理获取标记区域的过程,是传统的分水岭分割区别于标记分水岭分割的关键步骤,其目的是减少过分割现象的产生。
首先通过直方图统计对图像的梯度值分布进行概率统计分析,假设梯度影像的灰度值为随机变量x,分布函数为F(x),选取x的下α分位点作为全局阈值G,即:
F(xα)=P(x≤xα)=α
(3)
α这里称为全局调整系数,以xα作为影像全局阈值的本质是将梯度影像上α*100%的像元进行标记,可以适应不同的影像,具有较强的鲁棒性。0<α<1,一般取α=[0.3,0.5],地物类型较简单,边界信息较少的,α的值可以适当提高。
然而整幅影像采用统一的全局标记阈值xα难以满足不同区域的分割需求,为了将不同的分割区域更好地分隔开来,需要自适应的采用局部标记阈值,通常对梯度影像进行高斯低通滤波消除高频信息以后再进行局部的阈值判断。局部阈值L的计算公式如下所示:
L=β×Gauss(i,j)
(4)
β是局部调整系数,一般取0.6~0.8,Gauss(i,j)为高斯低通滤波处理以后的梯度影像值。取局部阈值和全局阈值中的较大值作为当前位置的标记阈值,可以很好地标记不同区域的种子点:
(5)
式中g(x,y)表示梯度影像;M(x,y)为得到的标记图像。梯度值小于给定阈值的像元标记为1,反之标记为0。综合全局阈值和局部阈值对梯度影像进行标记,对阈值标记以后的影像进行区域聚类标记,即四邻域或八邻域范围内相邻的标记为1的像元聚类为一个标记区域,并按顺序依次标号。其中伪标记区域的面积一般较小,为了防止伪标记区域的产生,通常设定一个最小面积参数c进行约束:标记区域的面积小于c则取消标号。
阈值标记得到的结果可以分为3种像元:矢量边界像元、区域标号像元和未标号像元。分水岭分割就是将标号像元作为起点,按照一定的生长法则向外扩张,即对未标号的像元进行标号的过程,与传统的分水岭分割算法不同的是,本文在生长的过程中遇到矢量边界像元时则停止。文章主要采用Meyer发明的基于优先级队列的快速标记分水岭分割算法,其主要的分割思路如下:
(1)初始化队列。初始化一个具有优先级划分的队列数组,梯度值越小优先级越高,队列大小等于梯度影像的量化等级,一般为256。遍历每个标记区域,将标记区域周围邻域内未标号的像元按照梯度优先级添加到队列的相应位置。
(2)像元出队列。如果队列不为空,则弹出队列最前端的像元P,判断该像元周围是否存在多个不同标号的像元,若只存在一类标号像元,则给当前像元赋予相同的标号,若存在两个及以上不同标号的像元,则当前像元是边界像元。
(3)像元入队列。将像元P周围邻域内未标号、且未加入优先队列当中的像元,按照优先级顺序添加到优先队列当中。
(4)重复步骤(2)~(3),直到所有的像元遍历完毕,并且队列为空。
经过上述步骤处理以后,梯度影像上的所有像元都具有唯一的标号,相同标号的像元聚类为一个区域,即为最终的分割区域。对于边界像元,可以根据边界像元的局部相似性融入相邻的分割区域当中。
本文采用重庆2020年高分1号(GF-1号)影像数据和2019年的土地利用矢量图(图3)。影像分辨率为 2 m,包含3个可见光波段和1个近红外波段,影像大小为 1 023×1 718个像元。
图3 土地利用矢量图套合GF-1号影像图
为验证本文分割方法的有效性,文章在.NET平台下基于ArcGIS Engine组件库实现了上述算法,调用组件库中的方法实现栅格和矢量数据的加载以及对最后分割得到的结果进行矢量化。本文分别进行传统的分水岭分割、无约束的阈值标记分水岭分割和有矢量约束的阈值标记分水岭分割,检验阈值标记和矢量约束对于分割结果的影响。
(1)传统的分水岭分割
首先对GF-1号影像进行传统的分水岭分割,即在分割的过程中不进行阈值标记,也不添加矢量数据进行约束。图4分别展示了传统的分水岭分割的结果影像和矢量化之后的结果图斑。其中,结果影像中的不同颜色代表了不同的分割区域。传统的分水岭分割结果存在很多细碎的小图斑,过分割现象严重;阈值标记分水岭分割通过预标记分割区域,限制了小面积无意义的分割区域产生,减少了过分割。
图4 分水岭分割结果
(2)无约束的阈值标记分水岭分割
无约束的阈值标记分水岭分割是在分割的过程中进行阈值标记,但不添加矢量数据作为约束条件。实验分别设定全局调整系数α=0.4;局部调整系数β=0.7;最小面积参数c=200。图5分别展示了分割结果影像和矢量化之后的分割结果图斑。有矢量数据约束的分割结果更加准确,分割得到的结果边界更加贴近地物真实的边界。
图5 无约束的阈值标记分水岭分割结果
(3)矢量约束的阈值标记分水岭分割
矢量约束的阈值标记分水岭分割是在无约束的基础上添加了矢量数据进行约束分割,分割参数保持不变。图6分别展示了分割结果影像和矢量化后的分割结果图斑。在矢量约束边界内部,如果包含的影像地物类型复杂,光谱信息变化差异较大,第二次分割的结果就较为精细;如果包含的影像地物类型单一,光谱信息变化差异很小,第二次分割的结果就较为粗糙,或者不进行第二次分割。
图6 矢量约束的阈值标记分水岭分割结果
因此在进行面向对象的变化检测过程中,将前期矢量数据叠加在后期遥感影像上进行约束分割,可以保证前后期未发生变化的区域分割边界不变,发生变化或部分发生变化的区域也可以得到精确的分割,最后将后期约束分割的结果映射到前期影像上,从而得到前后期完全对应的地物对象。图7和图8分别为地物类型简单和复杂时的分割结果。
图7 地物简单的粗糙分割
图8 地物复杂的精细分割
本文考虑到在面向对象的变化检测过程中,通常会利用矢量数据辅助获取前后期对应的地物对象,于是在传统分水岭分割的基础上提出了一种基于矢量约束的阈值标记分水岭分割算法。实验结果表明:阈值标记分水岭分割可以有效减少传统分水岭分割带来的过分割问题;在矢量数据的约束下,分割结果的边界更加准确,与实际地物边界更加吻合;矢量约束的阈值标记分水岭分割结合了前期矢量边界的先验知识和影像上地物的光谱梯度信息,既保证了原有边界的完整性,又使得原有边界内部的地物得到充分的分割。但是,本文方法需要有前期的矢量数据作为支撑,在缺乏矢量数据的情况下无法得到实现。