计算机视觉与深度学习实战:以MATLAB、Python为工具
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

6.2 理论基础

分水岭算法以数学形态学图像处理为基础,属于基于区域的图像分割算法。该算法最初的思想来源于地形学,假设将一幅图像看作一个立体的地形表面,且图像中每个像素点的海拔高度都由该点的灰度值表示,则图像中的每个局部极小值和它的影响区域被称为集水盆地;图像的边缘灰度值变化幅度较大,对应集水盆地的边界,即地形学中的山脊;图像的边缘位置扫描到灰度极小值点的渐变过程具有坡度的特点,因此被称为山坡。

6.2.1 模拟浸水的过程

假设地形图具有高低起伏的特征,对其建立地理模型并模拟浸水的过程。随着水从各个盆地的最低点向上漫溢,水面也逐步上升,相邻盆地的水将汇合于其边缘处。如果在地形图的两个集水盆地汇合处修筑足够高的大坝来阻止水面的汇合,则随着水面的上升,各个盆地会完全被水淹没,但边缘处的大坝不会被淹没。因此,大坝就将地理模型分割成了不同的盆地区域,这些区域边缘建起的大坝被称为分水岭,被分割开的各个区域被称为聚水盆地,这就是模拟浸水的过程。

6.2.2 模拟降水的过程

如果将图像视作地形图并建立地理模型,则当上空落下一滴雨珠时,雨珠降落到山体表面并顺山坡向下流,直到汇聚到相同的局部最低点。在地形图上,雨珠在山坡上经过的路线就是一个连通分支,通往局部最低点的所有连通分支就形成了一个聚水盆地,山坡就被称为分水岭,这就是模拟降水的过程。

6.2.3 过度分割问题

分水岭变换的目标是求出梯度图像的“分水岭线”,传统的差分梯度算法对近邻像素做差分运算,容易受到噪声和量化误差等因素的影响,往往会在灰度均匀的区域内部产生过多的局部梯度“谷底”,这些在分水岭变换中就对应“集水盆地”。因此,传统的差分梯度算法最终将导致出现过分割(Over Segmentation)现象,即一个灰度均匀的区域可能被过度分成多个子区域,以致产生大量的虚假边缘,从而无法确认哪些是真正的边缘,对算法的准确性造成了一定的不利影响,这就是过度分割问题。

6.2.4 标记分水岭分割算法

直接应用分水岭分割算法的主要缺点是会产生过分割现象,即分割出大量的细小区域,而这些区域对于图像分析可以说是毫无意义的。图像噪声等因素往往会导致在图像中出现很多杂乱的低洼区域,而通过平滑滤波能减少局部最小点的数量,所以在分割前先对图像进行平滑是避免过分割的有效方法之一。此外,对分割后的图像按照某种准则进行相邻区域的合并也是一种过分割解决方法。

基于标记(Marker)的分水岭分割算法能够有效防止过分割现象的发生,该算法的标记包括内部标记(Internal Marker)和外部标记(External Marker)。其基本思想是通过引入标记来修正梯度图像,使得局部最小值仅出现在标记的位置,并设置阈值h来对像素值进行过滤,删除最小值深度小于阈值h的局部区域。

标记分水岭算法中的一个标记对应图像的一个连通成分,其内部标记与我们感兴趣的某个目标相关,外部标记与背景相关。对标记的选取一般包括预处理和定义选取准则两部分,其中,选取准则可以是灰度值、连通性、大小、形状、纹理等特征。在选取内部标记之后,就能以其为基础对低洼进行分割,将分割区域对应的分水线作为外部标记,之后对每个分割出来的区域都利用其他分割技术(如二值化分割)将目标从背景中分离出来。

首先,假设将内部标记的选取准则定义为满足以下条件。

(1)区域周围由更高的“海拔”点组成。

(2)区域内的点可以组成一个连通分量。

(3)区域内连通分量的点具有相同或相近的灰度值。

然后,对平滑滤波后的图像应用分水岭算法,并将满足条件的内部标记为所允许的局部最小值,再将分水岭变换得到的分水线结果作为外部标记。

最后,内部标记对应每个感兴趣目标的内部,外部标记对应背景。根据这些标记结果将其分割成互不重叠的区域,每个区域都包含唯一的目标和背景。

因此,标记分水岭算法的显著特点和关键步骤就是获取标记的过程,本案例将采用梯度边缘检测与标记分水岭算法相结合的方法来对肺部图像进行分割。