Thickening is a morphological operation used to grow selected regions of
foreground pixels in binary images, somewhat like dilation or closing. It
has several applications, including determining the approximate convex hull
of a shape, and determining the skeleton by zone of influence (SKIZ).
How It Works
The operation uses the extended trinary valued structuring element and can
be expressed in terms of the hit-and-miss transform. The thickening of an image I
by a structuring element J is:
thicken(I,J)=I|hit_and_miss(I,J)
Thus the thickened image consists of the original image plus any additional
foreground pixels switched on by the hit-and-mis transform.
If the foreground and background pixels in the structuring element exactly
match foreground and background pixels in the image, then the image pixel result
at the origin of the structuring element is set to background; otherwise it is
left unchanged. Note that the structuring element must thus have a 0 at the
origin if it is to have any effect. This operator is normally applied repeatedly
until no further change occurs.
Actual Use
The convex hull of a binary shape can be visualized by imagining stretching
an elastic band around the shape. The elastic band follow convex contours of
the sahpe, but bridges concave contours. The resulting shape will have no
concavities and contains the original shape. Where an image contains multiple
disconnected shapes, the convex hull algorithm will determine the convex hull
of each shape, without connecting the disjoint regions.
An apporximate convex hull can be computed using the structuring elements shown
below and all their 90 degree rotations (4*4=16 cases).
Variations of this structuring element set exists, e.g.:
A more general and faster algorithm is to encode the 9 bits of the image
under the structuring element into a number in the range 0..511 and use this
as an index into a table to get the resulting pixel value. This gives all 16
cases at once.
As with thinning, this algorithm is very noise sensitive.