图像分割之分水岭算法

分水岭图像分割算法借助地形学概念进行图像分割,近年来广泛使用。

1. 基本原理和步骤

1)原理

分水岭方法将图像看作3-D的地形表示,即2-D的地基(对应图像空间)加上三维的高度(对应图像灰度)。

实际中建立不同目标间的分水岭的过程常借助涨水法(水从低上涨)来讨论。如图1所示

假设有水从各谷底空涌出并且水位逐渐增高,如果两个相邻的谷底(区域A和B)涌出的水位高过其间的峰间这些谁就会汇合。这个汇合的点就是分水岭。

图像分割之分水岭算法_第1张图片

图1


由此可见,如果能确定分水岭的位置,就能将图像用一组各自封闭的曲线分割成不同的区域。

分水岭图像分割算法就是通过确定分水岭的位置来进行图像分割的。一般考虑到各区域内部像素的灰度比较接近,而相邻区域像素间的灰度差距较大,可以先计算一幅图像的梯度图,再寻找梯度图的分水岭。

在梯度图中,小梯度值对应区域内部,大梯度值对应区域的边间,分水岭算法寻找大梯度值像素的位置,即边界位置。


2)借助数学形态学中的膨胀运算迭代计算分水岭的方法

2.1)设给定一幅待分割图像f(x,y),梯度图像g(x,y),分水岭的计算是在梯度图像上进行的。

2.2)用M1,M2,...,Mn表示各局部极小值的像素位置,C(Mi)为对应的Mi对应区域中像素坐标的集合用n代表当前的梯度阈值,

T[n]代表记为(u,v)的像素集合,g(u,v)

T[n]={(u,v) | g(u,v)

梯度阈值从图像梯度范围的最低值整数增加。当梯度阈值为n时,g(x,y)

对Mi所在的区域满足条件的坐标集合C(Mi)可看做一幅二值图像:Cn(Mi)=C(Mi)∩T[n],即同时在C(Mi)区域和T[n]区域的地方Cn(Mi)=1,否则为0。

用C[M]代表所有梯度阈值为n时图像中所有满足梯度值小于n的像素集合:C[n]=∪Cn(Mi) i

2.3)初始化C[min+1]=t[min+1],然后逐渐迭代进行。设在步骤n时,以建立C[n-1-1],下面考虑从C[n-1]得到C[n].

令S代表T[n]中连通组元的集合,每个连通组元s∈S[n]时,有三种情况:

2.3.1)s∩C[n-1]是空集--C[n]=s+C[n-1]

2.3.2)s∩C[n-1]包含C[n-1]中的一个连通组元--C[n]=s+C[n-1]

2.3.3)s∩C[n-1]包含C[n-1]中一个以上的组元--需要在s中建立分水岭,对s∩C[n-1]进行膨胀


2. 实现

此实现用的是改进后的水平集方法,利用标号控制分割。

1)OpenCV源代码的解读

http://blog.csdn.net/byxdaz/article/details/4377753

2)具体应用过程

2.1)http://blog.csdn.net/dcrmg/article/details/52498440--如何具体实现

2.2)http://blog.csdn.net/skeeee/article/details/9013575--建立分水岭类进行应用

2.3)http://blog.csdn.net/fdl19881/article/details/6749976--交互


参考文献:

1)http://www.jdzj.com/plc/article/2010-6-24/17974-1.htm(图1来源)

2)章毓晋. 图像工程:图像分析[M]. 清华大学出版社, 2012.(文字部分来源)


你可能感兴趣的:(图像处理)