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('D:/anis/1/bld.png');
A=imresize(A,10);
B=rgb2gray(A);
C=imresize(B,0.1);
lchrom=8;
popsize=10;
F=lchrom*popsize;
cross_rate=0.7;
mutation_rate=0.4;
maxgen=20;
[m,n]=size(C);
imshow(C);
initpop;
imshow(oldpop);
for gen=1:maxgen
fitness_order()
end
result=floor(yuzhi(1,gen))
C=imresize(B,0.3);
imshow(A);
title('原始道路图像')
figure;
subplot(1,2,1)
imshow(C);
title('原始道路的灰度图')
[m,n]=size(C);
for i=1:m
for j=1:n
if C(i,j)<=result
C(i,j)=255;
else
C(i,j)=0;
end
end
end
se1=strel('square',3);
SI1=imerode(C,se1);
BW=C-SI1;
subplot(1,2,2)
imshow(BW);
title('阈值分割后的道路图');
function initpop()
global lchrom oldpop popsize chrom 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
function fitness_order()
global lchrom oldpop fitness popsize chrom fit gen C m n F fitness1 yuzhisum
global lowsum higsum u1 u2 yuzhi gen oldpop1 popsize1 b1 b yuzhi1
for i=1:popsize
lowsum=0;
higsum=0;
lownum=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/(2^lchrom-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+1;
end
end
end
if lownum~=0
u1=lowsum/lownum;
else
u1=0;
end
if hignum~=0
u2=higsum/hignum;
else
u2=0;
end
fitness(1,i)=lownum*hignum*(u1-u2)^2
end
%sort the F frogs in order of decreasing performance value
[fitnessSort,index]=sort(fitness,'descend')
for i=1:popsize
X(i,:)=oldpop(index(i),:)
end
pb=X(1,:);
pw=X(popsize,:);
fitness(1,index(1))
ipwfitness=0;
while ipwfitness<fitness(1,index(1))
low=0;
hig=0;
lown=0;
hign=0;
c1=0;
s1=rand(1,8).*(pb-pw);
ipw=pw+s1
for i=1:lchrom
if ipw(1,i)<0.5
ipw(1,i)=0;
else
ipw(1,i)=1;
end
end
for j=1:lchrom
c1=c1+ipw(1,j)*(2^(lchrom-j));
end
b1(1,i)=c1*255/(2^lchrom-1);
for x=1:m
for y=1:n
if C(x,y)<=b1(1,i)
low=low+double(C(x,y));
lown=lown+1;
else
hig=hig+double(C(x,y));
hign=hign+1;
end
end
end
if lown~=0
iu1=low/lown;
else
iu1=0;
end
if hign~=0
iu2=hig/hign;
else
iu2=0;
end
ipwfitness=lown*hign*(iu1-iu2)^2
end
oldpop(index(10),:)=ipw
% if gen==1
% fit(1,gen)=fitness(1,popsize);
yuzhi(1,gen)=b1(1,lchrom)
% 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
sfla.rar_Modified_SFLA matlab_matlab sfla_medical image_sfla
版权申诉
48 浏览量
2022-09-24
04:44:21
上传
评论
收藏 340KB RAR 举报
JaniceLu
- 粉丝: 84
- 资源: 1万+
最新资源
- 2023-04-06-项目笔记 - 第一百五十四阶段 - 4.4.2.152全局变量的作用域-152 -2024.06.04
- 松哥解协议松哥解协议松哥解协议松哥解协议松哥解协议
- 618节日618节日618节日
- tensorflow-gpu-2.9.1-cp37-cp37m-win-amd64.whl
- tensorflow-gpu-2.9.0-cp37-cp37m-win-amd64.whl
- tensorflow-gpu-2.9.0-cp39-cp39-win-amd64.whl
- lcd daimalcd daima
- 电影领域-推荐算法-个性化内容-观影决策-电影推荐小程序.zip
- 电气控制PLC考试题库
- 如何使用MATLAB简介
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