def joined_fragments(image):
assert image.mode is '1'
frags = {}
for x, y in xy(image):
if image.getpixel((x,y)) == 0: # black pixel
new_fragment = set([(x, y)])
frags[(x,y)] = new_fragment
for dot in (
(x-1, y-1), (x+0, y-1), (x+1, y-1),
(x-1, y+0),):# (x+1, y+0),
if frags.has_key(dot):
new_fragment.update(frags[dot])
for key in frags[dot]:
frags[key] = new_fragment
return set(imap(tuple, frags.values()))