智能优化算法应用:基于GWO优化的灰度熵图像多阈值分割 - 附代码
智能优化算法应用:基于GWO优化的灰度熵图像多阈值分割
摘要:本文介绍基于灰度熵的图像分割,并且应用灰狼算法进行阈值寻优。
1.前言
阅读此文章前,请阅读《图像分割:直方图区域划分及信息统计介绍》https://blog.csdn.net/u011835903/article/details/108024753 了解基础知识,相关公式含义。
2.灰度熵阈值分割原理
针对最大熵法中仅仅利用像素灰度概率信息的问题,灰度熵的概念被提出 。与最大熵不同的是,灰度熵在考虑概率的基础上,结合了像素的灰度信息,能够使分割后的图像类内灰度更加均匀。一维直方图情况下灰度熵的计算公式为,对应于阈值t的目标类和背景类的熵值分别为:
H
0
(
t
)
=
−
∑
i
=
0
t
h
i
i
β
0
(
t
)
l
n
i
β
0
(
t
)
(1)
H_0(t) = -\sum_{i=0}^th_i\frac{i}{\beta_0(t)}ln \frac{i}{\beta_0(t)} \tag{1}
H0(t)=−i=0∑thiβ0(t)ilnβ0(t)i(1)
H b ( t ) = − ∑ i = t + 1 L − 1 h i i β b ( t ) l n i β b ( t ) (2) H_b(t)=-\sum_{i=t+1}^{L-1}h_i\frac{i}{\beta_b(t)}ln \frac{i}{\beta_b(t)}\tag{2} Hb(t)=−i=t+1∑L−1hiβb(t)ilnβb(t)i(2)
E ( t ) = H 0 ( t ) + H b ( t ) (3) E(t)=H_0(t) + H_b(t) \tag{3} E(t)=H0(t)+Hb(t)(3)
其中:
β
0
(
t
)
=
∑
i
=
0
t
i
h
i
(4)
\beta_0(t) = \sum_{i=0}^{t}ih_i \tag{4}
β0(t)=i=0∑tihi(4)
β b ( t ) = ∑ i = t + 1 L − 1 i h i (5) \beta_b(t) = \sum_{i=t+1}^{L-1}ih_i \tag{5} βb(t)=i=t+1∑L−1ihi(5)
最佳阈值:
t
∗
=
a
r
g
m
a
x
(
0
≤
t
≤
L
−
1
)
{
E
(
t
)
}
(6)
t^* = argmax_(0\leq t \leq L-1)\{E(t)\} \tag{6}
t∗=argmax(0≤t≤L−1){E(t)}(6)
推广到多阈值则为,寻找一组阈值
(
t
0
,
.
.
.
,
t
n
)
(t_0,...,t_n)
(t0,...,tn)使得熵值最大
t
(
1
,
.
.
,
n
)
∗
=
a
r
g
m
a
x
{
H
0
+
H
1
+
,
.
.
.
+
H
n
}
(7)
t(1,..,n)^*=argmax\{H_0+H_1+,...+H_n\}\tag{7}
t(1,..,n)∗=argmax{H0+H1+,...+Hn}(7)
3.基于灰狼优化(GWO)的多阈值分割
由上述灰度熵阈值分割法的原理可知,要得到最终的阈值,需要去寻找阈值,熵值最大。于是可以利用智能优化算法进行阈值的寻优,使得获得最佳阈值。
于是优化的适应度函数就是:
t
(
1
,
.
.
,
n
)
∗
=
a
r
g
m
a
x
{
H
0
+
H
1
+
,
.
.
.
+
H
n
}
(8)
t(1,..,n)^*=argmax\{H_0+H_1+,...+H_n\}\tag{8}
t(1,..,n)∗=argmax{H0+H1+,...+Hn}(8)
设置阈值分割的个数,寻优边界为0到255(因为图像的像素值范围为0-255),设置相应的灰狼算法参数(灰狼算法具体原理及代码参照我之前写灰狼算法原理:https://blog.csdn.net/u011835903/article/details/107716390)。
4.算法结果:
以lena图像为例:
单阈值结果:
3阈值结果:
4阈值结果:
5.参考文献:
[1]吴一全,孟天亮,吴诗婳.图像阈值分割方法研究进展20年(1994—2014)[J].数据采集与处理,2015,30(01):1-23.
6.Matlab 代码
个人资料介绍
相关文章
- 机器学习十大经典算法之AdaBoost
- Nagle算法 TCP_NODELAY和TCP_CORK
- 【KDD2022教程】在线聚类:算法、评估、指标、应用和基准
- 《三分钟-算法修行》两数相加之解与应用
- 日拱算法:最长字符串链,什么是“词链”?
- 拓展欧几里得算法与应用
- 【沥血整理】灰度(二值)图像重构算法及其应用(morphological reconstruction)。
- 认知算法(一)
- Faster R-CNN算法
- hash一致性算法以及应用场景_什么不是算法的基本特性
- MD5算法应用
- Go 数据结构和算法篇(十一):字符串匹配之 BF 算法
- 一致性 Hash 算法原理&应用梳理
- 程序员必备的数据库知识 2:Join 算法
- 基于文心大模型套件ERNIEKit实现文本匹配算法,模块化方便应用落地
- 数据结构、算法与应用 习题5.3 p104
- 【DSP视频教程】第11期:插补算法,曲线拟合丝滑顺畅,统计函数和基础函数加速实现,汇集SIMD,饱和和MAC乘累加应用实战(2023-02-12)
- 下(应用篇)| 推荐几款较流行的量子算法
- CVPR 2021 Oral | Transformer 跨界CV,美团提出端到端视频实例分割算法
- Redis高可用高性能缓存的应用系列04 - Cluster模式,集群数据分布算法
- 为什么说监控软件中应用弗洛伊德算法是更加有效的
- 视觉SLAM:模型介绍、算法框架及应用场景
- Java快速排序,堆排序,归并排序,希尔排序等排序算法的实现详解编程语言
- 算法-把数组排成最小的数详解编程语言
- 找出字符串中的最长回文子串 – 马拉车算法详解编程语言
- C++ search(STL search)算法详解
- Hive集群合并之应用端的负载均衡算法
- MySQL中位取反教程详解算法步骤及应用方法(mysql中位取反怎么算)
- 借助Redis算法,快速实现选举机制(利用redis实现选举)
- 利用哈希算法加速Redis的读写(哈希redis)
- Oracle中两数相乘的算法技巧(oracle两个数据相乘)
- CCF ADL 78 深度学习讲习班回顾:这几个大热领域的算法到应用,8位学术大牛带你掌握人工智能前沿技术
- c语言实现奇偶排序算法