资源简介

基于水平集的活动轮廓(image segmentation based on active contour model),包括LBF模型和LDF模型,matlab程序,用于实现图像分割,亲自调试通过

资源截图

代码片段和文件信息

function [mu1 mu2] = GMM_PSO(data); %data 是行向量
nbStates=2;
len_data=length(data);
%%%%%%%%%%%%%%-PSO-%%%%%%%%%%%%%%%%
wmax=1;
wmin=0;
itmax=50;
c1=2;
c2=2;
for iter=1:itmax
    W(iter)=wmax-((wmax-wmin)/itmax)*iter;
end
%initialization of positions of agents
a=min(data);%参数最小值
b=max(data);%参数最大值
N=50;%粒子数
D=2;%参数个数
% tcl=0.05;

x=[];vmfit=[];
% f=‘x.*sin(4*pi.*x)-y.*sin(4*pi.*y+pi+1)‘;%待优化函数
% [xy]=meshgrid(a:tcl:ba:tcl:b);
% vxp=x;
% vyp=y;
% vzp=eval(f);
x=a+(b-a)*rand(ND1);%第一代粒子位置随机生成,N代表粒子数,D代表参数个数,1代表第一代
%initialization of velocities of agents
V=wmin+(wmax-wmin)*rand(ND1);%第一代粒子速度随机生成

for i=1:N
    %%%%%%%%%%%%%%%%%%%%%%%%%%
    mu1=x(i11);
    mu2=x(i21);
    %
    P_omiga1_I=ones(1len_data)-(abs(data-x(i11))./(abs(data-x(i11))+abs(data-x(i21))+eps));
    P_omiga2_I=ones(1len_data)-(abs(data-x(i21))./(abs(data-x(i11))+abs(data-x(i21))+eps));
    %
    P1=sum(P_omiga1_I(:))/len_data;%先验概率
    P2=sum(P_omiga2_I(:))/len_data;
    %
    aa=P_omiga1_I.*abs(data-mu1);
    bb=P_omiga2_I.*abs(data-mu2);
    %
    cita1=sqrt(sum(aa(:))/sum(P_omiga1_I(:)));%方差
    cita2=sqrt(sum(bb(:))/sum(P_omiga2_I(:)));
    %%%%%%%%%%%%%%%%%%MLE为一个行向量%%%%%%%%%%%%%%%%%%%%%%%
    MLE=log(P1/(sqrt(2*pi)*cita1+eps).*exp(-(data-mu1).^2/(2*cita1^2+eps))+P2/(sqrt(2*pi)*cita2+eps).*exp(-(data-mu2).^2/(2*cita2^2+eps))+eps);
    F(i11)=sum(MLE(:));
end
% media=mean(F(:11));
% vmfit=[vmfit media];

[CI]=max(F(:11));%求取第一代粒子中适应度最大的粒子,I为最大值C在F中的位置
B(111)=C;
gbest(111)=x(I11);
gbest(121)=x(I21);%第一代的最大值也就是目前整个种群找到的最优解,这个极值是全局最优极值gbest

% matrix composed of gbest vector
for p=1:N
    for r=1:D
        G(pr1)=gbest(1r1);%整个种群目前找到的最优解
    end
end
Fbest(111)=C;
%把前一代的最优值保存起来
for i=1:N
    pbest(i:1)=x(i:1);%第一代本身即为个体极值点
end
Fb(111)=C;
%计算第一代粒子中被优化的函数的最优值

for j=2:itmax %从第二代开始迭代
    V(::j)=W(j-1)*V(::j-1)+c1*rand*(pbest(::j-1)-x(::j-1))+c2*rand*(G(::j-1)-x(::j-1));
    x(::j)=x(::j-1)+V(::j);
    for xx=1:N
        for yy=1:D
            if x(xxyyj)                x(xxyyj)=a;
            end;
            if x(xxyyj)>b
                x(xxyyj)=b;
            end;
        end;
    end;
    for i=1:N
        %%%%%%%%%%%%%%%%%%%%%%%%%%
        mu1=x(i1j);
        mu2=x(i2j);
        %
        P_omiga1_I=ones(1len_data)-abs(data-x(i1j))./(abs(data-x(i1j))+abs(data-x(i2j))+eps);
        P_omiga2_I=ones(1len_data)-abs(data-x(i2j))./(abs(data-x(i1j))+abs(data-x(i2j))+eps);
        %
        P1=sum(P_omiga1_I(:))/len_data;%先验概率
        P2=sum(P_omiga2_I(:))/len_data;
        %
        aa=P_omiga1_I.*abs(data-mu1);
        bb=P_omiga2_I.*abs(data-mu2);
        %
        cita1=sqrt(sum(aa(:))/sum(P_omiga1_I(:)));%方差
        cita2=sqrt(sum(bb(:))/sum(P_omiga2_I(:)));
        %%%%%%%%%%%%%%%%%%MLE为一个行向量%%%%%%%%%%%%%%%%%%%%%%%
        MLE=log(P1/(sqrt(2*pi)*cita1+eps).*exp(-(data-mu1).^2/(2*cita

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-05-07 09:43  LBF和LDF模型程序\
     文件        4336  2014-11-01 18:16  LBF和LDF模型程序\GMM_PSO.m
     文件        5509  2014-11-01 18:16  LBF和LDF模型程序\LBF.m
     文件        5095  2014-11-01 18:16  LBF和LDF模型程序\LDF.m
     文件      111947  2014-11-01 18:16  LBF和LDF模型程序\chr11.mat
     文件      113434  2014-11-01 18:16  LBF和LDF模型程序\chr12.mat
     文件      120923  2014-11-01 18:16  LBF和LDF模型程序\cis11.mat
     文件      121039  2014-11-01 18:16  LBF和LDF模型程序\cis12.mat
     文件      118349  2014-11-01 18:16  LBF和LDF模型程序\cisp1.mat
     文件      119886  2014-11-01 18:16  LBF和LDF模型程序\cisp2.mat
     文件       59978  2014-11-01 18:16  LBF和LDF模型程序\jb11.mat
     文件       60061  2014-11-01 18:16  LBF和LDF模型程序\jb22.mat
     文件    40222720  2014-05-07 10:02  LBF和LDF模型程序\movie7.avi
     文件        6197  2014-11-01 18:16  LBF和LDF模型程序\zzz.m
     文件        1003  2014-11-01 18:16  LBF和LDF模型程序\zzz1.m

评论

共有 条评论