版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、%遗传算法在道路图像阈值分割中的应用% 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('mh.jpg'); %读入道路图像 %A=imresize(A,0.4); B=rgb2gray(A); %灰度化 C=B; %C=imr
2、esize(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('最佳适应度值进
3、化曲线'); figure; plot(gen,yuzhi(1,gen); title('每一代的最佳阈值进化曲线'); %初始化种群% function initpop() global lchrom oldpop popsize chrom C imshow(C); for i=1:popsize chrom=rand(1,lchrom); for j=1:lchrom if chrom(1,j)<0.5 chrom(1,j)=0; else chrom(1,j)=1; end end oldpop(i,1:lchrom)=chrom; end %产生新一代个
4、体% function generation() fitness_order; %计算适应度值及排序 select; %选择操作 crossover; %交叉 mutation; %变异 %计算适度值并且排序% function fitness_order() global lchrom oldpop fitness popsize chrom fit gen C m n fitness1 yuzhisum global lowsum higsum u1 u2 yuzhi gen oldpop1 popsize1 b1 b yuzhi1 if popsize>=5 popsize=cei
5、l(popsize-0.03*gen); end if gen=75 %当进化到末期的时候调整种群规模和交叉、变异概率 cross_rate=0.3; %交叉概率 mutation_rate=0.3; %变异概率 end %如果不是第一代则将上一代操作后的种群根据此代的种群规模装入此代种群中 if gen>1 t=oldpop; j=popsize1; for i=1:popsize if j>=1 oldpop(i,:)=t(j,:); end j=j-1; end end %计算适度值并排序 for i=1:popsize lowsum=0; higsum=0; lownum=
6、0; hignum=0; chrom=oldpop(i,:); c=0; for j=1:lchrom c=c+chrom(1,j)*(2(lchrom-j); end b(1,i)=c*255/(2lchrom-1); %转化到灰度值 for x=1:m for y=1:n if C(x,y)<=b(1,i) lowsum=lowsum+double(C(x,y);%统计低于阈值的灰度值的总和 lownum=lownum+1; %统计低于阈值的灰度值的像素的总个数 else higsum=higsum+double(C(x,y);%统计高于阈值的灰度值的总和 hignum=hignum
7、+1; %统计高于阈值的灰度值的像素的总个数 end end end if lownum=0 u1=lowsum/lownum; %u1、u2为对应于两类的平均灰度值 else u1=0; end if hignum=0 u2=higsum/hignum; else u2=0; end fitness(1,i)=lownum*hignum*(u1-u2)2; %计算适度值 end if gen=1 %如果为第一代,从小往大排序 for i=1:popsize j=i+1; while j<=popsize if fitness(1,i)>fitness(1,j) tempf=fit
8、ness(1,i); tempc=oldpop(i,:); tempb=b(1,i); b(1,i)=b(1,j); b(1,j)=tempb; fitness(1,i)=fitness(1,j); oldpop(i,:)=oldpop(j,:); fitness(1,j)=tempf; oldpop(j,:)=tempc; end j=j+1; end end for i=1:popsize fitness1(1,i)=fitness(1,i); b1(1,i)=b(1,i); oldpop1(i,:)=oldpop(i,:); end popsize1=popsize; else %大于一
9、代时进行如下从小到大排序 for i=1:popsize j=i+1; while j<=popsize if fitness(1,i)>fitness(1,j) tempf=fitness(1,i); tempc=oldpop(i,:); tempb=b(1,i); b(1,i)=b(1,j); b(1,j)=tempb; fitness(1,i)=fitness(1,j); oldpop(i,:)=oldpop(j,:); fitness(1,j)=tempf; oldpop(j,:)=tempc; end j=j+1; end end end %下边对上一代群体进行排序 fo
10、r i=1:popsize1 j=i+1; while j<=popsize1 if fitness1(1,i)>fitness1(1,j) tempf=fitness1(1,i); tempc=oldpop1(i,:); tempb=b1(1,i); b1(1,i)=b1(1,j); b1(1,j)=tempb; fitness1(1,i)=fitness1(1,j); oldpop1(i,:)=oldpop1(j,:); fitness1(1,j)=tempf; oldpop1(j,:)=tempc; end j=j+1; end end %下边统计每一代中的最佳阈值和最佳适应
11、度值 if gen=1 fit(1,gen)=fitness(1,popsize); yuzhi(1,gen)=b(1,popsize); yuzhisum=0; else if fitness(1,popsize)>fitness1(1,popsize1) yuzhi(1,gen)=b(1,popsize); %每一代中的最佳阈值 fit(1,gen)=fitness(1,popsize);%每一代中的最佳适应度 else yuzhi(1,gen)=b1(1,popsize1); fit(1,gen)=fitness1(1,popsize1); end end %精英选择% funct
12、ion select() global fitness popsize oldpop temp popsize1 oldpop1 gen b b1 fitness1 %统计前一个群体中适应值比当前群体适应值大的个数 s=popsize1+1; for j=popsize1:-1:1 if fitness(1,popsize)<fitness1(1,j) s=j; end end for i=1:popsize temp(i,:)=oldpop(i,:); end if s=popsize1+1 if gen<50 %小于50代用上一代中用适应度值大于当前代的个体随机代替当前代中的个
13、体 for i=s:popsize1 p=rand; j=floor(p*popsize+1); temp(j,:)=oldpop1(i,:); b(1,j)=b1(1,i); fitness(1,j)=fitness1(1,i); end else if gen<100 %50100代用上一代中用适应度值大于当前代的个体代替当前代中的最差个体 j=1; for i=s:popsize1 temp(j,:)=oldpop1(i,:); b(1,j)=b1(1,i); fitness(1,j)=fitness1(1,i); j=j+1; end else %大于100代用上一代中的优秀的一
14、半代替当前代中的最差的一半,加快寻优 j=popsize1; for i=1:floor(popsize/2) temp(i,:)=oldpop1(j,:); b(1,i)=b1(1,j); fitness(1,i)=fitness1(1,j); j=j-1; end end end end %将当前代的各项数据保存 for i=1:popsize b1(1,i)=b(1,i); end for i=1:popsize fitness1(1,i)=fitness(1,i); end for i=1:popsize oldpop1(i,:)=temp(i,:); end popsize1=pop
15、size; %交叉% function crossover() global temp popsize cross_rate lchrom j=1; for i=1:popsize p=rand; if p<cross_rate parent(j,:)=temp(i,:); a(1,j)=i; j=j+1; end end j=j-1; if rem(j,2)=0 j=j-1; end if j>=2 for k=1:2:j cutpoint=round(rand*(lchrom-1); f=k; for i=1:cutpoint temp(a(1,f),i)=parent(f,i
16、); temp(a(1,f+1),i)=parent(f+1,i); end for i=(cutpoint+1):lchrom temp(a(1,f),i)=parent(f+1,i); temp(a(1,f+1),i)=parent(f,i); end end end %变异% function mutation() global popsize lchrom mutation_rate temp newpop oldpop sum=lchrom*popsize; %总基因个数 mutnum=round(mutation_rate*sum); %发生变异的基因数目 for i=1:mutn
17、um s=rem(round(rand*(sum-1),lchrom)+1; %确定所在基因的位数 t=ceil(round(rand*(sum-1)/lchrom); %确定变异的是哪个基因 if t<1 t=1; end if t>popsize t=popsize; end if s>lchrom s=lchrom; end if temp(t,s)=1 temp(t,s)=0; else temp(t,s)=1; end end for i=1:popsize oldpop(i,:)=temp(i,:); end %查看结果% function findresult() global maxgen yuzhi m n C B A result=floor(yuzhi(1,maxgen) %result为最佳阈值 C=B; %
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年电工学电子技术试题库完整参考答案
- 2026年安徽绿海商务职业学院单招职业适应性考试模拟测试卷附答案
- 2026浙江嘉兴大学附属实验幼儿园招聘合同制教师3人笔试模拟试题及答案解析
- 2026年承德护理职业学院单招职业技能测试题库附答案
- 2026年吉林工程职业学院单招职业技能考试题库附答案
- 2026年新疆工业职业技术学院单招职业倾向性测试题库附答案
- 2026陕西师范大学专职辅导员与心理健康教育专职教师招聘22人笔试备考试题及答案解析
- 2026年员工心理考试题库及答案参考
- 2025江西南昌大学第二附属医院高层次人才招聘142人(公共基础知识)测试题附答案
- 2025年12月福建厦门市鹭江创新实验室管理序列岗位招聘8人考试参考题库附答案
- smt车间安全操作规程
- JJF 2254-2025戥秤校准规范
- 强制医疗活动方案
- DB42T 850-2012 湖北省公路工程复杂桥梁质量鉴定规范
- 月经不调的中医护理常规
- 2024-2025学年江苏省南通市如东县、通州区、启东市、崇川区高一上学期期末数学试题(解析版)
- 瑞幸ai面试题库大全及答案
- 现代密码学(第4版)-习题参考答案
- 缝纫车间主管年终总结
- (康德一诊)重庆市2025届高三高三第一次联合诊断检测 地理试卷(含答案详解)
- 油气长输管道检查标准清单
评论
0/150
提交评论