资源简介
MATLAB版本的基于蚁群算法的图像边缘检测,可运行,含程序运行说明。
代码片段和文件信息
function edge_ACO
%参考文献:“An Ant Colony Optimization Algorithm For Image Edge
close all; clear all; clc;
% 读入图像
filename = ‘ant128‘;
img=rgb2gray(imread(‘ant.jpg‘));
img = double(img)./255;
[nrow ncol] = size(img);
%公式(3.24.4)初始化
for nMethod = 1:4;
%四种不同的核函数 参见式 (3.24.7)-(3.24.10)
%E: exponential; F: flat; G: gaussian; S:Sine; T:Turkey; W:Wave
fprintf(‘Welcome to demo program of image edge detection using ant colony.\nPlease wait......\n‘);
v = zeros(size(img));
v_norm = 0;
for rr =1:nrow
for cc=1:ncol
%定义像素团
temp1 = [rr-2 cc-1; rr-2 cc+1; rr-1 cc-2; rr-1 cc-1; rr-1 cc; rr-1 cc+1; rr-1 cc+2; rr cc-1];
temp2 = [rr+2 cc+1; rr+2 cc-1; rr+1 cc+2; rr+1 cc+1; rr+1 cc; rr+1 cc-1; rr+1 cc-2; rr cc+1];
temp0 = find(temp1(:1)>=1 & temp1(:1)<=nrow & temp1(:2)>=1 & temp1(:2)<=ncol & temp2(:1)>=1 & temp2(:1)<=nrow & temp2(:2)>=1 & temp2(:2)<=ncol);
temp11 = temp1(temp0 :);
temp22 = temp2(temp0 :);
temp00 = zeros(size(temp111));
for kk = 1:size(temp111)
temp00(kk) = abs(img(temp11(kk1) temp11(kk2))-img(temp22(kk1) temp22(kk2)));
end
if size(temp111) == 0
v(rr cc) = 0;
v_norm = v_norm + v(rr cc);
else
lambda = 10;
switch nMethod
case 1%‘F‘
temp00 = lambda .* temp00;
case 2%‘Q‘
temp00 = lambda .* temp00.^2;
case 3%‘S‘
temp00 = sin(pi .* temp00./2./lambda);
case 4%‘W‘
temp00 = sin(pi.*temp00./lambda).*pi.*temp00./lambda;
end
v(rr cc) = sum(sum(temp00.^2));
v_norm = v_norm + v(rr cc);
end
end
end
% 归一化
v = v./v_norm;
v = v.*100;
p = 0.0001 .* ones(size(img)); % 信息素函数初始化
%参数设置。
alpha = 1; %式(3.24.4)中的参数
beta = 0.1; %式(3.24.4)中的参数
rho = 0.1; %式(3.24.11)中的参数
%式(3.24.12)中的参数
phi = 0.05; %equation (12) i.e. (9) in IEEE-CIM-06
ant_total_num = round(sqrt(nrow*ncol));
% 记录蚂蚁的位置
ant_pos_idx = zeros(ant_total_num 2);
% 初始化蚂蚁的位置
rand(‘state‘ sum(clock));
temp = rand(ant_total_num 2);
ant_pos_idx(:1) = round(1 + (nrow-1) * temp(:1)); %行坐标
ant_pos_idx(:2) = round(1 + (ncol-1) * temp(:2)); %列坐标
search_clique_mode = ‘8‘; %Figure 1
% 定义存储空间容量
if nrow*ncol == 128*128
A = 40;
memory_length = round(rand(1).*(1.15*A-0.85*A)+0.85*A);
elseif nrow*ncol == 256*256
A = 30;
memory_length = round(rand(1).*(1.15*A-0.85*A)+0.85*A);
elseif nrow*ncol == 512*512
A = 20;
memory_length = round(rand(1).*(1.15*A-0.85*A)+0.85*A);
end
ant_memory = zeros(ant_tot
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5121 2011-07-17 18:09 基于蚁群算法的图像边缘检测\ant.jpg
文件 4590 2011-09-26 22:40 基于蚁群算法的图像边缘检测\ant128_edge_aco_1.jpg
文件 4506 2011-09-26 22:41 基于蚁群算法的图像边缘检测\ant128_edge_aco_2.jpg
文件 8509 2012-02-15 23:25 基于蚁群算法的图像边缘检测\edge_ACO.m
文件 24064 2011-09-26 22:48 基于蚁群算法的图像边缘检测\程序运行说明.doc
目录 0 2013-03-16 17:05 基于蚁群算法的图像边缘检测
----------- --------- ---------- ----- ----
46790 6
- 上一篇:基于MOEA/D的多目标优化算法
- 下一篇:CT等距扇束重建
相关资源
- 小波模极大值边缘检测+膨胀+边缘跟踪
- 数字图像处理作业
- matlab图像边缘检测sobel算子梯度图像
- canny边缘检测算法_代码
- matlab边缘监测程序
- matlab实现边缘检测算法hough
- 基于尺度形态学的边缘检测matlab程序
- 基于小波变换的边缘检测matlab程序
- canny边缘检测的matlab程序
- 语音边缘检测算法VAD检测.zip
- matlab 边缘检测并求出面积,周长,质
- zw_MATLAB实现图像去噪滤波锐化边缘检
- 基于蚁群算法的图像边缘检测
- SUSAN边缘检测的实现代码MATLAB
- 基于小波变换的多尺度图像边缘检测
- 小波多尺度边缘检测主程序
- MATLAB程序(图像去噪 滤波 锐化 边缘
- 边缘检测中的canny算法及其matlab实现
- 拉普拉斯边缘检测算子matlab源程序
- matlab实现的区域增长和分水岭算法
- 图像边缘检测
- fuzzy edge 图象模糊边缘检测
- 各种边缘检测程序
- matlab实现图像边缘检测、图像分割、
- DIP 包含二值化、canny算子边缘检测、
- 图形图像matlab GUI 实现边缘检测
- MATLAB图像处理GUI(包括边缘检测、二
- matlab开发-边缘检测算法
- matlab小波变换 边缘检测
- edge_detection 利用小波边缘检测算法实
评论
共有 条评论