# ImageMorph Module¶

The ImageMorph module provides morphology operations on images.

class PIL.ImageMorph.LutBuilder(patterns=None, op_name=None)[source]

Bases: object

A class for building a MorphLut from a descriptive language

The input patterns is a list of a strings sequences like these:

4:(...
.1.
111)->1


(whitespaces including linebreaks are ignored). The option 4 describes a series of symmetry operations (in this case a 4-rotation), the pattern is described by:

• . or X - Ignore
• 1 - Pixel is on
• 0 - Pixel is off

The result of the operation is described after “->” string.

The default is to return the current pixel value, which is returned if no other match is found.

Operations:

• 4 - 4 way rotation
• N - Negate
• 1 - Dummy op for no other operation (an op must always be given)
• M - Mirroring

Example:

lb = LutBuilder(patterns = ["4:(... .1. 111)->1"])
lut = lb.build_lut()

add_patterns(patterns)[source]
build_default_lut()[source]
build_lut()[source]

Compile all patterns into a morphology lut.

TBD :Build based on (file) morphlut:modify_lut

get_lut()[source]
class PIL.ImageMorph.MorphOp(lut=None, op_name=None, patterns=None)[source]

Bases: object

A class for binary morphological operators

apply(image)[source]

Run a single morphological operation on an image

Returns a tuple of the number of changed pixels and the morphed image

get_on_pixels(image)[source]

Get a list of all turned on pixels in a binary image

Returns a list of tuples of (x,y) coordinates of all matching pixels. See Coordinate System.

load_lut(filename)[source]

Load an operator from an mrl file

match(image)[source]

Get a list of coordinates matching the morphological operation on an image.

Returns a list of tuples of (x,y) coordinates of all matching pixels. See Coordinate System.

save_lut(filename)[source]

Save an operator to an mrl file

set_lut(lut)[source]

Set the lut from an external source