english only
Biomedical Imaging Group
IP-LAB: Image Processing Laboratories
BIG > IP-LAB > Sessions > Morphological operators IV

# Morphological operators

1. Basic erosion and dilation

1.1 Understanding of the basic Dilation operator

Understand the code of the dilation operator that is provided in the method dilateBasic() of the file Code.java. Guess the structuring element from the Java code and fill in the report. Describe how to use the plugin to determine the structuring element even if you don't have access to the source code. The name of the plugin is Basic Dilate.

1.2 Code the Erosion operator

Write a method erodeBasic() that implements the erosion operator with the structuring element found in the question 1.1. The name of the plugin is Basic Erode.

Test your code on the images mire.tif and nucleus.tif.

 Programming note Duplicate an image image2 = image1.duplicate(); image1 → image2 Addition of images out.add(im1, im2); im1 + im2 → out Subtraction of images out.subtract(im1, im2); im1 - im2 → out Define the largest positive double value double max = Double.MAX_VALUE; Define the smallest negative double value double min = -Double.MAX_VALUE; Sort an array double arr[] = new double[count];Arrays.sort(arr);

2. Morphological operators with a user-defined structuring element

We want to implement the morphological operators for the "Block" and the "Diamond" structuring elements.
 2.1 Creation of structuring elements A structuring element is a 2D boolean array containing true in the gray cells and false in the white cells. Code the methods block(n) and diamond(n) to build the "Block" and "Diamond" structuring elements of size n. We assume that the size n is always odd and greater than 2. The provided method show(boolean se[][]) can display the structuring element as an image for you to check.

2.2 Implementation of the morphological operators

The task is to implement the following operators for the "Block" and the "Diamond" structuring elements. The user chooses the shape and the size of the structuring element through the dialog box. Test your code on the images "mire.tif" and "nucleus.tif".

 Operator Method in Code.java Name of the plugin Dilation dilate() Dilate Erosion erode() Erode Open open() Open Close close() Close Gradient gradient() Gradient Top Hat Dark topHatDark() Top Hat Dark Top Hat Bright topHatBright() Top Hat Bright Median† median() Median

†The useful method Arrays.sort() can sort an array

Dialog box

2.3 Understanding of the morphological operators

Use the Teacher plugins if you don't succeed in coding your own methods in Question 2.2. Fill in the report:

1. Compare the results of 1 x Dilate(DIAMOND, 5) and 1 x Dilate(BLOCK, 5) on "notes.tif". Are they the same ? Why?
2. Compare the results of 3 x Erode(BLOCK, 3) and 1 x Erode(BLOCK, 7) on "notes.tif". Are they the same ? Why?
3. Compare the results of 3 x Close(BLOCK, 3) and 1 x Close(BLOCK, 3) on "notes.tif". Are they the same ? Why?
4. Compare the Gradient(DIAMOND, 3) and the "Find Edges" command of ImageJ on "notes.tif". Comment on the functionality.
5. Apply the Median(BLOCK, 3) on the images speaker.tif and nucleus.tif. Comment.

3. Applications