2012-10-19 - ImageJ v2.0.0-beta5

Today the ImageJDev team is releasing the fifth beta of ImageJ2, version 2.0.0-beta5.

ImageJ 2.0.0-beta5 is a "beta"-quality release, meaning the code is not finished. The design is more stable than before but still subject to change until the final 2.0.0 release. It is recommended that people continue to use ImageJ 1.x for critical work.

Download from the ImageJ2 development releases page.

The ImageJ2 user interface is modeled after ImageJ v1.x as much as possible. However, under the hood, ImageJ2 is a complete redesign of ImageJ. It provides backward compatibility with older versions of ImageJ by bundling the latest v1.x code and translating between "legacy" and "modern" image structures.

What's new

Development of this release of ImageJ focused on the addition of scripting support. The release was timed to coincide with the ImageJ conference in Luxembourg, to ensure participants have access to a recent, stable codebase. Since the development cycle for this beta was shorter than many of our previous cycles, there are fewer new major features. But we have made substantial progress on some big ticket items (such as multi-step undo and redo) that will be part of the next beta release.

Application level changes

Written and executed from the Script Editor!
  • New script editor! This is the artist formerly known as the Fiji Script Editor, much refurbished and with a shiny new rewrite of the scripting infrastructure. It even comes with basic support for Maven projects. [commit]
  • There is now a Noise Reduction menu that supports a few noise reduction methods. [code]
  • The Command Finder now has a full set of sortable columns. [#1483]
  • There is now a "Show LUT As Table" command. [commit]
  • The current foreground and background colors are displayed on the toolbar.
  • Creating grayscale images from multichannel data is now easier.

Architecture changes

  • Redesigned scripting framework. A scripting language is now a type of plugin, meaning anyone can create and register their own scripting language within ImageJ. [#12]
  • Results tables. They can be declared as outputs of commands, and will be automatically displayed in a new table window. [#1250]
  • Statistics service. The statistics service simplifies the measurement of statistics from a set of data. There is an example (see below) which shows how it can be used. [commit]
  • Improvements to Imglib2 OPS. [#1511]
  • Efficient Collections-based primitive array lists. The Java standard library does not have a performant way to wrap primitive types—such as int and double—in ArrayLists. We now have performant implementations of growable primitive-type arrays in imagej.util.IntArray and friends. These classes were added to support results tables, but their utility goes beyond just results tables. [commit]
  • Better detection of the ImageJ base directory. This fixes a bug when using ImageJ2 from within KNIME. [commit]
  • Better naming of displays. [commit]
  • More consistent display viewer package hierarchies. [commit]
  • Plugin index bugfixes. [commit]

Improved help

Some command dialogs now have Help buttons that load a wiki page describing the command. Such commands include the Overlay Manager, the ImageJ 1.x Compatibilty Mode options, the Process > Math > Equation command, and the PointSet Demo command. This kind of immediate help via the wiki will be utilized more going forward.

Examples for developers

We have continued to flesh out example code for developers. In this release there is an example of how to use the new StatisticsService, an example showing how plugin parameters are assigned, and an example in Imglib2 on how to use OPS to combine images. We have also added a new tutorial on creating a custom preprocessor plugin.

Compatibility

There have been numerous compatibility improvements and bug fixes. Since beta4 the team has closed over 50 issues and made progress on many more. For instance there is improved support for legacy commands such as: Surface Plot, Zoom In, Rename, and To RGB Stack. See the full list of beta 5 changes here.

Updater changes

  • There were some Fiji-specific changes; Fiji uses the ImageJ updater now, but does not provide an ImageJ context, hence a few improvements were necessary.
  • robustness improvements (mainly for uploading).
  • when uploading via SSH via a specified proxy fails, the updater tries SSH without a proxy.

SLIM Plugin

The SLIM Plugin is usable beta quality but still available for ImageJ 1.x only. It will migrate to ImageJ2 by the final ImageJ 2.0.0 release. For this last cycle the emphasis for SLIM Plugin was on fixing bugs and adding features to improve functionality and ease-of-use.

See the SLIM Plugin web site for details.

Features

See this report for a high-level list of features completed for the 2.0.0-beta5 release.

Known bugs

Many legacy ImageJ plugins and macros work; many others do not. There are still many bugs. In particular, the following bugs still remain from previous betas:

  • There is a spurious grayed-out polygon tool on the tool bar, next to the real polygon tool. #1470
  • If you execute many legacy plugins very quickly, there may be bugs relating to timing issues. #1471
  • The data coordinate system is off by one pixel, which causes the pixel probe and drawing tool coordinates to be slightly misaligned. #716 and #1190
  • Image windows sometimes leave space for nonexistent sliders. #1060
  • Image windows don't always load at the optimal scale. #1472
  • A few other minor zoom issues. #1326
  • IJ1 commands that have preview capabilities are not fully functional. In general their final results are correct. Going forward the preview capabilities will be restored by porting them to IJ2's GUI model. #981
  • Lastly, please note that it is still the case on Windows & Linux that you must have Java already installed; ImageJ2 is not bundled with Java, nor will it download it for you.

See the list of Open Features for a high-level list of planned features and bugfixes.

Roadmap and future directions

We make a substantial effort to document the work we are doing, and what needs to be done, to deliver a powerful and full-featured ImageJ2. All tasks are tracked by our Trac issue tracking system, which you can review in several ways:

  • Roadmap - Top level overview of future releases, including progress toward each release
  • Open Features - A high-level list of features slated for each future release
  • All Open Tickets - A complete list of known bugs
  • You can also perform custom queries to further refine the results, if there are particular parts of the development that interest you.

To more accurately reflect what is left to do, we have recently reestimated ImageJ2's release dates, and scheduled additional betas before the final 2.0.0 release. See the Downloads page for the updated release timeline.

Thanks

Thanks for your interest in ImageJ2! Please give it a try, and feel free to report any bugs you find!