from Binary Dilation and Erosion by Luigi Rosa
Speed up binary dilation and erosion.

example.m
disp(' Have you mex compiled bdil6.c and bero4.c ???  :)');

clear;
imx=1027;
imy=800;
im=logical(round(rand(imx,imy)));
repx=9;
repy=2;
im=repmat(im,repx,repy);

sex=10;
sey=10;
se=logical(round(rand(sex,sey)));
%se = strel('octagon',15);

disp('Matlab erosion logical input');
tic;y0=imerode(im,se);toc
disp('Our erosion logical input');
tic;y1=binero(im,se);toc
nnz(double(y0)-double(y1))

disp('Matlab dilation logical input');
tic;y0=imdilate(im,se);toc
disp('Our dilation logical input');
tic;y1=bindil(im,se);toc
nnz(double(y0)-double(y1))

imp=bwpack(im);
disp('Matlab erosion packed input');
tic;y0=imerode(imp,se,'ispacked',imx*repx);toc
disp('Our erosion packed input');
tic;y1=binero(imp,se,imx*repx);toc
% the third input (imx*repx) is necessary because imp is
% packed and imx*repx is the original number or raws of input
% image im
nnz(double(y0)-double(y1))

disp('Matlab dilation packed input');
tic;y0=imdilate(imp,se,'ispacked');toc
disp('Our dilation packed input');
tic;y1=bindil(imp,se);toc
nnz(double(y0)-double(y1))

Contact us at files@mathworks.com