2024年6月2日发(作者:)

分水岭算法

Watershed Algorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像

的分割。现实中人们可以或者说可以想象有山有湖的景象,那么那一定是水绕 山,山围水

的情形。当然在需要的时候,要人工构筑分水岭,以防集水盆之间的互相穿透。而区分高

山(plateaus)与水的界线,以及湖与湖之间的间隔或都是连通的关系,就是分水岭

(watershed)。为了得到一个相对集中的集水盆,那么让水涨到接近周围最高的山顶就可

以了,这样的话,我们就可以用来获取边界灰阶大,中间灰阶小的物体区域了,它就是集

水盆。

分水岭算法的概念及原理

分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图

像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个

局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形

成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个

模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个

集水盆汇合处构筑大坝,即形成分水岭。

分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L. Vincent提

出的。在该算法中,分水岭计算分两个步骤,一个是排序过程,一个是淹没过程。首先对

每个像素的灰度级进行从低到高排序,然后在从低到高实现淹没过程中,对每一个局部极

小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。

分水岭变换得到的是输入图像的集水盆图像,集水盆之间的边界点,即为分水岭。显

然,分水岭表示的是输入图像极大值点。因此,为得到图像的边缘信息,通常把梯度图像

作为输入图像,即

g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5

式中,f(x,y)表示原始图像,grad{.}表示梯度运算。

分水岭算法对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的灰度变化,

都会产生过度分割的现象。但同时应当看出,分水岭算法对微弱边缘具有良好的响应,可

得到封闭连续的边缘。通过分水岭算法所得到的封闭的集水盆,为分析图像的区域特征提

供了可能。

分水岭算法有时会产生过度分割,为了避免产生这种过度分割,通常可以采用两种处

理方法,一是利用先验知识删除无关边缘信息。二是可以修改梯度函数,使得集水盆只响

应所探测的目标。

对于通过梯度函数降低低分水岭算法的过度分割,需要对梯度函数进行改进,一个简

单的改进方法是对梯度图像进行阈值处理,从而消除像素灰度值的微小变化引起过度分割。

即:

g(x,y)=max(grad(f(x,y)),gθ)

式中,gθ表示阈值。

程序可采用方法:用阈值限制梯度图像以达到消除灰度值的微小变化产生的过度分割,

获得适量的区域,再对这些区域的边缘点的灰度级进行从低到高排序,然后在从低到高实