资源简介
萤火虫算法的源代码,函数文件,可直接运行,用来寻找图像阈值分割的最优值(三阈值)。
代码片段和文件信息
function fireflies
global bestsolution
% parameters [n N_iteration alpha betamin gamma]
para=[60 15 0.5 0.2 1];
%help fa_xdim.m
% Simple bounds/limits for d-dimensional problems
d=3;
Lb=zeros(13);
Ub=255*ones(13);
% Initial random guess
u0=Lb+(Ub-Lb).*rand(1d);
[ufvalNumEval]=ffa_mincon(@costu0LbUbpara);
% Display results
bestsolution=fix(sort(u))
bestojb=fval
total_number_of_function_evaluations=NumEval
b=imread(‘cameraman.tif‘);
%image=imread(‘lena.bmp‘);
%figureimshow(image);title(‘ 图一 原图像‘)
%b=rgb2gray(image); %彩色图转换为灰度图
figure;imshow(b);title(‘ 灰度图像‘)
th=fix(u);
count=imhist(b); %计算灰度直方图分布
figureimhist(b);
[mn]=size(b);
%for i=1:m
% for j=1:n
% if b(ij)>=th(13)
% b(ij)=(th(13)+255)/2;
%end
%if th(13)>b(ij)>=th(12)
% b(ij)=(th(12)+th(13))/2;
%end
%if th(12)>b(ij)>=th(11)
% b(ij)=(th(11)+th(12))/2;
%end
%if b(ij) %b(ij)=th(11)/2;
%end
%end
%end
%figureimshow(b);title(‘ 图五 阈值分割的图像‘)
%%% Put your own cost/objective function here --------%%%
%% Cost or objective function
function z=cost(x)
%A=imread(‘E:\rice.png‘);
%A=imread(‘E:\rice.png‘);
%A=imread(‘E:\coins.bmp‘);
%A=imread(‘E:\cameraman.bmp‘);
%A=imread(‘E:\saturn.png‘);
A=imread(‘cameraman.tif‘);
%A=rgb2gray(A);
%A=imresize(A0.5);
%A=imread(‘E:\lenna.bmp‘);
[rc]=size(A);
x=fix(x);
if x<0
x=0;
end
if x>255
x=255;
end
P=imhist(A)/(r*c);%每一个像素点出现的概率
P=P‘+0.0000000000001;%P‘为P的转置矩阵
S1=0+0.0000000000001;
S2=0+0.0000000000001;
S3=0+0.0000000000001;
S4=0+0.0000000000001;
%------------------计算某个像素点出现的概率---------
x(1:)=sort(x(1:));
if 0 P1=sum(P(1:(x(11)+1)))+0.0000000000001;
P2=sum(P((x(11)+2):(x(12)+1)))+0.0000000000001;
P3=sum(P((x(12)+2):(x(13)+1)))+0.0000000000001;
P4=sum(P((x(13)+2):256))+0.0000000000001;
for k=0:x(11)
S1=S1-P(k+1)/P1*log(P(k+1)/P1+0.0000000000001);%熵
end
for k=(x(11)+1):x(12)
S2=S2-P(k+1)/P2*log(P(k+1)/P2+0.0000000000001);
end
for k=(x(12)+1):x(13)
S3=S3-P(k+1)/P3*log(P(k+1)/P3+0.0000000000001);
end
for k=(x(13)+1):255
S4=S4-P(k+1)/P4*log(P(k+1)/P4+0.0000000000001);
end
end
z=10000/(S1+S2+S3+S4);%最大熵?
%%% End of the part to be modified -------------------%%%
%%% --------------------------------------------------%%%
%%% Do not modify the following codes unless you want %%%
%%% to improve its performance etc %%%
% -------------------------------------------------------
% ===Start of the Firefly Algorithm Implementation ======
% Lb = lower bounds/limits
% Ub = upper bounds/limits
% para == optional (to control the Firefly algorithm)
% Outputs: nbest = the best solution found so far
% fbest = the best objective value
% NumEval = number of e
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7087 2013-05-10 14:56 fireflies.m
----------- --------- ---------- ----- ----
7087 1
相关资源
- 基于Matlab的最大熵模糊图像复原算法
- 一个有关飞机的模板匹配的跟踪的m
- PRI信号分选
- dijkstra算法的matlab实现31274
- L-shade.zip
-
神经网络算法simuli
nk - 暗通道先验+引导滤波MATLAB代码
- 边缘检测中的canny算法及其matlab实现
- MATLAB核函数算法
- 逆变器重复控制算法MATLAB仿真
- SAR自聚焦算法
- 图像分割算法
- 预报误差法参数辨识-松弛算法(原理
- spiht改进算法matlab
-
扩展卡尔曼滤波SOC算法Simuli
nk模型 - 快速非局部均值滤波算法
- BP算法ISAR成像基于FEKO仿真模型
- steger 核心算法,可以直接运行
- 分布估计算法讲解及matlab代码
- 基于HSI空间的图像分割算法
- 常用的算法测试函数原代码matlab版.
- LDPC编译码 matlab仿真,BP算法
- 二进制粒子群算法
- matlab实现的区域增长和分水岭算法
- zw_williamanos-10456712-《MATLAB优化算法张
- 混合智能优化算法
- costas载波恢复算法
- 图像边缘检测
- 蚁群算法动态寻路算法
- awayline SVM ARMA 基于风速预测的风力发
评论
共有 条评论