資源簡介
基于水平集的活動輪廓(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
- 上一篇:數字鎖相環原理及程序
- 下一篇:matlab 蒙特卡羅
評論
共有 條評論