Edit page History

ImageJ1-ImageJ2 cheat sheet

    This page summarizes translation of basic operations of ImageJ1 and ImageJ2 API. Based on the work of Robert Haase , Scientific Computing Facility, MPI-CBG Dresden.

    Task

    ImageJ1

    ImageJ2

    Starting ImageJ

    new ij.ImageJ();
    ImageJ ij = new net.imagej.ImageJ();
    ij.ui().showUI();

    Show images

    imp is an ImagePlus object

    imp.show()
    ij.ui().show(imp);
    ImageJFunctions.show(imp);
    ImageJFunctions.wrap(imp,"Image").show();

    Retrieve an active image object

    ImagePlus imp = IJ.getImage();

    Script parameter (the same for Dataset, ImagePlus, etc.):

    #@ Img image

    In Java code:

    @Parameter
    private Img image;

    Using ImageDisplayService:

    Dataset image = ij.imageDisplay().getActiveDataset();

    Open an image file

    IJ.openImage() returns an ImagePlus object without showing.

    ImagePlus imp = IJ.openImage(urlOrFilePath);
    imp.show();

    IJ.open() automatically shows the image without returning ImagePlus.

    IJ.open(urlOrFilePath);
    ImagePlus imp = IJ.getImage();

    Using IOService:

    Object image = ij.io().open(urlOrFilePath);

    Using DatasetIOService (for type safety):

    Dataset image = ij.scifio().datasetIO().open(urlOrFilePath);

    Save an image file

    IJ.saveasTiff(imp, "/path/to/image.tif")

    Using IOService:

    ij.io().save(dataset, "/path/to/image.tif");

    Using DatasetIOService:

    ij.scifio().datasetIO().save(dataset, "/path/to/image.tif");

    Convert image types

    Convert from ImageJ2 Img object to ImageJ1 ImagePlus object:

    ImagePlus imp = ImageJFunctions.wrap(img,"Title");

    Convert from ImageJ1 ImagePlus object to ImgLib2 Img object:

    Img<T> realImg = ImageJFunctions.wrapReal(imp);
    Img<FloatType> floatImg = ImageJFunctions.convertFloat(imp);
    Img<FloatType> realImg2 = ImageJFunctions.wrap(imp);

    Show regions

    imagePlus.setRoi(roi)
    Img<BitType> mask; // = ...
    ImagePlus maskImp =ImageJFunctions.wrap(mask, "mask");
    // threshold the mask to get an ROI
    ImageProcessor imageProcessor = maskImp.getProcessor();
    imageProcessor.setThreshold(128,128,ImageProcessor NO_LUT_UPDATE);
    Roi roi = new ThresholdToSelection().convert(imageProcessor);
    imagePlus.setRoi(roi);

    Run plugins

    IJ.run(imagePlus,"Normalisation","");
    ij.command().run(ImageNormalizerIJ2Plugin.class, true, "input", img, "ij", ij);

    Define plugins

    public class ImageNormalizerPlugin implements PluginFilter {
      ...
    }

    In resources/plugins.config:

    Plugins>Filtering, "Normalisation", NormalizerPlugin
    @Plugin(type = Command.class, menuPath = "Plugins>Normalization")
    public class ImageNormalizerIJ2Plugin implements Command {
      ...
    }

    See also

    https://github.com/mpicbg-scicomp/ij2course-images/blob/master/slides/ij_legacy_cheetsheet.pdf