> For the complete documentation index, see [llms.txt](https://docs.nimbusimage.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nimbusimage.com/documentation/analyzing-image-data-with-objects-connections-and-properties/measuring-object-properties.md).

# Measuring object properties

Ultimately, most researchers want to extract numbers from their image data. These could correspond to fluorescent intensity across cells, or number of cells per colony, or density of filaments per region. NimbusImage allows you to make these computations easily by defining **properties**. A property (think: area) can be associated with an object and listed and exported for plotting and analysis. You can easily compute a lot of different properties using NimbusImage out of the box because of the flexibility that its tagging and connection system allows. For instance, if you want to find the count the number of spots connected to the basement membrane, that is easy to do with just a few clicks.

First, open the **Object List** and click the blue **"Measure objects"** button. This brings up the Measure objects panel:

<figure><img src="https://4239675806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX54NriBmLyFl6hdSGC9K%2Fuploads%2Fgit-blob-0237af176929a3626c04a090ab7d48075a3ee2b3%2Fmeasure-objects-dialog.png?alt=media" alt=""><figcaption><p>Create new properties on the left; the properties already computed for your objects are listed on the right</p></figcaption></figure>

In the **Create New Property** section, choose the **tag** of the objects you want to quantify (for example, `nucleus`) — or select a shape — and click **"Create Property"**. NimbusImage runs the appropriate property worker, and when it finishes the new measurements appear under **Object Properties** on the right (here, "nucleus Blob metrics", "nucleus Blob intensity measurements", and "nucleus Blob annulus intensity").

To display specific values, click **"Show in annotation list…"**, expand the property (e.g. "nucleus Blob metrics"), and check the metrics you want, such as **Area**:

<div align="left"><figure><img src="https://4239675806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX54NriBmLyFl6hdSGC9K%2Fuploads%2Fgit-blob-2e1c23cd2cf7c99875d37f97c6c6edfbb6e7c5db%2Fproperty-select-area.png?alt=media" alt="" width="563"><figcaption><p>Choose which computed metrics to show in the annotation list</p></figcaption></figure></div>

The selected property now shows up as a column in the annotation list:

<div align="left"><figure><img src="https://4239675806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX54NriBmLyFl6hdSGC9K%2Fuploads%2Fgit-blob-e85faa0eb5e7e4765d70e0d121dfbbbbc8894ed6%2Fproperty-list.png?alt=media" alt="" width="563"><figcaption><p>The Area property listed alongside each object</p></figcaption></figure></div>

You can also press **"t"** while viewing the image to overlay the property values directly on the objects. When you're ready to analyze the numbers elsewhere, export them to a CSV (or TSV) from the **Import / export data** menu → **Export CSV**:

<div align="left"><figure><img src="https://4239675806-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX54NriBmLyFl6hdSGC9K%2Fuploads%2Fgit-blob-05146a091a402661e3ea05524e8b99ec403087a6%2Fexport-csv-dialog.png?alt=media" alt="" width="500"><figcaption><p>The CSV export dialog lets you choose scope, format, which properties to include, and how to handle missing values</p></figcaption></figure></div>

## Blob metrics (area, perimeter, etc.)

The Blob Metrics property worker calculates a comprehensive set of morphological measurements for blob-shaped (polygon) objects in your dataset. This is particularly useful for analyzing cell shapes, nuclei, or any other blob-like structures you've annotated.

### Available metrics:

* **Area**: The total area enclosed by the object (in square pixels or physical units)
* **Perimeter**: The length of the object's boundary (in pixels or physical units)
* **Centroid**: The geometric center (x,y coordinates) of the object
* **Elongation**: Measures how stretched out the object is (value between 0-1, where 1 is maximally elongated)
* **Convexity**: Ratio of the object's area to the area of its convex hull (measures how convex vs. concave the shape is)
* **Solidity**: Ratio of the object's perimeter to the perimeter of its convex hull
* **Rectangularity**: How well the object fits within its minimum bounding rectangle
* **Circularity**: How closely the object resembles a perfect circle (4π × Area/Perimeter²)
* **Eccentricity**: Measures how much the object deviates from being circular (value between 0-1, where 0 is a circle)

### How to use:

1. Create blob objects in your image (manually or using automated tools)
2. Tag these objects appropriately (e.g., `nucleus`, `cell`, etc.)
3. Create a new property using the Blob Metrics worker
4. Select which tags to analyze
5. Choose whether to use physical units (μm, mm, etc.) or pixel units
6. Run the property worker to calculate metrics for all matching objects

### Physical units:

When the "Use physical units" option is enabled, all measurements will be converted from pixels to the selected physical unit (μm, mm, m, or nm) based on the pixel size metadata in your image. This allows for consistent measurements across datasets with different magnifications or resolutions.

This property is useful for:

* Measuring and comparing cell or organelle sizes
* Analyzing shape changes in response to treatments
* Quantifying morphological differences between cell types
* Correlating shape features with biological function

### Best practices for intensity measurements:

1. **Background correction**: Consider using background subtraction before measuring intensities for more accurate results
2. **Consistent exposure**: For comparative studies, ensure all images were acquired with the same exposure settings
3. **Channel selection**: Carefully select which channel to measure based on your experimental design
4. **Annulus size**: When using annular measurements, adjust the radius to match the biological structure you're analyzing (e.g., typical cytoplasm width)
5. **Validation**: Visually verify that your measurements align with the visible intensity patterns in your images

## Blob Intensity

The Blob Intensity property worker calculates pixel intensity statistics inside blob-shaped (polygon) objects in your dataset. This is ideal for measuring fluorescence within cells, nuclei, or other structures you've annotated.

### Available metrics:

* **Mean Intensity**: The average pixel intensity within the object
* **Max Intensity**: The brightest pixel value within the object
* **Min Intensity**: The dimmest pixel value within the object
* **Median Intensity**: The median pixel value (50th percentile)
* **25th Percentile Intensity**: The intensity value below which 25% of pixels fall
* **75th Percentile Intensity**: The intensity value below which 75% of pixels fall
* **Total Intensity**: The sum of all pixel intensities within the object

### How to use:

1. Create blob objects in your image (manually or using automated tools)
2. Tag these objects appropriately (e.g., `nucleus`, `cell`, etc.)
3. Create a new property using the Blob Intensity worker
4. Select the channel you want to measure intensity from (this can be different from the layer where annotations are drawn)
5. Run the property worker to calculate intensity metrics for all matching objects

### Applications:

* Quantifying protein expression levels within cells
* Measuring nuclear vs. cytoplasmic signal ratios
* Comparing fluorescence intensities between experimental conditions
* Identifying cells with high or low expression of a marker

## Blob Intensity Percentile

This worker extends the basic intensity analysis by allowing you to specify exactly which percentile to measure, giving you more flexibility for your specific analysis needs.

### Parameters:

* **Channel**: The image channel to measure intensity from. Note that this can be different from the channel where annotations are drawn. So you can calculate, e.g., the RFP intensity in objects defined by the DAPI channel to calculate nuclear RFP intensity.
* **Percentile**: A value between 0 and 99.99999 to specify which percentile intensity to calculate (default: 50)

### Output:

* **Nth Percentile Intensity**: The intensity value at your specified percentile

### When to use:

* When you need to focus on a specific portion of the intensity distribution
* For filtering out outliers (using high or low percentiles)
* When the median (50th percentile) doesn't fully capture the intensity characteristics you're interested in

## Blob Annulus Intensity

The Blob Annulus Intensity worker measures pixel intensity in a ring-shaped region around each blob object. This is particularly valuable for quantifying cytoplasmic signals around nuclei or membrane markers surrounding cells.

### Parameters:

* **Channel**: The image channel to measure intensity from
* **Radius**: The width of the annular region in pixels (default: 10)

### Available metrics:

* **Mean Intensity**: The average pixel intensity within the annular region
* **Max Intensity**: The brightest pixel value within the annular region
* **Min Intensity**: The dimmest pixel value within the annular region
* **Median Intensity**: The median pixel value in the annular region
* **25th Percentile Intensity**: The intensity value below which 25% of pixels fall
* **75th Percentile Intensity**: The intensity value below which 75% of pixels fall
* **Total Intensity**: The sum of all pixel intensities within the annular region

### Applications:

* Measuring cytoplasmic fluorescence around nuclear objects
* Quantifying membrane-associated markers surrounding cells
* Analyzing protein localization patterns at cell boundaries
* Studying gradient distributions of signals around organelles

## Blob Annulus Intensity Percentile

This worker combines the flexibility of percentile selection with annular region measurement, allowing for precise control over which statistical metric to use in your ring-shaped regions of interest.

### Parameters:

* **Channel**: The image channel to measure intensity from
* **Radius**: The width of the annular region in pixels (default: 10)
* **Percentile**: A value between 0 and 99.99999 to specify which percentile intensity to calculate (default: 50)

### Output:

* **Nth Percentile Intensity**: The intensity value at your specified percentile within the annular region

## Point count

The Point count worker counts how many point objects fall inside each blob (polygon) object — for example, the number of RNA FISH spots inside each cell or nucleus. The blobs to measure are chosen with the tag you pick in the Create New Property section; the points to count are chosen in the worker's own settings.

### Parameters:

* **Tags of points to count**: The tags of the point objects to count (for example, `spot`)
* **Count points across all z-slices**: If "Yes" (default), points on every Z slice that fall within the blob's outline are counted, which suits a cell outlined on one slice with spots spread through the stack. If "No", only points on the blob's own Z slice are counted.
* **Exact tag match?**: If "No" (default), points with any of the listed tags are counted. If "Yes", points must have exactly the listed tags.

### Output:

* A single value per blob: the number of matching points inside it, shown under the property's name

{% hint style="info" %}
Points are only counted against blobs at the same XY position and time point. Point count works from geometry alone — a point counts if it lies inside the outline, whether or not it is connected to the blob. To count points (or any objects) that you have explicitly connected to a parent object, use [Count connected objects](#count-connected-objects) instead.
{% endhint %}

## Blob overlap

The Blob overlap worker measures how much each blob overlaps with blobs from a second set — for example, how much of each nucleus lies inside a region you've outlined, or how much two segmentations of the same cells agree. The first set is chosen with the tag you pick in the Create New Property section; the second set is chosen in the worker's settings.

### Parameters:

* **Annotations to compute overlap with**: The tags of the second set of blobs
* **Compute reverse overlaps**: If checked (default), the overlap is also computed from the second set's point of view and stored on those blobs

### Output:

* **Overlap\_{tags}**: The fraction of each blob's area that overlaps blobs in the other set (overlapping area ÷ the blob's own area). A value of 0 means no overlap and 1 means the blob lies entirely within the other set.

{% hint style="info" %}
Only blobs at the same XY position, Z slice, and time point are compared. Overlaps with each blob in the other set are added together, so if blobs in the other set overlap one another, the value can exceed 1.
{% endhint %}

## Properties for point objects

The workers below measure **point** objects, such as detected spots or manually placed points. Choose a tag (or the point shape) in the Create New Property section as usual.

## Point intensity

The Point intensity property worker measures pixel intensities in a small circle centered on each point object. With the default radius, this gives you the pixel value at the point's location. With a larger radius, it summarizes a small neighborhood, which can help when, for instance, you want to estimate the local background around a spot.

### Parameters:

* **Channel**: The image channel to measure intensity from (required). This can be different from the layer the points were drawn on.
* **Radius**: The radius of the sampling circle in pixels (range: 0.5–10, default: 1). At 1 or smaller, only the pixel at the point's location is measured.

### Available metrics:

* **MeanIntensity**: The average pixel intensity within the circle
* **MaxIntensity**: The brightest pixel value within the circle
* **MinIntensity**: The dimmest pixel value within the circle
* **MedianIntensity**: The median pixel value within the circle
* **25thPercentileIntensity**: The intensity value below which 25% of pixels fall
* **75thPercentileIntensity**: The intensity value below which 75% of pixels fall
* **TotalIntensity**: The sum of all pixel intensities within the circle

### How to use:

1. Create point objects in your image (manually or using a spot detection tool)
2. Tag these objects appropriately (e.g., `spot`)
3. Create a new property using the Point intensity worker
4. Select the channel to measure and, if needed, adjust the radius
5. Run the property worker to calculate intensity metrics for all matching points

{% hint style="info" %}
Points near the edge of the image are measured using only the pixels of the circle that fall inside the image. Points whose circle contains no pixels at all are skipped.
{% endhint %}

## Point metrics

The Point metrics property worker records the coordinates of each point object as properties, so they can be shown in the object list and included in CSV exports. It does not read any image data, so no channel needs to be selected.

### Available metrics:

* **x**: The x coordinate of the point, in pixels
* **y**: The y coordinate of the point, in pixels

### How to use:

1. Create and tag point objects in your image
2. Create a new property using the Point metrics worker
3. Run the property worker to record coordinates for all matching points

## Count connected objects

The Count connected objects worker counts how many child objects are [connected](/documentation/analyzing-image-data-with-objects-connections-and-properties/tools-for-connecting-objects.md) to each parent object — for example, the number of spots connected to each nucleus after running Connect to nearest. Unlike Point count, which counts points that fall inside an outline, this counts explicit connections, so it works for any object shapes and for children that sit outside their parent.

The parent objects are chosen with the tag you pick in the Create New Property section; the children are chosen in the worker's settings.

### Parameters:

* **Child Tags**: The tags of the child objects to count. At least one tag is required.
* **Child Tags Exclusive**: If "No" (default), children with any of the listed tags are counted. If "Yes", children must have exactly the listed tags.

### Output:

* **Children Count**: The number of matching children connected to each parent. Parents with no connected children get 0.

### How to use:

1. Create your parent and child objects (for example, nuclei and spots)
2. Connect them, for instance with the Connect to nearest tool
3. Create a new property for the parent tag using the Count connected objects worker, and select the child tags
4. Run the property worker

{% hint style="info" %}
If no connections are found between the selected parents and children, the job warns you and records a count of 0 for every parent. Run a connection tool first.
{% endhint %}
