Skip to content

Commit 844a103

Browse files
committed
Add 3D Objects Counter+ plugin page
1 parent 191a752 commit 844a103

1 file changed

Lines changed: 158 additions & 0 deletions

File tree

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
---
2+
title: 3D Objects Counter+
3+
description: 3D object counting in Fiji/ImageJ with fixed min/max filters for morphology, volume, Feret diameter, and intensity.
4+
categories: [Analysis, 3D, Particle Analysis]
5+
source-url: https://github.com/Jay2owe/3DObjectsCounterPlus
6+
update-site: 3DObjectsCounterPlus
7+
release-version: 0.1.0
8+
release-date: 2026-05-17
9+
dev-status: Active
10+
support-status: Active
11+
team-maintainers: '@Jay2owe'
12+
license-url: https://github.com/Jay2owe/3DObjectsCounterPlus/blob/main/LICENSE
13+
license-label: BSD-3-Clause
14+
---
15+
16+
3D Objects Counter+ is a Fiji/ImageJ plugin for counting and measuring thresholded 3D objects in image stacks. It extends the native [3D Objects Counter](/plugins/3d-objects-counter) workflow with fixed min/max filters for object shape, volume, surface area, Feret diameter, and intensity.
17+
18+
The plugin is designed for users who want the familiar threshold, size-filter, map, statistics, measurement redirect, and macro workflow of 3D Objects Counter, with additional morphology filters before the final maps and result tables are created.
19+
20+
## Installation
21+
22+
3D Objects Counter+ is distributed through the ImageJ update site:
23+
24+
{% include link-banner url="https://sites.imagej.net/3DObjectsCounterPlus/" %}
25+
26+
To install it:
27+
28+
1. Start Fiji.
29+
2. Choose {% include bc path="Help|Update..." %}.
30+
3. Click **Manage update sites**.
31+
4. Click **Add Unlisted Site**, or enable **3DObjectsCounterPlus** if it is already listed.
32+
5. Use:
33+
- Name: `3DObjectsCounterPlus`
34+
- URL: `https://sites.imagej.net/3DObjectsCounterPlus/`
35+
6. Apply changes and restart Fiji.
36+
37+
After restart, run the command from:
38+
39+
```text
40+
Analyze > 3D Objects Counter+
41+
```
42+
43+
## Main Workflow
44+
45+
Open a 3D stack, then run **Analyze > 3D Objects Counter+**. The dialog opens with the title `3D Objects Counter+`.
46+
47+
The main controls are:
48+
49+
- `Image`, which shows the stack that will be counted.
50+
- `Threshold`, which sets the voxel-intensity cutoff for object detection.
51+
- `Slice`, which changes the displayed z-slice while checking the threshold.
52+
- `Filters:`, which contains fixed `Min` and `Max` ranges.
53+
- `Exclude objects on edges`, which removes objects touching the stack border.
54+
- `Maps to show:`, with `Objects`, `Surfaces`, `Centroids`, and `Centers of mass`.
55+
- `Results tables to show:`, with `Statistics` and `Summary`.
56+
- `Redirect measurements to:`, which measures intensity from another open image while detecting objects from the active image.
57+
- `Preview`, `OK`, and `Cancel` action buttons.
58+
59+
The help button opens `About 3D Objects Counter+ Controls`, which explains the dialog controls, filter meanings, maps, result tables, and action buttons.
60+
61+
## Threshold And Preview
62+
63+
The dialog starts on the center slice and uses a center-slice IsoData threshold as the initial value. Changing `Threshold` or `Slice` updates the threshold display so voxels at or above the threshold can be inspected before object counting is run.
64+
65+
`Preview` runs object counting with the current settings, shows the selected preview maps, and keeps the dialog open. Preview map windows are prefixed with `[Preview]`. `OK` runs object counting with the current settings, opens the selected final outputs, records macro options when the ImageJ macro recorder is active, and closes the dialog.
66+
67+
## Filters
68+
69+
Filters are fixed min/max ranges. The default ranges are non-excluding, so objects are only removed when a user tightens a minimum or maximum value.
70+
71+
The available filter rows are:
72+
73+
- `Size (Voxels)`, with default minimum `10` and maximum set to the stack voxel count.
74+
- `Sphericity`, from `0` to `1`.
75+
- `Compactness`, from `0` to `1`.
76+
- `Elongation`, from `1` to `Infinity`.
77+
- `Volume (<unit>^3)`, shown only when the image has calibrated spatial units.
78+
- `Surface area`, from `0` to `Infinity`.
79+
- `Mean intensity`, from `0` to `Infinity`.
80+
- `Max intensity`, from `0` to `Infinity`.
81+
- `Max Feret diameter`, from `0` to `Infinity`.
82+
83+
Multiple filters are combined with AND logic, so an object must pass every active range to remain in the final result.
84+
85+
## Measurement Redirect
86+
87+
`Redirect measurements to:` lets the active image define the detected objects while another open image supplies intensity measurements and intensity-weighted centers of mass. This is useful when object detection is performed on a mask, filtered stack, or segmentation image, while intensity should be measured from a raw channel.
88+
89+
The redirect image must already be open and must match the detection image width, height, and stack depth.
90+
91+
## Outputs
92+
93+
3D Objects Counter+ can create these map windows:
94+
95+
- `Objects map of <image>`, a labelled object map with object numbers at centroids.
96+
- `Surfaces map of <image>`, a labelled surface-voxel map with object numbers at centroids.
97+
- `Centroids map of <image>`, a point map at geometric centroids.
98+
- `Centers of mass map of <image>`, a point map at intensity-weighted centers of mass.
99+
100+
It can also create:
101+
102+
- `Results for <image>`, a per-object statistics table.
103+
- An ImageJ log summary reporting the threshold, size range, object count, and morphology means.
104+
105+
The statistics table includes native-style measurements such as integrated density, mean, standard deviation, minimum, maximum, centroids (`X`, `Y`, `Z`), centers of mass (`XM`, `YM`, `ZM`), bounding-box fields, object labels, and morphology columns such as `Morph_Sphericity`, `Morph_Compactness`, `Morph_Elongation`, and `Morph_Feret3D_um`.
106+
107+
For very high object counts, text-number overlays can be skipped to keep map windows lighter. The map pixel labels and statistics table are still produced.
108+
109+
## Supported Inputs
110+
111+
The interactive command works on the active Fiji/ImageJ image. It expects a non-empty image stack for 3D object counting. Standard Fiji installations provide the underlying ImageJ image model and the native 3D Objects Counter components used by the plugin.
112+
113+
Calibrated volume filtering appears when the image has real spatial calibration units rather than pixel-only units. Intensity filters and centers of mass are measured from the detection image unless a redirect image is selected.
114+
115+
## Macro Usage
116+
117+
3D Objects Counter+ is macro-recordable and can be called from ImageJ macros:
118+
119+
```ijm
120+
run("3D Objects Counter+", "threshold=128");
121+
```
122+
123+
A fuller call can combine thresholding, size limits, edge exclusion, measurement redirect, morphology filters, and output visibility:
124+
125+
```ijm
126+
run("3D Objects Counter+",
127+
"threshold=128 min=20 max=Infinity " +
128+
"exclude_edges sphericity>=0.6 volume>=100 " +
129+
"redirect=[raw.tif] hide_surfaces hide_centroids");
130+
```
131+
132+
Supported direct filter tokens include `volume`, `volume_calibrated`, `surface_area`, `sphericity`, `compactness`, `elongation`, `mean_intensity`, `max_intensity`, and `feret_diameter_max`. Supported operators are `>=`, `<=`, `>`, and `<`.
133+
134+
Output windows can be hidden with `hide_labels`, `hide_surfaces`, `hide_centroids`, `hide_centers_of_mass`, `hide_stats`, and `hide_summary`. The British spelling `hide_centres_of_mass` is also accepted.
135+
136+
## Java API
137+
138+
The public Java API lives under `sc.fiji.oc3dplus.api`. The main entry point is `OC3DPlus`, with parameters built through `OC3DPlusParameters` and results returned as `OC3DPlusResult`.
139+
140+
```java
141+
OC3DPlusParameters params = OC3DPlus.builder()
142+
.threshold(128)
143+
.minSize(20)
144+
.addFilter("sphericity", ">=", 0.6)
145+
.build();
146+
147+
OC3DPlusResult result = OC3DPlus.count(imp, params);
148+
```
149+
150+
The API can count one image or process lists of images without opening ImageJ result windows.
151+
152+
## Runtime Dependencies
153+
154+
The plugin requires Fiji/ImageJ and uses the standard Fiji 3D object-counting stack. The update site records dependencies on ImageJ, `mcib3d-core`, the native `3D_Objects_Counter`, and `Colocalization_Image_Creator`, so normal update-site installation resolves the runtime files.
155+
156+
## Citing
157+
158+
When publishing work that uses 3D Objects Counter+, cite the plugin using the citation metadata in the source repository. Please also cite the upstream tools it builds on: the original 3D Objects Counter work by Bolte and Cordelieres, and the mcib3d work by Ollion and colleagues.

0 commit comments

Comments
 (0)