基于模糊理论的图像分割算法研究(四)_第1页
基于模糊理论的图像分割算法研究(四)_第2页
基于模糊理论的图像分割算法研究(四)_第3页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于模糊理论的图像分割算法研究(四)

6.4实验结论本文所讨论的基于遗传算法的图像分割算法,采用标准遗传算法作为计算流程,但对其中的选择算子进行了改变,用高级选择函数select代替了传统的单一选择算子,使得在每次选择运算后所得的父辈更为健壮,更好的保持了第一代父辈的表现型,使得分割更加精确。通过设计变异概率,使得每次迭代遗传运算后,子代的表现型略有改变,从而更以获得最优的表现型(即最优阈值),减少了迭代寻优次数,降低了程序运行时间。同时考虑到过多迭代不利于降低程序运行时间,以及在寻优过程中的最佳值收敛问题,指定迭代次数为50次时即跳出整个程序,通过反编码求得最优阈值,并通过变量调用,直接应用于下面的分割程序,达到了整个算法的自动完成。相对于灰度直方图双峰法,本方法对图像的先验信息要求不高,不需要像灰度直方图法那样,先通过获得图像的灰度直方图取得分割阈值后再对图像处理,整个程序的自动化程度高,且对于那些灰度直方图不呈双峰分布的图像,本算法程序一样可以处理,这就扩大了本算法程序的灵活性,从而更具有实际意义。而且,由于灰度直方图双峰法的阈值是通过人眼观察获得,其误差必然大于机器迭代运算所取得的最优阈值,而普通的阈值分割法,如ostu法,虽然实现了阈值的自动选择,但其运算时间与本算法相比偏长,实时性差于本算法。因此,在图像分割算法中,基于遗传算法的图像分割算法更优于其它传统的图像分割算法。通过上述讨论,以及两种方法的处理结果图片的对比,基于遗传算法的最大类间方差法分割后图像与直方图双峰法分割后的图像像比,效果更明显,且无须事先测量图像的灰度直方图,更加灵活,更加精确。其相关试验结论列于下表:基于遗传算法的图象分割实验结论总表:分割方法自动化程度阈值灰度直方图计算时间分割结果灰度直方图法无法自动完成——基于遗传算法的Ostu法高阈值自动指定,阈值M=162,短于普通Ostu法普通Ostu法高阈值自动指定偏长参见参考文章[25]参考文献[1]张兆礼,赵春晖,梅晓丹.现代图像处理技术及MAThAB实现.北京:人民邮电出版社,2001.1[2]陈传波,金先级.数字图像处理[M].北京:机械工业出版社,2004.[3]夏德深,傅德胜等.现代图象处理技术与应用[M].南京:东南大学出版社,1997.[4]章毓晋.图象工程(上册)图象处理和分析.北京:清华大学出版社,1999.[5]王小平,曹立明.遗传算法理论、应用与软件实现.西安:西安交大出版社,2002.[6]徐立中,数字图像的智能信息处理。北京:国防工业出版社,2001[7]王耀南,李树涛,毛建旭,计算机图像处理与识别技术,北京:高等教育出版社,2001[8]雷英杰,张善文,李绪武,周创明.MATLAB遗传算法工具箱及应用,西安:西安电子科技大学出版社[9]何新贵.模糊知识处理的理论与计算,国防工业出版社,1999[10]徐建华.图像处理与分析,北京:科学出版,1992.[11]阮秋琦.数字图象处理学,电子工业出版社,2001[12]王博等.图像平滑与边缘检测的模糊向量描述,小型微型计算机统,Vol.20(3),1999[13]吴谨,李娟,刘成云,基于最大熵的灰度阈值选取方法,武汉科技大学学报(自然科学版),Vol.27,No.1,Mar,2004[14]李鉴庆,左坤隆,图像阈值选取的一种快速算法.计算机与现代化,2001年第6期[15]魏宝刚,鲁东明,潘云鹤等.多颜色空间上的互式图像分割[J].计算机学报,2001,24(7):770-775[16]杜亚勤,基于模糊集的图像边缘检测技术研究:[硕士学位论文].西安:西安工业学院,2004年4月[17]王保平,基于模糊技术的图像处理方法研究[博士学位论文],西安:西安电子科技大学,2004,9[18]杜亚娟,潘泉,周德龙等,图像多级灰度非线性模糊增强算法研究,数据采集与处Vo1.14No.2[19]RussJC,Theimageprocessinghandbook.NewYork:CRCPress,1994[20]LAZadeh.FuzzySets[J].InformationandContro1,1965,(8):338-353[21]LotfiA.Zadeh,Afuzzy-set-theoreticinterpretationoflinguistichedges,JournalofCybernetic,1972,64(2):4-34[22]S.K.Pal,R.A.King.ImageEnhancementUsingFuzzySets.Electron.Lett.,198016(9):376-378.[23]S.K.PaI,R.:A.King,OnEdgeDetectionofR-RayImagesUsingFuzzySets.IEEETrans.Patt.AnalandMachineIntell.1983,PAMI-5(1):69-77.[24]OtsuN.AThresholdSelectionMethodFromGrayLevelHistograms.IEEETransonSystManCybernet,1979,SMC-9:62-66附录附录一灰度直方图双峰法分割源代码clear,closeallB=imread('2.jpg');

