Measure properties of 3D volumetric image regions
measures a set of properties for each connected component (object) in the 3D
volumetric binary image stats
= regionprops3(BW
,properties
)BW
. The output
stats
is a table with height (number of rows) equal to the
number of objects in BW
. The variables (columns) of the table
denote different properties for each region, as specified by
properties
.
For all syntaxes, if you do not specify the properties
argument, regionprops3
returns the 'Volume'
,
'Centroid'
, and 'BoundingBox'
measurements.
measures a set of properties for each connected component (object) in
stats
= regionprops3(CC
,properties
)CC
, which is a structure returned by bwconncomp
.
measures a set of properties for each labeled region in the 3D label matrix
stats
= regionprops3(L
,properties
)L
.
Create a binary image with two spheres.
[x,y,z] = meshgrid(1:50,1:50,1:50); bw1 = sqrt((x10).^2 + (y15).^2 + (z35).^2) < 5; bw2 = sqrt((x20).^2 + (y30).^2 + (z15).^2) < 10; bw = bw1  bw2;
Get the centers and radii of the two spheres.
s = regionprops3(bw,"Centroid","PrincipalAxisLength"); centers = s.Centroid
centers = 2×3
20 30 15
10 15 35
diameters = mean(s.PrincipalAxisLength,2)
diameters = 2×1
17.8564
8.7869
radii = diameters/2
radii = 2×1
8.9282
4.3935
Make a 9by9 cube of 0s that contains a 3by3 cube of 1s at its center.
innercube = ones(3,3,3);
cube_in_cube = padarray(innercube,[3 3],0,'both');
Get all statistics on the cube within the cube.
stats = regionprops3(cube_in_cube,'all')
stats=1×18 table
Volume Centroid BoundingBox SubarrayIdx Image EquivDiameter Extent VoxelIdxList VoxelList PrincipalAxisLength Orientation EigenVectors EigenValues ConvexHull ConvexImage ConvexVolume Solidity SurfaceArea
______ ___________ ____________ ____________________________________________ _______________ _____________ ______ _____________ _____________ __________________________ ___________ ____________ ____________ _____________ _______________ ____________ ________ ___________
27 5 5 2 [1x6 double] {1x3 double} {1x3 double} {1x3 double} {3x3x3 logical} 3.7221 1 {27x1 double} {27x3 double} 3.4641 3.4641 3.4641 0 0 0 {3x3 double} {3x1 double} {24x3 double} {3x3x3 logical} 27 1 41.07
BW
— Volumetric binary imageVolumetric binary image, specified as a 3D logical array.
Data Types: logical
CC
— Connected componentsConnected components, specified as a structure returned by bwconncomp
. The
CC
structure must represent a 3D image, that is,
CC.ImageSize
must be a 1by3 vector. The
CC
structure must also have been created using a
3D connectivity value, such as 6, 18, or 26.
Data Types: struct
L
— Label matrixLabel matrix, specified as a 3D numeric array.
regionprops3
treats negativevalued pixels as
background and rounds down input pixels that are not integers. 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.
Data Types: single
 double
 int8
 int16
 int32
 uint8
 uint16
 uint32
properties
— Type of measurement'basic'
(default)  commaseparated list of strings or character vectors  cell array of strings or character vectors  'all'
Type of measurement, specified as a commaseparated list of strings or
character vectors, a cell array of strings or character vectors,
'all'
or 'basic'
. Property names
are caseinsensitive and can be abbreviated.
If you specify 'all'
,
regionprops3
computes all the shape
measurements and, if you specified a grayscale image, all the pixel
value measurements.
If you specify 'basic'
or do not specify the
properties
argument, then
regionprops3
computes only the
'Volume'
, 'Centroid'
, and
'BoundingBox'
measurements.
The following table lists all the properties that provide shape measurements. The Voxel Value Measurements table lists additional properties that are valid only when you specify a grayscale image.
Shape Measurements
Property Name  Description 

