一、人工鱼群算法图像分割简介

最大熵多阈值图像分割算法主要为求解最大熵对应的阈值,熵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:Nfor j=1:Nfor k=1:256if I(i,j)==kcounts(i,j)=gailv(k);endendend
end
p = counts / sum(sum(counts));
omega0 = cumsum(cumsum(p)');
omega1 = 1 - omega0;
for i=1:Nend
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)];%人工鱼当前状态Xinf=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;endendXc=Xc/nf;if((maxf(Xc))>maxf(XX))XXnext1=XX+rand*Step*(Xc-XX)/norm(Xc-XX);   if(XXnext1(1)>b1)XXnext1(1)=b1;   endif(XXnext1(1)<a1)XXnext1(1)=a1;   endif(XXnext1(2)>b2)XXnext1(2)=b2;   endif(XXnext1(2)<a2)XXnext1(2)=a2;   endelseXXnext1=gmjprey(XX,Try_number,Visual,Step);if(XXnext1(1)>b1)XXnext1(1)=b1;   endif(XXnext1(1)<a1)XXnext1(1)=a1;   endif(XXnext1(2)>b2)XXnext1(2)=b2;   endif(XXnext1(2)<a2)XXnext1(2)=a2;   endend%聚群行为结束%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;   endif(XXnext2(1)<a1)XXnext2(1)=a1;   endif(XXnext2(2)>b2)XXnext2(2)=b2;   endif(XXnext2(2)<a2)XXnext2(2)=a2;   endelseXXnext2 =gmjprey(XX,Try_number,Visual,Step);if(XXnext2(1)>b1)XXnext2(1)=b1;   endif(XXnext2(1)<a1)XXnext2(1)=a1;   endif(XXnext2(2)>b2)XXnext2(2)=b2;   endif(XXnext2(2)<a2)XXnext2(2)=a2;   endend%追尾行为结束if(maxf(XXnext1)>maxf(XXnext2))X(i,1)=XXnext1(1);X(i,2)=XXnext1(2);elseX(i,1)=XXnext2(1);X(i,2)=XXnext2(2);end
end %一次迭代结束
for i=1:NXXXX=[X(i,1),X(i,2)];if maxf(XXXX)>maxYmaxY=maxf(XXXX);maxX=XXXX;figurex(numel(figurex)+1)=maxX(1);figurey(numel(figurey)+1)=maxX(2);figurez(numel(figurez)+1)=maxY;end
endk=k+1; %进入下一次迭代
end if Q1<=0Q1=1;
end
if Q2<=0Q2=1;
end
if Q1>512Q1=512;
end
if Q2>512Q2=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)

【图像分割】基于matlab人工鱼群算法图像分割【含Matlab源码 1488期】相关推荐

  1. 【AFSA TSP】基于matlab人工鱼群算法求解旅行商问题【含Matlab源码 422期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab人工鱼群算法求解旅行商问题[含Matlab源码 422期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  2. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  3. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  4. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  5. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  6. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  7. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  8. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  9. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  10. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

最新文章

  1. 脉冲神经网络在目标检测的首次尝试,性能堪比CNN | AAAI 2020
  2. 一次关于 Mysql 索引优化的思考
  3. [MySQL光速入门]012 作业解答
  4. freemarker html 乱码,Freemarker生成静态html文件及中文乱码的问题.pdf
  5. python绘图矩阵散点图_Python实践:seaborn的散点图矩阵(Pairs Plots)可视化数据
  6. 机器学习之Stacking原理与实战
  7. js java传参乱码_【技术贴】解决前台js传参中文乱码
  8. windows下用XShell远程ubuntu时连接失败
  9. 电脑快捷键大全表格_办公技能:442个超实用电脑快捷键大全!
  10. 【今日CV 计算机视觉论文速览 第144期】Wed, 17 Jul 2019
  11. 贼心不死安cuda记录-双显卡笔记本Ubuntu安装cuda9.0
  12. 抖音旋转很炫的html,火爆抖音的旋转时钟屏保,超酷超炫的
  13. (框架)Deepracer 自动训练 框架的搭建
  14. nginx配置详细说明
  15. Python Flask,Jinja2模板,模板中使用特殊变量及函数,闪现信息,get_flashed_messages()
  16. 计算机技术在建模中的作用,谈计算机在数学建模中的作用
  17. 微信登录的时候总是显示错误
  18. wi-fi频宽设置_如何设置TP-Link Wi-Fi智能插头
  19. 软件测试工程师是这么写年终报告的
  20. 头脑风暴面试_进行有效头脑风暴的5种方法

热门文章

  1. Springboot druid 监控sql语句
  2. mongodb的管理员和安全认证
  3. solrCloud相关的管理命令
  4. openssl genrsa
  5. Linux基础教程之系统管理篇系统部署
  6. python3之urllib代理池
  7. 为什么Spring Boot推荐使用logback-spring.xml来替代logback.xml来配置logback日志的问题分析...
  8. MyEclipse设置默认注释的格式
  9. BZOJ 4085:[Sdoi2015]bigyration(SDOI 2015 round 2 Day 1)
  10. C++中方法的(值参数、ref、out、params)详解