Skip to content

Features & Benchmarks

Support markings are a best-effort summary based on each project’s public documentation: ✅ supported · ⚠️ partial/limited · - not supported or not documented. “ImageJ” covers the Fiji distribution (ImageJ2 plus its commonly bundled plugins, e.g. TrackMate, Coloc2, Trainable Weka Segmentation). Verify against each tool’s current docs before relying on this for a migration decision.

A checkmark alone can overstate real-world usability, for any tool here - see the “Its ceiling” column in the at-a-glance table below for what each one still falls short on. Rows where a checkmark hides a gap like this carry a footnote.

File Import, I/O & Microscopic Data Handling

Section titled “File Import, I/O & Microscopic Data Handling”
Feature NameDetailed FunctionalityEVAnalyzerCellProfilerImageJQuPath
Bio-Formats IntegrationNative reader for vendor raw formats (.czi, .nd2, .lif, .oib, .ome.tif, .svs) using Bio-Formats or OME libraries. Avoids time-consuming pre-conversion to 8-bit TIFF and proprietary software lock-in.✅†
Metadata ParsingExtracts spatial calibration (μm/pixel\mu m/\text{pixel}, Z-spacing), time intervals, channel names, emission wavelength, and objective info. Ensures accurate physical measurements without manual entry.
Automatic Channel AccessIndividual channels of a multi-channel image are directly addressable right after import, without a separate per-channel mapping step.⚠️*
Multidimensional (ND) SupportSeamless display and navigation of 5D hyperstacks (X,Y,Z,Channel,Time/TX, Y, Z, \text{Channel}, \text{Time/T}).⚠️
Microplate Grid LayoutsAutomatic layout parsing for 96/384-well microplates with row/column coordinate mapping and tile stitching. Useful for high-throughput screening (HTS) workflows that group images by well/condition.⚠️-
Lazy Loading & Virtual StacksStreams image slices into RAM on demand instead of loading multi-gigabyte files entirely into memory.-⚠️
Pyramidal / BigDataViewerSupports multi-resolution image pyramids for rapid zooming and pan on terabyte-scale datasets.--
Whole-Slide Navigator ViewerDedicated interactive viewer with a pyramid-based navigator minimap for panning and zooming across gigapixel whole-slide scans.--

*CellProfiler does not split channels automatically. You configure a NamesAndTypes module with filename regex/metadata rules (separate-file channels) or a channel-index mapping (single multi-channel file) to name and access each channel - get the mapping wrong and channels silently mismatch or drop.

†EVAnalyzer’s is using a Rust port of the original Java written BioFormats library. This port may be unstable for some not widly used image formats right now.


GUI, Interactive UX & Daily Quality-of-Life

Section titled “GUI, Interactive UX & Daily Quality-of-Life”
Feature NameDetailed FunctionalityEVAnalyzerCellProfilerImageJQuPath
Flexible Contrast & LUTsPer-channel histogram brightness/contrast tuning, non-destructive LUT application (HiLo, Fire, RGB, custom color maps). HiLo-style LUTs flag saturated and zero-value pixels at a glance.⚠️
Keyboard Shortcuts & CommandsComprehensive keyboard hotkeys and searchable command palette.⚠️⚠️
Multi-Window SynchronizationSynchronized panning, zooming, and slice/time stepping across multiple image windows.--⚠️
Undo / Redo BufferMulti-step history buffer for destructive pixel operations and ROI edits.⚠️⚠️
Scale Bar & Dynamic OverlayBurned-in or dynamic vector scale bars, timestamps, Z-depth indicators, and channel legends.⚠️
Dark Mode / Theme UIHigh-contrast dark theme option for interface components.-⚠️
Image ViewerBuilt-in multi-channel viewer with per-channel visibility, colour, contrast, and Z/T navigation.-
Live PreviewImmediate viewport update and live object count while editing a pipeline step, without re-running the full pipeline.-*⚠️

*Test Mode lets you step through modules and inspect output windows, but there is no continuous, reactive preview while adjusting a setting - you re-run the step and wait, which is slow on large images.


Image Preprocessing, Filtering & Restoration

