💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🔊博主简介:985研究生,Matlab领域科研开发者;
🚅座右铭:行百里者,半于九十。
🏆代码获取方式:
优快云 Matlab武动乾坤—代码获取方式
更多Matlab图像处理仿真内容点击👇
①Matlab图像处理(进阶版)
⛳️关注优快云 Matlab武动乾坤,更多资源等你来!!
⛄一、图像分割简介
理论知识参考:【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】
⛄二、部分源代码
%%%%%%%%%%%%%%%%遗传算法在道路图像阈值分割中的应用%%%%%%%%%%%%
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(‘1.jpg’); %读入道路图像
A=imresize(A,0.4);
B=rgb2gray(A); %灰度化
C=imresize(B,0.1); %将读入的图像缩小
lchrom=8; %染色体长度
popsize=10; %种群大小
cross_rate=0.7; %交叉概率
mutation_rate=0.4; %变异概率
maxgen=150; %最大代数
[m,n]=size©;
‘计算中,请稍等…’
initpop; %初始种群
for gen=1:maxgen
generation; %遗传操作
end
findresult; %图象分割结果
%%%输出进化各曲线
figure;
gen=1:maxgen;
plot(gen,fit(1,gen));
title(‘最佳适应度值进化曲线’);
figure;
plot(gen,yuzhi(1,gen));
title(‘每一代的最佳阈值进化曲线’);
%%%%%%%%%%%%%%%%%%%初始化种群%%%%%%%%%%%%%%%%%%%%
function initpop()
global lchrom oldpop popsize chrom C
imshow©;
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 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=ceil(popsize-0.03gen);
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=0;
hignum=0;
chrom=oldpop(i,:);
c=0;
for j=1:lchrom
c=c+chrom(1,j)(2^(lchrom-j));
end
b(1,i)=c255/(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; %u1、u2为对应于两类的平均灰度值
else
u1=0;
end
if hignum~=0
u2=higsum/hignum;
else
u2=0;
end
fitness(1,i)=lownumhignum*(u1-u2)^2; %计算适度值
end
if gen1 %如果为第一代,从小往大排序
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
for i=1:popsize
fitness1(1,i)=fitness(1,i);
b1(1,i)=b(1,i);
oldpop1(i,:)=oldpop(i,:);
end
popsize1=popsize;
else %大于一代时进行如下从小到大排序
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
%下边对上一代群体进行排序
for 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
%下边统计每一代中的最佳阈值和最佳适应度值
if gen1
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
%%%%%%%%%%%%%%%%%%%精英选择%%%%%%%%%%%%%%%%%%%%
function select()
global fitness popsize oldpop temp popsize1 oldpop1 gen b b1 fitness1
%统计前一个群体中适应值比当前群体适应值大的个数
s=popsize1+1;
for j=popsize1👎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代用上一代中用适应度值大于当前代的个体随机代替当前代中的个体
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 %50~100代用上一代中用适应度值大于当前代的个体代替当前代中的最差个体
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代用上一代中的优秀的一半代替当前代中的最差的一半,加快寻优
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
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]赵勇,方宗德,庞辉,王侃伟.基于量子粒子群优化算法的最小交叉熵多阈值图像分割[J].计算机应用研究. 2008,(04)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
🍅 仿真咨询
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合