图像分割基于matalb人工鱼群算法图像分割含Matlab源码 1488期
Posted 紫极神光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像分割基于matalb人工鱼群算法图像分割含Matlab源码 1488期相关的知识,希望对你有一定的参考价值。
一、人工鱼群算法图像分割简介
最大熵多阈值图像分割算法主要为求解最大熵对应的阈值,熵E实质是关于阈值(T1,T2,… ,TK) 的函数,即可视为E=f(T1,T2,…,TK),求取最大熵即为多元函数求最大值,因为0≤T1≤T2≤,…,≤TK≤ L-1,所以这是一个带约束的优化问题。 若用全局搜索策略求得最优阈值速度很慢,为加快基于全局搜索的最大熵多阈值图像分割算法的搜索速度,而且AFSA算法已在组合优化问题求解中有着良好性能,将AFSA算法应用于最大熵多阈值寻优,为方便将基于全局搜索的最大熵多阈值图像分割算法简记为GSMEMT算法。
1 彩色图像的灰度化
因为处理的对象是RGB模式的彩色图像,而OTSU、AFSAMEMT等算法适用于灰度图像的阈值分割,所以首先应将RGB模式的彩色图像转化为灰度图像, 考虑到彩色图像中主要对象色彩分量对比背景物体应具有更强的区分度,更有利于各算法的分割,所以仅提取彩色图像的R分量作为灰度图像进行各算法的图像分割,后续试验也验证了这一点,R分量作为灰度图像进行图像分割的效果要优于G分量和B分量图像。
2 多阈值人工鱼编码
用1×K维的整数编码ai表示第i条人工鱼,即ai=[Ti1,Ti2,… ,Ti K],其中Tij(j=1,2,… ,K)为整数 ,且满足0≤Ti1≤Ti2≤,…,≤Ti K≤L-1,即Tij代表“1.2” 中的阈值Tj。
3 不可行人工鱼编码及其修复
在AFSA的执行过程中, 有时会产生不可行人工鱼编码,不可行人工鱼编码即为人工鱼编码不满足的0≤Ti1≤Ti2≤,…,≤Ti K≤L-1的约束条件。 不可行人工鱼编码不仅对算法的存储产生冗余,而且无效搜索增加了算法的计算复杂度。 采用实时修复策略对每一个人工鱼编码进行检测,在人工鱼的生成过程中若为可行编码则输出, 反之则进行修复, 使其满足0≤Ti1≤Ti2≤,…,≤Ti K≤L-1的约束条件, 成为可行编码,修复过程主要用于后续的“3.4”中算法的步骤4)。
4 图像分割的AFSAMEMT算法步骤
1)彩色图像的灰度化和图像特征提取。 提取各彩色图像的R分量作为灰度图像,统计灰度图像的直方图及每个灰度的概率。
2)算法参数的设置。 设置AFSA算法的基本参数,如人工鱼群的规模、人工鱼的感知距离、移动步长、拥挤度因子、试探次数、人工鱼编码的维数和算法的迭代次数等。
3)初始化人工鱼群。 初始化人工鱼群包括生成所有的人工鱼编码及其对应的目标函数值,公告牌的初始化。
4)对每条人工鱼执行聚群和追尾行为 ,选择较优行为生成新的人工鱼,缺省行为均为觅食行为。
5)更新公告牌。
6)判断迭代次数是否达到最大 , 若满足 , 则输出结果;反之,转4)。
二、部分源代码
%人工鱼群算法
clear all
format long
I = imread('op5.bmp');
N=512;
gailv = imhist(im2uint8(I(:)),256);
for i=1:N
for j=1:N
for k=1:256
if I(i,j)==k
counts(i,j)=gailv(k);
end
end
end
end
p = counts / sum(sum(counts));
omega0 = cumsum(cumsum(p)');
omega1 = 1 - omega0;
for i=1:N
end
mu_t_y=cumsum(cumsum(mu_x));
mu_t_x=cumsum(cumsum(mu_y));
global sigma_b_squared;
sigma_b_squared=((mu_t_x.*omega0-mu_x).^2 +(mu_t_y.*omega0-mu_y).^2) ./ omega0 * omega1;
global maxY;
Try_number=5;
a1=0;
b1=255;
a2=0;
b2=255;
d=[];
h=1e-1;
Friend_number=0.5;
k=0;
m=30;
X=[X1 X2];%人工鱼数量
for i=1:N
wwww=[X(i,1),X(i,2)];
d(i)=maxf(wwww);
end
[w,i]=max(d);
maxX=[X(i,1),X(i,2)];%初始公告板记录
maxY=w;%初始公告板记录
figurex=[];
figurey=[];
figurez=[];
figurex(numel(figurex)+1)=maxX(1);
figurey(numel(figurey)+1)=maxX(2);
figurez(numel(figurez)+1)=maxY;
kkk=0;
while(k<m)
for i=1:N
XX=[X(i,1),X(i,2)];%人工鱼当前状态Xi
nf=0;
Xc=0;
for j=1:N %聚群行为开始
XXX=[X(j,1),X(j,2)];
if(norm(XXX-XX)<Visual)
nf=nf+1;
Xc=Xc+XXX;
end
end
Xc=Xc/nf;
if((maxf(Xc))>maxf(XX))
XXnext1=XX+rand*Step*(Xc-XX)/norm(Xc-XX);
if(XXnext1(1)>b1)
XXnext1(1)=b1;
end
if(XXnext1(1)<a1)
XXnext1(1)=a1;
end
if(XXnext1(2)>b2)
XXnext1(2)=b2;
end
if(XXnext1(2)<a2)
XXnext1(2)=a2;
end
else
XXnext1=gmjprey(XX,Try_number,Visual,Step);
if(XXnext1(1)>b1)
XXnext1(1)=b1;
end
if(XXnext1(1)<a1)
XXnext1(1)=a1;
end
if(XXnext1(2)>b2)
XXnext1(2)=b2;
end
if(XXnext1(2)<a2)
XXnext1(2)=a2;
end
end%聚群行为结束
%maxX=XX;%追尾行为开始
%maxY=maxf(XX);
if((maxY)>maxf(XX))
XXnext2=XX+rand*Step*(maxX-XX)/norm(maxX-XX);
if(XXnext2(1)>b1)
XXnext2(1)=b1;
end
if(XXnext2(1)<a1)
XXnext2(1)=a1;
end
if(XXnext2(2)>b2)
XXnext2(2)=b2;
end
if(XXnext2(2)<a2)
XXnext2(2)=a2;
end
else
XXnext2 =gmjprey(XX,Try_number,Visual,Step);
if(XXnext2(1)>b1)
XXnext2(1)=b1;
end
if(XXnext2(1)<a1)
XXnext2(1)=a1;
end
if(XXnext2(2)>b2)
XXnext2(2)=b2;
end
if(XXnext2(2)<a2)
XXnext2(2)=a2;
end
end%追尾行为结束
if(maxf(XXnext1)>maxf(XXnext2))
X(i,1)=XXnext1(1);
X(i,2)=XXnext1(2);
else
X(i,1)=XXnext2(1);
X(i,2)=XXnext2(2);
end
end %一次迭代结束
for i=1:N
XXXX=[X(i,1),X(i,2)];
if maxf(XXXX)>maxY
maxY=maxf(XXXX);
maxX=XXXX;
figurex(numel(figurex)+1)=maxX(1);
figurey(numel(figurey)+1)=maxX(2);
figurez(numel(figurez)+1)=maxY;
end
end
k=k+1; %进入下一次迭代
end
if Q1<=0
Q1=1;
end
if Q2<=0
Q2=1;
end
if Q1>512
Q1=512;
end
if Q2>512
Q2=512;
end
fprintf('ostu鱼群运行时间:%.6fs\\n',cputime-t);
level1=double(I(Q1,Q2))/256;
BW1 = im2bw(I,level1);
subplot(2,2,1),imshow(I)
title('原图');
subplot(2,2,2),imshow(BW1)
title('ostu人工鱼群');
level2=graythresh(I);
BW2 = im2bw(I,level2);
subplot(2,2,3),imshow(BW2)
title('一维ostu');
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]赵勇,方宗德,庞辉,王侃伟.基于量子粒子群优化算法的最小交叉熵多阈值图像分割[J].计算机应用研究. 2008,(04)
以上是关于图像分割基于matalb人工鱼群算法图像分割含Matlab源码 1488期的主要内容,如果未能解决你的问题,请参考以下文章
图像分割基于灰狼算法优化最小交叉熵多阈值图像分割matalb源码
图像分割基于matlab改进的萤火虫算法优化二维OTSU图像分割含Matlab源码 2304期
图像分割基于matlab改进的萤火虫算法优化二维OTSU图像分割含Matlab源码 2304期
图像分割基于matlab萤火虫算法图像分割含Matlab源码 2136期