3.3 基于灰度阈值的图像分割方法
灰度阈值分割法是图像分割领域中最常用的图像分割方法之一,其思路是对图像中每个像素的灰度开展分类,并设置灰度阈值来确定目标区域的边界,从而达到分割图像的目的。该方法主要通过提取对象的灰度特征,结合图像的不同灰度区域,选择合适的阈值来确定图像中每个像素所属的目标或背景区域,以及所对应的二值图像。它可以大大简化后续的分析和处理步骤,可以压缩数据,减少存储量。
3.3.1 阈值分割原则
阈值分割是一种应用广泛的图像分割方法,主要有两个步骤:(1)确定需要分割的阈值;(2)将分割阈值与像素灰度值进行比较,以分割图像的像素。其中,确定阈值是图像分割的关键,一个合适的阈值可以完全分割图像。在确定阈值后,将阈值与像素灰度值加以比较,可以并行开展像素分割并将分割结果直接用于图像区域。
利用阈值法对灰度图像进行分割时,需要先确定阈值,再将所有灰度像素划分为两个不同的类。如果只有一个阈值分割,则被称为单阈值分割方法;有多个阈值的分割被称为多阈值分割法。单阈值分割可以看作是多阈值分割的特例,许多单阈值分割算法都可以扩展到多阈值分割领域。当然,多阈值分割有时也可以转化为一系列的单阈值分割问题。无论采用哪种方法,原始图像f(x、y)都采用单个阈值t,分割后的图像可以定义为
这样得到的g( x,y)是一幅二值图像。
在多阈值情况下,分割后的图像可以表示为
其中,T0,T1,…,Tk是一系列的分割阈值,k表示图像分割后不同区域的标号。
应注意的是,单阈值分割和多阈值分割可能导致不同区域具有相同的标签或区域值。这是因为阈值只考虑像素本身的值,而与像素的空间位置无关。因此,按像素值划分为同一类别的像素,可能属于未在图像中连接的区域。此时,需要使用场景的先验知识来进一步确定目标区域。
3.3.2 阈值分割算法分类
目前,阈值分割算法有很多,对应的分类方法也有很多,如文档图像的阈值技术有5类:
(1)从分割过程是否需要人工干预的角度考虑,可分为交互式和自动式;
(2)从阈值不同范围的角度考虑,可分为全局阈值和局部阈值;
(3)从阈值选择灰度分布的统计特征的角度考虑,可以划分为基于灰度分布的一阶统计和基于灰度分布的二阶统计;
(4)从处理策略的角度考虑,可分为迭代式和非迭代式;
(5)从训练像素是否用于估计目标的角度考虑,可分为有监督的和无监督的。
在上述阈值原则的讨论中,阐明了阈值分割算法的关键问题,并根据阈值选择的特点对算法进行了分类。阈值一般可写为
f( x,y)表示像素点(x,y)的灰度值,p( x,y)值表示邻域的局部属性。阈值T则是x、y、f( x,y)和p( x,y)的函数。阈值分割法相应的阈值分别为:(1)基于像素值的阈值,只根据f( x,y)阈值来选择,阈值仅与整个映射像素的属性相关;(2)基于区域属性的阈值,根据f( x,y)和p( x,y)来选择,所得的阈值与区域性质有关;(3)基于坐标位置的阈值,阈值的选择与x和y的位置有关,与像素的空间坐标有关。
前两个阈值也被称为全局阈值,在某种意义上,局部阈值是全局阈值的一个特例。一般来讲,确定第一个阈值的技术称为点相关技术,确定第二个阈值的技术称为区域相关技术,确定第三个阈值的技术称为动态阈值技术。
3.3.2.1 全局阈值
对于灰度图像,每个像素的阈值是由每个像素本身的灰度值决定的,阈值在整幅图像的每一个像素中起作用,故对背景的梯度影响是无效的。
图像灰度直方图是对图像中每个像素灰度值的统计度量。许多常用的阈值选取方法都是基于直方图的。如果双峰作为直方图阈值,则对应于目标和背景的两个峰值之间的灰度级可以被分离(类似于多模态直方图)。下面介绍3种典型的全局阈值。
(1)最小值点阈值。图像的直方图包络为曲线,直方图的低点可由最小曲线选取。如果使用h( z)代表直方图,则应同时满足最小值点:
可以把与这些最小值对应的灰度值作为分割阈值。
由于存在图像噪声等问题,导致实际图像的直方图往往起伏幅度较大,解决这个问题的一个方法是平滑直方图。
(2)最佳阈值。有时,目标的灰度值与图像中的背景部分交叉,如果用总阈值分割图像,将会带来一定的误差。在实践中,常常希望减少错误分割的概率,选择最佳阈值就是一项常用的方法。最佳阈值是分割阈值,它最大限度地降低了错误分割率。直方图的图像可以看成是对像素灰度值的概率密度函数的近似。如果我们知道密度函数的形式,就可以计算出一个最优阈值,该阈值可以用来将图像分割成两个区域,从而最小化分割误差。
设有一幅混合高斯噪声的图像,背景概率密度和目标概率密度分别是P1(z)和P2(z),这样整幅图像的概率密度之和为
其中,u1和u2为背景和目标区域的平均灰度值,σ1和σ2分别是背景和目标区域的均值,p1和p2为背景灰度值和目标区域灰度值的先验概率。根据概率的定义,有p1+p2=1,在混合概率密度公式(3-6)中有5个未知参数。如果能找到这些参数,就可以确定混合概率密度,见图3-1。假设u1<u2,则需确定一个阈值T,使得灰度值小于T的像素被划分为背景,灰度值大于T的像素被划分为目标。
图3-1 最佳阈值选取示意图
此时,将目标像素划分为背景的概率和将背景像素划分为目标的概率,则有
总误差概率为
为求得使该误差最小的阈值,可将E( T)对T求导并令导数为零,即可得到
结果可用于求解高斯密度(即将式(3-6)代入),即有
当σ1=σ2=σ时:
若先验概率相等,即P1=P2,则有
这意味着如果图像灰度值服从正态分布,根据上述公式可以计算出最优阈值。
(3)迭代阈值分割。可以通过迭代方式来计算阈值。首先,选择图像灰度值的中间值作为初始值T0,按以下公式进行迭代:
式中,hk是灰度为k值的像素个数,共包含L个灰度级。迭代一直持续到Ti+1=Ti结束,取结束时的Ti为阈值。如图3-2所示,这是一个灰度阈值分割流程图。
图3-2 灰度阈值分割流程图
3.3.2.2 动态阈值
在阴影图像对比度不理想、光照不均匀、有突发噪声等情况下,如果仅在全局图像分割中设置一个固定阈值,既无法考虑所有情况,也会影响分割效果。解决方案是通过使用一组与坐标相关的阈值(即阈值是坐标的函数)来分割图像的每个部分。与坐标有关的阈值又称动态阈值,该阈值分割方法又称可变阈值法(或者称为自适应阈值法)。这种动态阈值方法往往在二值文档图像分割中有非常好的效果。
一个简单的动态阈值算法是确定每个像素的中心窗口,并计算其最大值、最小值和平均值来作为阈值。阈值插值和水线阈值是常用的两种方法。
1.阈值插值
可变阈值技术可以作为全局固定阈值本地技术的特例。首先,将图像划分为一系列的子图,它可以重叠或连接彼此。其次,可以计算每个子图像的阈值,并用固定阈值法选择阈值。通过插值子图的阈值可以得到图像中每个像素的阈值。该方法的具体步骤如下:
(1)将整幅图像分为一系列50%重叠的子图像;
(2)绘制每个子图的直方图;
(3)如果在双峰中检测到每个子图像的直方图,则可以使用上述阈值来确定子图像的阈值,否则将不处理该阈值;
(4)通过插值得到双峰直方图的阈值;
(5)根据每个子图像的阈值,通过插值得到所有像素的阈值,然后对图像进行分割。
2.水平线阈值算法
水平线阈值算法是一项特殊的自适应迭代阈值分割算法。水平线阈值算法的原理见图3-3。
图3-3 水平线阈值算法的原理
在图3-3中,有两个高灰度目标,可以从背景B1和B2中分离出来。较大的阈值T1用于从背景中分离两个对象,但两者的差距太大。如果逐渐减小阈值,目标边界将随着相对阈值的扩大而减小,最后两个目标将相遇;但是,不要让两个目标合并,让它们在最后一个像素集合之间保持联系,最后给出两个目标边界。上述过程可以在阈值降低到背景灰度级别之前完成。
实践中,水平线阈值算法的使用频率相对较高,能够得到每个目标的阈值。当阈值逐渐减小并接近最优阈值时,原始目标不再合并。此时,初始阈值的选择是非常重要的,需要选择合适的初始阈值,以确保最终分割结果的准确性。此外,最终阈值的选择也非常重要,这决定了最终边界与目标之间的一致性。