2011-03-07 - New Fiji Release: Madison

There is a new version of Fiji!

In our beloved tradition, the current version is named after the location of a big hackathon: Madison. It was not strictly a Fiji hackathon, but the first ImageJ2 hackathon, made possible by Kevin Eliceiri and Curtis Rueden. Nevertheless, quite some work on Fiji and its plugins got done, so here goes Fiji Madison.

If you already have a Fiji installation, please just use the Fiji Updater to update (make sure that you update only the Updater first if you have not updated in quite a while) -- do not forget to switch to the Advanced mode and hit Update Java.

There have been more than 150 thousand lines added and 40 thousand removed, with the help of (in alphabetical order):

Albert Cardona, Benjamin Schmid, Christian Tischer, Curtis Rueden, Daniel James White, Daniel Sage, David Hovis, Francisco Jiménez Hernández, Gregory Jefferis, Ignacio Arganda Carreras, Jacques Pecreaux, Jan Eglinger, Jan Funke, Jean-Yves Tinevez, Johannes Schindelin, Kota Miura, Mark Longair, Michael Doube, Philippe Thévenaz, pogo, Robert Bryson-Richardson, Stephan Preibisch, Stephan Saalfeld, Tobias Pietzsch, Tom Kazimiers, Wilhelm Burger, Yili Zhao, and many other helpers.

Changes since Fiji Heidelberg:

New plugins

The Time Stamper plugin was much enhanced and eventually renamed into Series Labeler, thanks to Daniel James White and Tom Kazimiers.

The plugin TopoJ was added, thanks to David Hovis.

A simple Graph Cut segmentation plugin was added, thanks to Jan Funke.

Two Macro Examples were added to demonstrate optical illusions which should convince everybody that quantitative analysis of biological images is really much better than looking at a red-green picture and convincing oneself that there might be colocalized signals. Thanks to Daniel James White and Gabriel Landini.

Thanks to a generous license by Michael Unser of the Biomedical Imaging Group at the EPFL, the Differentials plugin, MosaicJ, Philippe Thevenaz' PointPicker, his Shepp-Logan Phantom plugin, the StackReg plugin and the Snakuscule plugin and Daniel Sage's plugin Extended Depth Field are distributed with Fiji now.

Thanks to the generous license by Erik Meijering to distribute the source code for a few of his plugins with Fiji, FeatureJ, RandomJ and TransformJ are available in Fiji now, too.

The Linear Kuwahara plugin was contributed by Christian Tischer.

Daniel Sage's MIJ library to use Fiji/ImageJ from within MATLAB is included with Fiji now. Just add Fiji.app/scripts/ to the search path and call Miji.

Kota Miura contributed the Temporal Color Coder which makes a t-projection color-coding the original time points.

Bio-Format's bfopen.m was added to use Fiji's Bio-Formats from MATLAB. Thanks to Curtis Rueden.

The new 3D Blob Segmentation plugin allows interactive 3D segmentation in the 3D Viewer backed by Fiji's level sets framework. Thanks to Erwin Frise, Albert Cardona and Benjamin Schmid.

Mark Longair contributed plugins to calculate the curvature of n-dimensional images, and to detect vessels according to Frangi's method.

The Correct 3D drift script registers time frames using the Stitching 3D plugin. Thanks to Stephan Preibisch, Robert Bryson-Richardson and Albert Cardona.

The Retinex plugin was added by Francisco Jiménez Hernández and Gabriel Landini.

There is now a plugin calculating the Shape Index Map, a per-pixel value describing the shape of the height-field corresponding to the image.

It is now possible to turn a binary image of points into a point selection, by starting Edit  ▶ Selection  ▶ Points from Mask.

There is now a plugin that saves the current image in EPS (Encapsulated PostScript) format. Thanks to Wilhelm Burger.

Use Plugins  ▶ Transform  ▶ Panorama equirectangular view to look at 360° panorama photographs and pan around. Thanks to Stephan Saalfeld.

User-visible changes

On Linux, the Fiji launcher will run even with older setups than the launcher was compiled on.

The Bio-Formats plugins were updated frequently to include bug fixes and improvements, e.h. support for the new LSM 710 format. Thanks to the LOCI & Glencoe team.

The Debian packages are being rebuilt on a weekly basis now. This was a lot of work competently completed by Mark Longair.

In the course of Debianization, a number of licenses have been clarified.

On Linux, RAM will not be overcommitted anymore (this used to lead to serious paging delays in multi-user environments).