Section titled “Image Preprocessing, Filtering & Restoration”
Feature NameDetailed FunctionalityEVAnalyzerCellProfilerImageJQuPath
Flat-Field CorrectionCorrection for uneven illumination profiles using flat-field / dark-field images or BaSiC / CIDRE algorithms.-
Background SubtractionRolling ball, top-hat, sliding paraboloid, or local background estimation algorithms.⚠️
Noise Reduction FiltersGaussian, Median, Anisotropic Diffusion, Bilateral, and Non-Local Means denoising filters.⚠️
Image Registration & DriftTranslation, rigid, affine, and elastic registration (e.g., Descriptor-based, TurboReg, StackReg).-⚠️⚠️
Grid Stitching & BlendingPhase correlation stitching of overlapping tiles with non-linear seam blending.---
Deconvolution ToolsTheoretical/measured PSF generation and Richardson-Lucy / Tikhonov iterative deconvolution algorithms.---

Feature NameDetailed FunctionalityEVAnalyzerCellProfilerImageJQuPath
Global & Local ThresholdingClassic automated thresholding (Otsu, Li, Yen, Maximum Entropy, Niblack, Bernsen, Sauvola).
Morphological OperationsErosion, Dilation, Opening, Closing, Hole Filling, Skeletonization, Distance Transform.⚠️
Watershed Clustered Object SplitMarker-controlled watershed segmentation to separate touching or overlapping cells.
Deep Learning AI ModelsNative or plugin access to pretrained deep learning models (Cellpose, StarDist, Segment Anything / SAM).✅†⚠️✅*
Machine Learning Pixel ClassifiersInteractive scribble-based pixel classification (e.g., Trainable Weka Segmentation, Ilastik integration).--
ROI Manager & Editing ToolsStore, group, rename, filter, dilate, measure, and export collections of vector ROIs.⚠️
Object Math (Boolean Set Ops)AND / OR / XOR / Subtract operations between object classes to combine, exclude, or reshape detected objects (e.g., a rim around an organelle).⚠️⚠️⚠️

*QuPath’s Cellpose/StarDist support ships as separately installed extensions, not bundled by default.

† EVAnalyzer actually only supports models stored either in ONNX or torchscript. Tensorflow models are not supported.


Quantification, Feature Extraction & Spatial Analysis

Section titled “Quantification, Feature Extraction & Spatial Analysis”
Feature NameDetailed FunctionalityEVAnalyzerCellProfilerImageJQuPath
Morphometric MeasurementsArea, perimeter, bounding box, major/minor axis, circularity, aspect ratio, roundness, solidity, 3D volume.✅*
Densitometry & IntensityMean, min/max, median, integrated density, standard deviation of pixel values across channels.
Colocalization AnalysisPearson’s correlation coefficient, Manders’ overlap coefficients (M1/M2M_1/M_2), Costes’ thresholding, 2D cytofluorograms.✅†-
Spatial Distance & ClusteringNearest neighbor distance, Delaunay triangulation, Voronoi tessellation, object-to-boundary distance.⚠️**⚠️⚠️
Texture Analysis (Haralick)Grey-Level Co-occurrence Matrix (GLCM): contrast, correlation, energy, entropy, and local heterogeneity.-
Filament & Skeleton AnalysisBranch point detection, filament length, segment classification, network connectivity metrics.--

*No 3D volume support

† Object based colocalization calculation, actually no Pearson’s correlation supported

** Support for voronoi grid


Particle Tracking, Time-Lapse & Lineage Analysis

Section titled “Particle Tracking, Time-Lapse & Lineage Analysis”
Feature NameDetailed FunctionalityEVAnalyzerCellProfilerImageJQuPath
Automated Particle TrackingLAP (Linear Assignment Problem), Kalman filtering, or nearest-neighbor frame-to-frame linking algorithms.--
Kinematic Trajectory MetricsVelocity, instantaneous speed, directionality ratio, mean square displacement (MSD), confinement index.--
Cell Division & Lineage TreesHandling cell division events (mitosis), branch creation, and full lineage tree visualization.--
Manual Track Editing UXInteractive track visualization with easy manual link breaking, joining, path deletion, and spot tweaking.---

Automation, Batch Processing & Reproducibility

