Calculates various metrics for each labeled region in a 3D image.

The regionsprops method in skimage is very thorough for 2D images, but is a bit limited when it comes to 3D images, so this function aims to fill this gap.


im (array_like) – An imaging containing at least one labeled region. If a boolean image is received than the True voxels are treated as a single region labeled 1. Regions labeled 0 are ignored in all cases.


props – An augmented version of the list returned by skimage’s regionprops. Information, such as volume, can be found for region A using the following syntax: result[A-1].volume.

The returned list contains all the metrics normally returned by skimage.measure.regionprops plus the following:


Slice indices into the image that can be used to extract the region


Volume of the region in number of voxels.


Volume of the bounding box that contains the region.


The edges of the region, found as the locations where the distance transform is 1.


An image containing the largest sphere can can fit entirely inside the region.


Obtained by applying the marching cubes algorithm on the region, AFTER first blurring the voxel image. This allows marching cubes more freedom to fit the surface contours. See also surface_mesh_simplices


This accompanies surface_mesh_vertices and together they can be used to define the region as a mesh.


Calculated using the mesh obtained as described above, using the porespy.metrics.mesh_surface_area method.


Defined as the ratio of the area of a sphere with the same volume as the region to the actual surface area of the region.


The medial axis of the region obtained using the skeletonize_3D method from skimage.


Same as convex_area, but translated to a more meaningful name.

Return type


See also



Regions can be identified using a watershed algorithm, which can be a bit tricky to obtain desired results. PoreSpy includes the SNOW algorithm, which may be helpful.