学习数字图像处理(8)——图像分割
8.1 图像分割的基本策略
图像分割是计算机视觉和图像处理中的一项基本任务,旨在将图像划分为多个部分或区域,通常是为了识别图像中的物体和边界。分割的结果是一组区域,这些区域共同覆盖整个图像,并且这些区域内部的像素在某种意义上是相似的,而不同区域的像素则具有明显的差异。图像分割的两个基本策略是基于不连续性的分割和基于相似性的分割。
基于不连续性的分割
基于不连续性的分割策略关注的是图像中像素值的突变,这些突变通常对应于物体的边界。这种方法试图找到像素值发生变化的地方,即边缘检测是该策略的核心。
边缘检测
- 梯度算子:如Sobel、Prewitt和Roberts交叉算子,通过计算图像中每个像素点的梯度幅值来检测边界。梯度的方向表示灰度变化最大的方向,而梯度的幅度则表示变化的速率。
- 拉普拉斯算子:是一种二阶导数方法,它可以检测到更细微的边缘信息,但它对噪声更敏感。
- Canny边缘检测器:是一种广泛使用的边缘检测工具,它通过多个步骤来优化边缘检测的结果,包括平滑图像以减少噪声、计算梯度幅值和方向、应用非极大值抑制以及使用双阈值和边缘跟踪。
基于相似性的分割
基于相似性的分割策略侧重于将图像中相似的像素聚集在一起形成同质区域。这种方法通常基于像素之间的相似性度量,如颜色、纹理、亮度等。
阈值处理
- 全局阈值:选择一个全局阈值将像素分为前景和背景两部分。这种方法适用于图像具有高对比度和明显区分的物体。
- 局部阈值:针对图像不同区域选择不同的阈值,更适合于图像亮度不均匀的情况。
图像分割策略的选择通常取决于应用场景、图像的特性以及性能要求。在实际应用中,这些策略往往会结合使用,以达到最佳的分割效果。
8.2 基于微分算子的边缘检测
边缘检测算法的基本步骤
- 去噪(平滑)。边缘检测主要基于导数计算,但受噪声影响。但滤波器在降低噪声的同时也导致边缘强度的损失。
- 边缘点的检测:得到边缘点的候选点集。
- 边缘定位。精确确定边缘的位置。从候选点集中选择真实的成员。
Sobel算子
Sobel算子是一种简单的边缘检测算法,主要用于得到图像的一阶导数,即梯度的幅度和方向。Sobel算子包含两组3x3的核(或者称为掩模):一个用于水平方向(Gx),一个用于垂直方向(Gy)。这些核分别与图像卷积以计算水平和垂直方向的梯度分量。
通过这两个梯度分量,可以计算每个像素的梯度幅值和方向:
Sobel算子对噪声有一定的抵抗力,但它不能很好地处理较大的边缘,且边缘通常比较粗。
Laplacian of Gaussian (LoG)
LoG算子首先使用高斯滤波器平滑图像,以减少噪声的影响,然后计算图像的二阶导数,即拉普拉斯算子。高斯滤波器具有可调的标准差,允许控制平滑的程度。LoG算子可以用下面的公式表示:
LoG算子能够很好地检测图像中的斑点和孤立点,以及更精细的边缘,但由于它是二阶导数,对噪声比较敏感。
Canny边缘检测器
Canny边缘检测器是一种多阶段算法,旨在提供一个清晰、薄的边缘。Canny算法的主要步骤如下:
- 噪声降低:使用高斯滤波器平滑图像,以减少图像中的噪声。
- 梯度计算:使用Sobel算子计算图像的梯度幅度和方向。
- 非极大值抑制:在梯度方向上检查每个像素,只保留局部最大值(即边缘)。
- 双阈值:应用两个阈值(一个低阈值和一个高阈值)来确定真正的边缘。高于高阈值的像素被认为是强边缘,低于低阈值的像素被抑制,介于两者之间的像素如果与强边缘相连,则被认为是边缘。
- 边缘跟踪:通过弱边缘和强边缘之间的连接关系来确定最终的边缘。
Canny算法被认为是边缘检测中的黄金标准,因为它在清晰度和连续性方面提供了非常好的结果。然而,它的计算成本比Sobel和LoG算法要高。
8.2 Hough变换
霍夫变换(Hough Transform)是一种用于特征提取的技术,最初被用于检测图像中的直线,后来扩展到能够检测各种形状,如圆或椭圆。霍夫变换的基本思想是利用图像空间到参数空间的转换来识别特定形状。
直线检测的霍夫变换
对于直线检测,霍夫变换考虑了直线的参数表示。常用的表示方法之一是极坐标系中的 (r, \theta) 形式,其中 r 是直线到原点的距离,\theta 是直线的法线与x轴正方向的夹角。任何一条直线都可以用一对 (r, \theta) 值唯一表示。
霍夫变换的直线检测算法步骤如下:
-
边缘检测:首先使用边缘检测算法(如Canny边缘检测器)提取图像中的边缘信息。
-
霍夫空间映射:图像中的每个边缘点都可以在霍夫空间中表示为一个正弦曲线。这是因为对于每个边缘点,存在许多可能的直线经过该点,这些直线对应的 (r, \theta) 参数在霍夫空间中画出一条曲线。
-
累加器:霍夫变换使用一个二维数组(称为累加器)来记录霍夫空间中每个 (r, \theta) 单元格的投票数。每当图像空间中的边缘点映射到霍夫空间中的一条曲线时,该曲线上的所有单元格的投票数都会增加。
-
峰值检测:在累加器中,较高的投票数意味着对应的 (r, \theta) 参数有更多的边缘点共线,因此这些 (r, \theta) 参数可能代表图像中的一条直线。通过检测累加器中的局部最大值(峰值),可以找到图像中的直线。
-
直线提取:最后,通过找到的峰值参数 (r, \theta),可以将它们转换回图像空间,得到检测到的直线。
圆和其他形状的霍夫变换
霍夫变换也可以用来检测其他形状,如圆。对于圆检测,霍夫变换使用三个参数:圆心的x坐标、y坐标和圆的半径。对于更复杂的形状,可能需要更多的参数。
霍夫变换对噪声具有一定的鲁棒性,并且能够在不完整或部分遮挡的形状中检测到完整的几何形状。然而,它的计算量可能会很大,特别是对于需要多个参数的形状检测。为了减少计算量,通常会对参数空间进行离散化,并且可能会使用一些优化策略,如随机霍夫变换(Randomized Hough Transform, RHT)或渐进概率式霍夫变换(Progressive Probabilistic Hough Transform, PPHT)。
8.3 阈值分割法
阈值分割(Thresholding)是图像处理中一种基本的分割技术,用于将图像分为前景和背景两部分。这种方法简单、高效,尤其适用于对象和背景具有明显不同灰度级别的情况。阈值分割的基本思想是选择一个灰度阈值,然后根据这个阈值将像素分为两组。
固定阈值分割(Global Thresholding)
固定阈值分割是一种最简单的图像分割方法,它涉及选择一个全局常数作为阈值,然后应用这个阈值到整个图像。具体来说,对于一个给定的阈值 T,图像中的每个像素值 p 都会通过以下方式被分类:
- 如果 p > T,则 p 被分配到前景(通常标记为白色或1)。
- 如果 p \leq T,则 p 被分配到背景(通常标记为黑色或0)。
固定阈值分割的关键在于如何选择合适的阈值 T。这个阈值可以通过多种方式确定,如基于图像直方图的分析,或者根据特定应用领域的经验知识。一旦确定了阈值,就可以快速地将图像分割成前景和背景。
固定阈值分割的优点是简单和计算速度快,但缺点是它不适用于光照不均匀的图像,或者前景和背景的灰度级相近的情况。
Otsu方法
Otsu方法是一种自动确定最佳阈值的算法,它基于类间方差最大化原则。Otsu方法的目标是找到一个阈值,该阈值可以将图像分为两个类别(前景和背景),使得这两个类别的方差之和最小,或者等价地,类间方差最大。类间方差是指两个类别的均值之差的平方,这可以看作是类别间差异的一种度量。
Otsu方法的步骤如下:
-
计算图像的直方图和归一化直方图:直方图显示了每个灰度级的像素数量,而归一化直方图则将这些数量转换为概率。
-
计算累计和和累计均值:这些是计算类间方差所需的中间量。
-
计算全局图像均值:这是所有像素值的平均值。
-
遍历所有可能的阈值:对于每个可能的阈值,计算前景和背景的加权方差,然后计算类间方差。
-
选择最大类间方差的阈值:这个阈值被认为是分割前景和背景的最佳阈值。
Otsu方法适用于图像的直方图具有双峰或多峰,且这些峰之间有明显的谷底的情况。在单峰情况或前景背景灰度重叠较多的情况下,Otsu方法可能不如预期那么有效。
Otsu方法的优点在于它不需要用户设置阈值,是一种自适应的方法。但其计算量相对于固定阈值分割要大,尤其是对于大型图像或实时处理系统来说。此外,Otsu方法假设图像由前景和背景两部分组成,且这两部分的分布是双峰的,这在实际应用中可能不总是成立。
评论区