Fiji will now correctly identify 64-bit Intel CPUs on MacOSX.

The Fiji launcher accepts --edit without paths now, opening the Script Editor with a new, empty file.

With newer MacOSX versions, the absence of the SECURITYSESSIONID does not imply headless operation.

When calling Fiji from a multi-platform Fiji.app/ directory, it will not try to use the Java Runtime environment for another architecture.

The Fiji launcher will interpret jvm.cfg before command line options so that the user has a chance to override faulty settings. Thanks to Jacques Pecreaux.

On MacOSX, when the user specified Open in 32-bit mode, Fiji will no longer ignore the user's wish. Thanks to Erwin Frise and Arthur Edelstein.

Since many parts of Fiji's source code rely on Java 1.6 or better now, the retrotranslator is activated automatically on MacOSX when only Java 1.5 or earlier is available. Thanks to Mark Longair.

Fiji will be able to use native libraries put into Fiji.app/lib/<platform>/.

Calling fiji-<platform> --updater calls a command-line version of the Fiji Updater; this is useful in headless setups.

Any script or macro can now live in any menu, by putting it into Fiji.app/plugins/Scripts/. For example, if you want to have a macro in File  ▶ Import, you might save it to Fiji.app/plugins/Scripts/File/Import/.

As always, Fiji was synchronized frequently with ImageJ, and a few bug fixes were contributed to ImageJ through Fiji. Thanks to Wayne Rasband.

Fiji's bundled Java Runtime Environment is now at version 1.6u24 (to update, run Update Java from Fiji Updater's Advanced mode).

Too many bug fixes and improvements to count in the TrakEM2 components. Thanks Albert Cardona and Stephan Saalfeld.

Add the Plugins  ▶ Examples  ▶ Extended Profile Plot script to get profile plots of closed polygons.

Add Scale to DPI function to Image  ▶ Adjust menu, thanks to Curtis Rueden.

Lots of bug fixes and improvements in the 3D Viewer. To name just a few: orthoslice changes are now recordable, the animation axis can be specified, the rotation step is adjustable, import/export for .stl files was added (for 3D printers), the bounding box now has ticks, the transfer function is adjustable, single objects are auto-selected, the current image is added by default, ImageJ is no longer allowed to intercept key presses, multiple 3D Viewers can be synchronized, there is now a "Take snapshot" menu item, fullscreen mode, colorize meshes from given images, load/save landmarks for all timepoints, make color of landmarks adjustable, etc. Thanks to Benjamin Schmid.

The Analyze Skeleton plugin underwent many bug fixes and improvements, thanks to Peter C. Marks, Huub Hovens, Michael Doube and Ignacio Arganda-Carreras.

Fiji's Arrow Tool is now recordable and -- as was intended originally, before ImageJ grew its own version of the tool -- gave rise to a generic tool infrastructure allowing new tools to be developed more easily (and using proper Java instead of macros).

The Auto Threshold plugin supports 16-bit images now, too. This mode respects the true 16-bit histogram rather than taking shortcuts. While at it, the Huang method has been accelerated tremendously.

Scripting with the scripting languages is quicker now because ImageJ, Java and ImgLib classes are imported by default when running scripts from the Script Editor.

The Bug Submitter plugin collects more information in the bug report automatically, to help developers understand the environment better. Thanks to Mark Longair.

Some bugs were fixed with Clojure scripting, thanks to Albert Cardona.

Some errors were fixed in the Colocalisation_Analysis plugins, thanks to Daniel James White.

Macro recording of the Directionality plugin was fixed, thanks to Jan Eglinger.

Fiji's handling of Help  ▶ Refresh Menus has seen a number of bug fixes, as well as Fiji's headless mode (which will stop being a clever hack with ImageJ2, but instead be a proper solution).

For teachers' and instructors' convenience, Fiji can cache sample images locally, avoiding huge network traffic during courses.

When using the Recent Commands (available via the 9 key), the Recorder properly records which action was chosen.

In addition to macros available as menu items, scripts are also opened in the Script Editor rather than executed when holding down the Shift key prior to opening the menu. While at it, the status of the main window tells the user what is currently happening.

The Fiji Updater now uses the system-wide proxy settings.

By caching the checksums of the files, the Updater was speeded up dramatically.

The Updater is disabled when Fiji was installed via the Debian packages.

The Fiji Updater supports multiple Update sites now. If you have a web server which you can access via SSH, you can publish your own plugin suites.

