基于白鲸算法优化的二维最大熵图像分割

智能优化算法应用:基于白鲸优化的二维最大熵图像阈值分割 - 附代码


摘要:本文介绍基于最大熵的图像分割,并且应用白鲸算法进行阈值寻优。

1.前言

阅读此文章前,请阅读《图像分割:直方图区域划分及信息统计介绍》https://blog.csdn.net/u011835903/article/details/108024753 了解基础知识,相关公式含义。

2.二维最大熵阈值分割原理

Kapur等人于1985年提出的最大熵法是另一种广受关注的阈值选取方法 ,其是在Pun等人所做工作的启发下,经过一些修正而得出。该方法以形式简单、意义明确的特点成为关注度最高、使用最多的基于熵的阈值选取方法。最大熵法的阈值选取准则是分割后的目标类和背景类的总熵值最大,即信息量最大。在一维直方图的条件下,对应于阈值 t的目标类和背景类的熵值分别为:
H 0 ( t ) = − ∑ i = 0 t p i w 0 ( t ) l n p i w 0 ( t ) (1) H_{0}(t)=-\sum_{i=0}^t \frac{p_i}{w_0(t)}ln\frac{p_i}{w_0(t)}\tag{1} H0(t)=i=0tw0(t)pilnw0(t)pi(1)

H b ( t ) = − ∑ i = t + 1 L − 1 p i w b ( t ) l n p i w b ( t ) (2) H_b(t)=-\sum_{i=t+1}^{L-1}\frac{p_i}{w_b(t)}ln\frac{p_i}{w_b(t)}\tag{2} Hb(t)=i=t+1L1wb(t)pilnwb(t)pi(2)

最佳阈值选取准则为:
t ∗ = a r g m a x ( 0 ≤ t ≤ L − 1 ) { H 0 ( t ) + H b ( t ) } (3) t^*=argmax_{(0\leq t\leq L-1)}\{H_0(t)+H_b(t)\}\tag{3} t=argmax(0tL1){H0(t)+Hb(t)}(3)
二维直方图情况下的最大熵计算公式:
H ( t , s ) = H 0 ( t , s ) + H b ( t , s ) = − ∑ i = 0 t ∑ j = 0 s p i j w 0 ( t , s ) l n p i j w 0 ( t , s ) − ∑ i = t + 1 L − 1 ∑ j = s + 1 L − 1 p i j w b ( t , s ) l n p i j w b ( t , s ) (4) H(t,s)=H_0(t,s)+H_b(t,s)=-\sum_{i=0}^{t}\sum_{j=0}^{s}\frac{p_{ij}}{w_0(t,s)}ln\frac{p_{ij}}{w_0(t,s)} -\sum_{i=t+1}^{L-1}\sum_{j=s+1}^{L-1}\frac{p_{ij}}{w_b(t,s)}ln\frac{p_{ij}}{w_b(t,s)} \tag{4} H(t,s)=H0(t,s)+Hb(t,s)=i=0tj=0sw0(t,s)pijlnw0(t,s)piji=t+1L1j=s+1L1wb(t,s)pijlnwb(t,s)pij(4)
相应的最佳阈值为:
( t ∗ , s ∗ ) = a r g m a x ( 0 ≤ t ≤ L − 1 , 0 ≤ s ≤ L − 1 ) { H ( t , s ) } (5) (t^*,s^*) = argmax_{(0\leq t\leq L-1,0\leq s\leq L-1)}\{H(t,s)\}\tag{5} (t,s)=argmax(0tL1,0sL1){H(t,s)}(5)

3.基于白鲸优化的多阈值分割

由上述二维最大熵阈值分割法的原理可知,要得到最终的阈值,需要去寻找阈值(t,s),使得熵值最大。于是可以利用智能优化算法进行阈值的寻优,使得获得最佳阈值。

于是优化的适应度函数就是:
f u n { t , s } = a r g m a x ( 0 ≤ t ≤ L − 1 , 0 ≤ s ≤ L − 1 ) { H ( t , s ) } (6) fun\{t,s\}=argmax_{(0\leq t\leq L-1,0\leq s\leq L-1)}\{H(t,s)\}\tag{6} fun{t,s}=argmax(0tL1,0sL1){H(t,s)}(6)
设置阈值分割的个数,寻优边界为0到255(因为图像的像素值范围为0-255),设置相应的白鲸算法参数。
白鲸算法原理请参考:https://blog.csdn.net/u011835903/article/details/127642354

4.算法结果:

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

5.参考文献:

[1]吴一全,孟天亮,吴诗婳.图像阈值分割方法研究进展20年(1994—2014)[J].数据采集与处理,2015,30(01):1-23.

6.Matlab 代码

白鲸优化算法是一种群体智能优化算法,其灵感来源于白鲸的群体觅食行为。它具有三个阶段:探索、开发和鲸落。在探索阶段,个体通过随机搜索来扩大解空间。在开发阶段,个体通过拥有较好适应度的解来引导搜索。在鲸落阶段,个体通过集中搜索来收敛解空间。通过这种方式,白鲸优化算法可以在搜索过程中逐渐找到最优解。 在使用Python实现白鲸优化算法时,可以先定义适应度函数,并设置好参数。适应度函数的目标是最小化各VMD分量的局部包络熵。然后,通过随机初始化一组白鲸个体,使用白鲸优化算法的探索、开发和鲸落阶段来更新个体的位置。在每一次迭代中,根据个体的适应度值来选择全局最优解,并更新个体的位置。最后,通过多次迭代,算法会逐渐收敛到最优解。 以下是白鲸算法优化Python的示例代码: ```python import numpy as np import time # 定义适应度函数 def fitness(pop, data): np.random.seed(0) K = int(pop[0]) alpha = int(pop[1]) tau = 0 DC = 0 init = 1 tol = 1e-7 imf, res, u_hat, omega = VMD(data, alpha, tau, K, DC, init, tol) comp = np.vstack([imf, res.reshape(1,-1)]) SE = 0 se_imf = [] for i in range(comp.shape[0]): temp = BaoLuoShang(comp[i,:]) SE += temp se_imf.append(temp) fit = min(se_imf) np.random.seed(int(time.time())) return fit # 白鲸优化算法 def beluga_whale_optimization(data, num_iterations, num_whales, bounds): # 随机初始化白鲸个体的位置 whales = np.random.uniform(bounds[0], bounds[1], size=(num_whales, len(bounds))) # 初始化最佳适应度和最佳位置 best_fitness = float('inf') best_position = None for iteration in range(num_iterations): for i in range(num_whales): # 更新个体的位置 new_position = whales[i] + np.random.uniform(-1, 1, size=len(bounds)) new_position = np.clip(new_position, bounds[0], bounds[1]) # 计算个体的适应度值 fitness_value = fitness(new_position, data) # 更新最佳适应度和最佳位置 if fitness_value < best_fitness: best_fitness = fitness_value best_position = new_position.copy() # 更新个体的位置 whales[i] = new_position.copy() return best_position # 设置数据和参数 data = # 原始时间序列数据 num_iterations = # 迭代次数 num_whales = # 白鲸个体数量 bounds = # 个体位置的上下界 # 运行白鲸算法优化 best_position = beluga_whale_optimization(data, num_iterations, num_whales, bounds) # 输出最佳位置 print("最佳位置:", best_position) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值