From ImageJ
Jump to: navigation, search
Imagej2-icon.png
ImageJ2 (ImageJ)
Maintainer Curtis Rueden
Johannes Schindelin
Mark Hiner
Source on GitHub
Development status active

ImageJ2 is a new version of ImageJ for the next generation of multidimensional image data, with a focus on scientific imaging. Its central goal is to broaden the paradigm of ImageJ beyond the limitations of ImageJ 1.x, to support the next generation of multidimensional scientific imaging.

To ensure backwards compatibility, ImageJ2 has been designed to fully integrate into the existing ImageJ user interface. This allows users to keep using ImageJ in familiar ways, while providing the ability to migrate toward more powerful new features as needed.

The Fiji distribution of ImageJ has shipped with beta versions of ImageJ2 for quite some time, so you may already be familiar with some of ImageJ2's features—some of which, such as the Updater and Launcher, were originally developed as part of Fiji.

ImageJ2's Mission

  • To lead ImageJ development with a clear vision.
  • To create the next generation version of ImageJ, based on the needs of the community.
  • To collaborate with other interested parties and institutions whenever beneficial.
  • To ensure ImageJ remains useful and relevant to the broadest possible community.
  • To maintain backwards compatibility with the current ImageJ as close to 100% as possible.
  • To avoid duplication of effort and instead leverage each others' work wherever practical.
  • To provide a central online resource for ImageJ: program downloads, a plugin repository, developer resources and more.

Features of ImageJ2

ImageJ2 provides a wealth of new features and capabilities:

  • The ImageJ Updater makes it simple to keep your ImageJ up to date, and to add new plugins by enabling additional Update Sites.
  • New and enhanced file format support via the SCIFIO library (see below).
  • More powerful Script Editor with support for several scripting languages.
  • New commands:
    • Plugins > Debug > Dump Stack for debugging when things hang.
    • Plugins > Debug > System Information for reporting on versions of installed plugins and libraries.
  • Use ImageJ2's N-dimensional ImgLib2-based data structures (still in beta).
  • Write parameterized commands and scripts:
    • Typed inputs and outputs with no dependence on AWT user interface.
    • Mix and match ImageJ 1.x and ImageJ2 data structures.
    • Plugins appear in the menu automatically without plugins.config files.
    • Reusable in many contexts: KNIME, CellProfiler, OMERO, headless...

Improved image I/O with the SCIFIO library

ImageJ2 uses the SCIFIO library (SCientific Image Format Input and Output) by default for most image input tasks. You can change this behavior at any time by running Edit > Options > ImageJ2 and modifying the Use SCIFIO when opening files option.

For further details, see the SCIFIO page.

ImageJ2 is more than just an application

ImageJ2 is also a collection of reusable software libraries built on the SciJava software stack, using a powerful plugin framework to facilitate rapid development and painless user customization.

The following software component libraries form the core of ImageJ2:

  • ImageJ Common - The core image data model, using ImgLib2.
  • ImageJ OPS - An extensible framework for reusable image processing algorithms.
  • ImageJ Updater - A mechanism to update individual plugins and libraries within ImageJ.
  • ImageJ Legacy - Provides complete backwards compatibility with ImageJ 1.x.
  • SciJava Common - The core frameworks for plugins, modules and the application itself.

See the Architecture page for further details.

Rationale

In recent years a segment of the ImageJ developer community has repeatedly inquired as to ImageJ's future. The program has been successful enough that it would greatly benefit from modern open source software best practices: a publicly accessible source code repository, a suite of unit tests with a continuous build integration system, a central repository of extensions, clear guidelines on how external developers can contribute to both those extensions and to the core program when warranted, and a development roadmap addressing feature requests and tasks from the community.

Listening to the ImageJ community, it is clear that:

  1. There is substantial demand from developers for a next-generation version of ImageJ with a cleaner, more modular API, so that ImageJ can be leveraged not just as a standalone analysis program, but as a robust, extensible library in a variety of contexts.
  2. The ImageJ user community has invested a lot of time and energy to develop complex workflows within ImageJ, and they oppose any change that would break them. Thus, any effort to improve the software must maintain compatibility with existing code.
  3. Further, any next-generation version of ImageJ must maintain community unity, and not fork the project. All components of this project will be developed as upgrades to core ImageJ.
  4. The ImageJ community as a whole would substantially benefit from a central effort to organize and serve program code (both the core application and its plugins), keep track of bugs and feature requests, and better leverage external developer contributions.

For more details, see the presentation from the 2010 ImageJ Conference.

Funding

ImageJ2 was initially funded from 2010 through 2012 by the National Institute of General Medical Sciences (NIGMS) through the American Recovery and Reinvestment Act of 2009 NIH Research and Research Infrastructure "Grand Opportunities" Grant, "Hardening" of Biomedical Informatics/Computing Software for Robustness and Dissemination.

For more information on the grant call, see the listing on the NIGMS Grand Opportunity Areas page.

See also the original ImageJ2 grant proposal from 2009.