2.5.7 Thickening

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).

11 
10 
1 0
111
10 
 0 
111
 01
 0 
 11
 01
0 1

Variations of this structuring element set exists, e.g.:

111
 0 
000
11 
100
 0 
111
101
1  
111
101
  1

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.

Here is an example of thickening.

Before

After

As with thinning, this algorithm is very noise sensitive.