第四节 基于梯度的图像分割方法

  先前的区域分割方法通过将图像划分为内部点集和外部点集来实现分割。与此相反、边界方法利用边界具有高梯度值的性质直接把边界找出来。在这一节里,我们讨论三种这样的方法。

  一、边界跟踪

  假定我们从一个梯度幅值图像着手进行处理,这个图像是从一幅处于和物体具有反差的背景中的单一物体的图像进行计算得来的。因为灰度级最高的点(即在原始图像中梯度值最高的点)必然在边界上,所以我们可以把这一点作为边界跟踪过程的起始点。如果有几个点都具有最高灰度级,我们可以任选一个。

  接着,搜索以边界起始点为中心的 邻域,找出具有最大灰度级的邻域点作为第2个边界点。如果有两个邻域点具有相同的最大灰度级,就任选一个。从这一点开始,我们起动了一个在给定当前和前一个边界点的条件下寻找下一个边界点的迭代过程。在以当前边界点为中心的 邻域内,我们考察前一个边界点位置相对的邻点和这个邻点两旁的两个点(图8-4-1)。下一个边界点就是上述三点中具有最高灰度级的那个点。如果所有三个或两个相邻边界点具有同样的最高灰度级,我们就选择中间的那个点。如果两个非邻接点具有同样的最高灰度级,我们可以任选其一。

  在一个无噪声的单调点状物图像中,这个算法将描画出最大梯度边界;但是,即使少量的噪声也可能使跟踪暂时或永远偏离边界、噪声的影响可以通过跟踪前对梯度图像进行平滑或采用“跟踪虫”(tracking bug)的方法来降低。即使这样,边界跟踪也不能保证产生闭合的边界,并且算法也可能失控并走到图像边界外面。

  跟踪虫是一种按下述方式工作的算法“昆虫”。首先我们定义一个矩形平均窗n(“虫”),通常整个窗口具有相同的权值(图8-4-1)。最近两个或几个边界点定义了当前的边界方向。虫的背部则以当前边界为中心,以当前的边界方向为轴。随后跟踪虫可向任一边转一个角。


图 8-4-1 边界跟踪


图 8-4-2 边界跟踪虫

  在虫的每一个位置,对虫覆盖的区域的平均梯度进行计算。当虫位于最高平均梯度位置时,可以从虫的前部选择一个点作为下一个边界点。显然,跟踪虫是在一个更大的空间执行先前描述过的边界跟踪过程、大尺寸的跟踪虫可以完成梯度图像的平滑,从而降低了它对噪声的敏感化 它也限制了边界方向的急剧改变。

  虫的大小和形状也可以改变以求达到最佳性能。可通过减小旁视角增大虫的“惯性”。实际上,虫的确切形状对其性能影响似乎并不明显。梯度跟踪虫通常在噪声很低的图像或人工干预能防止灾难性的偏差的情况下才有用。

  二、梯度图像阈值化

  如果用适中的阈值对一幅梯度图像进行二值化,那么,我们将发现物体和背景内部的点低于阈值而大多数边缘点高于它。Kirsch的分割法利用了这种现象。这种技术首先用一个中偏低的灰度阈值对梯度图像进行二值化从而检测出物体和背景,物体与背景被处于阈值之上的边界点带分开。随着阈值逐渐提高,就引起物体和背景的同时增长。当它们接触上而又不至于合并时,可用接触点来定义边界。这是分水岭算法在梯度图像中的应用。


图 8-4-3 Kirsch的分割算法

  虽然KirsCh方法比二值化的计算开销大,但它可以产生最大梯度边界,并且避免了使用只有梯度跟踪虫时存在的许多麻烦。对包含多个物体的图像来说,在初始二值化步骤中分割正确的情况下,才能保证该分割的正确。预先对梯度图像进行平滑会产生较平滑的边界。

  三、拉普拉斯边缘检测

  拉普拉斯算子是对二维函数进行运算的二阶导数标量算子。它定义为

  

  它通常可以以数字化方式用图8-4-4中所示的卷积核之一来实现


图 8-4-4 拉普拉斯卷积核

  由于拉普拉斯算子是一个二阶导致,它将在边缘处产生一个陡峭的零交叉。拉普拉斯算子是一个线性的、移不变算子,它的传递函数在频域空间的原点为零。因此,一个经拉普拉斯滤波过的图像具有零平均灰度。

  如果一个无噪声图像具有陡峭的边缘,可用拉普拉斯算子将它们找出来。对经拉普拉斯算子滤波后的图像用零灰度值进行二值化会产生闭合的、连通的轮廓并消除了所有的内部点。但是由于噪声的存在,在运用拉普拉斯算子之前需要先进行低通滤波.选用高斯低通滤波器进行预先平滑是很合适的。由卷积的结合律可以将拉普拉斯算子和高斯脉冲响应组合成一个单一的高斯拉普拉斯核:

  

  这个脉冲响应对 是可分离的,因此可以有效地加以实现。它与第十一章中的讨论过的一般的带通滤波器的脉冲响应具有相同的形状,即一个负的凹谷中有一正向尖峰。参数 控制该中心峰的宽度,因此也控制了平滑的程度。

图 8-4-5 高斯拉普拉斯卷积