智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码

时间:2024-04-03 15:55:33

智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码


摘要:Otsu 方法是应用最广泛的图像分割法之一,该方法也叫最大类间方法阈值分割法,选择分割阈值的标准是图像的类间方差达到最大或者类内方差最小。Otsu 阈值分割法可以从单阈值扩展到多级阈值分割,多阈值分割图像时采用多个不同的阈值将图像分割为多个不同的区域或目标。将智能算法应用于多阈值的寻找,能大大加快算法的速度。

1.Otsu阈值分割法原理

Otsu 阈值分割法是日本学者 Otsu 提出来的。假设图像大小为 M×NM × N,图像灰度级范围为0L1[0,L - 1]nin_i为图像灰度级 ii 的像素点数,灰度级 ii 出现的概率为:pi=ni/(M×N)p_i = n_i /(M × N);对于单阈值分割,图像被分割为两类,灰度级为0T[0,T]的像素点归为 C0C_0 类,灰度级为T+1L1[T + 1,L - 1]的像素点为 C1C_1 类。设 P0(T)P1(T)P_0 (T)、P_1 (T) 分别表示C0C_0 类和 C1C_1 类的出现的概率;u0(T)u1(T)u_0 (T),u_1 (T) 表示 C0C_0 类和 C1C_1 类的平均灰度级。则有:
P0(T)=i=0Tpi(1) P_0(T)=\sum_{i=0}^{T}p_i\tag{1}

P1(T)=i=T+1L1pi=1P0(T)(2) P_1(T)=\sum_{i=T+1}^{L-1}p_i = 1 - P_0(T)\tag{2}

u0(T)=i=0T(ipiP0(T))(3) u_0(T)=\sum_{i=0}^T(i\frac {p_i}{P_0(T)})\tag{3}

u1(T)=i=T+1L1(ipiP1(T))(4) u_1(T)=\sum_{i=T+1}^{L-1}(i\frac {p_i}{P_1(T)})\tag{4}

图像的平均灰度级表示为:
u=i=1Lipi=P0(T)u0(T)+P1(T)u1(T)(5) u = \sum_{i=1}^{L}ip_i=P_0(T)u_0(T)+P_1(T)u_1(T)\tag{5}
图像的类间方差δb2(T)\delta_b^2(T)表示为:
δb2(T)=P0(T)(u02(T)u)2+P1(T)(u12(T)u)2(6) \delta_b^2(T)=P_0(T)(u_0^2(T) -u)^2+P_1(T)(u_1^2(T)-u)^2\tag{6}
图像的类内方差 δw2(T)\delta_w^2(T) 表示为
δw2(T)=P0(T)u02(T)+P1(T)u12(T)(7) \delta_w^2(T)=P_0(T)u_0^2(T)+P_1(T)u_1^2(T)\tag{7}
当类间方差达到最大时该灰度级为最优分割阈值,即Otsu 阈值:
T=argmax(lT<L){δb2(T)}(8) T^* = argmax_{(l\leq T<L)} \{\delta_b^2(T) \}\tag{8}
或者当类内方差达到最小时对应的阈值为最优分割阈值:
T=argmin(lT<L){δw2(T)}(9) T^* = argmin_{(l\leq T<L)} \{\delta_w^2(T) \}\tag{9}
单阈值 Otsu 分割法可以扩展到多级阈值分割法。假设有n1n-1个阈值T1,T2,...,Tn1T_1,T_2,...,T_{n-1} 将图像分为nn类,表示为C0={0,1,...,T1},....,Cn={Tn1+1,Tn1+2,...,L1}C_0=\{0,1,...,T_1\},....,C_n=\{T_{n-1}+1,T_{n-1}+2,...,L-1\},各类出现的概率分别表示为P0,P1,...,Pn1P_0,P_1,...,P_{n-1},方差表示为δ02,δ12,...,δn12\delta_0^2,\delta_1^2,...,\delta_{n-1}^2,均值为u0,u1,...,un1u_0,u_1,...,u_{n-1}

则有:
Pk=i=TkTk+11pi(10) P_k = \sum_{i=T_k}^{T_{k+1}-1}p_i\tag{10}

uk=1PkPki=TkTk+11ipi(11) u_k=\frac{1}{P_k}P_k\sum_{i=T_k}^{T_{k+1}-1}ip_i\tag{11}

δk2=i=TkTk+11(iuk)2piPk(12) \delta_k^2=\sum_{i=T_k}^{T_{k+1}-1}(i-u_k)^2\frac{p_i}{P_k}\tag{12}

其中k=01n1;T0=0Tn=Lk = 0,1,…,n-1;T_0 = 0,T_n = L。则图像的类间方差表示为:
δb2=i=0n1Piδi2(13) \delta_b^2=\sum_{i=0}^{n-1}P_i\delta_i^2\tag{13}
多级最优分割阈值:
{T1,T2,...,Tn1}=argmax(lT<L){δb2}(14) \{T_1^*,T_2^*,...,T_{n-1}^*\} =argmax_{(l\leq T<L)} \{\delta_b^2 \} \tag{14}
或者:
{T1,T2,...,Tn1}=argmin(lT<L){δw2}(15) \{T_1^*,T_2^*,...,T_{n-1}^*\} =argmin_{(l\leq T<L)} \{\delta_w^2 \} \tag{15}

2.基于灰狼优化(GWO)的多阈值分割

由上述Otsu阈值分割法的原理可知,要得到最终的阈值,需要去寻找阈值,使得类间方差值最大或类内方差值最小。于是可以利用智能优化算法进行阈值的寻优,使得获得最佳阈值。

于是优化的适应度函数就是:
fun{T1,T2,...,Tn1}=argmax(lT<L){δb2}(14) fun\{T_1^*,T_2^*,...,T_{n-1}^*\} =argmax_{(l\leq T<L)} \{\delta_b^2 \} \tag{14}
设置阈值分割的个数,寻优边界为0到255(因为图像的像素值范围为0-255),设置相应的灰狼算法参数(灰狼算法具体原理及代码参照我之前写灰狼算法原理:https://blog.csdn.net/u011835903/article/details/107716390)。

3.算法结果:

以lena图像为例:

智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码

单阈值结果:

智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码

3阈值结果:

智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码

4阈值结果:

智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码

4.参考文献:

[1]袁小翠,黄志开,马永力,刘宝玲.Otsu阈值分割法特点及其应用分析[J].南昌工程学院学报,2019,38(01):85-90+97.

5.Matlab代码:

https://mianbaoduo.com/o/bread/Z5uVkpw=
如果想利用其他的优化算法进行对比,可以参照我之前发布的智能优化算法代码(https://blog.csdn.net/u011835903/category_10226833.html)修改适应度函数,自己进行实验。