%读入原始jpg格式图像figure(1);imshow(B),title('原始jpg格式图像');I1=rgb2gray(B);%将原图像转化为灰度图象figure(2);imshow(I1),title('灰度格式图像');[I1,map1]=gray2ind(I1,255);

%将灰度图像转化为索引图像figure(3),imhist(I1)%画出灰度直方图,以判断域值I1=double(I1);%将unit8数组转化为double型数组Z=I1%将double型数组I1转存到Z中[m,n]=size(Z);fori=1:mforj=1:nifZ(i,j)>240%灰度值大于域值时是白色Z(i,j)=256;endendendfigure(4)

%画出分割后目标图像image(Z),title('分割后图像');colormap(map1);图像I图像格式转化及灰度直方图双峰法分割源代码clear,closeallB=imread('she.jpg');

%读入原始jpg格式图像shefigure(1);imshow(B),title('原始jpg格式图像');I1=rgb2gray(B);%将原图像转化为灰度图象figure(2);imshow(I1),title('灰度格式图像');[I1,map1]=gray2ind(I1,255);

%将灰度图像转化为索引图像figure(3),imhist(I1)

%画出灰度直方图,以判断域值I1=double(I1);

%将unit8数组转化为double型数组Z=I1

%将double型数组I1转存到Z中[m,n]=size(Z);fori=1:mforj=1:nifZ(i,j)>240

%灰度值大于域值时是白色Z(i,j)=256;endendendfigure(4)

%画出分割后目标图像image(Z),title('分割后图像');colormap(map1);图像II图像格式转化及灰度直方图双峰法分割源代码clear,closeallB=imread('she.jpg');

%读入原始jpg格式图像月亮figure(1);imshow(B),title('原始jpg格式图像');I1=rgb2gray(B);%将原图像转化为灰度图象figure(2);imshow(I1),title('灰度格式图像');[I1,map1]=gray2ind(I1,255);

%将灰度图像转化为索引图像figure(3),imhist(I1)

%画出灰度直方图,以判断域值I1=double(I1);

%将unit8数组转化为double型数组Z=I1

%将double型数组I1转存到Z中[m,n]=size(Z);fori=1:mforj=1:nifZ(i,j)>240

%灰度值大于域值时是白色Z(i,j)=256;endendendfigure(4)

%画出分割后目标图像image(Z),title('分割后图像');colormap(map1);附录二Crtbp函数源代码:(由谢菲尔德大学AndrewChipperfield编写)%CRTBP.m-Createaninitialpopulation%%Thisfunctioncreatesabinarypopulationofgivensizeandstructure.%%Syntax:[ChromLindBaseV]=crtbp(Nind,Lind,Base)%%InputParameters:%%Nind

-Eitherascalarcontainingthenumberofinpiduals%

inthenewpopulationorarowvectoroflengthtwo%

containingthenumberofinpidualsandtheirlength.%%Lind

-Ascalarcontainingthelengthoftheinpidual%

chromosomes.%%Base

-Ascalarcontainingthebaseofthechromosome%

elementsorarowvectorcontainingthebase(s)%

ofthelociofthechromosomes.%%OutputParameters:%%Chrom

-Amatrixcontainingtherandomvaluedchromosomes%

rowwise.%%Lind-Ascalarcontainingthelengthofthechromosome.%%BaseV

-Arowvectorcontainingthebaseofthe%

