CLIJ2

Logo

GPU accelerated image processing for everyone

CLIJ2 home

thresholdOtsu

By Robert Haase based on work by G. Landini and W. Rasband

The automatic thresholder utilizes the Otsu threshold method implemented in ImageJ using a histogram determined on the GPU to create binary images as similar as possible to ImageJ ‘Apply Threshold’ method.

Categories: Segmentation, Binary

Availability: Available in Fiji by activating the update sites clij and clij2. This function is part of clij2_-2.5.0.1.jar.

thresholdOtsu often follows after

thresholdOtsu is often followed by

Usage in ImageJ macro

Ext.CLIJ2_thresholdOtsu(Image input, Image destination);

Usage in object oriented programming languages

Java
// init CLIJ and GPU
import net.haesleinhuepf.clij2.CLIJ2;
import net.haesleinhuepf.clij.clearcl.ClearCLBuffer;
CLIJ2 clij2 = CLIJ2.getInstance();

// get input parameters
ClearCLBuffer input = clij2.push(inputImagePlus);
destination = clij2.create(input);
// Execute operation on GPU
clij2.thresholdOtsu(input, destination);
// show result
destinationImagePlus = clij2.pull(destination);
destinationImagePlus.show();

// cleanup memory on GPU
clij2.release(input);
clij2.release(destination);
Matlab
% init CLIJ and GPU
clij2 = init_clatlab();

% get input parameters
input = clij2.pushMat(input_matrix);
destination = clij2.create(input);
% Execute operation on GPU
clij2.thresholdOtsu(input, destination);
% show result
destination = clij2.pullMat(destination)

% cleanup memory on GPU
clij2.release(input);
clij2.release(destination);
Icy JavaScript
// init CLIJ and GPU
importClass(net.haesleinhuepf.clicy.CLICY);
importClass(Packages.icy.main.Icy);

clij2 = CLICY.getInstance();

// get input parameters
input_sequence = getSequence();
input = clij2.pushSequence(input_sequence);
destination = clij2.create(input);
// Execute operation on GPU
clij2.thresholdOtsu(input, destination);
// show result
destination_sequence = clij2.pullSequence(destination)
Icy.addSequence(destination_sequence);
// cleanup memory on GPU
clij2.release(input);
clij2.release(destination);
clEsperanto Python (experimental)
import pyclesperanto_prototype as cle

cle.threshold_otsu(input, destination)

Example notebooks

basic_image_processing
binary_processing
count_overlap_between_channels
custom_clij_macro_functions
image_types
labelmap_voronoi
mean_of_touching_neighbors
measure_statistics
morpholibj_classic_watershed
outlines_numbers_overlay
tables
voronoi
voronoi_otsu_labeling
working_with_rois
count_blobs.ipynb
quantitative_neighbor_maps.ipynb
segmentation_2d_membranes.ipynb
voronoi_otsu_labeling.ipynb
parametric_maps.ipynb
threshold_otsu.ipynb

Example scripts

autoThreshold.ijm
basic_image_processing.ijm
benchmarkVoronoi.ijm
binary_processing.ijm
count_overlap_between_channels.ijm
create_object_outlines.ijm
custom_clij_macro_functions.ijm
distanceMap.ijm
distance_map.ijm
division_visualisation.ijm
image_types.ijm
jaccard_matrix.ijm
labelmap_voronoi.ijm
mean_of_touching_neighbors.ijm
measure_statistics.ijm
morpholibj_classic_watershed.ijm
outlines_numbers_overlay.ijm
tables.ijm
voronoi.ijm
voronoi_otsu_labeling.ijm
working_with_rois.ijm
simplePipeline.m
automaticThreshold.js
automaticThreshold.groovy
automaticThreshold.bsh
count_blobs.py
napari_.py
napari_magicgui.py

License terms

The code for the automatic thresholding methods originates from https://github.com/imagej/imagej1/blob/master/ij/process/AutoThresholder.java

Detailed documentation on the implemented methods can be found online: https://imagej.net/Auto_Threshold

Back to CLIJ2 reference Back to CLIJ2 documentation

Imprint