'BoundingBox'  Smallest cuboid containing the region, returned as a
1by6 vector of the form [ulf_x ulf_y ulf_z
width_x width_y width_z] .
ulf_x , ulf_y , and
ulf_z specify the upperleft front
corner of the cuboid. width_x ,
width_y , and
width_z specify the width of the
cuboid along each dimension. 
'Centroid' 
Center of mass of the region, returned as a 1by3
vector of the form 
'ConvexHull'  Smallest convex polygon that can contain the region, returned as a pby3 matrix. Each row of the matrix contains the x, y, and zcoordinates of one vertex of the polygon. 
'ConvexImage'  Image of the convex hull, returned as a volumetric binary
image (logical ) with all voxels within
the hull filled in (set to on ). The image
is the size of the bounding box of the region. 
'ConvexVolume'  Number of voxels in 'ConvexImage' ,
returned as a scalar. 
'EigenValues'  Eigenvalues of the voxels representing a region, returned
as a 3by1 vector. regionprops3 uses the
eigenvalues to calculate the principal axes lengths. 
'EigenVectors'  Eigenvectors of the voxels representing a region,
returned as a 3by3 vector.
regionprops3 uses the eigenvectors to
calculate the orientation of the ellipsoid that has the same
normalized second central moments as the region. 
'EquivDiameter'  Diameter of a sphere with the same volume as the region,
returned as a scalar. Computed as
(6*Volume/pi)^(1/3) . 
'Extent'  Ratio of voxels in the region to voxels in the total
bounding box, returned as a scalar. Computed as the value of
Volume divided by the volume of the
bounding box. [Volume/(bounding box width *
bounding box height * bounding box
depth)] 
'Image'  Bounding box of the region, returned as a volumetric
binary image (logical ) that is the same
size as the bounding box of the region. The
on voxels correspond to the region,
and all other voxels are off . 
'Orientation' 
Euler angles, returned as a 1by3 vector. The angles
are based on the righthand rule.

'PrincipalAxisLength'  Length (in voxels) of the major axes of the ellipsoid
that have the same normalized second central moments as the
region, returned as 1by3 vector.
regionprops3 sorts the values from
highest to lowest. 
'Solidity'  Proportion of the voxels in the convex hull that are also
in the region, returned as a scalar. Computed as
Volume/ConvexVolume . 
'SubarrayIdx'  Indices used to extract elements inside the object
bounding box, returned as a cell array such that
L(idx{:}) extracts the elements of
L inside the object bounding
box. 
'SurfaceArea'  Distance around the boundary of the region, returned as a scalar. For more information, see References. 
'Volume'  Count of the actual number of 'on '
voxels in the region, returned as a scalar. Volume
represents the metric or measure of the number of voxels in
the regions within the volumetric binary image,
BW . 
'VoxelIdxList'  Linear indices of the voxels in the region, returned as a pelement vector. 
'VoxelList'  Locations of voxels in the region, returned as a
pby3 matrix. Each row of the matrix
has the form [x y z] and specifies the
coordinates of one voxel in the region. 
The voxel value measurement properties in the following table are valid
only when you specify a grayscale volumetric image,
V
.
Voxel Value Measurements
Property Name  Description 

'MaxIntensity'  Value of the voxel with the greatest intensity in the region, returned as a scalar. 
'MeanIntensity'  Mean of all the intensity values in the region, returned as a scalar. 
'MinIntensity'  Value of the voxel with the lowest intensity in the region, returned as a scalar. 
'VoxelValues'  Value of the voxels in the region, returned as a pby1 vector, where p is the number of voxels in the region. Each element in the vector contains the value of a voxel in the region. 
'WeightedCentroid'  Center of the region based on location and intensity
value, returned as a p by3
vector of coordinates. The first element of
WeightedCentroid is the horizontal
coordinate (or xcoordinate) of the
weighted centroid. The second element is the vertical
coordinate (or ycoordinate). The third
element is the planar coordinate (or
zcoordinate). 
Data Types: char
 string
 cell
V
— Volumetric grayscale imagestats
— Measurement valuestable
Measurement values, returned as a table. The number of rows in the table
corresponds to the number of objects in BW
,
, or
CC
.NumObjectsmax(
. The variables
(columns) in each table row denote the properties calculated for each
region, as specified by L
(:))properties
.
[1] Lehmann, Gaetan and David Legland. Efficient NDimensional surface estimation using Crofton formula and runlength encoding, The Insight Journal, 2012. (https://insightjournal.org/browse/publication/852)
[2] Shoemake, Ken, Graphics Gems IV. Edited by Paul S. Heckbert, Morgan Kaufmann, 1994, pp. 222–229.
A modified version of this example exists on your system. Do you want to open this version instead?
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.