遗传算法在搜索过程中基本不采用外部信息,仅以适应度函数为依据引导搜索。它不受连续可微的约束且定义域可为任意集合。对目标函数的唯一要求是,对输入计算出能加以比较的非负结果。这使得遗传算法的应用范围非常广泛。个体的适应度值越大,表明该个体的生存能力越大,易于遗传产生后代。
4.遗传操作
遗传操作主要包括:选择(selection )、交叉(crossover)、变异mutation)三个操作数。
1)选择
选择过程是模仿自然选择现象,从父代种群中选出优良个体。个体的适应度值越大,在子代中将有更多的机会作为父代产生一个或多个子代个体。通常选用适应度比例法(轮盘赌方式roulette wheel )确定选择次数,该法中的各个体选择概率和其适应度值成比例。
2)交叉
最简单的交叉操作为单点交叉:首先,对父代个体进行随机配对;然后,配对个体随机设定交叉位置;最后,交换配对个体的部分信息。当染色体长度为l时,l-1有个交叉位置,单点交叉可实现l- 1种不同的交叉结果。
父代个体A 10011|011 10011100 新个体A’
父代个体B 01101|100 01101011 新个体B’
3)变异
变异操作随机选择变异基因序号,根据一定的变异概率Pm对该序号基因进行变异。对于二进制编码个体通常采用0变为l, 1变为0。
1 0 0 1 1 0 1 1 0 1 1 0 1
变异位
5.控制参数
控制参数主要有:种群规模、迭代次数、交叉概率、变异概率等。对此标准遗传算法都设为固定值。标准遗传算法的特点是:
1)轮盘赌选择方法:
2)随机配对;
3)单点交叉,生成两个子代个体:
4)种群内允许相同个体出现。
可见,遗传算法从任一初始化种群出发,通过选择(使优秀个体有更多机会传给子代),交叉(体现优秀个体间的信息交换),变异(引入新的个体,保持种群的多样性)操作种群一代一代的进化到搜索空间中最优点附近,直至收敛到最优解点。遗传算法不是直接作用在问题空间中,而是编码空间中,而且遗传操作非常简单。这使得遗传算法具有了简单,通用,鲁棒性强的特点。
第六章 基于遗传算法的最大类间方差分割法 6.1 普通最大类间方差法(Otsu法)简介由 Otsu于 1978 年提出的最大类间方差法以其计算简单、稳定有效而一直广为使用。该方法又称为大津阈值分割法,是在判决分析最小二乘法原理的基础上推导得出的,算法较为简单。此方法由于其简便性和分割准确性在图像分割中被大量采用,但是缺点在于与,与后文所述的基于遗传算法最大类间方差法相比,要求得最佳阈值,需要遍历灰度范围0~L-1内的所有像素并计算方差,最后比较得出最大方差,计算量大同时效率也很低,运算时间偏长。鉴于本文着重讨论遗传算法最大类间方差法,因此对于普通最大类间方差法讨论只作简介,详细内容参阅参考文章[25]。
基本思路:选取的最佳阈值t应当使得不同类间的分离性最好。首先计算基于直方图得到各分割特征值的发生概率,并以阈值变量t将分割特征值分为两类,然后求出每一类的类内方差及类间方差,选取使得类间方差最大,类内方差最小的t作为最佳阈值。具体步骤如下:
设原始灰度图像灰度级为L,灰度级为i的象素点数目为ni,则图像的全部象素数为
按阈值t可将所有象素划分两类:C0= (0,1,2,…,t)和C1 = (t +1,t + 2,…,L -1) 。而C0和C1类的类出现概率w及均值μ 分别由下列各式给出:
式中:
。不难得出,对任何t值,下式都能成立:
C0和C1类的方差可由下式求得:
定义类内方差σw、类间方差σB、总体方差σT 为:
引入
则最佳阈值t*可选择为:
t* = maxη(t)
在图像处理过程中,原有的图像分割方法都不可避免的会产生误差,这些误差会影响到图像处理和识别的效果。如何使这些误差最小是使计算机视觉达到实用化的重要要求。遗传算法其固有的并行性和不易陷入局部最优的特点使之非常适于大规模搜索空间的寻优,因此,己广泛应用于图像处理领域。图像分割是一个在复杂的参量空间中寻找最优分割参量的问题,遗传算法可以有效的寻找参量空间的全局最优值,从而为解决图像分割中的参量选择难题提供了有力的保证。本章将着重讨论基于遗传算法的最大类间方差分割法在图像分割中的应用。
6.2 最大类间方差图像分割的遗传算法描述正如前文所述,最大类间方差的求解过程就是在解空间中找到一个最优解,使得类间方差最大。为了改进普通最大类间方差法,采用遗传算法,求其寻找最优解的过程进行改进。遗传算法的最大类间方差法步骤如下:
1) 建立初始种群并编码。
在Matlab中,通过函数crtbp建立初始种群,在0~255之间以同等概率随机产生初始种群,通常初始种群的规模选取不易过大。随机的在0~255之间以同等概率生成40个个体A 1 ~A40作为第一次寻优的初始的种群。通过函数bs2rv进行二进制码和实值的转变。因为图像的灰度级在0~255之间,所以将染色体编码成8位二进制码,它代表某个阈值。(函数源代码参见附录[二]、附录[三])
2) 适应度函数计算各个体的适应度值。采用公式
P1=S1