This figure illustrates the segmentation of keys using watershed transform with inner and outer markers.
.
from morph import *
a = mmreadgray('keyb.tif');
b = mmgradm(a, mmsebox());
c = mmopenth(a,mmsebox(5));
d = mmthreshad(c, uint8(150));
e = mmdil(d, mmsebox(3));
f = mmwatershed(mmdist(mmneg(e),mmsebox(),'EUCLIDEAN'));
g = mmunion(e,f);
h = mmcwatershed(b,g,mmsebox());
mmshow(a)
mmshow(c)
mmshow(e)
mmshow(f,e)
mmshow(b,g)
mmshow(h)