Main Content


Morphologically open image



J = imopen(I,SE) performs morphological opening on the grayscale or binary image I using the structuring element SE. The morphological opening operation is an erosion followed by a dilation, using the same structuring element for both operations.

J = imopen(I,nhood) opens the image I, where nhood is a matrix of 0s and 1s that specifies the structuring element neighborhood.

This syntax is equivalent to imopen(I,strel(nhood)).


collapse all

Read the image into the workspace and display it.

original = imread('snowflakes.png');

Create a disk-shaped structuring element with a radius of 5 pixels.

se = strel('disk',5);

Remove snowflakes having a radius less than 5 pixels by opening it with the disk-shaped structuring element.

afterOpening = imopen(original,se);

Input Arguments

collapse all

Input image, specified as a grayscale image or binary image of any dimension.

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Structuring element, specified as a strel object or offsetstrel object. If the image I is of data type logical, the structuring element must be flat.

Structuring element neighborhood, specified as a matrix of 0s and 1s.

Example: [0 1 0; 1 1 1; 0 1 0]

Output Arguments

collapse all

Opened image, returned as a grayscale image or binary image. J has the same data type as input image I.


  • If the dimensionality of the image I is greater than the dimensionality of the structuring element, then the imopen function applies the same morphological opening to all planes along the higher dimensions.

    You can use this behavior to perform morphological opening on RGB images. Specify a 2-D structuring element for RGB images to operate on each color channel separately.

  • When you specify a structuring element neighborhood, imopen determines the center element of nhood by floor((size(nhood)+1)/2).

Extended Capabilities

Version History

Introduced before R2006a

expand all

See Also