资源描述:
《标记分水岭分割算法(Matlab).doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、标记分水岭分割算法(Matlab)Separatingtouchingobjectsinanimageisoneofthemoredifficultimageprocessingoperations.Thewatershedtransformisoftenappliedtothisproblem.Thewatershedtransformfinds"catchmentbasins"(集水盆)and"watershedridgelines"(山脊线)inanimagebytreatingitasa
2、surfacewherelightpixelsarehighanddarkpixelsarelow.Segmentationusingthewatershedtransformworksbetterifyoucanidentify,or"mark,"foregroundobjectsandbackgroundlocations.Marker-controlledwatershedsegmentationfollowsthisbasicprocedure:1.Computeasegmentatio
3、nfunction.Thisisanimagewhosedarkregionsaretheobjectsyouaretryingtosegment.2.Computeforegroundmarkers.Theseareconnectedblobsofpixelswithineachoftheobjects.3.Computebackgroundmarkers.Thesearepixelsthatarenotpartofanyobject.4.Modifythesegmentationfuncti
4、onsothatitonlyhasminimaattheforegroundandbackgroundmarkerlocations.5.Computethewatershedtransformofthemodifiedsegmentationfunction. UsebyMatlabImageProcessingToolboxStep1:ReadintheColorImageandConvertittoGrayscalergb=imread('pears.png');I=rgb2gray(rg
5、b);imshow(I)text(732,501,'ImagecourtesyofCorel',...'FontSize',7,'HorizontalAlignment','right')Step2:UsetheGradientMagnitudeastheSegmentationFunctionUsetheSobeledgemasks,imfilter,andsomesimplearithmetictocomputethegradientmagnitude.Thegradientishighat
6、thebordersoftheobjectsandlow(mostly)insidetheobjects.hy=fspecial('sobel');hx=hy';Iy=imfilter(double(I),hy,'replicate');Ix=imfilter(double(I),hx,'replicate');gradmag=sqrt(Ix.^2+Iy.^2);figure,imshow(gradmag,[]),title('Gradientmagnitude(gradmag)')Canyou
7、segmenttheimagebyusingthewatershedtransformdirectlyonthegradientmagnitude?L=watershed(gradmag);Lrgb=label2rgb(L);figure,imshow(Lrgb),title('Watershedtransformofgradientmagnitude(Lrgb)')No.Withoutadditionalpreprocessingsuchasthemarkercomputationsbelow
8、,usingthewatershedtransformdirectlyoftenresultsin"oversegmentation." Step3:MarktheForegroundObjectsAvarietyofprocedurescouldbeappliedheretofindtheforegroundmarkers,whichmustbeconnectedblobsofpixelsinsideeachoftheforegroundobjects.Inthisexampleyou'llu