function C=erode(A,B) % A eroded by structuring element B asize=size(A); % set up to find largest size bsize=size(B); csize=max(asize',bsize')'; Apad=zeropad(A,csize); %pad both inputs to be same max size Bpad=zeropad(B,csize); maxsum=sum(sum(B))-1; % get maximum sum for complete union C=abs(ifft2(fft2(Apad).*conj(fft2(Bpad)))); % correlate C=C-maxsum; % drop off 0 values by making them negative cmax=max(max(abs(C)))*2; % scale values to be less than unity if cmax>0 C=C./cmax; end; C=ceil(C); % binarize final image