This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Morphologically open image


J = imopen(I,SE)
J = imopen(I,nhood)



J = imopen(I,SE) performs morphological opening on the grayscale or binary image I, returning the opened image, J. SE is a single structuring element object returned by the strel or offsetstrel functions. The morphological open operation is an erosion followed by a dilation, using the same structuring element for both operations.

You optionally can perform the opening using a GPU (requires Parallel Computing Toolbox™). For more information, see Image Processing on a GPU.

J = imopen(I,nhood) opens the image I, where nhood is a matrix of 0s and 1s that specifies the structuring element neighborhood. This is equivalent to the syntax imopen(I,strel(nhood)). The imopen function determines the center element of the neighborhood by floor((size(nhood)+1)/2).


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

Read an image.

 original = imread('snowflakes.png');

Create a disk-shaped structuring element.

se = strel('disk',5);

Morphologically open the image on a GPU, using a gpuArray object, and display the images.

afterOpening = imopen(gpuArray(original),se);
figure, imshow(original), figure, imshow(afterOpening,[])

Input Arguments

collapse all

Input image, specified as a grayscale image or binary image. I can have any dimension, and must be real and nonsparse.

To perform the opening using a GPU, specify I as a gpuArray that contains an image of type uint8 or logical.

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

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

If you perform the opening using a GPU, then SE must be flat and two-dimensional.

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 class as input image I.

If the opening is performed using a GPU, then J is returned as a gpuArray that contains a grayscale or binary image of the same class as I.

Extended Capabilities

See Also



Introduced before R2006a