传算法在道路图像阈值

上传人:子 文档编号:41813126 上传时间:2018-05-31 格式:DOC 页数:11 大小:40KB
返回 下载 相关 举报
传算法在道路图像阈值_第1页
第1页 / 共11页
传算法在道路图像阈值_第2页
第2页 / 共11页
传算法在道路图像阈值_第3页
第3页 / 共11页
传算法在道路图像阈值_第4页
第4页 / 共11页
传算法在道路图像阈值_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《传算法在道路图像阈值》由会员分享,可在线阅读,更多相关《传算法在道路图像阈值(11页珍藏版)》请在金锄头文库上搜索。

1、传算法在道路图像阈值传算法在道路图像阈值function main()clear allclose allclcglobal chrom oldpop fitness lchrom popsize cross_rate mutation_rate yuzhisumglobal maxgen m n fit gen yuzhi A B C oldpop1 popsize1 b b1 fitness1 yuzhi1A=imread(mh.jpg); %读入道路图像%A=imresize(A,0.4);B=rgb2gray(A); %灰度化C=B;%C=imresize(B,0.1); %将读入的图

2、像缩小lchrom=8; %染色体长度popsize=10; %种群大小cross_rate=0.7; %交叉概率mutation_rate=0.4; %变异概率maxgen=150; %最大代数m,n=size(C);计算中,请稍等.initpop; %初始种群for gen=1:maxgengeneration; %遗传操作endfindresult; %图象分割结果%输出进化各曲线figure;gen=1:maxgen;plot(gen,fit(1,gen); title(最佳适应度值进化曲线);figure;plot(gen,yuzhi(1,gen);title(每一代的最佳阈值进化曲

3、线);%初始化种群%function initpop()global lchrom oldpop popsize chrom Cimshow(C);for i=1:popsizechrom=rand(1,lchrom);for j=1:lchromif chrom(1,j)=5popsize=ceil(popsize-0.03*gen);endif gen=75 %当进化到末期的时候调整种群规模和交叉、变异概率cross_rate=0.3; %交叉概率mutation_rate=0.3; %变异概率end%如果不是第一代则将上一代操作后的种群根据此代的种群规模装入此代种群中if gen1 t=

4、oldpop;j=popsize1;for i=1:popsizeif j=1oldpop(i,:)=t(j,:);endj=j-1;endend%计算适度值并排序for i=1:popsizelowsum=0;higsum=0;lownum=0;hignum=0;chrom=oldpop(i,:);c=0;for j=1:lchromc=c+chrom(1,j)*(2(lchrom-j);endb(1,i)=c*255/(2lchrom-1); %转化到灰度值 for x=1:mfor y=1:nif C(x,y)fitness(1,j)tempf=fitness(1,i);tempc=ol

5、dpop(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;endj=j+1;endendfor i=1:popsizefitness1(1,i)=fitness(1,i);b1(1,i)=b(1,i);oldpop1(i,:)=oldpop(i,:);endpopsize1=popsize;else %大于一代时进行如下从小到大排序for i=1:popsizej=i+1;whil

6、e jfitness(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;endj=j+1;endendend %下边对上一代群体进行排序for i=1:popsize1j=i+1;while jfitness1(1,j)tempf=fitness1(1,i);tempc=oldpop1(i,:);tempb=b1

7、(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;endj=j+1;endend%下边统计每一代中的最佳阈值和最佳适应度值if gen=1fit(1,gen)=fitness(1,popsize);yuzhi(1,gen)=b(1,popsize);yuzhisum=0;elseif fitness(1,popsize)fitness1(1,popsize1)yuzhi(1,gen)=b(

8、1,popsize); %每一代中的最佳阈值fit(1,gen)=fitness(1,popsize);%每一代中的最佳适应度elseyuzhi(1,gen)=b1(1,popsize1); fit(1,gen)=fitness1(1,popsize1);endend%精英选择%function select()global fitness popsize oldpop temp popsize1 oldpop1 gen b b1 fitness1%统计前一个群体中适应值比当前群体适应值大的个数s=popsize1+1;for j=popsize1:-1:1if fitness(1,popsi

9、ze)=2for k=1:2:jcutpoint=round(rand*(lchrom-1);f=k;for i=1:cutpointtemp(a(1,f),i)=parent(f,i);temp(a(1,f+1),i)=parent(f+1,i);endfor i=(cutpoint+1):lchromtemp(a(1,f),i)=parent(f+1,i);temp(a(1,f+1),i)=parent(f,i);endendend%变异%function mutation()global popsize lchrom mutation_rate temp newpop oldpopsum

10、=lchrom*popsize; %总基因个数mutnum=round(mutation_rate*sum); %发生变异的基因数目for i=1:mutnums=rem(round(rand*(sum-1),lchrom)+1; %确定所在基因的位数t=ceil(round(rand*(sum-1)/lchrom); %确定变异的是哪个基因if tpopsizet=popsize;endif slchroms=lchrom;endif temp(t,s)=1temp(t,s)=0;elsetemp(t,s)=1;endendfor i=1:popsizeoldpop(i,:)=temp(i,

11、:);end%查看结果%function findresult()global maxgen yuzhi m n C B A result=floor(yuzhi(1,maxgen) %result 为最佳阈值C=B;%C=imresize(B,0.3);imshow(A);title(原始裂缝图像)figure;subplot(1,2,1)imshow(C);title(原始裂缝灰度图)m,n=size(C);%用所找到的阈值分割图象for i=1:mfor j=1:nif C(i,j)=resultC(i,j)=0;elseC(i,j)=255;endendendsubplot(1,2,2)imshow(C);title(阈值分割后的裂缝图);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号