资源简介
分享基于蚁群算法图像分割的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程序
- 电力系统暂态仿真 MATLAB
- 结合查找法做的旋转不变性LBP特征提
- Matlab GUI 密码登陆框
- 卫星导航信号电文的产生 matlab
- MATLAB和STK11的连接
- RANSAC算法 MATLAB实现
- 多用户检测MATLAB代码
- EMD算法的绝对实用简单版MATLAB程序
- 计算PAPR 的CCDF的MATLAB程序源码
- 最佳门限判决matlab实现
- 卡尔曼滤波用于自由落体运动目标跟
- matlab图像融合代码+图像
- matlab粒子群算法PSO程序,算法优化效
- 区域生长算法的MATLAB编程实现
- 对图像做垂直投影的matlab代码
- 图像二值化matlab代码
- 一维信号小波降噪matlab程序
- matlab关于二维卷积函数
- matlab关于音频lpc系数的提取
- Sudoku-九宫格-数独matlab代码
- 禁忌搜索TSP
- 数字多波束形成 matlab
- 基于matlab的贝叶斯实验平台
- LBM Midrange Repulsion
-
DAB变压器simuli
nk拓扑 - matlab系统辨识最小二乘整批算法
- [matlab] 切比雪夫多项式系数
- 阿伦方差 matlab求法
- spectral_clustering简单matlab实现
评论
共有 条评论