Image Processing Toolbox    
regionprops

Measure properties of image regions

Syntax

Description

STATS = regionprops(L,properties) measures a set of properties for each labeled region in the label matrix L. Positive integer elements of L correspond to different regions. For example, the set of elements of L equal to 1 corresponds to region 1; the set of elements of L equal to 2 corresponds to region 2; and so on. The return value, STATS, is a structure array of length max(L(:)). The fields of the structure array denote different measurements for each region, as specified by properties.

properties can be a comma-separated list of strings, a cell array containing strings, the single string 'all', or the string 'basic'. This table lists the set of valid property strings. Property strings are case insensitive and can be abbreviated.

'Area'
'EquivDiameter'
'MajorAxisLength'
'BoundingBox'
'EulerNumber'
'MinorAxisLength'
'Centroid'
'Extent'
'Orientation'
'ConvexArea'
'Extrema'
'PixelIdxList'
'ConvexHull'
'FilledArea'
'PixelList'
'ConvexImage'
'FilledImage'
'Solidity'
'Eccentricity'
'Image'
'SubarrayIdx'

If properties is the string 'all', then all of the above measurements are computed. If properties is not specified or if it is the string 'basic', then these measurements are computed: 'Area', 'Centroid', and 'BoundingBox'.

Definitions

'Area' - Scalar; the actual number of pixels in the region. (This value may differ slightly from the value returned by bwarea, which weights different patterns of pixels differently.)

'Centroid' - 1-by-ndims(L) vector; the center of mass of the region. Note that the first element of Centroid is the horizontal coordinate (or x-coordinate) of the center of mass, and the second element is the vertical coordinate (or y-coordinate). All other elements of Centroid are in order of dimension.

'BoundingBox' - 1-by-ndims(L)*2 vector; the smallest rectangle containing the region. BoundingBox is [ul_corner width], where

ul_corner
is in the form [x y z ...] and specifies the upper-left corner of the bounding box
width
is in the form [x_width y_width ...] and specifies the width of the bounding box along each dimension

This figure illustrates the centroid and bounding box. The region consists of the white pixels; the green box is the bounding box, and the red dot is the centroid.

'MajorAxisLength' - Scalar; the length (in pixels) of the major axis of the ellipse that has the same second-moments as the region. This property is supported only for 2-D input label matrices.

'MinorAxisLength' - Scalar; the length (in pixels) of the minor axis of the ellipse that has the same second-moments as the region. This property is supported only for 2-D input label matrices.

'Eccentricity' - Scalar; the eccentricity of the ellipse that has the same second-moments as the region. The eccentricity is the ratio of the distance between the foci of the ellipse and its major axis length. The value is between 0 and 1. (0 and 1 are degenerate cases; an ellipse whose eccentricity is 0 is actually a circle, while an ellipse whose eccentricity is 1 is a line segment.) This property is supported only for 2-D input label matrices.

'Orientation' - Scalar; the angle (in degrees) between the x-axis and the major axis of the ellipse that has the same second-moments as the region. This property is supported only for 2-D input label matrices.

This figure illustrates the axes and orientation of the ellipse. The left side of the figure shows an image region and its corresponding ellipse. The right side shows the same ellipse, with features indicated graphically; the solid blue lines are the axes, the red dots are the foci, and the orientation is the angle between the horizontal dotted line and the major axis

.

'Image' - Binary image (logical) of the same size as the bounding box of the region; the on pixels correspond to the region, and all other pixels are off.

'FilledImage' - Binary image (logical) of the same size as the bounding box of the region. The on pixels correspond to the region, with all holes filled in.

'FilledArea' - Scalar; the number of on pixels in FilledImage.

This figure illustrates `Image' and `FilledImage'.

'ConvexHull' - p-by-2 matrix; the smallest convex polygon that can contain the region. Each row of the matrix contains the x- and y-coordinates of one vertex of the polygon. This property is supported only for 2-D input label matrices.

'ConvexImage' - Binary image (logical); the convex hull, with all pixels within the hull filled in (i.e., set to on). (For pixels that the boundary of the hull passes through, regionprops uses the same logic as roipoly to determine whether the pixel is inside or outside the hull.) The image is the size of the bounding box of the region. This property is supported only for 2-D input label matrices.

'ConvexArea' - Scalar; the number of pixels in 'ConvexImage'. This property is supported only for 2-D input label matrices.

'EulerNumber' - Scalar; equal to the number of objects in the region minus the number of holes in those objects. This property is supported only for 2-D input label matrices.

'Extrema' - 8-by-2 matrix; the extremal points in the region. Each row of the matrix contains the x- and y-coordinates of one of the points. The format of the vector is [top-left top-right right-top right-bottom bottom-right bottom-left left-bottom left-top]. This property is supported only for 2-D input label matrices.

This figure illustrates the extrema of two different regions. In the region on the left, each extremal point is distinct; in the region on the right, certain extremal points (e.g., top-left and left-top) are identical.

'EquivDiameter' - Scalar; the diameter of a circle with the same area as the region. Computed as sqrt(4*Area/pi). This property is supported only for 2-D input label matrices.

'Solidity' - Scalar; the proportion of the pixels in the convex hull that are also in the region. Computed as Area/ConvexArea. This property is supported only for 2-D input label matrices.

'Extent' - Scalar; the proportion of the pixels in the bounding box that are also in the region. Computed as the Area divided by area of the bounding box. This property is supported only for 2-D input label matrices.

'PixelList' - p-by-ndims(L) matrix; the actual pixels in the region. Each row of the matrix has the form [x y z ...] and specifies the coordinates of one pixel in the region.

Class Support

The input label matrix L can have any numeric class.

Remarks

The comma-separated list syntax for structure arrays is very useful when working with the output of regionprops. For example, for a field that contains a scalar, you can use a 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 two expressions are equivalent

and

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.

The function ismember is useful in conjunction with regionprops for selecting regions based on certain criteria. For example, these commands create a binary image containing only the regions in text.tif whose area is greater than 80.

Most of the measurements take very little time to compute. The exceptions are these, which may take significantly longer, depending on the number of regions in L:

Note that 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 of the desired measurements in a single call to regionprops.

Example

See Also

bwlabel, bwlabeln, ismember, watershed

ismember is a MATLAB function


  reflect rgb2gray