Today the ImageJDev team is releasing the sixth beta of ImageJ2, version 2.0.0-beta6.
ImageJ 2.0.0-beta6 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 v1.x for critical work.
Download from the ImageJ2 development releases page, which also has a timetable for future releases.
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.
Development of this release of ImageJ focused on improved legacy support.
Application level changes
- Dedicated legacy mode, for maximum compatibility (see “Legacy mode” below).
- Increased translation support in the legacy layer for:
- Overlay Manager contents to ROI Manager contents
- ImageJ 1.x Overlays
- Better support for multithreaded legacy plugins.
- Pure IJ2 implementation of Close and Close All.
- The Command Finder shows a sortable table with additional columns such as shortcut and menu path (see right).
- You can now embed ImageJ2 into an ImageJ 1.x plugin (see “call-modern-from-legacy” below). To make this possible, ImageJ2’s UI agnosticism has been further improved: it is now possible to create an invisible ImageJ2 context while still explicitly displaying certain things with your UI of choice (e.g., Swing). See eca16678.
- The LogService was improved. You can explicitly query or set the logging level (none, error, warn, info, debug or trace). The default log service also supports setting the logging level programmatically via the
ij.log.levelsystem property. See the commit log.
- The Table API has been greatly fleshed out, with many more API methods added to the base Table interface, as well as the addition of a GenericTable whose cells can hold any value (not just doubles). See 7522bd3b for details, and “call-modern-from-legacy” below for an example of usage.
- The DatasetView API boasts some minor improvements to making working with multichannel images easier; see e6e63c2a.
- The ImageJ2 infrastructure is now more careful to use Class objects in favor of class name strings wherever possible, in case multiple class loaders are in use (which for ImageJ, they most certainly are). See ebebf919.
- The PluginInfo class design was improved to eliminate some inconsistencies, as well as simplifying the CommandInfo class to remove an unnecessary generic parameter; see 25e9d14c. We also fixed some problems with CommandInfo not delegating sufficiently to its wrapped PluginInfo; see 04896ad7.
- There were numerous changes made to ImgLib2’s OPS library. This library is used by ImageJ for mathematical computations. One result is that ImageJ now has expanded support for the calculation of statistical measures of regions of image data. See fc5e1434 and b6296ffe.
- The ImageJ launcher now supports the
--debugger=PORTcommand-line option which allows debuggers (e.g., Eclipse’s) to attach to an existing ImageJ instance.
There have been numerous compatibility improvements and bugfixes. Since beta5 the team closed 54 issues and made progress on many more. For instance, there is improved support for legacy commands such as: Image Type, Apply LUT, Cut, and Fill. See the full list of beta 6 changes here.
Although we emphasize backwards-compatibility strongly, and tried to design the architecture with that emphasis in mind, some legacy plugins still do not work. However, since we bundle a complete ImageJ 1.x, it was not too difficult to include a fallback “legacy mode” for such case. In this legacy mode, all image displays are hidden and those that are compatible with ImageJ 1.x are shown in old-style windows. Likewise, the main window is hidden in favor of ImageJ 1.x’s main window. To go back, the command Switch to Modern Mode is available in the Help menu.
- The updater can now upload to an OS X server (desired by Jerôme Mutterer).
- More robust handling of cross-site dependencies.
- More sensible handling of platform-dependent dependencies.
- Updater components are now only instantiated when necessary.
- The command-line interface of the updater allows inspecting more detailed information about individual components.
- The updater no longer expects certain Fiji components to be available.
Sample Image uploader
Often it is impractical to attach an example image demonstrating some problems, e.g., with I/O. Some images are too large, or the scientists might not be comfortable just yet to publish the image. The new Help › Upload Sample Image command allows users to upload images to the ImageJ development server, where only a small number of trusted developers can access the images. This command was inspired by Fiji’s command of the same name, but it is both more robust and faster than the original.
Examples for developers
We have continued to flesh out example code for developers. Since beta5 there are two new tutorials available:
- simple-command: Shows how to write a simple ImageJ2 command that generates an 8-bit gradient image.
- call-modern-from-legacy: Shows how to embed ImageJ2 into a legacy ImageJ 1.x plugin, so that you can start taking advantage of new functionality without completely switching to ImageJ2. The example creates and displays an ImageJ2 spreadsheet table with string values in the cells, something which cannot be done using ImageJ 1.x’s ResultsTable class.
Work continued on the beta SLIM Plugin to fix bugs and improve functionality. The focus was on adding missing functionality that would make LOCI scientists want to start using SLIM Plugin as their primary FLIM fitting tool. Improvements were made to the histogram to calculate the median and quartiles, to zoom in on the interesting range of values, and to export those values to text. A batch mode was added so that SLIM Plugin can be run from a macro file and process all of the files in a directory, exporting pixel values and/or histogram bin counts.
See the SLIM Plugin website for details.
See this report for a high-level list of features completed for the 2.0.0-beta6 release.
38 bugs were fixed. In particular, the following known bugs from previous betas were closed this cycle:
- There is a spurious grayed-out polygon tool on the tool bar, next to the real polygon tool. #1470
- Image windows don’t always load at the optimal scale. #1472
Many legacy ImageJ plugins and macros work; some others do not. In particular, the following bugs still remain from previous betas:
- 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
- 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 again reestimated ImageJ2’s release dates, and scheduled additional betas before the final 2.0.0 release. See the ImageJ2 development releases page for the updated release timeline.