Section titled “Automation, Batch Processing & Reproducibility”
Feature NameDetailed FunctionalityEVAnalyzerCellProfilerImageJQuPath
No-Code Pipeline BuilderCompose a full analysis pipeline by adding and configuring pre-built commands, without writing scripts or macros.-⚠️
Multi-Channel Branching PipelinesRoutes different channels or object classes down independent, custom-filtered processing branches within one project, instead of one linear sequence applied to everything. Lets each fluorescence marker get its own background correction, thresholding, or classifier.---
Macro / Action RecorderGUI click recorder that generates executable script code based on user interactive steps.--
Batch Folder ProcessingApplies saved macro/pipeline across entire directories without user intervention.
Multi-Threading SupportParallelizes image or tile processing across CPU cores during analysis runs.⚠️*⚠️
Headless / CLI ExecutionRun pipeline from command line prompt without rendering GUI windows (Docker, HPC cluster support).
Audit Log & Pipeline ExportSaves pipeline parameters as JSON/XML and logs exact algorithm versions and numerical seeds.⚠️
Pipeline Cite ExportOne-click export (File → Export → Cite Project) of a step-by-step flow diagram for every enabled pipeline, each step tagged with its algorithm’s citation, followed by a consolidated, publication-ready bibliography for every cited algorithm used.---

*CellProfiler parallelizes across images within a single run, but real throughput on large images in practice means manually tiling images and orchestrating multiple CellProfiler instances yourself.


Feature NameDetailed FunctionalityEVAnalyzerCellProfilerImageJQuPath
Open Format Data ExportExport measurements to standard tabular formats (.csv, .tsv, .xlsx, HDF5, Parquet).✅*
SQL-Queryable Results DatabaseQuery results directly via SQL against a bundled analysis database, instead of only flat export files.⚠️--
Interactive Plotting & GatingScatter plots, histograms, and boxplots linked back to image views (click point -> highlight cell). Enables flow-cytometry-style gating directly from the data plots.⚠️-
3D Volume RenderingHardware-accelerated (OpenGL/Vulkan) 3D volume rendering, ISO-surface rendering, and orthoviewers.---
Active Plugin EcosystemCentralized plugin repository/updater and active user community support.-

*HDF5 and Parquet export aren’t supported rihght now by EVAnalyzer.


At a glance: which tool fits your project?

Section titled “At a glance: which tool fits your project?”
ToolChoose it when…Core strengthIts ceiling
EVAnalyzerMultiplex/multi-channel fluorescence panels where every marker needs its own processing, especially at whole-slide scale.Very fast and also runs on lower performance computers smooth. Branching per-channel pipelines with built-in whole-slide tiling, live preview, and CLI batch/HPC execution.No time-lapse tracking, no true 3D volume rendering; a smaller measurement library than CellProfiler/ImageJ for classic single-channel quantification.
CellProfilerDeep, classic single- or few-channel quantification - precise shape, texture, colocalization, or particle-tracking metrics for a methods section.The broadest, most mature measurement library here (Haralick texture, LAP tracking, Pearson’s/Manders’ colocalization).One linear pipeline per run; per-channel branching and real multi-threaded throughput on large images both need manual workarounds.
ImageJ / FijiYou need a specific plugin, a quick one-off manual measurement, or maximum flexibility via scripting (macros/Jython/Groovy).The largest plugin ecosystem of any tool here - most niche bio-imaging algorithms exist as an ImageJ plugin.No structured no-code pipeline model; a reproducible pipeline means writing or recording macros yourself.
QuPathWhole-slide digital pathology - parent/child object hierarchies (tissue → cell → sub-cell), TMA cores, point-and-click classifier training.Best-in-class whole-slide viewer/pyramid handling, plus a native object hierarchy no other tool here has.Not built for time-lapse/live-cell tracking, correlation-based colocalization, or independent per-channel preprocessing.

EVAnalyzer relies on a branching pipeline with a focus on speed and usability, CellProfiler on a linear pipeline with a focus on comprehensive quantitative measurement, and QuPath on an object-centric, map-based workflow with a focus on pathology images. ImageJ, by contrast, is a feature-rich, plugin-based, all-around image editing tool rather than a fixed pipeline paradigm.


A controlled benchmark ran the same reference pipeline (rolling-ball background subtraction → double blur → threshold → connected components → area filter → colocalization) against the same 81 Olympus .vsi microscopy images (2048×2048, 2 channels) across five tool configurations. QuPath is not included as a separate measurement - its viewer and processing core are built on ImageJ/Bio-Formats internals, so its performance is expected to track the plain Fiji macro figures below rather than differ meaningfully from them.

