package plugins.tutorial.training; import icy.gui.dialog.MessageDialog; import icy.plugin.abstract_.PluginActionable; import icy.roi.BooleanMask2D; import icy.sequence.Sequence; import icy.type.collection.array.Array1DUtil; import plugins.kernel.roi.roi2d.ROI2DArea; public class ThresholdPlugin2 extends PluginActionable { @Override public void run() { // get the current sequence having focus. Sequence sequence = getActiveSequence(); // check if a sequence is opened if (sequence == null) { MessageDialog.showDialog("Please open a sequence to use this plugin.", MessageDialog.WARNING_MESSAGE); return; } // fixed threshold value int threshold = 40; // consider first image and first channel only here double[] doubleArray = Array1DUtil.arrayToDoubleArray(sequence.getDataXY(0, 0, 0), sequence.isSignedDataType()); boolean[] mask = new boolean[doubleArray.length]; for (int i = 0; i < doubleArray.length; i++) mask[i] = (doubleArray[i] >= threshold); BooleanMask2D mask2d = new BooleanMask2D(sequence.getBounds2D(), mask); ROI2DArea roi = new ROI2DArea(mask2d); sequence.addROI(roi); } }