Page 130 - 《软件学报》2021年第11期
P. 130

3456                               Journal of Software  软件学报 Vol.32, No.11, November 2021

                                                     s ⎡ ⎛  ( , )j ⎞  1 k+  ⎛  ( , )i j ⎞  1 k−  ⎤
                                                   t
                                             () =
                                           KA    1     ⎢ ⎜  pi  ⎟  + ∑∑  ⎜  p  ⎟  ⎥                  (11)
                                                 2 i=  0 j=  0 ⎢ ⎝  ⎣  P A  ⎠  ⎝  P A  ⎠  ⎥ ⎦
                                                           ( , )j ⎞
                                            () =
                                          KB    1  L−  1  L−  1 ⎡ ⎢ ⎛  ⎜  pi  ⎟  1 k+  + ∑∑  ⎛  ⎜  p ( , )i j ⎞  ⎟  1 k−  ⎤ ⎥  (12)
                                                2 it=+ 1 j s= + ⎢ ⎝  1 ⎣  P B  ⎠  ⎝  P B  ⎠  ⎥ ⎦
                 其中,k 是 K 熵指数,为 0~1 之间的常数.二维 K 熵阈值选取函数 S(t,s)的最大值即为最优值,则二维 K 熵的最
                                     ∗
                           *
                             *
                                   ∗
                 佳阈值向量(t ,s )取为 ( , )ts =  argmax{ ( , )}.S t s
                                         0 ts≤  , ≤  L− 1
                    算法 2 给出了二维 K 熵阈值分割算法的实现过程.
                    算法 2.  二维 K 熵阈值分割算法.
                    1.   读入图像.
                    2.   计算图像二维直方图,并得到联合概率 p(i,j).
                    3.   按照公式(7)计算图像目标类 A 和背景类 B 的先验概率 P A 和 P B .
                                                 p (, )ij                p (, )ij
                    4.   得到图像目标类 A 的概率分布              和背景类 B 的概率分布            .
                                                  P A                     P B
                                                                                       *
                                                                                         *
                    5.   根据二维 K 熵阈值选取函数(8)计算该图像的最大二维 K 熵值和最佳阈值向量(t ,s ).
                                         *
                                        *
                    6.   根据最佳阈值向量(t ,s )对图像进行分割.
                    分割后二值图像定义为
                                                   ⎧ ⎪ 0, ( , )f xy <  t ∗  and ( , )g xy <  s ∗
                                                 = ⎨                                                 (13)
                                             F ∗
                                              ts ,  ∗
                                                   ⎪ ⎩ 1, other
                 2    一种改进的天牛须优化算法(NBAS)
                    本文设计了一种改进的天牛须优化算法(NBAS):首先将传统天牛须算法进行离散化,得到二进制离散天牛
                 须算法(BBAS);然后利用 BBAS 的全局搜索性,与 BAS 结合,提出了基于二进制离散天牛须算法优化的新型天
                 牛须算法(NBAS),解决了 BAS 在处理二维 K 熵阈值寻优时,易陷入局部最优的问题;最后,将二维 K 熵阈值分割
                 与 NBAS 结合,实现最佳阈值寻优.
                 2.1   二进制离散天牛须搜索算法(BBAS)
                    为了解决传统 BAS 算法易陷入局部收敛的问题,本文先将原始 BAS 算法拓展为二进制离散天牛须算法
                                                                   T
                 (BBAS).在 BBAS 算法中,天牛代表一个可能解.设 x′=(x 1 ,x 2 ,…,x n ) 为 n 维搜索空间的一只天牛,也代表优化问题
                 的一个可能解,对搜索空间的每一维选择合适的编码长度进行二进制编码,假设天牛 x′的每一维 x i 编码后的长
                                                      T
                 度为 g,取 m=n×g,二进制化后有:x′=(a 1 ,a 2 ,…,a m ) ,a i ∈{0,1}.
                    设天牛 x′左、右须位置的二进制表示分别为 x′             l  (a a  2 l  ,...,a lm ) ,x′ =  T  r  =  (a a r 2 ,...,a rm ) .天牛的速度项 v′也保
                                                                                     T
                                                              ,
                                                                             ,
                                                             1 l
                                                                             1 r
                 持与天牛 x′相同的二进制编码总位数: v′           (, ,...,v v′ =  1 ′  2  v′  m ) ,xbest′为天牛当前历史最优位置.
                                                           T
                    为了有效控制天牛的速度变化对天牛位置更新的影响,在天牛速度项 v′的更新过程中引入惯性因子来调
                 节对自身当前速度的继承量;同时考虑自身左、右须的信息来动态地调整飞行方向,进而提高天牛在迭代后期
                 的全局搜索能力.天牛的速度项 v′的迭代更新公式取为
                                                           ×
                                             v′  ω ×  v′ =  +  c ×  1  step dir sign (T′ ×  l  −  T r ) ′  (14)
                 其中,c 1 为正常数;step 为当前迭代的迭代步长,可由公式(4)计算得到;dir 为公式(1)定义的 m 维归一化随机向量;
                  , ′′ 为适应度值;ω为惯性因子.根据文献[20]中的分析,ω越大,表示全局搜索性越强;ω越小,表示局部搜索性越
                 TT r
                  l
                 强.这里,取ω为随着迭代次数增加线性递减的常数:
                                               ω=ω max −(ω max −ω min )×e/Max_iter                   (15)
                 其中,e 为当前迭代数,Max_iter 为最大迭代数,ω max 和ω min 分别为惯性因子的最大值和最小值.随着惯性因子ω的
   125   126   127   128   129   130   131   132   133   134   135