资源简介
分享基于蚁群算法图像分割的matlab代码,亲测可用。
代码片段和文件信息
function ACA_FCM
%The input image should have square size
%All parameters are set to be exactly same as that of the paper
%Image Loading
filename = ‘flower‘;
img = double(imread([filename ‘.jpg‘]));
figure(1)
imshow(img/255);
[nrow ncol channel] = size(img);
R=img(: : 1);
G=img(: : 2);
B=img(: : 3);
%将彩色图像转化成灰度图像
intensity_img=zeros(nrow ncol);
for rr = 1 : nrow
for cc = 1 : ncol
intensity_img(rr cc)=(((R(rr cc)).^2+(G(rr cc)).^2+(B(rr cc)).^2).^0.5)/(3.^0.5);
end
end
figure(2)
imshow(intensity_img/255);
%使用canny算子进行边缘检测
edge_img = edge(intensity_img ‘canny‘);
figure(3)
imshow(edge_img);
%average = mean(mean(img))/255;
%参数设置
alpha=1;
beta=1;
num=0;%监督聚类中心的初始数目,初始化为0
statistic=60;
radius=50;% 聚类半径
lumda=0.40;
rho=0.95;
p1=1;
p2=1;
p3=1;
d=50;
%ACA图像分割程序
%初始化带有分类信息的图像矩阵
cluster_img = zeros(nrow ncol 4);
for rr=1:nrow
for cc=1:ncol
cluster_img(rr cc 1) = img(rr cc 1);
cluster_img(rr cc 2) = img(rr cc 2);
cluster_img(rr cc 3) = img(rr cc 3);
cluster_img(rr cc 4) = 0;
end
end
%初始化蚂蚁归类操作矩阵
ant_matrix=zeros(rr cc 1);
for rr=1:nrow
for cc=1:ncol
if ant_matrix(rr cc 1) == 0
ant_matrix(rr cc 1) = 2;%ant_matrix(rr cc 1)代表该蚂蚁的状态,“0“表示未被归类,“1“表示已经被归类,“2“表示等待被归类 “3“表示在本次循环中成为类 “4“表示该点为边缘像素点
end
end
end
for rr = 1 : nrow
for cc = 1 : ncol
if edge_img(rr cc)==1
ant_matrix(rr cc 1) = 4;%划分为边缘像素点
cluster_img(rr cc 1)=255;
cluster_img(rr cc 2)=255;
cluster_img(rr cc 3)=255;%边缘像素全部设为白色;
end
end
end
%初始化监督聚类中心
%对图像颜色进行统计
color_statistic = zeros(1331 5);%color_statistic(i 1)存储像素数目,
%color_statistic(i 2)、color_statistic(i 3)、color_statistic(i 4)分别存储颜色的三个分量,color_statistic(i 5)存储是否被作为监督聚类中心的信息
for rr = 1 : nrow
for cc = 1 : ncol
%对每个颜色分量进行分段处理
if R(rr cc) < 12.75
x=1;
elseif R(rr cc) >= 12.75 && R(rr cc) < 38.25
x=2;
elseif R(rr cc) >= 38.25 && R(rr cc) < 63.75
x=3;
elseif R(rr cc) >= 63.75 && R(rr cc) < 89.25
x=4;
elseif R(rr cc) >= 89.25 && R(rr cc) < 114.75
x=5;
elseif R(rr cc) >= 114.75 && R(rr cc) < 140.25
x=6;
elseif R(rr cc) >= 140.25 && R(rr cc) < 165.75
x=7;
elseif R(rr cc) >= 165.75 && R(rr cc) < 191.25
x=8;
elseif R(rr cc) >= 191.25 && R(rr cc) < 216.75
x=9;
elseif R(rr cc) >= 216.75 && R(rr cc) < 241.25
x=10;
elseif R(rr cc) >= 241.25
x=11;
end
if G(rr cc) < 12.75
y=1;
elseif G(rr cc) >= 12.75 && G(rr cc) < 38.25
y=2;
elseif G(rr cc) >= 38.25 && G(rr cc) < 63.75
y=3;
elseif G(rr cc) >=
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论