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.

To view all translated materials including this page, select Country 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,___)`

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

To return measurements of a 3-D volumetric image, consider using `regionprops3`

. While `regionprops`

can accept 3-D images,
`regionprops3`

calculates more statistics for 3-D images than
`regionprops`

.

For all syntaxes, if you do not specify the `properties`

argument, then
`regionprops`

returns the `'Area'`

,
`'Centroid'`

, and `'BoundingBox'`

measurements.

You optionally can measure properties of image regions `'ConvexArea'`

, `'ConvexHull'`

,
`'ConvexImage'`

, `'EulerNumber'`

,
`'FilledArea'`

, `'FilledImage'`

, and
`'Solidity'`

properties are not supported on a GPU.

measures a set of properties for each connected component (object) in
`stats`

= regionprops(`CC`

,`properties`

)`CC`

, which is a structure returned by `bwconncomp`

.

This syntax is not supported on a GPU.

measures a set of properties for each labeled region in label matrix
`stats`

= regionprops(`L`

,`properties`

)`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 function

`ismember`

is useful 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 useful when you work with the output of

`regionprops`

. 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 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. To specify nondefault connectivity, call`bwconncomp`

and pass the result to`regionprops`

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

Most of the measurements take little time to compute. However, the following measurements can take 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.

`regionprops`

takes advantage of intermediate computations useful to each computation. 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`

| `bwpropfilt`

| `ismember`

| `labelmatrix`

| `regionprops3`

| `watershed`