function x=imfill(A,p,B) % Usage: x=imfill(A,p,B) % morphological region filling % A is a binary image which has a region to be filled % p: is a coordinate 2 x 1 vector % within a region to be filled in x % B: (optional) a structure element to be used % default: cross [0 1 0; 1 1 1; 0 1 0] % (C) 2006 by Yu Hen Hu % created: 12/19/2006 if nargin<3, B= [0 1 0; 1 1 1; 0 1 0]; end x=zeros(size(A)); % same size as A matrix x(p(1), p(2))=1; % make sure starting point = 1 Ac=xor(A,ones(size(A))); done=0; k=0; kmax=max(size(A)); % maximum # of iterations while done==0, % while not done k=k+1; xnew=and(Ac,dilate(x,B)); if xnew==x, done=1; else x=xnew; if k==kmax, % but done=0 disp('does not converge!'); done=1; end end end