chromosomeloci.%Author:AndrewChipperfield%Date:19-Jan-94function[Chrom,Lind,BaseV]=crtbp(Nind,Lind,Base)nargs=nargin;%Checkparameterconsistencyifnargs>=1,[mN,nN]=size(Nind);endifnargs>=2,[mL,nL]=size(Lind);endifnargs==3,[mB,nB]=size(Base);endifnN==2if(nargs==1)Lind=Nind(2);Nind=Nind(1);BaseV=crtbase(Lind);elseif(nargs==2&nL==1)BaseV=crtbase(Nind(2),Lind);Lind=Nind(2);Nind=Nind(1);elseif(nargs==2&nL>1)ifLind~=length(Lind),error('LindandBasedisagree');endBaseV=Lind;Lind=Nind(2);Nind=Nind(1);endelseifnN==1ifnargs==2ifnL==1,BaseV=crtbase(Lind);else,BaseV=Lind;Lind=nL;endelseifnargs==3ifnB==1,BaseV=crtbase(Lind,Base);elseifnB~=Lind,error('LindandBasedisagree');elseBaseV=Base;endendelseerror('Inputparametersinconsistent');end%Createastructureofrandomchromosomesinrowwiseorder,dimensions%NindbyLind.Thebaseofeachchromosomeslociisgivenbythevalue%ofthecorrespondingelementoftherowvectorbase.Chrom=floor(rand(Nind,Lind).*BaseV(ones(Nind,1),:));%Endoffile附录三Bs2rv函数源代码:(由谢菲尔德大学AndrewChipperfield编写)%BS2RV.m-Binarystringtorealvector%%Thisfunctiondecodesbinarychromosomesintovectorsofreals.The%chromosomesareseenastheconcatenationofbinarystringsofgiven%length,anddecodedintorealnumbersinaspecifiedintervalusing%eitherstandardbinaryorGraydecoding.%%Syntax:

Phen=bs2rv(Chrom,FieldD)%%Inputparameters:%%

Chrom

-Matrixcontainingthechromosomesofthecurrent%population.Eachlinecorrespondstoone%inpidual'sconcatenatedbinarystring%

representation.LeftmostbitsareMSband%

rightmostareLSb.%%

FieldD-Matrixdescribingthelengthandhowtodecode%

eachsubstringinthechromosome.Ithasthe%

followingstructure:%%[len;(num)%lb;(num)%ub;(num)%code;

(0=binary

|1=gray)%scale;(0=arithmetic|1=logarithmic)%lbin;

(0=excluded|1=included)%ubin];(0=excluded|1=included)%%

where%len-rowvectorcontainingthelengthof%eachsubstringinChrom.sum(len)%shouldequaltheinpiduallength.%lb,%ub

-Lowerandupperboundsforeach%variable.%code-binaryrowvectorindicatinghoweach%substringistobedecoded.%scale-binaryrowvectorindicatingwhereto%usearithmeticand/orlogarithmic%scaling.%lbin,%ubin-binaryrowvectorsindicatingwhether%ornottoincludeeachboundinthe%representationrange%%Outputparameter:%%

Phen

-Realmatrixcontainingthepopulationphenotypes.%%Author:CarlosFonseca,Updated:AndrewChipperfield%Date:08/06/93,Date:26-Jan-94functionPhen=bs2rv(Chrom,FieldD)%Identifythepopulationsize(Nind)%

