OTSU/最大熵/Tsallis图像分割及其GA优化的MATLAB实现

在这里插入图片描述
在这里插入图片描述

本文是图像分割系列一,作为引入部分,主要讨论了三种经典的图像分割算法:OTSU、最大熵、Tsallis熵应用于灰度图像阈值分割,采用了简单的单阈值分割,并利用遗传算法优化其寻优过程,由于是单阈值以及一维的算法,因此仅采用遍历算法也能取得较好的效果,对于多阈值以及二维、三维的分割算法,将在后续的文章中继续更新。

00 文章目录

1 阈值分割算法
2 程序目录
3 与遗传算法结合的阈值分割算法
4 源码获取
5 展望

01 阈值分割算法

阈值分割技术由于其简单有效和易实现等特点而被广泛应用。根据阈值的数量,阈值分割法可以分为两级阈值分割和多级阈值分割。两级阈值分割是通过单个阈值将图像的区域分为前景和背景两类,而通过设置多个阈值将图像划分为多个区域则称为多级阈值分割。多阈值分割可以被认为是两级阈值分割的扩展。如何快速找到最优阈值是多阈值图像分割方法的关键和难点所在,其中比较著名的阈值选取准则是最大类间方差法和各种熵值法。

1.1 阈值分割

基于阈值的图像分割方法是灰度图像分割的常用方法,通过设置不同的灰度阈值对图像的灰度直方图进行分类,当像素的灰度值在相同的灰度范围内时,认为像素属于同一类别,具有一定的相似性。用I(I,j)表示图像I有i×j个像素的灰度值,图像I的灰度范围平均分为L级,设阈值T将图像I中的像素分为目标类C0和背景类C1两类,则阈值分割后的图像O(i.j)为:在这里插入图片描述

其中:I(I,j)为输入图像: i为图像像素集的行数: j为图像像素集的列数:T为阈值。
因此,选择合适的灰度阈值可以对图像进行精确分割,就是基于阈值的图像分割方法的关键。

1.2 OTSU算法

OTSU 算法由日本学者大津(Nobuyuki Otsu)于 1979 年提出,又称为最大类间方差法,是按灰度特性将图像分成背景和前景两部分,方差作为灰度分布均匀性的度量,方差值越大说明构成图像的两部分差别越大,即类间方差越大,任何混淆错分现象的发生均会导致差别变小,因此,类间方差最大意味着错分概率最小,也就是将图像中两部分进行最理想分割。将图像I的灰度范围平均分为L级,总像素点数N为: 在这里插入图片描述

Ni为第i级灰度级的像素点数,N为总像素点数。
因此,直方图的概率密度分布Pi为:在这里插入图片描述

假设阈值T将图像分割成两类,设目标类为C0={T+ 1,T+2,…L一 1},背景类为C1={0,1,…,T},设o2为类间方差,则最佳阈值T’满足类间方差最大,类间方差o2为:在这里插入图片描述

其中:o^2为类间方差;T’为类间方差最大的阈值;
OTSU算法是图像分割中阈值选取的最佳算法,不受图像亮度和对比度的影响并且计算简单。但是,该方法对图像噪声敏感,仅适用于单一目标分割,当目标与背景的大小比相差较大,或类间方差函数是双峰或多峰时,算法的效果则不好。

1.3 最大熵(KSW)算法

最大熵阈值分割算法的原理如下:设图像总像素数为M ,灰度范围 G = {0,1,…, L −1 } ,灰度值为i 的像素数目为mi ,分割阈值为t ,t 将图像分割为两部分,目标A和背景B。假设灰度值小于阈值的像素属于目标A,灰度值大于或等于阈值的像素属于背景B,那么图像中像素涉及目标A和背景B的概率分别为:在这里插入图片描述

最佳的阈值是目标和背景的熵和取最大值:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图像的总熵定义为:在这里插入图片描述

当φ (t)取得最大值时,对应的t值即为分割阈值。

1.4 Tsallis熵算法

Tsallis熵具有灵活性高和适应性强的特点。对于灰度级为G的图像,p;是灰度级i出现在图像中的概率。每个分布的Tsallis 熵Sq为:在这里插入图片描述

其中:q为利用分割图像的直方图均值进行选择。
在单阈值分割的情况下,设阈值z将图像分为目标A和背景B两类,Tsallis总熵为:S^A+B_q为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其中: wA为目标A部分的灰度概率; wB为背景B部分的灰度概率;SAq(z)为目标A部分的Tsallis熵; SBq(z)为背景B部分的Tsallis熵; SA+Bq(z)为Tsallis总熵。

由此可见,OTSU 算法不受图像亮度和对比度的影响,计算简单,但是,当类间方差函数可能是双峰或多峰时,这种方法效果并不好。此外,提升 OTSU 算法的抗噪声能力,可采用二维或三维的OTSU算法,但会增加运算复杂度,致使加大处理耗时。熵算法是根据已有信息,推测未知信息,具有灵活性高、适应性强和计算速度快的特点。一般的寻阈值方法有遍历以及智能算法,对于一维单阈值,由于只有256个阈值量,因此遍历法是比较快的。

02 程序目录

共三个文件夹,各存放OTSU、KSW、Tsallis方法及其遗传算法优化方法的matlab代码
在这里插入图片描述

比如KSW:在这里插入图片描述

其中,KSW法的核心代码如下在这里插入图片描述

OTSU法的核心代码如下
在这里插入图片描述

Tsallis法的核心代码:
在这里插入图片描述

03 与遗传算法结合的阈值分割算法

遗传算法的原理在作者往期文章中已做详细解释,这里不再赘述其原理,主要介绍其适应度及编码。
遗传算法的适应度,对于OTSU,即为其类间方差,越大越优,对于KSW和Tsallis,即为其熵取最大。
遗传算法的编码,由于是单阈值问题,因此采用二进制编码,共8位,例如00001111,则代表阈值为1+2+22+23=15。

3.1 数据集

采用几幅常见的图像进行阈值分割实验,如下:在这里插入图片描述

其对应的直方图曲线如下:
在这里插入图片描述

3.2 阈值分割结果比较

在这里插入图片描述

由于阈值分割算法都是一维单阈值的,因此仅需在0-255中进行寻优即可,遍历法与遗传算法优化的方法结果显然是差不多的,因为计算量少,因此遍历法还会更快。遗传算法每次所得到的阈值不是一个定值,而是在一定的范围波动,这是由于遗传算的种群是随机产生的,即种群的随机性,所以最后分割图像所得的阈值有一定的波动,是可以接受的。在一维空间下,遗传算法的速度略慢,体现不出遗传算法的高速性,但是在二维空间或多阈值情况下,遗传算法会在速度上有明显的优势, 这将在后续的文章中展现。
KSW法分割展示
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

04 源码获取

链接:https://pan.baidu.com/s/1NFYiI0FNg5HnPV80GNVcjw?pwd=1111 
提取码:1111

05 展望

至此,对于一维单阈值的图像分割算法就介绍到这里,虽然上述的算法处理速度快,但其抗噪声能力,分割精度和鲁棒性都有所不足,因此对其提升改进是必要的,作者在后续文章中也会继续介绍此方面的内容。如果觉得有帮助,也可以关注一波作者哦,关注不迷路,关注不吃亏。

微信公众号:KAU的云实验台

猜你喜欢

转载自blog.csdn.net/sfejojno/article/details/131363080