Test system: Intel Core Ultra 9 185H (16 cores / 22 threads), 62 GB RAM, Ubuntu 24.04.

Full per-image counts and per-step timing live in the project’s own benchmark reports; this is a summary.

ToolWall-clockAvg cores usedPeak RAM (aggregate)RAM per core (avg)Speed vs. fastestRAM per core vs. lowestPeak RAM vs. lowest
EVAnalyzer core CLI14.2 s15.653.75 GB0.24 GB1.00x1.00x3.26x
EVAnalyzer Fiji plugin35.2 s11.5419.90 GB1.72 GB2.48x7.17x17.30x
Plain Fiji macro126.5 s1.01.15 GB1.15 GB8.91x4.79x1.00x
CellProfiler, parallel (14 procs)192.9 s16.8645.70 GB2.72 GB13.58x11.33x39.74x
CellProfiler, single-process528.2 s1.04.08 GB4.08 GB37.20x17.00x3.55x

EVAnalyzer’s core CLI more than doubles the execution speed of its predecessor Fiji plugin (2.5x) and uses roughly a fifth of the peak RAM (5.3x less). Compared to CellProfiler running in its parallel (multi-process) mode, it is 13.6x faster and uses 12.2x less peak RAM.

Object counts weren’t identical across tools, which matters for reading the speed numbers as “same job, different cost” rather than “different jobs.” The EVAnalyzer Fiji plugin’s counts were used as the reference; CellProfiler needed a calibration pass (swapping an auto-threshold for a fixed one, tuning per-channel background-fit tightness) to get within roughly 3–6% of that reference, since it has no direct equivalent to the rolling-ball algorithm the other tools share. EVAnalyzer’s own project settings matched the reference without changes.

Getting a valid CellProfiler number took real debugging effort on this system - a sandboxed-CLI deadlock that required a conda reinstall, and a CLI flag that silently doubled the effective image count by recursing into sidecar files - on top of the threshold/background calibration above. The other configurations needed no comparable troubleshooting. That’s a legitimate part of “which tool is practical to actually run day to day,” alongside the timing numbers, not a separate criticism of CellProfiler’s algorithms.

Benchmark files

Download all three into the same directory ($ROOT below) alongside your own images/ folder of test images before running the commands.

Preparation

Terminal window
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
STAMP="$(date +%Y%m%dT%H%M%S)"
OUT="$ROOT/benchmark_runs/$STAMP"
mkdir -p "$OUT"

EVAnalyzer benchmark

Terminal window
/usr/bin/time -v "$ROOT/tools/evanalyzer" cli analyze \
--project "$ROOT/evanalyzer_benchmark.evaproj" --images "$ROOT/images" --job-name "bench_$STAMP" \
> "$OUT/evanalyzer_core.log" 2>&1
echo "exit=$? -- see $OUT/evanalyzer_core.log"
grep -E "Elapsed|Maximum resident|Percent of CPU|Done:" "$OUT/evanalyzer_core.log"
echo ""

ImageJ benchmark

Terminal window
/usr/bin/time -v "$ROOT/tools/Fiji/fiji-linux-x64" \
--headless --run "$ROOT/imagej_benchmark.ijm" \
> "$OUT/plain_fiji_macro.log" 2>&1
echo "exit=$? -- see $OUT/plain_fiji_macro.log"
grep -E "Elapsed|Maximum resident|Percent of CPU|DONE" "$OUT/plain_fiji_macro.log"
echo ""

Cellprofiler benchmark

Terminal window
export JAVA_HOME="$HOME/miniforge3/envs/cellprofiler/lib/jvm"
export LD_LIBRARY_PATH="$HOME/miniforge3/envs/cellprofiler/lib:$HOME/miniforge3/envs/cellprofiler/lib/mariadb:${LD_LIBRARY_PATH:-}"
CP_OUT="$OUT/cellprofiler_single"
mkdir -p "$CP_OUT"
/usr/bin/time -v "$ROOT/tools/cellprofiler/bin/cellprofiler" \
-c -r -p "$ROOT/cellprofiler_benchmark.cppipe" -i "$ROOT/images" -o "$CP_OUT" \
> "$OUT/cellprofiler_single.log" 2>&1
echo "exit=$? -- see $OUT/cellprofiler_single.log"
grep -E "Elapsed|Maximum resident|Percent of CPU" "$OUT/cellprofiler_single.log"
echo ""