% fig921.m : figure 9.21 in Gonzales and Wood, pp. 542 % (C) 2003 by Yu Hen Hu % created: 12/1/2003 % call hitnmiss.m % note that masks are represented by +1, -1 and 0 (don't care) clear all A = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0]; [m,n]=size(A); B{1}=[-1 -1 -1; 0 1 0 ; 1 1 1]; B{2}=[0 -1 -1 ;1 1 -1; 1 1 0]; B{3}=[1 0 -1;1 1 -1;1 0 -1]; B{4}=[1 1 0;1 1 -1; 0 -1 -1]; B{5}=[1 1 1;0 1 0;-1 -1 -1]; B{6}=[0 1 1;-1 1 1;-1 -1 0]; B{7}=[-1 0 1;-1 1 1;-1 0 1]; B{8}=[-1 -1 0;-1 1 1;0 1 1]; x0=A; x=x0; figure(1),clf,colormap('gray') subplot(121),imagesc(ones(m,n)-A); converged=0; iter=0; while converged==0, iter=iter+1; for i=1:8, x=x-hitnmiss(x,B{i}); subplot(122),imagesc(ones(m,n)-x); disp(['B' int2str(i) ' applied, press any key to continue ... ']) pause end disp(['******** # of passes = ' int2str(iter)]); if sum(sum(x0-x))==0, converged=1; disp('converged!'); else x0=x; end end