gpuarrayBW2 = bwmorph(gpuarrayBW,___)
performs the morphological operation on a GPU. The input image and
output image are gpuArrays. This syntax requires the Parallel Computing Toolbox™.

Examples

Perform Morphological Operations on Binary Image

Read binary image and display it.

BW = imread('circles.png');
imshow(BW);

Remove interior pixels to leave an outline of the shapes.

BW2 = bwmorph(BW,'remove');
figure
imshow(BW2)

Get the image skeleton.

BW3 = bwmorph(BW,'skel',Inf);
figure
imshow(BW3)

Perform Morphological Operations on a GPU

This example performs the same operations as the previous example
but performs them on a GPU. The example starts by reading the image
into a gpuArray.

Note: To find
end points, the image must be skeletonized. To create a skeletonized
image, use bwmorph(BW,'skel').

'erode'

To perform erosion using the structuring element ones(3),
use imerode.

'fill'

Fills isolated interior pixels (individual 0s that are
surrounded by 1s), such as the center pixel in this pattern.

1 1 1
1 0 1
1 1 1

'hbreak'

Removes H-connected pixels. For example:

1 1 1 1 1 1
0 1 0 becomes 0 0 0
1 1 1 1 1 1

'majority'

Sets a pixel to 1 if five or more
pixels in its 3-by-3 neighborhood are 1s; otherwise, it sets the pixel
to 0.

'open'

Performs morphological opening (erosion followed by dilation).

'remove'

Removes interior pixels. This option sets a pixel to 0 if
all its 4-connected neighbors are 1, thus leaving
only the boundary pixels on.

'shrink'

With n = Inf, shrinks objects to points.
It removes pixels so that objects without holes shrink to a point,
and objects with holes shrink to a connected ring halfway between
each hole and the outer boundary. This option preserves the Euler
number.

'skel'

With n = Inf, removes pixels on the
boundaries of objects but does not allow objects to break apart. The
pixels remaining make up the image skeleton. This option preserves
the Euler number.

With n = Inf, thickens objects by
adding pixels to the exterior of objects until doing so would result
in previously unconnected objects being 8-connected. This option preserves
the Euler number.

'thin'

With n = Inf, thins objects to lines.
It removes pixels so that an object without holes shrinks to a minimally
connected stroke, and an object with holes shrinks to a connected
ring halfway between each hole and the outer boundary. This option
preserves the Euler number. See Algorithms for more detail.

'tophat'

Performs morphological "top hat" operation, returning
the image minus the morphological opening of the image (erosion followed
by dilation).

Number of times to perform the operation, specified as a numeric
value. n can be Inf, in which
case bwmorph repeats the operation until the
image no longer changes.

Input image, specified as a binary image of class logical in
a gpuArray. The input image can be numeric or logical, but must be
2-D, real and nonsparse.

This function supports the generation of C code using MATLAB^{®} Coder™.
Note that if you choose the generic MATLAB Host Computer target
platform, the function generates code that uses a precompiled, platform-specific
shared library. Use of a shared library preserves performance optimizations
but limits the target platforms for which code can be generated. For
more information, see Code Generation Using a Shared Library.

When generating code, the text string specifying the operation
must be a compile-time constant and, for best results, the input image
must be of class logical.

To perform erosion or dilation using the structuring
element ones(3), use imerode or imdilate.

The two subiterations together make up one iteration of the
thinning algorithm. When the user specifies an infinite number of
iterations (n=Inf), the iterations are repeated
until the image stops changing. The conditions are all tested using applylut with
precomputed lookup tables.

References

[1] Haralick, Robert M., and Linda G. Shapiro, Computer
and Robot Vision, Vol. 1, Addison-Wesley, 1992.

[2] Kong, T. Yung and Azriel Rosenfeld, Topological
Algorithms for Digital Image Processing, Elsevier Science,
Inc., 1996.

[3] Lam, L., Seong-Whan Lee, and Ching Y.
Suen, "Thinning Methodologies-A Comprehensive Survey," IEEE
Transactions on Pattern Analysis and Machine Intelligence,
Vol 14, No. 9, September 1992, page 879, bottom of first column through
top of second column.

[4] Pratt, William K., Digital
Image Processing, John Wiley & Sons, Inc., 1991.