基于最大类间方差遗传算法的道路分割

本文介绍了如何应用遗传算法解决最大类间方差问题以进行道路图像分割。首先对解空间进行数值编码,用8位二进制表示灰度值。然后初始化种群并随机生成染色体,通过解码计算适应值。通过选择概率和累计概率选择染色体进行遗传运算,包括杂交操作,调整杂交率以平衡解的收敛速度和最优解的寻找。最终,通过不断迭代,逐步接近最优分割阈值。
摘要由CSDN通过智能技术生成

Github个人博客:https://joeyos.github.io

最大类间方差的求解过程,就是在解空间中查找到一个最优的解,使得其方差最大,而遗传算法能非线性快速查找最优解k及最大的方差,其步骤如下:

1) 为了使用遗传算法,首先必须对实现解空间的数值编码,产生染色体单元。由于所采集到的道路图像的灰度图由0-255个灰度值组成,正好对应着一个8位二进制即一个字节,因此使用一个字节作为染色体。对于染色体的解码正好是编码的逆过程,就是这个字节的十进制数。

2)初始化种群,产生一个规模的染色体种群,并随机初始化每一染色体,得到多个不同的染色体,这个过程实际上决定了解的起始值,如果其选取过偏,则会造成最优解收敛慢,计算时间长的缺点。

3)对每个染色体进行解码。由最大类方差的分割阈值方法,可以设定其方差作为每一个染色体的评价函数,染色体的方差越大,就越有可能逼近最优解。求出每个染色体的适应值,对于所求得的适应值,求出每一个染色体的选择概率及累计概率并产生多个随机数。选择出随机概率对应的染色体作为遗传运算的一种种子,其中适应值打的被选取的可能性大,优胜劣汰。被选中的染色体作为遗传种子,进行遗传运算,这样一代一代地进行,每一代所得到的适应值都不相同,新一代中的染色体得到的适应值较高,因此,其解也更逼近于最大的值。

4)接下来进行遗传运算。首先进行杂交运算,杂交运算就是对染色体中的某些基因进行交换,此过程中为了控制交换的位数,必须给定一个杂交率。杂交率越大,其交换的基因越多,其值变化越快,解的收敛速度就越快;但杂交率太大,不利于求得最优解。

由最大类间方差分割法可知,对于每一个灰度值k,必须求得以下几个参数:w0、w1、u0、u1。不难发现对于每一个表达式都要求出pi的值,因此,可先求出每个pi的值。

function main()
clear all;
close all;
clc;
%定义全局变量
global chrom oldpop fitness lchrom  popsize cross_rate mutation_rate yuzhisum
global maxgen  m n fit gen yuzhi A B C oldpop1 popsize1 b b1 fitness1 yuzhi1
%读入道路图像
A=imread('road1.jpg');     
A=imresize(A,0.4);
B=rgb2gray(A);      %将RGB图像转化成灰度图像
C=imresize(B,0.1);    %将读入的图像缩小
lchrom=8;      %染色体长度
popsize=10;    %种群大小
cross_rate=0.7;      %杂交概率
mutation_rate=0.4;    %变异概率
%最大代数
maxgen=150;            
[m,n]=size(C);
'计算中,请稍等...'
%初始种群
initpop;   
%遗传操作
for gen=1:maxgen
    generation;  
end
findresult; %图像分割结果
%%%%%%输出进化各曲线%%%%%%
figure;
gen=1:maxgen;
plot(gen,fit(1,gen)); 
title(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值