基于鲸鱼算法优化的对称交叉熵图像多阈值分割

智能优化算法应用:基于鲸鱼优化的对称交叉熵图像多阈值分割


摘要:本文介绍基于对称交叉熵的图像分割,并且应用鲸鱼算法进行阈值寻优。

1.前言

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

2.对称交叉熵阈值分割原理

考虑到Li等人提出的交叉熵不具备距离对称性, Brink等给出了对称交叉熵的概念,其实质上是将前向 KullBack 散度与后向 KullBack 散度相加,从而使得交叉熵具有了对称性,成为真正意义上的距离度量。对称交叉熵的表达式为:
H ( t ) = ∑ i = 0 t h i ( i l n i u 0 ( t ) + u 0 ( t ) l n u 0 ( t ) i ) + ∑ i = t + 1 L − 1 h i ( i l n i u b ( t ) + u b ( t ) l n u b ( t ) i ) (1) H(t) = \sum_{i=0}^t h_i(iln\frac{i}{u_0(t)} + u_0(t)ln\frac{u_0(t)}{i}) + \sum_{i=t+1}^{L-1} h_i(iln\frac{i}{u_b(t)} + u_b(t)ln\frac{u_b(t)}{i})\tag{1} H(t)=i=0thi(ilnu0(t)i+u0(t)lniu0(t))+i=t+1L1hi(ilnub(t)i+ub(t)lniub(t))(1)
使式(1)取最小值的t值即为最佳阈值:
t ∗ = a r g m i n ( 0 ≤ t ≤ L − 1 ) { H ( t ) } (2) t^*=argmin_(0\leq t\leq L-1)\{H(t)\} \tag{2} t=argmin(0tL1){H(t)}(2)
推广到多阈值则为,寻找一组阈值 ( t 0 , . . . , t n ) (t_0,...,t_n) t0,...,tn使得熵值最小:
t ( 1 , . . , n ) ∗ = a r g m i n { H 0 + H 1 + , . . . + H n } (3) t(1,..,n)^*=argmin\{H_0+H_1+,...+H_n\}\tag{3} t(1,..,n)=argmin{H0+H1+,...+Hn}(3)

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

由上述对称交叉熵阈值分割原理可知,要得到最终的阈值,需要去寻找阈值,熵值最小。于是可以利用智能优化算法进行阈值的寻优,使得获得最佳阈值。

于是优化的适应度函数就是:
f u n { t ( 1 , . . , n ) ∗ } = a r g m i n { H 0 + H 1 + , . . . + H n } (4) fun\{t(1,..,n)^*\}=argmin\{H_0+H_1+,...+H_n\}\tag{4} fun{t(1,..,n)}=argmin{H0+H1+,...+Hn}(4)
设置阈值分割的个数,寻优边界为0到255(因为图像的像素值范围为0-255),设置相应的鲸鱼算法参数
鲸鱼算法原理请参考:https://blog.csdn.net/u011835903/article/details/107559167

4.算法结果:

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

5.参考文献:

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

6.Matlab 代码

小波阈值去噪是一种常见的信号处理方法,可以去除信号中的噪声。鲸鱼优化算法是一种优化算法,可以用于寻找小波阈值去噪中的最优阈值。下面是使用Matlab实现基于鲸鱼优化算法的小波阈值去噪的步骤: 1. 导入需要去噪的信号,并对信号进行预处理,如归一化等。 2. 选择小波变换的类型和分解层数,对信号进行小波分解。 3. 计算小波系数的阈值,选择阈值的方法可以根据具体情况来确定。常见的方法有固定阈值、软阈值和硬阈值等。 4. 对小波系数进行阈值处理,得到去噪后的小波系数。 5. 对去噪后的小波系数进行小波重构,得到去噪后的信号。 6. 使用鲸鱼优化算法寻找最优阈值,可以使用matlab中的优化工具箱进行求解。 下面是基于鲸鱼优化算法的小波阈值去噪的matlab代码示例: ```matlab % 导入需要去噪的信号 load noisysignal.mat % 对信号进行预处理 signal = noisysignal / max(abs(noisysignal)); % 小波阈值去噪 wname = 'db4'; % 小波变换类型 level = 5; % 分解层数 [C, L] = wavedec(signal, level, wname); % 小波分解 thr = wthrmngr('dw2ddenoLVL', C, L); % 计算阈值 Cden = wthresh(C, 's', thr); % 软阈值处理 denoised_signal = waverec(Cden, L, wname); % 小波重构 % 使用鲸鱼优化算法寻找最优阈值 fun = @(thr) mse(signal-waverec(wthresh(C, 's', thr), L, wname)); % 定义目标函数 lb = 0; % 阈值下界 ub = max(abs(C)); % 阈值上界 nVar = 1; % 变量个数 options = whale_optimset('Display', 'iter'); % 设置优化参数 [bestthr, fval] = whale_optim(fun, nVar, lb, ub, options); % 鲸鱼优化算法求解 % 使用最优阈值进行小波阈值去噪 Cden_best = wthresh(C, 's', bestthr); % 最优阈值处理 denoised_signal_best = waverec(Cden_best, L, wname); % 小波重构 % 绘制信号和去噪后的信号 plot(signal); hold on; plot(denoised_signal); plot(denoised_signal_best); legend('原始信号', '去噪后的信号', '使用最优阈值去噪后的信号'); ``` 需要注意的是,鲸鱼优化算法的求解结果可能存在局部最优解,需要根据实际情况进行调整。另外,小波阈值去噪的效果也受到小波变换类型、分解层数、阈值选择方法等因素的影响,需要根据具体情况进行选择和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值