regionprops

regionprops

skimage.measure.regionprops(label_image, intensity_image=None, cache=True) [source]

Measure properties of labeled image regions.

Parameters:

label_image : (N, M) ndarray

Labeled input image. Labels with value 0 are ignored.

intensity_image : (N, M) ndarray, optional

Intensity (i.e., input) image with same size as labeled image. Default is None.

cache : bool, optional

Determine whether to cache calculated properties. The computation is much faster for cached properties, whereas the memory consumption increases.

Returns:

properties : list of RegionProperties

Each item describes one labeled region, and can be accessed using the attributes listed below.

Notes

The following properties can be accessed as attributes or keys:

area : int
Number of pixels of region.
bbox : tuple
Bounding box (min_row, min_col, max_row, max_col)
centroid : array
Centroid coordinate tuple (row, col).
convex_area : int
Number of pixels of convex hull image.
convex_image : (H, J) ndarray
Binary convex hull image which has the same size as bounding box.
coords : (N, 2) ndarray
Coordinate list (row, col) of the region.
eccentricity : float
Eccentricity of the ellipse that has the same second-moments as the region. The eccentricity is the ratio of the focal distance (distance between focal points) over the major axis length. The value is in the interval [0, 1). When it is 0, the ellipse becomes a circle.
equivalent_diameter : float
The diameter of a circle with the same area as the region.
euler_number : int
Euler characteristic of region. Computed as number of objects (= 1) subtracted by number of holes (8-connectivity).
extent : float
Ratio of pixels in the region to pixels in the total bounding box. Computed as area / (rows * cols)
filled_area : int
Number of pixels of filled region.
filled_image : (H, J) ndarray
Binary region image with filled holes which has the same size as bounding box.
image : (H, J) ndarray
Sliced binary region image which has the same size as bounding box.
inertia_tensor : (2, 2) ndarray
Inertia tensor of the region for the rotation around its mass.
inertia_tensor_eigvals : tuple
The two eigen values of the inertia tensor in decreasing order.
intensity_image : ndarray
Image inside region bounding box.
label : int
The label in the labeled input image.
local_centroid : array
Centroid coordinate tuple (row, col), relative to region bounding box.
major_axis_length : float
The length of the major axis of the ellipse that has the same normalized second central moments as the region.
max_intensity : float
Value with the greatest intensity in the region.
mean_intensity : float
Value with the mean intensity in the region.
min_intensity : float
Value with the least intensity in the region.
minor_axis_length : float
The length of the minor axis of the ellipse that has the same normalized second central moments as the region.
moments : (3, 3) ndarray

Spatial moments up to 3rd order:

m_ji = sum{ array(x, y) * x^j * y^i }

where the sum is over the x, y coordinates of the region.

moments_central : (3, 3) ndarray

Central moments (translation invariant) up to 3rd order:

mu_ji = sum{ array(x, y) * (x - x_c)^j * (y - y_c)^i }

where the sum is over the x, y coordinates of the region, and x_c and y_c are the coordinates of the region’s centroid.

moments_hu : tuple
Hu moments (translation, scale and rotation invariant).
moments_normalized : (3, 3) ndarray

Normalized moments (translation and scale invariant) up to 3rd order:

nu_ji = mu_ji / m_00^[(i+j)/2 + 1]

where m_00 is the zeroth spatial moment.

orientation : float
Angle between the X-axis and the major axis of the ellipse that has the same second-moments as the region. Ranging from -pi/2 to pi/2 in counter-clockwise direction.
perimeter : float
Perimeter of object which approximates the contour as a line through the centers of border pixels using a 4-connectivity.
solidity : float
Ratio of pixels in the region to pixels of the convex hull image.
weighted_centroid : array
Centroid coordinate tuple (row, col) weighted with intensity image.
weighted_local_centroid : array
Centroid coordinate tuple (row, col), relative to region bounding box, weighted with intensity image.
weighted_moments : (3, 3) ndarray

Spatial moments of intensity image up to 3rd order:

wm_ji = sum{ array(x, y) * x^j * y^i }

where the sum is over the x, y coordinates of the region.

weighted_moments_central : (3, 3) ndarray

Central moments (translation invariant) of intensity image up to 3rd order:

wmu_ji = sum{ array(x, y) * (x - x_c)^j * (y - y_c)^i }

where the sum is over the x, y coordinates of the region, and x_c and y_c are the coordinates of the region’s weighted centroid.

weighted_moments_hu : tuple
Hu moments (translation, scale and rotation invariant) of intensity image.
weighted_moments_normalized : (3, 3) ndarray

Normalized moments (translation and scale invariant) of intensity image up to 3rd order:

wnu_ji = wmu_ji / wm_00^[(i+j)/2 + 1]

where wm_00 is the zeroth spatial moment (intensity-weighted area).

Each region also supports iteration, so that you can do:

for prop in region:
    print(prop, region[prop])

References

[R284] Wilhelm Burger, Mark Burge. Principles of Digital Image Processing: Core Algorithms. Springer-Verlag, London, 2009.
[R285] B. Jähne. Digital Image Processing. Springer-Verlag, Berlin-Heidelberg, 6. edition, 2005.
[R286] T. H. Reiss. Recognizing Planar Objects Using Invariant Image Features, from Lecture notes in computer science, p. 676. Springer, Berlin, 1993.
[R287] http://en.wikipedia.org/wiki/Image_moment

Examples

>>> from skimage import data, util
>>> from skimage.measure import label
>>> img = util.img_as_ubyte(data.coins()) > 110
>>> label_img = label(img, connectivity=img.ndim)
>>> props = regionprops(label_img)
>>> # centroid of first labeled object
>>> props[0].centroid
(22.729879860483141, 81.912285234465827)
>>> # centroid of first labeled object
>>> props[0]['centroid']
(22.729879860483141, 81.912285234465827)
doc_scikit_image
2017-01-12 17:23:06
Comments
Leave a Comment

Please login to continue.