Dilation in Image Processing using C# by asif

Overview

   Dilation is one of the two basic operators in the area of mathematical morphology, The basic effect of the operator on a binary image is to gradually enlarge the boundaries of regions of foreground pixels (i.e. white pixels, typically). Thus areas of foreground pixels grow in size while holes within those regions become smaller.

General Working:

   The dilation operator takes two pieces of data as inputs. The first is the image which is to be dilated. The second is a set of coordinate points known as a Structuring Element. It is this structuring element that determines the precise effect of the dilation on the input image. The mathematical definition of grayscale dilation is identical except for the way in which the set of coordinates associated with the input image is derived. In addition, these coordinates are 3-D rather than 2-D. The brief procedure for implementing the dilation in the binary image, and in the graylevel image are explained below.

   The dilation is applied on the binary image in a single pass. During the pass, if the pixel in hand is equal to binary 1, then apply the structuring element on the image by starting from that particular pixel as the origin. The sample project supposes that, in the thresholded image, the background is black and the forground is white. If the sample image is not so, then you have to adjust accordingly.

  The dilatoin can also be applied on the graylevel images also in a single pass. During the passing through the image, the structuring element is applied on each pixel of the image, such that the origin of the structuring element is applied on that particular pixel. In this case the corresponding pixel of the output image contains the maximum of the pixels surrounding it. In this case, only those pixels are compared with each other, where the structuring element contains.

Explanation

  Let us take the example of the following image:

                                         

, and the following Structuring Element:

  1   1   1
  1   1   1
  1   1   1

 The following image shows the effect of it on the above image:

                                      

 In the above images, the boxes shows the pixels, and the white colored boxes shows that the binary pixel contains 1, while the black box shows that the corresponding pixel contains 0. It can be seen that the hole is removed from the image after applying the dilation. Dilations can be made directional by using less symmetrical structuring elements. e.g. a structuring element that is 10 pixels wide and 1 pixel high will dilate in a horizontal direction only. Similarly, a 3?3 square structuring element with the origin in the middle of the top row rather than the center, will dilate the bottom of a region more strongly than the top.

  Let us take the example of the following image sample ( note that each pixel is represented by a box, whereas the pixel intensity is shown in the box as a number) :

   and the following be the structuring element:                             

 

      0       1     0
      1       1     1
      0       1     0

 

 

 

 now, the dilated image pixel setup is as:

 In order to understand the working, take the example of the pixel in the 3rd row, and in the 4th column. Its intensity is 56. Now, the pixel in the images are compared in the image where the structuring element has one. The intensity values of those pixels are 198 , 32 , 56 , 16 , 78. The maximum of these is 198 intensity value, thus it is the intensity value of the pixel in the 3rd row, and in the 4th column of the output image.

Guidelines for Use

   One of the simplest applications of dilation is for bridging gaps in the binary mode. For example, take the following fig:

The following image shows that the two pixel gaps on maximum are bridged:

In the graylevel mode the dilation operation bright regions surrounded by dark regions grow in size, and dark regions surrounded by bright regions shrink in size. Small dark spots in images will disappear as they are `filled in’ to the surrounding intensity value. Small bright spots will become larger spots. The effect is most marked at places in the image where the intensity changes rapidly and regions of fairly uniform intensity will be largely unchanged except at their edges. For example, take the following graylevel image:

The following picture shows the effect of two dilation passes on the image:

 Sample Project

 The algorithm is coded in C# using unsafe so the quality and speed of the program may not be affected. The class BitmapData is used to read and process the pixels in the image. This is the speicality of C# to provide such a speed even on image processing applications. There is a set of modules that are designed to implement the algorithm. The interface designed for the sample project as:

 You can perform the dilation operation on binary as well as on graylevel images using the same project, specifying the type of the image in the dialog box. You also use specify desired masks in the “Specify Mask” section.

Attachments:

   Project Files: dilation_sample.zip