andthechromosomelength(Lind)[Nind,Lind]=size(Chrom);%Identifythenumberofdecisionvariables(Nvar)[seven,Nvar]=size(FieldD);ifseven~=7error('FieldDmusthave7rows.');end%Getsubstringpropertieslen=FieldD(1,:);lb=FieldD(2,:);ub=FieldD(3,:);code=~(~FieldD(4,:));scale=~(~FieldD(5,:));lin=~(~FieldD(6,:));uin=~(~FieldD(7,:));%Checksubstringpropertiesforconsistencyifsum(len)~=Lind,error('DatainFieldDmustagreewithchromosomelength');endif~all(lb(scale).*ub(scale)>0)error('Log-scaledvariablesmustnotinclude0intheirrange');end%DecodechromosomesPhen=zeros(Nind,Nvar);lf=cumsum(len);li=cumsum([1len]);Prec=.5.^len;lb(scale)=log(abs(lb(scale)));ub(scale)=log(abs(ub(scale)));delta=ub-lb;Prec=.5.^len;num=(~lin).*Prec;den=(lin+uin-1).*Prec;fori=1:Nvar,idx=li(i):lf(i);ifcode(i)%GraydecodingChrom(:,idx)=rem(cumsum(Chrom(:,idx)')',2);endPhen(:,i)=Chrom(:,idx)*[(.5).^(1:len(i))'];Phen(:,i)=lb(i)+delta(i)*(Phen(:,i)+num(i))./(1-den(i));endexpand=ones(Nind,1);ifany(scale)Phen(:,scale)=logsgn(expand,:).*exp(Phen(:,scale));end附录四适应度函数target源代码:functionf=target(T,M)

%适应度函数,T为待处理图像,M为域值序列[U,V]=size(T);W=,,length(M);f=zeros(W,1);fork=1:WI=0;s1=0;J=0;s2=0;

%统计目标图像和背景图像的像素数及像素之和fori=1:Uforj=1:VifT(i,j)<=M(k)s1=s1+T(i,j);I=I+1;endifT(i,j)>M(k)s2=s2+T(i,j);J=J+1;endendendifI==0,p1=0;elsep1=s1/I;endifJ==0,p2=0;elsep2=s2/J;endf(k)=I*J*(p1-p2)*(p1-p2)/(256*256);end附录五选择函数Select源代码:(由谢菲尔德大学HartmutPohlheim编写)%SELECT.M(universalSELECTion)%%Thisfunctionperformsuniversalselection.Thefunctionhandles%multiplepopulationsandcallsthelowlevelselectionfunction%fortheactualselectionprocess.%%Syntax:SelCh=select(SEL_F,Chrom,FitnV,GGAP,SUBPOP)%%Inputparameters:%

SEL_F

-Nameoftheselectionfunction%

Chrom

-Matrixcontainingtheinpiduals(parents)ofthecurrent%population.Eachrowcorrespondstooneinpidual.%

FitnV

-Columnvectorcontainingthefitnessvaluesofthe%inpidualsinthepopulation.%

GGAP

-(optional)Rateofinpidualstobeselected%ifomitted1.0isassumed%

SUBPOP

-(optional)Numberofsubpopulations%ifomitted1subpopulationisassumed%%Outputparameters:%

SelCh

-Matrixcontainingtheselectedinpiduals.%Author:

HartmutPohlheim%History:

10.03.94

filecreatedfunctionSelCh=select(SEL_F,Chrom,FitnV,GGAP,SUBPOP);%Checkparameterconsistencyifnargin<3,error('Notenoughinputparameter');end%Identifythepopulationsize(Nind)[NindCh,Nvar]=size(Chrom);[NindF,VarF]=size(FitnV);ifNindCh~=NindF,error('ChromandFitnVdisagree');endifVarF~=1,error('FitnVmustbeacolumnvector');endifnargin<5,SUBPOP=1;endifnargin>4,ifisempty(SUBPOP),SUBPOP=1;elseifisnan(SUBPOP),SUBPOP=1;elseiflength(SUBPOP)~=1,error('SUBPOPmustbeascalar');endendif(NindCh/SUBPOP)~=fix(NindCh/SUBPOP),error('ChromandSUBPOPdisagree');endNind=NindCh/SUBPOP;%Computenumberofinpidualspersubpopulationifnargin<4,GGAP=1;endifnargin>3,ifisempty(GGAP),GGAP=1;elseifisnan(GGAP),GGAP=1;elseiflength(GGAP)~=1,error('GGAPmustbeascalar');elseif(GGAP<0),error('GGAPmustbeascalarbiggerthan0');endend%Computenumberofnewinpiduals(toselect)NSel=max(floor(Nind*GGAP+.5),2);%SelectinpidualsfrompopulationSelCh=[];forirun=1:SUBPOP,FitnVSub=FitnV((irun-1)*Nind+1:irun*Nind);ChrIx=feval(SEL_F,FitnVSub,NSel)+(irun-1)*Nind;SelCh=[SelCh;Chrom(ChrIx,:)];end%Endoffunction附录六交叉函数recombin的源代码:(由谢菲尔德大学HartmutPohlheim编写)%RECOMBIN.M

(RECOMBINationhigh-levelfunction)%%Thisfunctionperformsrecombinationbetweenpairsofinpiduals%andreturnsthenewinpidualsaftermating.Thefunctionhandles%multiplepopulationsandcallsthelow-levelrecombinationfunction%fortheactualrecombinationprocess.%%Syntax:NewChrom=recombin(REC_F,OldChrom,RecOpt,SUBPOP)%%Inputparameters:%

REC_F

-Stringcontainingthenameoftherecombinationor%crossoverfunction%

Chrom

-Matrixcontainingthechromosomesoftheold%population.Eachlinecorrespondstooneinpidual%

RecOpt

-(optional)Scalarcontainingtheprobabilityof%recombination/crossoveroccurringbetweenpairs%ofinpiduals.%ifomittedorNaN,1isassumed%

SUBPOP

-(optional)Numberofsubpopulations%ifomittedorNaN,1subpopulationisassumed%%Outputparameter:%

NewChrom-Matrixcontainingthechromosomesofthepopulation%afterrecombinationinthesameformatasOldChrom.%Author:

HartmutPohlheim%History:18.03.94

filecreatedfunctionNewChrom=recombin(REC_F,Chrom,RecOpt,SUBPOP);%Checkparameterconsistencyifnargin<2,error('Notenoughinputparameter');end%Identifythepopulationsize(Nind)[Nind,Nvar]=size(Chrom);ifnargin<4,SUBPOP=1;endifnargin>3,ifisempty(SUBPOP),SUBPOP=1;elseifisnan(SUBPOP),SUBPOP=1;elseiflength(SUBPOP)~=1,error('SUBPOPmustbeascalar');endendif(Nind/SUBPOP)~=fix(Nind/SUBPOP),error('ChromandSUBPOPdisagree');endNind=Nind/SUBPOP;%Computenumberofinpidualspersubpopulationifnargin<3,RecOpt=0.7;endifnargin>2,ifisempty(RecOpt),RecOpt=0.7;elseifisnan(RecOpt),RecOpt=0.7;elseiflength(RecOpt)~=1,error('RecOptmustbeascalar');elseif(RecOpt<0|RecOpt>1),error('RecOptmustbeascalarin[0,1]');endend%SelectinpidualsofonesubpopulationandcalllowlevelfunctionNewChrom=[];forirun=1:SUBPOP,ChromSub=Chrom((irun-1)*Nind+1:irun*Nind,:);NewChromSub=feval(REC_F,ChromSub,RecOpt);NewChrom=[NewChrom;NewChromSub];end%Endoffunction附录七变异函数mut源代码:(由谢菲尔德大学AndrewChipperfield编写)%MUT.m%%Thisfunctiontakestherepresentationofthecurrentpopulation,%mutateseachelementwithgivenprobabilityandreturnstheresulting%population.%%Syntax:

NewChrom=mut(OldChrom,Pm,BaseV)%%Inputparameters:%%OldChrom-Amatrixcontainingthechromosomesofthe%

currentpopulation.Eachrowcorrespondsto%

aninpidualsstringrepresentation.%%Pm-Mutationprobability(scalar).Defaultvalue%

ofPm=0.7/Lind,whereLindisthechromosome%

lengthisassumedifomitted.%%BaseV

-Optionalrowvectorofthesamelengthasthe%

chromosomestructuredefiningthebaseofthe%

inpidualelementsofthechromosome.Binary%

representationisassumedifomitted.%%Outputparameter:%%NewChrom-AMatrixcontainingamutatedversionof%

OldChrom.%%Author:AndrewChipperfield%Date:25-Jan-94functionNewChrom=mut(OldChrom,Pm,BaseV)%getpopulationsize(Nind)andchromosomelength(Lind)[Nind,Lind]=size(OldChrom);%checkinputparametersifnargin<2,Pm=0.7/Lind;endifisnan(Pm),Pm=0.7/Lind;endif(nargin<3),BaseV=crtbase(Lind);endif(isnan(BaseV)),BaseV=crtbase(Lind);endif(isempty(BaseV)),BaseV=crtbase(Lind);endif(nargin==3)&(Lind~=length(BaseV))error('OldChromandBaseVareincompatible'),end%createmutationmaskmatrixBaseM=BaseV(ones(Nind,1),:);%performmutationonchromosomestructureNewChrom=rem(OldChrom+(rand(Nind,Lind)<Pm).*ceil(rand(Nind,Lind).*(BaseM-1)),BaseM);附录八基于遗传算法的最大类间方差法对JPG格式图像分割的程序源代码:clear,closeallB=imread('she.jpg');%读入原始jpg格式图像figure(1);imshow(B),title('原始jpg格式图像');I1=rgb2gray(B);%将原图像转化为灰度图象figure(2);imshow(I1),title('灰度格式图像');BW1=edge(I1,'sobel');BW2=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论