Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Measure properties of image regions

`stats = regionprops(BW,properties)`

`stats = regionprops(CC,properties)`

`stats = regionprops(L,properties)`

`stats = regionprops(___,I,properties)`

`stats = regionprops(output,___)`

`stats = regionprops(gpuarrayImg,___)`

returns
measurements for the set of properties specified by `stats`

= regionprops(`BW`

,`properties`

)`properties`

for
each 8-connected component (object) in the binary image, `BW`

. `stats`

is
struct array containing a struct for each object in the image. You
can use `regionprops`

on contiguous regions and discontiguous
regions (see Algorithms).

returns
measurements for the set of properties specified by `stats`

= regionprops(`CC`

,`properties`

)`properties`

for
each connected component (object) in `CC`

. `CC`

is
a structure returned by `bwconncomp`

.

returns
measurements for the set of properties specified by `stats`

= regionprops(`L`

,`properties`

)`properties`

for
each labeled region in the label matrix `L`

.

returns
measurements for the set of properties specified by `stats`

= regionprops(___,`I`

,`properties`

)`properties`

for
each labeled region in the image `I`

. The first input
to `regionprops`

(`BW`

, `CC`

,
or `L`

) identifies the regions in `I`

.
The size of the first input must match the size of the image, that
is, `size(I)`

must equal `size(BW)`

, `CC.ImageSize`

,
or `size(L)`

.

performs
the measurements on a GPU. `stats`

= regionprops(`gpuarrayImg`

,___)`gpuarrayImg`

can be
a 2-D binary image (`logical`

gpuArray) or a gpuArray
label matrix. The connected component structure (`CC`

)
returned by `bwconncomp`

is not supported on the
GPU.

When run on a GPU, `regionprops`

does not support
the following properties: `'ConvexArea'`

, `'ConvexHull'`

, `'ConvexImage'`

, `'EulerNumber'`

, `'FilledArea'`

, `'FilledImage'`

,
and`'Solidity'`

.

The function

`ismember`

is useful in conjunction with`regionprops`

,`bwconncomp`

, and`labelmatrix`

for creating a binary image containing only objects or regions that meet certain criteria. For example, these commands create a binary image containing only the regions whose area is greater than 80 and whose eccentricity is less than 0.8.cc = bwconncomp(BW); stats = regionprops(cc, 'Area','Eccentricity'); idx = find([stats.Area] > 80 & [stats.Eccentricity] < 0.8); BW2 = ismember(labelmatrix(cc), idx);

The comma-separated list syntax for structure arrays is very useful when you work with the output of

`regionprops`

. For example, for a field that contains a scalar, you can use this syntax to create a vector containing the value of this field for each region in the image. For instance, if`stats`

is a structure array with field`Area`

, then the following expression:stats(1).Area, stats(2).Area, ..., stats(end).Area

is equivalent to:

stats.Area

Therefore, you can use these calls to create a vector containing the area of each region in the image.

`allArea`

is a vector of the same length as the structure array`stats`

.stats = regionprops(L, 'Area'); allArea = [stats.Area];

The functions

`bwlabel`

,`bwlabeln`

, and`bwconncomp`

all compute connected components for binary images.`bwconncomp`

replaces the use of`bwlabel`

and`bwlabeln`

. It uses significantly less memory and is sometimes faster than the other functions.Function Input Dimension Output Form Memory Use Connectivity `bwlabel`

2-D Label matrix with double-precision High 4 or 8 `bwlabeln`

N-D Double-precision label matrix High Any `bwconncomp`

N-D `CC`

structLow Any The output of

`bwlabel`

and`bwlabeln`

is a double-precision label matrix. To compute a label matrix using a more memory-efficient data type, use the`labelmatrix`

function on the output of`bwconncomp`

:CC = bwconncomp(BW); L = labelmatrix(CC);

If you are measuring components in a binary image with default connectivity, it is no longer necessary to call

`bwlabel`

or`bwlabeln`

first. You can pass the binary image directly to`regionprops`

, which then uses the memory-efficient`bwconncomp`

function to compute the connected components automatically. If you need to specify nondefault connectivity, call`bwconncomp`

and then pass the result to`regionprops`

.CC = bwconncomp(BW, CONN); S = regionprops(CC);

Most of the measurements take very little time to compute. However, these measurements can take significantly longer, depending on the number of regions in

`L`

:`'ConvexHull'`

`'ConvexImage'`

`'ConvexArea'`

`'FilledImage'`

Computing certain groups of measurements takes about the same amount of time as computing just one of them because

`regionprops`

takes advantage of intermediate computations used in both computations. Therefore, it is fastest to compute all the desired measurements in a single call to`regionprops`

.

Contiguous regions are also called "objects," "connected components," or "blobs." A label matrix containing contiguous regions might look like this:

1 1 0 2 2 0 3 3 1 1 0 2 2 0 3 3

`L`

equal
to 1 belong to the first contiguous region or connected component;
elements of `L`

equal to 2 belong to the second connected
component; and so on.Discontiguous regions are regions that might contain multiple connected components. A label matrix containing discontiguous regions might look like this:

1 1 0 1 1 0 2 2 1 1 0 1 1 0 2 2

`L`

equal
to 1 belong to the first region, which is discontiguous and contains
two connected components. Elements of `L`

equal to
2 belong to the second region, which is a single connected component. `bwconncomp`

| `bwlabel`

| `bwlabeln`

| `ismember`

| `labelmatrix`

| `watershed`

Was this topic helpful?