Dilate an Image to Enlarge a Shape
This example shows how to dilate an image using the imdilate
function. The morphological dilation operation expands or thickens foreground objects in an image.
Create a simple sample binary image containing one foreground object: the square region of 1's in the middle of the image.
BW = zeros(9,10); BW(4:6,4:7) = 1
BW = 9×10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
imshow(imresize(BW,40,'nearest'))
Create a structuring element to use with imdilate
. To dilate a geometric object, you typically create a structuring element that is the same shape as the object.
SE = strel('square',3)
SE = strel is a square shaped structuring element with properties: Neighborhood: [3x3 logical] Dimensionality: 2
Dilate the image, passing the input image and the structuring element to imdilate
. Note how dilation adds a rank of 1's to all sides of the foreground object.
BW2 = imdilate(BW,SE)
BW2 = 9×10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
imshow(imresize(BW2,40,'nearest'))
For comparison, create a structuring element that is a different shape. Dilate the original image using the new structuring element.
SE2 = strel('diamond',1); BW3 = imdilate(BW,SE2); imshow(imresize(BW3,40,'nearest'))