基于matlab的数字图像处理之图像阈值分割算法研究.docx
基于Matlab数字图像处理之图像阈值分割算法研究3.1.1迭代法实践代码:clc;clear all;f=imread C cat. bmp');f=rgb2gray(f);f=im2double(f);T=0. 5*(min(f(:)+max(f (:);done=false;while doneg= f > 二T;Tn=0. 5* (mean (f (g) )+mean (f Cg);done=abs(T-Tn)<0. 1;T=Tn;endTr=im2bw(f, T);subplot (121), imshow(f), title('原图');subplot (122), imshow(r), title ('阈值分割算法研究一迭代法');3.1.2迭代法实践截图:原图阈值分割算法研究-迭代法3. 2.1均匀性度量法实践代码:clc;clear all;I=imread (' cat. bmp');I=rgb2gray (I);I=double (I);m, n=size(I);Smin=-1;for T=0:255suml=0; num1=0;sum2=0; num2=0;for i=l:mfor j=l:nif I(i, j)>=Tsum2=sum2+I (i,j);num2=num2+l;elsesuml=suml+I (i, j);numl=numl+l;endendendavel=suml/numl;ave2=sum2/num2;dl=-l;d2=-l;for i=l:mfor j=l:nif I(i, j)>=Td=(I (i, j)-ave2) "2;if d2=-ld2 二d;elsed2=d2+d;endelse qq3293559920d=(I(i, j)-avel) 2;if dl=-ldl=d;elsedl=dl+d;endendendendpl=numl/(m*n);p2=num2/(m*n);S=pl*dl+p2*d2;if(Smin=-1)Smin=S;elseif(S<Smin)Smin=S;Th=T;endendendThsubplot (121), imshow(uint8(D), title('原图');for i=l:mfor j=l:nif I(i, j)>=ThI(i, j) =255;elseI(i, j)=0;endendendsubplot (122), imshow(I), title('阈值分割算法研究一均匀性度量法');3. 2.2均匀性度量法实践截图:原图阈值分割算法研究-均匀性度量法3. 3.1类间最大距离法实践代码:clc;clear all;I=imread C cat. bmp');I=rgb2gray(I);I二double ;m, n=size(l);Smax=0;for T=0:255suml=0; num1=0;sum2=0; num2=0;for i=l:mfor j=l:nif I(i, j)>=Tsum2=sum2+I (i,j);num2=num2+l;elsesuml=suml+I (i,j);numl=numl+l;end qql706431899endendavel=suml/numl;ave2=sum2/num2;S=(ave2-T)*(T-ave1)/(ave2-ave1) 2;if(S>Smax)Smax=S;Th 二T;endendThsubplot (121), imshow(uint8(I), title('原图');for i=l:mfor j=l:nif I(i, j)>=ThI(i, j)=255;elseI(i, j)=0;endendendsubplot (122), imshow(I), title('阈值分割算法研究一类间最大距离法');3. 3.2类间最大距离法实践截图:原图阈值分割算法研究-类间最大距离法3. 4.1最大类内类间方差比法实践代码:clc;clear all;I=imread(,cat. bmp");I=rgb2gray(T);I二double (I);m, n=size(I);Smax=-1;for T=0:255suml=0; numl=0;sum2=0; num2=0;for i=l:mfor j=l:nif I(i, j)>=Tsum2=sum2+I (i,j);num2=num2+l;elsesuml=suml+I (i,j);nunil=numl + l;endendendavel=suml/numl;ave2=sum2/num2;ave=(suml+sum2)/(m*n);dl=-l;d2=-l;for i=l:mfor j=l:nif I(i, j)>=Td=(I (i, j)-ave2) 2;if d2=-ld2=d;elsed2=d2+d;endelsed=(I (i, j)-avel) *2;if dl=-ldl=d;elsedl=dl+d;endendendendpl=numl/(m*n);p2=num2/(m*n);Sl=pl*(avel-ave)*2+p2*(ave2-ave) 2S2=pl*dl+p2*d2;S=S1/S2;if S>SmaxSmax=S;Th =T;endendThsubplot (121), imshow(uint8(I), title。原图');for i=l:mfor j=l:nif I(i, j)>=ThI(i, j)=255;elseI(i, j)=0;endendendsubplot(122), imshow(I), title('阈值分割算法研究一最大类内类间方差比法,);3. 4.2最大类内类间方差比法实践截图:原图阈值分割算法研究-最大类内类间方差比法3. 5.1最大燧法实践代码:clc;clear all;I=imread C cat. bmp');I=rgb2gray(T);subplot (121), imshow(I); title原始图像);h=imhist (I);hl=h;len=length(h);m, n=size(T);hl=hl/(m*n);for i=l: (len-1)if h(i)"=0Pl=sum(hl (1:i);P2=sum(hl(i+1):len);elsecontinue;endHl(i)=-(sum(Pl.*log(Pl);H2(i)=-(sum(P2.*log(P2);II(i)=Hl(i)+II2(i);endml=max(H);Th=find(H=ml);Thfor i=l:mfor j=l:nif I(i, j)>=ThI(i, j)=255;elseI(i, j)=0;endendendsubplot (122), imshow(I) ; title ('阈值分割算法研究一最大婚法');3. 5.2最大熠法实践截图:原始图像阈值分割算法研究-最大煽法3. 6.1局部阈值实践代码:clc;clear all;I=imread (' cat. bmp');I=rgb2gray(I);I=im2double(I);subplot (121), imshow(I), title('原图');se=strel (' disk', 10);ft=imtophat(T,se);Th=graythresh(ft);ThG=im2bw(ft, Th);subplot (122), imshow(G), title,局部阈值');3. 6.2局部阈值实践截图:原图局部阈值