基于JAYA优化的Renyi熵图像多阈值分割(python)
摘要:本文介绍基于Renyi熵的图像分割,并且应用JAYA算法进行阈值寻优。
1.Renyi熵阈值分割原理
一维直方图情况下Renyi熵的计算公式为r如下,对应于阈值t的目标类和背景类的熵值分别为:
H
0
(
t
)
=
1
1
−
α
l
n
(
∑
i
=
0
t
(
p
i
w
0
(
t
)
)
α
)
(1)
H_0(t) = \frac{1}{1- \alpha}ln(\sum_{i=0}^t(\frac{p_i}{w_0(t)})^\alpha) \tag{1}
H0(t)=1−α1ln(i=0∑t(w0(t)pi)α)(1)
H b ( t ) = 1 1 − α l n ( ∑ i = t + 1 L − 1 ( p i w b ( t ) ) α ) (2) H_b(t) = \frac{1}{1- \alpha}ln(\sum_{i=t+1}^{L-1}(\frac{p_i}{w_b(t)})^\alpha) \tag{2} Hb(t)=1−α1ln(i=t+1∑L−1(wb(t)pi)α)(2)
E ( t ) = H 0 ( t ) + H b ( t ) (4) E(t)=H_0(t) + H_b(t) \tag{4} E(t)=H0(t)+Hb(t)(4)
其中,
α
\alpha
α 为[0,1]的可调值,最佳阈值:
t
∗
=
a
r
g
m
a
x
(
0
≤
t
≤
L
−
1
)
{
E
(
t
)
}
(5)
t^* = argmax_(0\leq t \leq L-1)\{E(t)\} \tag{5}
t∗=argmax(0≤t≤L−1){E(t)}(5)
推广到多阈值则为,寻找一组阈值
(
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
}
(6)
t(1,..,n)^*=argmax\{H_0+H_1+,...+H_n\}\tag{6}
t(1,..,n)∗=argmax{H0+H1+,...+Hn}(6)
2.基于JAYA优化的多阈值分割
由上述z指数熵阈值分割法的原理可知,要得到最终的阈值,需要去寻找阈值,熵值最大。于是可以利用智能优化算法进行阈值的寻优,使得获得最佳阈值。
于是优化的适应度函数就是:
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)
设置阈值分割的个数,寻优边界为0到255(因为图像的像素值范围为0-255),设置相应的JAYA算法参数
JAYA算法原理请参考:https://blog.youkuaiyun.com/u011835903/article/details/115572600
3.算法结果:
本程序阈值数量可设定,对lena图形 ,2阈值分割结果如下:
4.参考文献:
[1]吴一全,孟天亮,吴诗婳.图像阈值分割方法研究进展20年(1994—2014)[J].数据采集与处理,2015,30(01):1-23.