3.5 分水岭算法
3.5.1 算法原理
分水岭算法是近几年发展起来的一种与数学形态学有关的分割算法,是基于区域分割的图像分割算法中的一种特殊分割算法,在工程技术领域得到了广泛的应用。分水岭算法的开放性和自动性可以不需要任何相关参数来满足终止的条件,不仅克服了一些传统图像分割算法的缺点和不足,而且有效地保留了一些传统分割方法的优点。分水岭算法已经越来越得到专家和学者的重视,未来将会得到更广泛的应用。
分水岭算法主要基于两种原理。第一种是模拟沉浸过程。将图像视为起伏的地表,图像中每个像素的灰度值都对应于地形中的高度值,代表地形中点的高度。在这样的地形中,有盆地(图像中的局部极小)、山脊(分水岭)及盆地和山脊之间的斜坡。假设将一个盆地和一个山脊的地形模型垂直插入湖中,然后在每个盆地的最低点开一个洞,使水慢慢均匀浸入。当水逐渐填满盆地时,两个或两个以上盆地之间的边缘形成“水坝”,随着水位的逐渐升高,盆地被完全淹没且完全由大坝包围。由此可以得到所有的大坝,从而达到目标被分割的目的。
第二种是模拟降水过程。该方法是根据地形的特点,制作地貌模型。模拟自然界的降水过程,当“雨”落到山的模型上时,会顺着山坡流入山谷,雨经过的路线类似于一条相连的“树枝”,会汇聚到最陡峭小路的底部,并由同一条相连树枝上的河谷形成一个“水盆”,并由此得到“分水岭”。由此,也可以达到分割目标的目的。
3.5.2 经典分水岭算法
基于浸没模型的分水岭算法Beucher与Lantuejoul很早就提出了,近年来得到了广泛的应用。该算法的缺点是对于圆形图像将产生错误的分水岭。直到Soille-Vincent分水岭算法的出现,才让分水岭算法在实践中发挥出更大的作用,Soille-Vincent是基于浸没模型的数学形态学分水岭算法,有较高的准确性和效率,可以在非常短的时间里得到准确的分水岭分割结果。
Soille-Vincent基本算法主要包括如下两个方面:
(1)排序。首先,通过扫描整幅图像来获得各灰度级的概率密度分布数据,根据灰度累积概率分布数据和像素值来确定排名中各像素点的相对位置,排序越靠前则对应的位置灰度值会越低。
(2)淹没。像素应按灰度值顺序进行处理,在相同灰度值的集合中像素会被视为相同的灰度层次。扫描当前灰度级的像素,检查是否有未标记的像素。未标记点表示一个新的最小区域,发现未标记像素应使当前的未标记数字增加1。
在上述算法中,操作中的每个像素平均将被扫描5次,其中排序过程将被扫描2次,在扫描过程中将再次被淹没3次。在整个执行过程中,时间可以看作是线性的,通过对每个汇水盆地加以标记,可以大大提高算法的精度。只有这样,才能成功地将分数岭算法从理论转化为实践。
3.5.3 改进的分水岭算法
直接使用分水岭算法通常很难得到一个有意义的分割结果,尽管基于数学形态学的分水岭算法已经被广泛应用于图像处理领域;但是,可以通过必要的改善优化过程,得到有意义的分割结果。
在使用分水岭算法时,过度分割往往是最大的问题。目前的解决方法主要有两种:(1)首先标记图像,根据标签提取感兴趣的真实对象,上面的标签被当作梯度图像的最小值;其次将梯度图像的最小值完全屏蔽,利用分水岭算法计算形态学梯度图像,并对一般标记的对应对象进行分段。(2)先将分水岭划分为梯度图像,然后根据某一标准分割图像,并重复合并相邻的图像区域。
我们知道,分水岭算法的对象是梯度图像,噪声会干扰梯度图像的分割结果。图像的噪声、背景和微妙的表面分割灰度变化都会导致过度分割问题,最有效的办法是滤波处理分割前的原始图像,以便有效消噪,该方法被称为图像消噪滤波器处理。