[ImageJ-devel] New release: Fiji Madison

Johannes Schindelin Johannes.Schindelin at gmx.de
Mon Mar 7 10:36:10 CST 2011


Dear all!

I proudly announce a new version of Fiji (Fiji Is Just ImageJ -- batteries
included).

So: what is Fiji? It is just a distribution of ImageJ, i.e. putting a nice
and convenient infrastructure around ImageJ such as: automatic updates,
extensive documentation, a powerful yet small Script Editor, reusable
components for users and developers, bug tracking, etc.

For details and downloads, see: http://pacific.mpi-cbg.de/.

Note: if you already have a Fiji installation, you can use the Fiji
Updater to upgrade; no need to download and install from scratch. Just
make sure that you update just the Updater first if you have not updated
in a long time, and update Java in the advanced mode (unless you are using
MacOSX).

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".

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://pacific.mpi-cbg.de/<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.


More information about the ImageJ-devel mailing list