The Image Expression Parser was fixed for a regression in ImageJ 1.44n and later, as well as two bugs related to filename detection. Thanks to Albert Cardona and Jean-Yves Tinevez.

The extra file type handling when opening images was fixed with regard to the Bio-Formats plugin. Thanks to Curtis Rueden and Gregory Jefferis.

Thanks to Albert Cardona, the Jython Interpreter now prints the last evaluated expression return value.

The Lasso/Blow Tool is more robust now, using the new AbstractTool framework (thereby avoiding timing issues due to a macro handling all the mouse input).

The Multiple Image Processor now resets Escape before starting, and it handles .pgm files as claimed in the documentation.

The Compile & Run command no longer needs write access to Fiji.app/plugins/, and it offers to unlock images when appropriate.

A bug was fixed which prevented MBF plugins from being compiled and run on the fly when a .java file was present in a subdirectoy of Fiji.app/plugins/.

Register>Transform Virtual Stack Slices got a checkbox to toggle interpolation. Thanks to Stephan Saalfeld.

The Script_Editor can export scripts bundled in .jar files for other Fiji users to install and run.

A couple of templates have been added to the Script Editor.

In the script editor, the font and tab size can be adjusted. Thank you, Yili Zhao.

The Script Editor can auto-save before compiling now. Thanks to Philippe Thévenaz.

The output of multiple scripts in the Script Editor is now separate; you will see the output only when the corresponding script's tab is active. Likewise, the script interpreters running the scripts are now independent of each other.

When the Script Editor is asked to open images, it lets ImageJ open them rather than opening gibberish in a new tab. Thanks to Thomas Julou.

The Script Editor is now usable even if the user updated ImageJ to the daily version. Thanks to Wayne Rasband.

The Script Editor offers to File  ▶ Open Recent. Thanks to Albert Cardona.

The startup time of the Script Editor was reduced dramatically.

In the Script Editor, File  ▶ Open will no longer offer to open .class or .jar files.

For interoperability, the Script Editor now enforces UTF-8 encoding for both reading and writing files.

When saving a new file, the Script Editor will default to the Fiji.app/ directory. This helps when trying to save macros on MacOSX, where the Save Dialog does not allow switching into .app directories.

You can ask the Script Editor to wrap the lines around instead of showing a horizontal scrollbar. Additionally, it can label whitespace and zap gremlins, thanks to Albert Cardona.

The Simple Neurite Tracer can perform Sholl analysis and export the graphs as .svg or .csv files now. Additionally, there were many fixes and improvements, including an export as .swc option, or being able to select the path nearest to the mouse pointer with the G key. Further, selecting a path in the 3D Viewer selects it in the Neurite Tracer, too. For convenience, there is a button to run Fiji's Analyze Skeleton (2D/3D) plugin on the paths. The user interface was converted to the nicer Swing look. Thanks to Mark Longair.

The SPIM Registration can now handle multi-channel files, too. It provides the cosine blending option and has many more improvements. Thanks to Stephan Preibisch.

The Stitching plugins were speeded up, and it uses calibration info by default now. Thanks to Stephan Preibisch.

The Thread Killer now unlock all images, and it is more careful about what it offers to kill.

The Trainable Segmentation plugin can handle image stacks now. Thanks to Verena Kaynig, Ignacio Arganda-Carreras and Albert Cardona.

The Particle Analyzer (3D) handles the case when there are less than 3 objects now.

The Align image plugin uses the target image's dimensions for the result.

The Segmentation Editor can be controllable by ImageJ macros. Thanks to Benjamin Schmid.

When zooming in the Three Panes, the right center point is used in all panes. Thanks to Mark Longair.

When scripting, you can accelerate crucial parts by inserting Java code snippets using the new Weaver.inline(...) method in any scripting language. Thanks to Albert Cardona.

Several fixes and improvements in the mpicbg submodule for feature extraction and transformation, e.g.: Feature matching can be performed without geometric consensus filter. Geometric consensus filter got a new parameter, minimal absolute number of inliers. Added robust regression outlier filter to TileConfiguration. Several fixes and improvements to the CLAHE local contrast enhancer, e.g.: Added a fast (real-time) version of the filter. Fixed selection handling. Fixed transfer of values beyond the current min/max range. Support CompositeImages in variable ways. Added homogeneous least squares fit for perspective transformations using Jama SVD. Interactive transforms can handle Composites, Stacks and HyperStacks. Added a simple but comparably fast Optic Flow variant based on the sum of square differences in a Gaussian weighted neighborhood of a pixel. Thanks to Stephan Saalfeld.

