美文网首页
分水岭算法的应用

分水岭算法的应用

作者: 此间不留白 | 来源:发表于2020-09-14 21:35 被阅读0次

    上海交通大学
    医学图像处理

    数学形态学一个应用是分水岭算法,为了便于理解,可以将图像的灰度空间与地球表面的地形高度相类比,据此,发明了应用于图像领域的分水岭算法。

    测地线距离

    假设,如下图所示的一个岛屿,要从x点走到y点,虚线所表示的是最短的直线距离,也就是欧式距离,考虑到现实情况,不能穿过水面到达目标地点,所以,能够从起点到终点的实际通行路线中最短的距离成为测地线距离。

    通过以上分析,给出测地线距离的定义:

    给定指定连通域F_a,测地线距离就是F_a中两个像素点xy之间的最短(可执行)路径的长度,用公式定义如下:
    d_{F_{a}}(x,y) = \wedge \{ l(P)\}

    测地线影响域(Geodesic Influence Zone,IZ)

    如下图所示,假定一个连通域A包含了若干个子区域B_1,B_2,…B_k,,用公式表示iZ_A(B_i)所表示的测地线影响域为:
    iZ_A(B_i) = \{ p \in A ,\forall j \in [1,k]/ \{i\}, d_A(p,B_i)<d_A(p,B_j)\}

    以上公式可以理解为,区域A中的像素点到B_i域的测地线距离比其他域更小的点的轨迹的集合,也就是以B_i域中的种子点出发,其测地线距离比其他域的种子点都要小的点集所构成的区域。如下图所示:

    测地线影响域的skeleton(SKIZ)

    SKIZ表示区域A中的点不属于任何一个测地线影响域,也就是域A中的点到两个测地线影响域的中测地线距离相等。区域A中构成B的SKIZ,记作SKIZ_A(B),用公式的表述如下:
    SKIZ_A(B) = A /IZ_A(B) \ \ with \ \ IZ_A(B) = \bigcup_{i \in [1,k]}iZ_A(B_i)

    注意:,A/B 表示区域B以外的A中的所有点的集合集合

    分水岭算法

    如下图所示的山脉地形图,包含山谷和山峰,在水平面不断上升的过程中,会逐渐淹没掉一些较低的区域,而为了防止水溢出,需要不断在山脊上修建大坝,这个过程不断进行,最后会得到一个区域分割的效果。


    在一副图像上实现分水岭算法,与上述过程相似,只不过是通过灰度值充当水平面的角色,对图像进行不断的填埋,最后得到区域分割的效果图。

    如上图所示的动画中,不断用灰度值代表的水平面淹没图像中的最小值,最后得到分割后的图像。综上,分水岭算法的步骤可以总结如下:

    1. 按照图像灰度值对图像中的所有像素进行排序;

    2. 将最小的灰度值作为起始点,该灰度值也是初始阈值;

    3. 通过每次迭代加1的方式增加阈值,如果找到另外一个局部最小点,将其添加到最小点列表,然后计算和其他已存在的最小点的SKIZ,否则,计算该点和已经存在的最小点列表计算SKIZ
      步骤3的过程可以理解为:以起始点为中心进行区域增长,区域增长的过程会不断接触新的邻域,而通过计算SKIZ距离的方式分配(区域增长所接触到的)邻域内的像素点,分配邻域内像素点的类别。

    4. 重复步骤3,直到所有的像素点都被分类到“盆地”(区域),或者阈值超过了最大的灰度。

    如下图所示,另外一种分水岭算法的原理是,指定初始的种子点,只对种子点所在的邻域像素进行分类,而不考虑其他区域。


    分水岭算法的应用实例

    如下图所示的图片,以最小点开始,进行分水岭算法,会将整幅图分割成许多小区域,造成过分割的效果。为了解决这一问题,有以下三种解决方案:

    • 通过一些平滑运算(如高斯平滑)抹掉原图中的一些较小的像素点;
    • 增加分水岭算法的初始阈值,通过分水岭算法直接抹掉一些较小的像素点;
    • 通过其他算法,把已经混合在一起的一些小区域进行组合,之后在通过分水岭算法分割。


    最后,通过合并一些小区域再利用分水岭算法进行分割的效果如下图所示:


    如下图所示,展示了通过分水岭算法分割血细胞的流程:


    相关文章

      网友评论

          本文标题:分水岭算法的应用

          本文链接:https://www.haomeiwen.com/subject/uvttyktx.html