Skip to content

Feature extraction for labeled objects in images using regionprops from scikit-image

License

Notifications You must be signed in to change notification settings

haesleinhuepf/napari-skimage-regionprops

Repository files navigation

napari-skimage-regionprops (nsr)

License PyPI Python Version tests codecov Development Status napari hub

A napari plugin for measuring properties of labeled objects based on scikit-image

Usage: measure region properties

From the menu Tools > Measurement > Regionprops (nsr) you can open a dialog where you can choose an intensity image, a corresponding label image and the features you want to measure:

img.png

If you want to interface with the labels and see which table row corresponds to which labeled object, use the label picker and activate the show selected checkbox.

If you closed a table and want to reopen it, you can use the menu Tools > Measurements > Show table (nsr) to reopen it. You just need to select the labels layer the properties are associated with.

For visualizing measurements with different grey values, as parametric images, you can double-click table headers.

img.png

Usage: measure point intensities

Analogously, also the intensity and coordinates of point layers can be measured using the menu Tools > Measurement > Measure intensity at point coordinates (nsr). Also these measurements can be visualized by double-clicking table headers:

img.png

img_1.png

Working with time-lapse and tracking data

Note that tables for time-lapse data should include a column named "frame", which indicates which slice in time the given row refers to. If you want to import your own csv files for time-lapse data make sure to include this column. If you have tracking data where each column specifies measurements for a track instead of a label at a specific time point, this column must not be added.

In case you have 2D time-lapse data you need to convert it into a suitable shape using the function: Tools > Utilities > Convert 3D stack to 2D time-lapse (time-slicer), which can be found in the napari time slicer.

Last but not least, make sure that in case of time-lapse data the label image has labels that are subsquently labeled per timepoint. E.g. a dataset where label 5 is missing at timepoint 4 may be visualized incorrectly.

Usage: multichannel or multi-label data

If you want to relate objects from one channels to objects from another channel, you can use Tools > Measurement tables > Object Features/Properties (scikit-image, nsr). This plugin module allos you to answer questions like:

  • how many objects I have inside other objects?
  • what is the average intensity of the objects inside other objects? For that, you need at least two labeled images in napari. You can relate objects along with their features. If intensity features are also wanted, then you also need to provide two intensity images. Below, there is a small example on how to use it. Also, take a look at this example notebook.

Usage, programmatically

You can also control the tables programmatically. See this example notebook for details on regionprops and this example notebook for details on measuring intensity at point coordinates. For creating parametric map images, see this notebook.

Features

The user can select categories of features for feature extraction in the user interface. These categories contain measurements from the scikit-image regionprops list of measurements library:

  • size:
    • area (given as number of pixels in 2D, voxels in 3D)
    • bbox_area
    • convex_area
    • equivalent_diameter
  • intensity:
    • max_intensity
    • mean_intensity
    • min_intensity
    • standard_deviation_intensity (extra_properties implementation using numpy)
  • perimeter:
    • perimeter
    • perimeter_crofton
  • shape
    • major_axis_length
    • minor_axis_length
    • orientation
    • solidity
    • eccentricity
    • extent
    • feret_diameter_max
    • local_centroid
    • roundness as defined for 2D labels by ImageJ
    • circularity as defined for 2D labels by ImageJ
    • aspect_ratio as defined for 2D labels by ImageJ
  • position:
    • centroid
    • bbox
    • weighted_centroid
  • moments:
    • moments
    • moments_central
    • moments_hu
    • moments_normalized

This napari plugin was generated with Cookiecutter using with @napari's cookiecutter-napari-plugin template.

See also

There are other napari plugins with similar functionality for extracting features:

Furthermore, there are plugins for postprocessing extracted measurements

Installation

You can install napari-skimage-regionprops via pip:

pip install napari-skimage-regionprops

Or if you plan to develop it:

git clone https://github.com/haesleinhuepf/napari-skimage-regionprops
cd napari-skimage-regionprops
pip install -e .

If there is an error message suggesting that git is not installed, run conda install git.

Contributing

Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.

License

Distributed under the terms of the BSD-3 license, "napari-skimage-regionprops" is free and open source software

Issues

If you encounter any problems, please create a thread on image.sc along with a detailed description and tag @haesleinhuepf.

About

Feature extraction for labeled objects in images using regionprops from scikit-image

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published