Developer-visible changes

There have been quite a few cleanups of the project structure; the sources for plugins and libraries which are not contained in submodules are supposed to live in src-plugins/<jarname>/<package>/<classname>.java, where <jarname> is the base name of the generated .jar file.

There is now a script to compile and cross-compile ITK.

JNA was extracted from Jython and JRuby so that a newer jna.jar can be used without being shadowed by Jython's or JRuby's idea of JNA.

There is a helper now to compile a few ImageJ versions.

We have helper scripts to build cross-compilers on Linux 64-bit to target win32, win64, MacOSX (32-bit and 64-bit Intel, 32-bit PowerPC).

There is a Fiji launcher for MacOSX PowerPC again, sadly not met with any feedback from the complaining person, let alone positive one.

We have a script now to generate Eclipse, Netbeans and IntelliJ projects from the master Fakefile.

FreeBSD is supported for developers, for now.

There is a fall-back shell script -- fiji-other.sh -- for otherwise unsupported platforms.

The get-sample-images script supports headless operations now.

To prevent long waiting times with "git status" when a number of submodules are checked out, gitignore-in-submodules now understands an 'ignoredirty' subcommand.

bin/identify-commit.py can be used on the precompiled Fiji launchers, too.

In developer mode, the Updater's "Show changes" also lists changes for the Fiji launchers and the .jar file's manifest.

When samples/ is present, it is included in generated Fiji.app bundles.

A convenience script was added to use Maven.

There is a helper now to find all dependencees (even transitive ones) of a given .jar file.

The nightly build generates a stable WebStart (reflecting the current version according to the Fiji Updater) and the PluginList on the Wiki.

A simple script to reverse the page order of a .pdf file was added, as an example how to use iText.

The helper script bin/ready-for-upload.bsh can determine whether all prerequisite steps prior to uploading have been completed.

The commons-math library from the Apache project is now available.

Fiji Build can now build JNI-backed plugins; just add .c or .cxx files to a .jar rule, and a shared library of the same name as the .jar file will be generated from the native sources. Use fiji.JNI.loadLibrary("<name>") to load the shared library.

Upgrade jfreechart to 1.0.13 (from 1.0.9).

Update JNA to version 3.2.7.

Fiji contains a base class fiji.tool.AbstractTool which makes it easy to add tools to the toolbar that are not backed by polling macros, but by a proper event-driven Java class.

To generate tool icons from 16x16 pictures, use Plugins  ▶ Examples  ▶ Image To Tool Icon.

The Auto Threshold plugin has an API usable by developers of other plugins now.

The Fiji Build system handles rules involving Jython or Beanshell more efficiently now. It avoids to include unwanted files such as .DS_Store into .jar targets. The code uses generics now, and is more accessible to scripts and plugins. Fiji Build can use multiple CPU cores simultaneously now. A target can be force-rebuilt by appending "-rebuild" to the parameter. Building rules depending on Java3D is now possible even on MacOSX. Thanks to Mark Longair, Jacques Pecreaux and Curtis Rueden.

There is an easy way for developers to run external programs now: fiji.SimpleExecuter. This class offers a number of convenience functions to execute programs with specified parameters in a given working directory, and it offers several modes how the output should be handled: print to ImageJ's Log window, print to a stream, or save into Strings.

For Fiji Developer, adding documentation to the Fiji Wiki has been made even more convenient with enhancements to Plugins  ▶ Utilities  ▶ Fiji  ▶ New Fiji Tutorial and New Fiji Wiki Screenshot in the same menu.

The file and directory fields in the GenericDialogPlus class have been improved, and the methods addImageChoice() and getNextImage() have been added.

fiji-lib now offers a class to split command lines and macro option strings, and a TicToc helper for simple performance benchmarking.

If you want to add functionality similar to ImageJ's Command Finder to your own code, you can use fiji.util.gui.CommandFinderBase. If you have a JMenuBar you want to make accessible, you can use the JFrameCommandFinder class in the same package straight away. Thanks to Benjamin Schmid.

When looking at a specific file and number in a developer checkout of Fiji, the Script Editor offers to open that particular location via gitweb in the web browser (this helps collaboration via IRC, for example).

The submodules have been moved into the modules/ directory.

You can use the short-cut URL http://fiji.sc/<filename> for source files in Fiji's Git-managed repositories.

Added IntegralImages as library components to the mpicbg submodule for rapid box-filter operations (mean, scale, difference of mean, ...). Thanks to Stephan Saalfeld.