ImageJ Changelog

What's new in ImageJ 1.54g

Dec 3, 2023
  • Thanks to Yuekan Jiao, added a "16-bit histogram" option to the Image>Adjust>Threshold dialog and a '16-bit' option to the setAutoThreshold() macro function and the ImagePlus.setAutoThreshold(String) method. When this option is enabled, the full 16-bit histogram is used to calculate the threshold of 16-bit images.
  • Thanks to Eyal Rozenberg, the File>Import>Raw command uses the directory name as the image title when the "Open all files in folder" option is enabled.
  • Thanks to Zoltan Kis, the Process>Noise>Remove Outliers tools uses sliders for setting the radius and threshold.
  • Thanks to Nicolas De Francesco and Curtis Rueden, the macro language documentation (functions.html) is now included in ij.jar and is used by the Editor's Macros>Function Finder command.
  • Thanks to Robert Baer, the "Associate 'Show All' ROIs with slices" option in the ROI Manager's More>>Options dialog is now always enabled when ImageJ starts up.
  • Thanks to Christian Tischer, files with an "ome.tif" or "ome.tiff" extension are opened using Bio-Formats.
  • Thanks to Fred Damen and Michael Schmid, the ImageProcessor.getSliceNumber() method returns the stack position when not called from a PlugInFilter.
  • Thanks to Fred Damen, added the Dialog.getLocation(x,y) macro function.
  • Thanks to Philippe Carl, added the RoiManager.setPosition(c,z,t) macro function.
  • Thanks to Fred Damen, the second argument of the Dialog.addDirectory(label,defaultdir) function is no longer ignored when the user clicks on the "Browse" button.
  • Thanks to 'Phiir42', fixed bug with closed tables reopening after a macro finishes.
  • Thanks to 'Ender', fixed headless mode "Scale Bar" and "Show Info" bugs.
  • Thanks to Michael Schmid, fixed ImageCanvas.fitToWindow() bug with very small images or user resized windows.
  • Thanks to Michael Ellis and Michael Schmid, fixed a RotatedRectRoi rounding bug and a bug where newly created RotatedRectRois consisted of 5 points instead of 4.
  • Thanks to Volker Backer, fixed a Roi group bug with Fiji on Linux.
  • Thanks to Yuekan Jiao and Michael Schmid, fixed a rounding error with PointRoi.getContainedPoints().
  • Thanks to Guenter Pudmich, fixed a 1.54d regression that caused 16-bit grayscale PNGs to be opened incorrectly.
  • Thanks to Saleh Altahini, fixed bug with opening ImspectorPro MSR files.

New in ImageJ 1.54f (Dec 3, 2023)

  • Improved recording of the Analyze>Tools>Scale Bar command.
  • Thanks to Stephen Cross, added the Image>Overlay>Toggle Overlay command.
  • Thanks to Dennis Chang, drawString() defaults to antialiasing when the font size is 14 or greater and it is disabled by default on Macs to work around a Java/macOS text rendering bug.
  • Thanks to Philippe Carl, made the ImagePanel class, used to add images to GenericDialogs, public.
  • Thanks to Norbert Vischer, File>New>Hyperstack adds slice labels when "Label Images" is checked in the dialog.
  • Fixed bug with getDir() macro function and IJ.getDir() method changing the default directory when they are used to choose a directory.
  • Thanks to 'sat1999', fixed bug with File.setDefaultDir() macro function and OpenDialog.setDefaultDirectory() method not working as expected when used with directory choosers added to dialog boxes.
  • Thanks to Norbert Vischer, fixed bug with Image>Color>Split Channels not correctly handling overlays.
  • Thanks to Norbert Vischer, fixed bug with Image>Color>Arrange Channels losing metadata.
  • Thanks to Jeremy Adler and Michael Schmid, fixed bug that caused Make Band to fail when the selection extended beyond the image edge.
  • Thanks to Julia Behnsen and Michael Schmid, fixed bug with automatic switching to scientific notation in results tables (test case).
  • Thanks to 'melikovk' and 'scuniff', fixed a PointRoi point count bug when points are added both programmatically and interactively.
  • Thanks to Herbie Gluender and Michael Schmid, fixed a bug with the Array.findMaxima() macro function that occurred when the first array element was NaN.
  • Thanks to Michael Cammer, fixed a 1.54e Analyze>Tools>Scale Bar regression with images that are spatially calibrated and have an ROI.

New in ImageJ 1.54e (Dec 3, 2023)

  • Thanks to Jerome Mutterer, added the Help>Examples>Plots>Plot with Spectrum example macro.
  • Thanks to Jerome Mutterer, selections can now be both filled and outlined. For an example, use the new Help>Examples>Macro>Easter Eggs command.
  • Thanks to Zoltan Kis, when manually switching image windows, "selectImage(title);" is recorded instead of "selectWindow(title);".
  • Thanks to Rodrigo Goncalves, added a "Do not create substack" checkbox to the Make Substack dialog.
  • Thanks to Eric Kischell, added a "Calibrate" checkbox to the Edit>Options>Conversions dialog and a setOption("CalibrateConversions",boolean) macro function.
  • Thanks to Chris Ambrose, the title is displayed in the status bar when the cursor is moved over an image and the alt key is down.
  • Thanks to 'Nottsuni', the Image>Show Info command displays both the pixel value range and the display range.
  • Thanks to Michael Ellis, the Edit>Selection>Interpolate command works with composite selections with holes.
  • Thanks to Philippe Carl and Michael Schmid, added the Plot.eneableLive() macro function.
  • Thanks to Jerome Mutterer, added the Color.wavelengthToColor() macro function and the Colors.wavelengthToColor() method.
  • Thanks to Michael Schmid, fixed issue with thresholding of 16-bit and float images with inverting LUTs.
  • Thanks to 'Jossie', fixed problem with Image>Color>Make Composite not working with 1 channel, 3 slice stacks.
  • Thanks to Michael Schmid, fixed several scale bar bugs.
  • Thanks to Philippe Carl, fixed bug with roiManager("Select",i) macro function not updating the active selection.
  • Thanks to Kurt De Vos, fixed bug with using Process>Filter>Convolve in Fiji headless mode.
  • Thanks to Alan Brooks, fixed transparency bug with the ImageRoi.setProcessor() method.
  • Thanks to Rodrigo Goncalves, added a warning message to the Make Substack dialog with virtual stacks opened by Fiji's FFMPEG plugin, which does not support slice deletion.
  • Thanks to Justin Conroy, fixed arrow selection scaling bug.
  • Thanks to Herbie Gluender, fixed isKeyDown() bug when using "Run" button in macro editor.
  • Thanks to Jerome Mutterer, fixed a bug with deleting a rescaled overlay image ROI with a transparent background.

New in ImageJ 1.54d (Dec 3, 2023)

  • Thanks to Norbert Vischer, added an '#include' statement to the macro language. For an example, use the Help>Examples>Macro>Turtle Graphics command.
  • Thanks to Stein Rorvik and Dennis Chang, added the "Full range 16-bit inversions" option to the Edit>Options>Conversions dialog and the setOption("fullRangeInversions") macro function.
  • The Image>Show Info command now displays LUT information for 16 and 32 bit images.
  • Thanks to Norbert Vischer, the Process>Binary>Convert to Mask command no longer records the unnecessary and confusing "method=Default background=Default" options.
  • Thanks to 'Maro', added the RoiManager.selectPosition(c,z,t) macro function.
  • Thanks to Wilco Kasteleijn, fixed a bug with opening 16-bit RGB PNGs (example).
  • Thanks to Christian Tischer, fixed bug that caused the ImagePlus.getDisplayRangeMin() and ImagePlus.getDisplayRangeMax() methods to not work with undisplayed composite color images.
  • Fixed GUI scaling of Image>Color>Show LUT plots.
  • Thanks to 'librethinker', fixed bug that limited Minimum and Maximum for 16-bit images in the Brightness/Contrast dialog to 0 and 65,535.
  • Thanks to 'KlMichel', fixed bug with ROI Manager "Multi Measure" command and point selections.
  • Thanks to 'jboulanger', fixed a bug with Image>Stacks>Tools>Make Substack where modifications to the newly created stack appeared in the original stack.
  • Thanks to Eric Denarier, fixed a bug with creation of selections less than one pixel in size.
  • Thanks to Corey Elowsky, fixed bug where a red cursor was saved with synchronized images.
  • Fixed a 1.53g text editor regression where Search and Debug selections were not visible on windows with "Run", "Install" and "Macro" buttons.
  • Thanks to Dennis Chang, fixed a 1.53k regression that caused the Edit>Invert command to not work as expected with density calibrated 16-bit images.

New in ImageJ 1.54c (Dec 3, 2023)

  • Thanks to Jerome Mutterer, added support for Turtle Graphics.
  • Thanks to Eugene Katrukha, re-implemented the Edit>Selection>Fit Spline command using Haysn Hornbeck's freely available "Fast Cubic Spline Interpolation" algorithm.
  • Thanks to Paul Evans, ImageJ now opens 10-bit tiffs.
  • Thanks to Stein Rorvik, text rendering in the Log window and tables is optimized for LCD screens on Linux and Windows,
  • Thanks to Damon Poburko, the Save command in the ROI Manager is now much faster.
  • Thanks to Fred Damen, added a Font>Monospaced checkbox menu command to the Log window.
  • Thanks to Fred Damen, the Edit>Options>Compiler command supports Java versions greater than 9.
  • Thanks to 'michihaa', the File>Import>Tiff Virtual Stack command calls the Bio-Formats Importer for files that can't be opened by the built in tiff reader.
  • Thanks to Stein Rorvik, added the TextWindow.setAntialiased(boolean) method.
  • Fixed a bug that caused the selectImage(n) macro function, where n>0, to sometimes fail in batch mode macros.
  • Thanks to 'Sethur', fixed a bug that caused the current working directory to not be transferred to plugins executed from command line macros.
  • Thanks to 'Sethur', fixed a bug the caused the ImagePlus.setPositionWithoutUpdate(c,z,t) method to not work as expected.
  • Thanks to Eugene Katrukha, fixed a bug that caused the Edit>Selection>Fit Spline command to shorten freehand line selections.
  • Thanks to 'lguerard', fixed a v1.53 regression that caused the Image>Overlay>Flatten command to not work correctly with hyperstacks.
  • Thanks to 'Sethur', fixed a v1.53t regression that caused "Average Intensity" Z projection to not work correctly with 32-bit hyperstacks.
  • Thanks to Eugene Katrukha, fixed a bug that caused the Edit>Selection>Fit Spline command to shorten freehand line selections.
  • Thanks to 'michihaa', fixed a bug that caused files with a ".tiff" extension dragged and dropped on the ">>" icon in the toolbar to not open as virtual stacks.

New in ImageJ 1.54b (Dec 3, 2023)

  • Fixed a 1.54a regression (changing IJ.URL to "http://imagej.net/ij") that caused the sample images to fail to load on Fiji.

New in ImageJ 1.54a (Dec 3, 2023)

  • Thanks to Herbie Gluender, added the Process>Binary>Median command and the ImageProcessor.threshold(level1,level2) method.
  • Thanks to Michael Cammer, setOption("ScaleConversions",boolean) is recorded when doing stack conversions.
  • Thanks to Volko Straub, added the recordable RoiManager.associateROIsWithSlices(), RoiManager.restoreCentered() and RoiManager.useNamesAsLabels() macro functions.
  • Thanks to Christian Tischer, added the AVI_Reader.open(path,options) method.
  • Thanks to Wilhelm Burger, added the GenericDialog.addEnumChoice() method (BeanShell example).
  • Thanks to Wilhelm Burger, added the ImageProcessor.isThreshold() method.
  • Changed the URL constant in IJ.java from "http://imagej.nih.gov/ij" to "http://imagej.net/ij".
  • Thanks to Andrew McCall, fixed a bug that caused the Image>Transform>Rotate command to fail when rotating very large stacks, but processing is now slower because multi-threading is no longer used.
  • Thanks to 'rlazevedo1', fixed a bug that caused plot symbols to not be drawn correctly when the line width was greater that 3 (example).
  • Thanks to 'rlazevedo1', fixed a bug that caused the range arrow overlay to be included when saving a plot in tiff format.
  • Thanks to Eg Laf, fixed a bug that caused the multi-point tool to throw an exception when it was used for counting.
  • Thanks to 'Bio7', fixed minor bugs that caused compiler warnings.
  • Thanks to 'Wyn', worked around a bug in Fiji's Import>Movie (FFMPEG) command that caused the Duplicate and Reslice commands to sometimes throw exceptions.
  • Thanks to Wilhelm Burger, fixed bugs that caused some of the Image>Adjust>Threshold auto thresholding methods to not work with bilevel images.
  • Thanks to Diego Perez Dones and Olivier Burri, fixed a bug that caused the Process>Find Maxima command to not work as expected with float EDM images.
  • Thanks to 'Kavi', fixed a 1.53v regression that prevents measurement of angle selections.

New in ImageJ 1.53v (Dec 3, 2023)

  • Thanks to Andrey Kazak, added the String.setFontSize() macro function.
  • Thanks to Mario Faretta, added the Dialog.addImage(path) macro function.
  • Thanks to Wilhelm Burger, added the Roi.translate() macro function and Roi.translate() method (macro example, JavaScript example).
  • Thanks to Avinoam Kalma, fixed a bug that caused ImageJ to not correctly read TIFF images saved with the "deflate" compression option.
  • Thanks to Mary Brown, fixed a bug that caused the "Menu font size" setting in the Edit>Options>Appearance dialog to not be preserved in the preferences file.
  • Thanks to Hidenao Iwai, fixed a bug that caused the Image>Stacks>Reslice command to throw an exception if the selection extended beyond the image bounds.
  • Thanks to 'Alex' and Curtis Rueden, fixed a bug that caused ImageJ to freeze if "waitForUser" was entered into the "Interactive Interpreter" window.
  • Thanks to 'Olivier', fixed a bug that caused RGB DICOM files imported using Bio-Formats as hyperstacks to "loose" the metadata when converted to RGB.
  • Thanks to Wilhelm Burger, fixed a bug that caused the Roi.isLine() and Roi.isLineOrPoint() methods to return 'false' for angle selections.
  • Thanks to Curtis Rueden, fixed a bug that caused the File>Open Samples>Cache Sample Images command to not work on Fiji.
  • Thanks to Peter Zentis, fixed a 1.53k regression that caused the Image>Invert command to ignore selections when inverting 16-bit images. Note that the image may not be displayed correctly unless it uses the full pixel value range (0-65535) or a range has been set using the "Set" option of the Image>Adjust>Brightness/Contrast dialog.

New in ImageJ 1.53u (Dec 3, 2023)

  • Thanks to Giovanni Cardone, the Image>Transform>Bin command now supports z-binning of 4D hyperstacks.
  • Thanks to Dr. Njitram, the Analyze>Plot Profile command works with rotated rectangles.
  • The Edit>Selection>Line to Area command converts straight line selections to rotated rectangle selections.
  • Thanks to Herbie Gluender, improved recording of the Edit>Selection>Properties command and added a comment to the Edit>Options>Line Width dialog to make it clearer what the command does.
  • Thanks to Pau Carrillo-Barbera, the Selection Brush Tool is no longer disabled when activating a selection in an overlay by double clicking on it.
  • Thanks to 'John D.', made GenericDialog.resetCounters() public so it can be called by plugins using GenericDialog.addButton() (example).
  • Thanks to Dennis Chang, added the recordable Image.removeScale() macro function and the ImagePlus.removeScale() method.
  • Added the ImageProcessor.setColor(String) method.
  • Thanks to Tiago Ferreira, fixed a bug that caused toolbar contextual menus to ignore the Edit>Options>Appearance "GUI scale" setting.
  • Thanks to Jan Brocher, fixed a bug that caused the "Results" menu in a table to disappear if the table was renamed.
  • Thanks to Rene Ramekers, fixed a bug that caused the File>Import>TIFF Virtual Stack command to not correctly calibrate TIFF stacks that were not created by ImageJ.
  • Thanks to Andrey Kazak, fixed a bug that caused the Image>Overlay>From ROI Manager menu command to not transfer the ROI positions.
  • Thanks to Herbie Gluender, fixed a bug that caused the Edit>Selection>Straighten command to change the global line selection width.
  • Thanks to Nayana Gaur, fixed a bug that caused ROIs with x or y coordinates greater than 60,535 and less than 65,535 to be saved incorrectly.
  • Thanks to Christoph Gohike, fixed a bug that caused ImageJ to create TIFF files with invalid RowsPerStrip tags when the image height was greater than 65,535.
  • Thanks to Michael Schmid, fixed several bugs with Image>Stacks>Plot Z-axis Profile "Live" plots.
  • Thanks to Jerome Mutterer, fixed a bug that caused the "CP" window to not be updated when the Color Picker tool was used to pick new colors from the active image.
  • Thanks to Ko Sugawara, fixed a bug that caused the Opener.openAndAddToRecent() method to return 'false' when the file was opened successfully.
  • Thanks to Stein Rorvik, worked around a Java bug on Windows that caused the main menu bar sub-menus to not scale to larger than 17 points. Unfortunately, the main menu bar font size on Windows is still limited to 17 points regardless of the "GUI scale" setting.
  • Thanks to Stein Rorvik, fixed a bug that caused the Roi.Paste macro function to not work as expected.
  • Thanks to 'bobfRT1', fixed a scale bar width rounding error.
  • Thanks to 'rlimame', fixed a bug that caused the Edit>Selection>Rotate command to convert Rotated Rectangle selections to Polygon selections.
  • Thanks to Michael Schmid, fixed bugs that caused the Scale and Rotate commands in the ROI Manager to only work correctly when processing all the ROIs.
  • Thanks to Mark Hiner, fixed a 1.53t regression that caused the Image>Stacks>Z Project command to ignore the last slice when doing "Average" projection of 32-bit stacks.
  • Thanks to Jerome Mutterer, fixed a 1.53o regression that caused unexpected error messages when double clicking on a line in a table or in the ROI Manager when a custom action was not defined.

New in ImageJ 1.53t (Oct 28, 2022)

  • Thanks to Michael Schmid, the Analyze>Tools>Analyze Line Graph command is greatly enhanced
  • Works on all image types.
  • Spatial calibration is read correctly.
  • Reads values for each x value in pixels.
  • Without calibration, the values are pixel coordinates, not pixel coordinates + 0.5.
  • Tries to follow the curves, even if curves cross each other.
  • Plots (and lists) different curves as different data sets.
  • Honors non-rectangular selections instead of deleting them.
  • Produces somewhat usable output even without a selection or any editing.
  • Thanks to Thomas Laurent, the String.format() macro function now accepts a variable number of numeric arguments.
  • Thanks to Stein Rorvik, the Image>Stacks>Tools>Reduce command produces a virtual stack if the source is a virtual stack created using File>Import>Image Sequence or File>Import>Stack from List.
  • Thanks to Nicolas De Francesco, the Image>Color>Invert LUTs command (used by the "Channels" tool) works with non-linear LUTs.
  • Thanks to Volko Straub, the Image>Stacks>Z Project command ignores NaNs when doing "Average" projection of 32-bit stacks.
  • Thanks to 'Danielle_Z', ImageJ now opens compressed BMP images.
  • Thanks to Philippe Carl, the ROI Manager's "Labels" checkbox is no longer enabled on Windows when clicking on "Show All" and ROIs are now automatically updated in the ROI Manager after being modified by holding down the shift or alt key.
  • Thanks to Dennis Chang and Michael Schmid, added the is("FFT") macro function.
  • Thanks to 'Leonicolash' and Volker Backer, fixed a bug that caused the Table.sort() macro function to fail after using saveAs("Results", path).
  • Thanks to Daniel Leswasserman, fixed a bug that sometimes caused the "Dir:" field of the File>Import>Image Sequence dialog to be too wide.
  • Thanks to Michael Schmid, fixed a bug that caused the Roi.getImageID() method to throw a NullPointerException.
  • Fixed a bug that caused sample images to not open on Windows 10 with Java 1.8.0_172.
  • Thanks to Christophe Leterrier, fixed a bug that caused 32-bit to 16-bit conversions of multichannel images to not work as expected.
  • Thanks to Stein Rorvik, fixed a bug that caused the File>Import>Stack From List command to not preserve EXIF data.
  • Thanks to Stein Rorvik, fixed several bugs related to scaling of stacks with overlays.
  • Thanks to Fred Damen, fixed a 1.52u regression that caused getStatistics().mean values of single point selections to be incorrect.
  • Thanks to Mark Hiner, fixed a 1.53h regression that sometimes caused line selection bounds to be too large.

New in ImageJ 1.53s (Oct 28, 2022)

  • Thanks to Stein Rorvik, added the Edit>Selection>Translate command, the ROI Manager Scale and Rotate commands, and the RoiManager.scale(), RoiManager.rotate(), RoiManager.translate(), RoiManager.selectByName() and RoiManager.getIndex() macro functions.
  • Thanks to Fred Damen, added the Image>HyperStacks>Make Subset command, an alias for the Image>Stacks>Tools>Make Substack command.
  • Thanks to Fred Damen, GenericDialog sliders are mouse wheel controllable and TextFields on Linux are not as tall.
  • Thanks to Wilhelm Burger, the ClassChecker no longer deletes files and only runs when the Compile and Run command is used.
  • Thanks to Stein Rorvik, added the Dialog.addImageChoice(label,default) macro function.
  • Thanks to Michael Schmid, fixed several plot legand issues (example).
  • Thanks to Laurent Thomas, units of imported tiffs are converted to microns if the pixel width is Thanks to Lance Davidson, ImageJ now correctly opens CSV files that start with a 0xFEFF character (zero width no-break space).
  • Thanks to Tiago Ferreira, fixed a bug that caused commands and keyboard shortcuts installed by StartupMacros.txt in the Plugins>Macros menu to be deleted when a macro tool was added to the toolbar.
  • Thanks to 'DentedDuck', fixed a bug that caused the Image>Transform>Rotate command to increase the image width or height by one pixel if the angle was 0 or 90 degrees and "Enlage image" was checked.
  • Thanks to Norbert Vischer, fixed a bug that caused an exception to occur when duplicating a stack and the "Range:" field was empty.
  • Thanks to Fred Damen, fixed a bug that caused the Image>Stacks>Tools>Make Substack command to not work correctly with stacks with nSlices=1 and nFrames>1.
  • Thanks to Michael Schmid, fixed a bug that caused point selection bounds to be too wide and tall by 1 pixel (example).
  • Thanks to Stein Rorvik, fixed a bug that caused the toString(number,decimalPlaces) macro function to not work as expected.
  • Thanks to Ellie Cho and 'Research_Associate', fixed a 1.53h regression that caused ROIs to not be drawn on images displayed using setBatchMode("show").

New in ImageJ 1.53r (Oct 28, 2022)

  • Added a "Help" button to the Channels dialog.
  • The Image>Type>RGB Stack command converts multi-channel composite images into RGB stacks (example).
  • Set the "ClipWhenSumming" image property "true" and the Image>Stacks>Z Project command will clip at 255 when summing RGB stacks (example).
  • Added the Image>Color>Invert LUTs command.
  • Thanks to Bram van den Broek, restored the "Don't reset range" option to the Threshold dialog.
  • Thanks to Alan Brooks, the "Fill with background color" option of the Image>Transform>Rotate command is now available with 16 and 32 bit images.
  • Thanks to Philippe Carl, press shift+alt+n to create a text window with "Run" and "Install" buttons, and a language drop down menu.
  • Thanks to Stein Rorvik, added the ImageJ.getStatusBarText() method.
  • Thanks to Wilhelm Burger, added versions of the ImageProcessor getColumn() and putColumn() methods that accept float[] arguments.
  • Thanks to Alan Brooks, added the ImageProcessor.setBackgroundColor(Color) method.
  • Thanks to Stein Rorvik, fixed a bug that caused values to not be displayed correctly in Image>Math> dialogs if "Decimal places" in the Analyze>Set Measurement was set to 9.
  • Thanks to Abbas Haghshenas and Nicolas De Francesco, fixed a 1.54p regression that caused the "OK" button in dialog boxes to be left-aligned on Windows.

New in ImageJ 1.53q (Oct 28, 2022)

  • Thanks to Kevin Terretaz, added the More>Invert LUTs command to the "Channels" dialog.
  • Thanks to Olivier Burri, ImageJ calculates the perimeter of a "polygon" ROI the same way as a "traced" ROI if it appears to have been created by edge tracing.
  • Thanks to 'muniak', the Process>Enhance Contrast dialog displays values using 2 decimal places.
  • Thanks to Norbert Vischer, replaced, in the ImageJ source, deprecated new Integer(intOrString) and new Double(intOrString) constructors with Integer.valueOf(intOrString) and Double.valueOf(intOrString).
  • Thanks to 'TMC', added the showRow() and showCell() methods to the TextPanel class (example).
  • Thanks to Fred Damen, fixed a bug that caused bin starts in tables created by clicking on "List" in histogram windows to be rounded to integers.
  • Thanks to Herbie Gluender, fixed a bug that caused Undo of rotated images with overlays to not work as expected.
  • Thanks to Michael Schmid, fixed a regression that caused some PNG images to open as stacks.
  • Thanks to Christophe Leterrier, fixed a 1.53p regression that caused the run("Table...",options) macro function to fail.

New in ImageJ 1.53p (Oct 28, 2022)

  • Thanks to Stein Rorvik, Analyze>Set Scale, when there is a rectangular selection, sets "Distance in pixels" to the largest of the selections' width and height.
  • Thanks to Ron DeSpain, drag and drop sets the default path to the source folder. The default path is listed in the Plugins>Utilities>ImageJ Properties output as "Current dir".
  • Thanks to Alan Brooks, the "B&C" dialog now uses scientific notation for small (less than 0.001) values.
  • Thanks to Michael Schmid, the macro line number is added to the "Exception" window when a macro causes an exception (example).
  • Thanks to James Manton, increased MAX_CHANNELS (maximum number of image channels in composite mode) from 7 to 8.
  • Thanks to 'JWinchester', added the recordable File.openSequence(path,options) macro function.
  • Added the Roi.setUnscalableStrokeWidth() macro function.
  • Thanks to Carl Priddy, added the Table.columnExists() macro function.
  • Thanks to Michael Schmid, added the ResultsTable.setValues() method.
  • Thanks to Peter Lunding Jensen, fixed bugs that caused the File>New>Hyperstack command to incorrectly label RGB hyperstacks.
  • Thanks to 'ALisboa', fixed a bug that caused the File>Import>Image Sequence command to throw an exception if the directory path was invalid.
  • Fixed bugs that caused saved sub-pixel resolution rounded rectangle and oval ROIs to not be reopened correctly (example).
  • Thanks to Michael Schmid, fixed a bug that caused "Synchronize Windows" to throw a NullPointerException when using the "Close All" command.
  • Thanks to Michael Schmid, fixed a bug that caused zero-length lines and isolated points in lines to not be shown in plots.
  • Thanks to Michael Mell, fixed a bug that caused ROIs in an overlay on a single channel 3D image to not be displayed correctly if the position was set using roi.setPosition(c,z,t).
  • Thanks to Kenta Shimamoto and Christoph Gohlke, fixed a bug that caused tiff images larger than 2 GB to open upside down.
  • Thanks to Thomas Laurent, fixed a bug that caused a double-click on the rectangle ROI icon in the toolbar to display both the "ROI Defaults" dialog and the right-click menu.
  • Thanks to Thomas Laurent, fixed a bug that caused the IJ.openUrlAsString() method to not correctly interpret special characters
  • Fixed a 1.53j regression that caused activation of ROIs in an overlay by double clicking on a row in an "Overlay Elements of..." table to not work as expected.
  • Thanks to 'hwada', fixed a 1.53i regression that caused an extra click to be needed to activate and move an ROI in an overlay with labels.
  • Thanks to Gabriel Landini, fixed a 1.53g regression that caused the File>New>Image command to not work as expected when creating stacks and "Fill with" was "white" or "ramp".

New in ImageJ 1.53o (Oct 28, 2022)

  • Thanks to Christophe Leterrier and Peter Haub, added "Composite Sum", "Composite Max", "Composite Min" and "Composite Invert" as choices in the Image>Color>Channels Tool dialog. "Composite Min" and "Composite Invert" are useful for displaying composite images with inverted LUTs (example image, example macro).
  • Thanks to Jerome Mutterer, added support for Results Table and ROI Manager customizable actions (example).
  • Thanks to Fred Damen, the Image>Adjust>Window/Level and Analyze>Histogram windows use scientific notation as needed to display small values.
  • Thanks to Stein Rorvik, Edit>Selection>Specify respects the image origin when "Scaled units" is checked in the dialog.
  • Thanks to Stein Rorvik, ImageJ looks for the preferences file ("IJ_Prefs.txt") in the current directory, the ImageJ directory and the username/.imagej directory (username/Preferences on MacOS).
  • Thanks to Kimberly Meechan and Jan Eglinger, ImageJ restores the original look and feel after temporarily using the system look and feel with Windows dialogs.
  • Thanks to Stein Rorvik, the count field in the Process>Binary>Options dialog is saved in the preferences file.
  • Thanks to Stein Rorvik, added a "Create new stack" checkbox to the Process>Binary>Make Binary and Convert to Mask dialog boxes.
  • Thanks to Stein Rorvik, added the getDir("preferences") macro function.
  • Thanks to Fred Damen, added the ImagePlus.setDefaultDisplayRange() method (JavaScript example).
  • Thanks to Michael Schmid, fixed a bug that caused histograms of thresholded 16-bit and 32-bit images to be displayed incorrectly if the "Limit to threshold" measurement option was enabled.
  • Thanks to Stein Rorvik, fixed a bug that caused the loss of density calibration with virtual stacks.
  • Thanks to Kees Straatman, fixed a bug that caused the IJ.openImage() method to not work with images opened using Bio-Formats. As a result, the Open Next, Import>Image Sequence and Process>Batch> commands now work with images opened using Bio-Formats.
  • Thanks to Michael Cammer, fixed a bug that caused the Table.deleteRows() macro function to not work as expected with tables not named "Results".
  • Thanks to 'yogurt', fixed a bug that caused unexpected popup menus when using the selection brush tool.
  • Thanks to Christian Tischer, fixed a bug that caused some dragged and dropped "https://" URLs to not open.
  • Thanks to Hidenao Iwia, fixed a bug that caused GRAY12_UNSIGNED images to not open correctly as FileInfoVirtual stacks.
  • Thanks to Stein Rorvik, fixed a bug that caused the showMessageWithCancel() macro function to fail when run from the command line.
  • Thanks to Fred Damen, fixed a bug that caused slice labels of one slice stacks to not be displayed in the Image>Show Info window.
  • Thanks to 'IztokD', fixed a regression that caused some PNG images to open as stacks.
  • Thanks to 'CellKai', fixed a 1.53d regression that caused the RoiScaler.scale() method to sometimes not work as expected.
  • Thanks to 'odinsbane', fixed a 1.53m regression that caused exceptions to sometimes not be shown.
  • Thanks to 'chin', fixed a 1.53i regression that caused the roiManager("Show All") macro function to not work in batch mode.

New in ImageJ 1.53n (Oct 28, 2022)

  • Thanks to Stein Rorvik, added a "Raw values" checkbox to the Image>Adjust>Threshold dialog
  • Thanks to 'Sethur', added a DICOM preference allowing fixed scaling across slices via RescaleSlope and Intercept.
  • Thanks to Norbert Vischer, added a "Cancel" button to the waitForUser() dialog.
  • Thanks to Christopher Schmied, histogram plot outlines are drawn in dark blue to help distinguish the outline from the plot.
  • Thanks to Michael Schmid, restored the ability to select the starting and ending frame in the File>Import>AVI dialog.
  • Thanks to Joseph Chen, removed the "Don't reset range" checkbox from the Image>Adjust>Threshold dialog.
  • Thanks to Jerome Mutterer, added the Math.constrain(n,min,max) and Math.map(n,low1,high1,low2,high2) macro functions (example tool).
  • Thanks to Peter Bankhead, the ImagePlus(String,Image) constructor now supports multi-band BufferedImages.
  • Thanks to Michael Schmid, fixed bugs and improved the documentation of the Colors class.
  • Thanks to Michael Cammer, fixed a bug that caused the border color of composite images to change to the color of the channel being displayed.
  • Thanks to Michael Schmid, fixed a bug that caused macros to fail due to a race condition when converting stacks to hyperstacks.
  • Thanks to Stanislav Chizhik, fixed a bug that sometimes caused File>Import>Image Sequence to open images as the wrong type when using a filter.
  • Thanks to Romain Guiet, fixed a bug that caused the Image>Scale command to not work correctly with hyperstacks.
  • Thanks to Stein Rorvik, fixed a 1.53m regression that caused macros importing an image sequence to sometimes not open all images in a folder.
  • Thanks to Michael Schmid, fixed a 1.53m regression that caused image stacks to open slowly on Windows in batch mode.
  • Thanks to Stein Rorvik and Michael Schmid, fixed a 1.53m regression that caused macro statements like run("Macro...", "code=[...] stack") to fail.
  • Thanks to Herbie Gluender, fixed a 1.53m regression that caused the Image>Adjust>Brightness/Contrast dialog to not work as expected with 32-bit images containing NaNs.

New in ImageJ 1.53m (Oct 28, 2022)

  • Thanks to Zoltan Kis, the File>Import>Image Sequence dialog now displays the number of images that will be opened.
  • Thanks to Norbert Vischer, exceptions on the Event Dispatch Thread are now reported in the Log window.
  • Thanks to Remi Berthoz, the Analyze>Tools>Scale Bar command now has the ability to draw both vertical and/or horizontal scale bars.
  • Thanks to Stein Rorvik, added a "Colors..." command to the Color Picker dropdown menu and made most of the commands in that menu recordable.
  • Thanks to Esteban Fernandez, added a "Fill color:" field to the Image>Stacks>Images to Stack dialog box.
  • Thanks to Barry DeZonia, the findMinAndMax() methods in the Short/Int/Float processors are now faster (Plugins>Utilities>Benchmark runs 3% faster).
  • Thanks to Michael Schmid, added support for drag and drop to JFileChooser dialogs.
  • Thanks to Nicolas De Francesco, updated the Edit>Selection>Fit Rectangle command so that it produces more predictable results.
  • Thanks to Philippe Carl, File>Import>Image Sequence no longer limits the number of files that can be imported to 40 when "Open as separate images" is enabled.
  • Thanks to Fred Damen, improved recording of the ROI Manager's "Open..." and "Save..." commands, and made the open(path) and save(path) methods public.
  • Thanks to Michael Schmid, the File>Import>Image Sequence command no longer creates excessive image IDs.
  • Thanks to Michael Schmid, added the FolderOpener.openProcessor() method, used by the FileInfoVirtualStack class.
  • Thanks to Norbert Vischer, fixed a bug that caused the Process>Filters>Convolve command to sometimes not be correctly recorded.
  • Thanks to Fred Damen, fixed a bug that caused a null pointer exception when the File>Import>Results dialog was canceled.
  • Thanks to Ved Sharma, fixed a bug that caused an invalid macro error when assigning a string value returned by a user defined function to an array element.
  • Thanks to Fred Damen, fixed a bug that caused the RoiManager.save() method to always return true.
  • Thanks to Ved Sharma, fixed a bug that caused the ROI Manager's "OR (Combine)" command to not work as expected if the first ROI was composite.
  • Thanks to Philippe Carl, fixed a bug that caused the File>Import>Image Sequence command to not work as expected when importing stacks and the "Open as separate images" option was enabled.
  • Thanks to Philippe Carl, fixed a bug that caused the Image>Overlay>Flatten command to not work with ROIs, or the ROI Manager in "Show All" mode, on composite images.
  • Thanks to Rodrigo Goncalves, fixed a bug that caused the File>Save As>Image Sequence command to display multiple error messages when the specified directory did not exist.
  • Thanks to Herbie Gluender, fixed a bug the caused the exit(msg) macro function to fail when the argument was a number or a call to a user-defined function.
  • Thanks to Jerome Mutterer, fixed a typo in OpenDialog.java that caused the GitHub version of ImageJ to fail to compile.
  • Thanks to Daniel Nebdal, fixed a bug that caused the Plugins>Macros>Edit command to not open ".py" and ".bsh" files.
  • Thanks to Remi Berthoz, fixed a bug that caused the Image>Type>RGB Stack command to not work correctly with RGB stacks that had multiple slices and multiple frames.
  • Thanks to Stein Rorvik, fixed a bug that caused the Property.setSliceLabel() macro function to sometimes not work as expected with single images.
  • Thanks to Ved Sharma, fixed a regression that caused the roiManager("Set Fill Color",color) macro function to fail when used with a text selection.
  • Thanks to 'natalia', fixed a 1.52p regression that caused FITS images to open flipped vertically.
  • Thanks to "J Xiong", fixed a regression that caused the particle analyzer to not work the same as it did in ImageJ 1.52 with binary images that were not thresholded and the "Black background" options was not set.
  • Thanks to Hyung-song Nam, fixed a 1.53f regression that caused menus to unexpectedly popup when using the "hand" tool to scroll through images.

New in ImageJ 1.53k (Dec 17, 2021)

  • Thanks Mike Nelson, 16-bit images are inverted using the full pixel value range (0-65535) or, if set, using the "Unsigned 16-bit range" in the "Set" option of the Image>Adjust>Brightness/Contrast dialog.
  • Thanks to Alan Brooks, added the macOS-specific MacAdapter9 plugin, which, on Java 9 or later, supports drag and drop on the ImageJ.app and the "About ImageJ" command.
  • Thanks to Romain Guiet, the ROI Manager's "Associate 'Show All' ROIs with slices" option is now enabled by default.
  • Thanks to Gilles Carpentier, the particle analyzer now assumes the threshold is 255 unless "Black background" is not set, the image does not have an inverted LUT and fewer than half the pixels have a value of zero, in which case the threshold is set to zero.
  • Thanks to 'pdd2110', added the Property.setSliceLabel(label) macro function.
  • Thanks to 'John D.', added the GenericDialog.addButton() method (example).
  • Thanks to 'Oodegard', fixed a bug that caused the "Auto-next slice" option of the point tool to not work as expected with hyperstacks.
  • Thanks to Michael Schmid, fixed a bug that caused NaN values in tables read from a file to be strings instead of numbers.
  • Thanks to Gabriel Landini and Michael Schmid, fixed a bug that caused the "Top Hat" filter to fail when applying it to a stack one slice at a time.
  • Thanks to Laurent Thomas, fixed a bug that caused the Image>Stacks>Set Slice command to not work as expected with hyperstacks.
  • Thanks to Laurent Thomas, fixed a bug that caused hyperstacks to be displayed incorrectly if the Z or T sliders where moved quickly and the images were slow to load.
  • Thanks to Michael Schmid, fixed a bug that sometimes caused the WindowManager.getIDList() method to throw an exception.

New in ImageJ 1.53a (May 6, 2020)

  • Thanks to Michael Ellis, added support for saving and restoring persistent image properties via the Property.set(key,value) and Property.get(key) macro functions and the setProp(key,string), getProp(key), setProp(key,double) and getNumericProp(key) methods (JavaScript example).
  • Removed file sizes from entries in the File>Open Samples> submenu. Macros that use the old entries (e.g. "Blobs (25K)") continue to work.
  • Thanks to Laurent Thomas, the Overlay and RoiManager classes are now iterable. Plugins can use "for (Roi roi : rm)" instead of "for (int i = 0; i != rm.getCount(); i++)". In JavaScript, use "for each (roi in rm)" (example).
  • Thanks to Norbert Vischer, added the [&n] macro shortcut notation that allows shortcuts to be used on both numerical keypads and normal (laptop) keyboards. (example).
  • Thanks to Richard Boardman, increased the BufferedOutputStream buffer size in the FileSaver class to 32K and added the static FileSaver.setBufferSize(int) method.
  • Thanks to Michael Schmid, added the Plot.setOptions() macro function. See Help>Examples>Plots>Plot Results for an example.
  • Added the Property.get(key), Property.set(key,value), Property.getInfo, Property.getSliceLabel, Property.setSliceLabel(string) and Property.getDicomTag(string) macro functions.
  • Thanks to Michael Schmid, added the Plot.getCurrentFont(), Plot.getDefaultFont() and Tools.getNumberFromList() methods.
  • Thanks to Herbie Gluender, added the GenericDialog.getLabel() and FHT.getRawPowerSpectrum() methods.
  • Thanks to Kenneth Sloan, added the ImageProcessor.getForegroundValue() method.
  • Thanks to Curtis Rueden, added the GUI.getParentFrame() method and made GenericDialog.getParentFrame() private again.
  • Thanks to Hidenao Yamada, fixed a bug that caused the getDirectory() and getFileName() methods of the FileInfoVirtualStack class to always return null.
  • Thanks to Norbert Vischer, fixed a bug that caused the File>Import>Image Sequence command to not ignore subdirectories.
  • Thanks to Michael Cammer, fixed a 1.52v regression that caused recording to not work correctly when Preview was checked in a filter dialog.
  • Fixed a 1.52o regression that caused the Help>Examples>JavaScript>FFT Filter script to display an error message.
  • Thanks to 'Eljonco', fixed a 1.52v regression that caused the Threshold tool to sometimes freeze ImageJ.

New in ImageJ 1.52v (Apr 15, 2020)

  • Thanks to Norbert Vischer, macro error messages include the call stack. (example).
  • Added a "Set default directory" code choice to the Edit>Options>Startup dialog.
  • Thanks to Laurent Thomas, the RoiManager class is now iterable.
  • The run("Viridis") macro function now works on Fiji (example).
  • Thanks to Fred Damen, Java compiler error messages use the default editor font.
  • Thanks to Fred Damen and Michael Schmid, added the Math.erf(x) macro function.
  • Added the Overlay.useNamesAsLabels(boolean) macro function (example).
  • Thanks to Michael Schmid, added the Fit.getEquation(index,name,formula,macroCode) macro function (example).
  • Thanks to 'Odinsbane', added the ByteProcessor.skeletonize(foreground) method, where 'foreground' is either 0 or 255.
  • Thanks to Laurent Thomas, added the ResultsTable.getResultsTable(title) method.
  • Thanks to 'Max1', fixed a bug that caused the Edit>Selection>Scale command to not maintain the selection name, group, fill color, point type and point size.
  • Thanks to 'Odinsbane', fixed a bug that caused the ByteProcessor.skeletonize() method to not work correctly with objects touching the image edge.
  • Thanks to Stefan Helfrich and Olivier Burri, fixed a bug that caused the position of ROIs added to the ROI Manager using RoiManager.setRoi() to sometimes change.
  • Thanks to Michael Schmid, fixed a bug that sometimes caused GenericDialogs to throw an exception.
  • Thanks to Jeremy Adler, fixed a bug where changing the LUT resets the display range.
  • Thanks to 'Sh_Ty', fixed a bug the caused the Analyze>Tools>Calibration Bar command to throw an exception in headless mode.
  • Thanks to Michael Schmid, fixed a bug that caused plots with custom symbols to use the wrong color or generate an error.
  • Thanks to Nicolas De Francesco, fixed a 1.52u regression that caused incorrect straight line length measurements with spatially calibrated images.
  • Thanks to Peter Haub, fixed a 1.52u regression that caused the cursor position to not be aligned with the drawing position when creating a polygon ROI.
  • Thanks to 'Professor_OAT', fixed a 1.52s regresson that caused the deleteRows() macro function to throw an exception when deleting rows in a non-numeric table.

New in ImageJ 1.52u (Apr 15, 2020)

  • ROI enhancements, thanks to Michael Schmid
  • Line and point selections have integer coordinates at pixel centers when displayed at high magnification. Area selections have integer coordinates at the top-left corner of pixels.
  • All interactively created ROIs, except rectangles and ovals, are created with subpixel resolution when the magnification is above 150%.
  • Removed the "Sub-pixel resolution" option from the Edit>Options>Plots dialog.
  • The Line to Area command is faster and more accurate
  • The Straighten command is more accurate.
  • The Image>Info command displays more information about ROIs.
  • Long-click to select ROIs from overlays now also works with lines.
  • The Measure command uses Line to Area instead of Straighten to get statistics from segmented and freehand lines with a width geater than one.
  • Fixed a bug that could (rarely) cause an exception during "wipe back" when drawing a polygon or polyline. In "wipe back" mode, the mouse behaves like an eraser when moved backwards with alt key down.
  • Thanks to Nicolas De Francesco, added the Edit>Selection>Fit Rectangle command.
  • Thanks to 'Dcolam' and Jan Eglinger, the Edit>Selection>Enlarge command no longer has a 255 pixel limit.
  • Thanks to Peter Bankhead, the default TIFF reader uses the HandleExtraFileTypes plugin when it is unable to open a file. As an example, .svs files dragged and dropped on the "ImageJ" window are now opened by the Bio-Formats plugin.
  • Added the Help>Examples>JavaScript>Overlay Text example.
  • Thanks to Laurent Thomas, added a "Install Keypad Shortcuts" command to the ROI Menu tool. Add
  • call("ij.plugin.MacroInstaller.installFromJar", "/macros/RoiMenuTool.txt+");
  • to the Edit>Options>Startup dialog to have the shortcuts automatically installed on startup.
  • Thanks to Laurent Thomas, the commands in the ROI Menu tool and the "Group" setting in the ROI Manager's Properties dialog are recordable.
  • Added the Math.abs(n), Math.acos(n), Math.asin(n), Math.atan(n), Math.atan2(n1,n2), Math.ceil(n), Math.cos(n), Math.exp(n), Math.floor(n), Math.log(n), Math.log10(n), Math.min(n1,n2), Math.max(n1,n2), Math.pow(n1,n2), Math.round(n), Math.sin(n), Math.sqr(n), Math.sqrt(n) and Math.tan(n) macro functions.
  • Added the RoiManager.setGroup(group) and RoiManager.selectGroup(group) macro functions.
  • Thanks to Ken Gilbert, added the getValue("image.size") macro function.
  • Thanks to Laurent Thomas, added the setOption("WaitForCompletion",false) macro function, which causes the next exec() call to return an empty string and not wait for the command being executed to finish.
  • Thanks to Nortbert Vischer, added the Array.sort(array1,array2,array3...) macro function (example).
  • Thanks to Volker Backer, added the ImagePlus.resize() method, which is recorded by the Image>Scale and Image>Adjust>Size commands.
  • Thanks to Fred Damen, added the Plot.setWindowSize() method.
  • Thanks to Lewis Muir, fixed a bug the caused the Pixel Inspection Tool's red selection box to be included with the image when saving in GIF, JPEG or PNG format.
  • Thanks to 'cooketho', fixed a bug that caused the Edit>Copy to System command to sometimes not work as expected with composite images.
  • Thanks to Fred Damen, fixed bugs that caused the TextRoi.setJustification() and TextRoi.drawPixels() methods to not work as expected.
  • Thanks to Nicolas De Francesco, fixed a bug that caused empty tables to not be opened correctly.
  • Fixed a bug that caused the Color Picker to not work correctly if the GUI scale was greater than one.
  • Thanks to Michael Schmid, fixed a bug that could cause a thread deadlock in plugins using the ImageListener interface.
  • Thanks to Michael Schmid, fixed a bug that caused the "List coordinates" option in the Edit>Selection>Properties dialog to ignore the "Origin" setting in the Image>Properties dialog.
  • Thanks to 'sebi06', fixed a 1.52p regression that caused the particle analyzer to thow an exception in headless mode.

New in ImageJ 1.52t (Apr 15, 2020)

  • Thanks to Laurent Thomas, added a "Group" field to the Edit>Selection>Properties dialog and an "ROI Menu" tool to the toolbar's >> menu.
  • Thanks to Norbert Vischer, added support for superscripts and subscripts in plot axis labels (example).
  • Thanks to Norbert Vischer, added a "Separate Image" option to the "Location:" menu of the Analyze>Tools>Calibration Bar dialog.
  • Selection handles are larger.
  • Added a "Bolder selections" ("Roi.setDefaultStrokeWidth(2);") code choice to the Edit>Options>Startup dialog.
  • Thanks to Mark Rivers, the Help>Examples>JavaScript>TeraByte VirtualStack example now generates test patterns and supports multiple image types.
  • Thanks to Laurent Thomas, added the Roi.getDefaultGroup, Roi.setDefaultGroup(group), Roi.getGroup, Roi.setGroup(group), Roi.getDefaultStrokeWidth and Roi.setDefaultStrokeWidth() macro functions, and the corresponding Roi class methods.
  • Added the following macro language string functions, where 's' is a string variable:
  • s.charAt(i), s.contains(s2), s.endsWith(s2), s.indexOf(s2), s.lastIndexOf(s2), s.length, s.matches(s2), s.replace(s1,s2), s.startsWith(s2), s.substring(i1,i2), s.substring(i), s.toLowerCase, s.toUpperCase and s.trim.
  • Thanks to Stephen Royle, fixed a bug on macOS that caused the command-h keyboard shortcut (ImageJ>Hide ImageJ) to not work.
  • Thanks to Mark Rivers, fixed a bug that caused the cursor location and pixel value to not be displayed in the status bar for animating stacks.
  • Thanks to Jeff Spector and Michael Schmid, fixed a bug that caused the Edit>Selection>Line to Area command to not work as expected.
  • Thanks to Norbert Vischer, fixed a bug that caused a misleading error message to be displayed when using the saveAs(format,path) macro function to save in "jpg", "png" or "gif" format and the file path was incorrect.
  • Thanks to Michael Schmid, fixed a bug that caused macro recording to not work correctly if "Non-blocking filter dialogs" was enabled in the Edit>Options>Misc dialog.
  • Thanks to Michael Kaul, fixed a bug that caused the GenericDialog.addSlider() method to not use enough digits to the right of the decimal point if the value of the 'stepSize' argument was very small.
  • Thanks to Michael Schmid, fixed several live profile plot and LineWidthAdjuster bugs.
  • Thanks to Norbert Vischer, fixed a bug that caused the Image>Overay>Flatten command to throw an exception when flattening hyperstacks.
  • Thanks to Michael Schmid, fixed a bug that caused dialogs with only buttons to put the focus on the first button, which is not the "OK" button on MacOS and Linux.
  • Thanks to John Fozard and 'mountain_man', fixed a bug that caused angle measurements of lines a few pixels in length to be incorrect.
  • Thanks to 'SarenT', fixed a bug that caused the ImagePlus.getShortTitle() method to truncate file names containing spaces.
  • Thanks to Norbert Vischer, fixed a bug that caused a "Has Calibration Bar" error when attempting to adjust brightness and contrast after clicking on "Cancel" in the Analyze>Tools>Calibration Bar dialog.
  • Thanks to Fernando Garcia-Polite, fixed a 1.52q regression that caused the run("Point Tool...",options) macro function to no longer work.
  • Thanks to Michael Schmid, fixed a 1.52q regression that caused duplicate recordinging of non-blocking dialogs.
  • Thanks to Dorai Iyer, fixed a 1.52s regression that caused characters entered using the text tool to sometimes be repeated.
  • Thanks to Rodrigo Goncalves and Curtis Rueden, fixed a 1.52q regression that caused the "Movie (FFMPEG)" plugin to throw a NullPointerException.

New in ImageJ 1.52s (Apr 15, 2020)

  • Thanks to 'LPUoO', added the Plugins>Utilities>Commands command, which opens a list of commonly and recently used commands.
  • By default, image windows now open just below the "ImageJ" window.
  • Thanks to Norbert Vischer, adding an exclamation mark to showStatus() messages avoids status bar flicker (example).
  • Thanks to Michael Schmid, the Process>Filters>Convolve dialog displays feedback on the kernel as it is modified.
  • Added the Macros>Set as Repeat Command command to the macro editor. After running this command, the selected macro code will run each time you press 'r', the shortcut for the Process>Repeat Command command.
  • Thanks to Jerome Mutterer, added a "Splash Screen" code choice to the Edit>Options>Startup dialog.
  • Changed the shortcut for Process>Repeat Command to 'r' and the shortcut for File>Revert to shift-r.
  • Added a "Reuse 'FFT of...' window" option to the Process>FFT>FFT Options dialog.
  • Thanks to Peter Haub, chroma subsampling is disabled when saving in JPEG format if the Quality setting (Edit>Options>Input/Output) is 90 or higher, resulting in higher quality images but larger file sizes.
  • Thanks to Karen Collins, improved the FITS Writer.
  • Added the Help>Examples>JavaScript>JPEG Quality Plot example.
  • Removed the obsolete "Draw grid lines" option from the Edit>Options>Plot dialog.
  • Thanks to Michael Schmid, the ImagePlus.updateAndDraw() method adds a scroll bar to the image window if the stack size has changed to greater than one.
  • Thanks to Stein Rorvik, added the File.getDefaultDir, File.setDefaultDir(path), String.trim(string) and String.join(array) macro functions.
  • Thanks to Peter Haub, added the JpegWriter.disableChromaSubsampling() method (example script).
  • Added the ImageProcessor.setFontSize() and Plot.setFontSize() methods.
  • Thanks to 'kefe' and Herbie, fixed a bug that caused the Stack to Images command to use slice labels as image titles even when they contained "/", "" or ":" characters.
  • Thanks to 'sudgy' and Jan Eglinger, fixed a bug the caused iteration over the points contained in an ROI to throw an exception for rectangular ROIs.
  • Thanks to Norbert Vischer, fixed a bug that caused the options dialogs for the Rounded Rectangle, Multi-point and Arrow tools to generate "Duplicate keyword" errors when the Recorder was running.
  • Thanks to Peter Haub, fixed a bug that caused the Image Calculator to not work as expected with RGB images when using the "Difference" operator and the "32-bit (float) result" option was enabled.
  • Fixed a bug that caused the "Font size" setting in the Edit>Options>Plots dialog to be ignored.
  • Thanks to Stein Rorvik, fixed a bug that caused the run("Calibration Bar...",options) macro function to ignore calls to setOption("AntialiasedText",boolean).
  • Thanks go Sethur, worked around a Windows 10 and OpenJDK bug that caused the "thumb" on scrollbars to be hard to see.
  • Thanks to Stein Rorvik, fixed a bug that caused the Analyze>Set Scale command to not be correctly recorded.
  • Thanks to Sethur, fixed a bug that caused the Image>Stacks>Tools>Substack Maker command to not carry over the calibration of hyperstacks.
  • Thanks to Sethur, fixed bugs that caused the DICOM reader to not correctly open multi-frame DICOMs, and 16-bit signed DICOMs, with RescaleSlope=1 and RescaleIntercept!=0.
  • Thanks to Stein Rorvik, fixed a macro interpreter bug that prevented array functions like newArray() and split() from being used as arguments to user-defined functions.
  • Thanks to Stein Rorvik, fixed a bug that caused the Window menu to not be updated when saving a table.
  • Thanks to Stein Rorvik, fixed a bug that caused the Image>Transform>Translate command to ignore overlays.
  • Thanks to Stein Rorvik, fixed a bug that caused right justified text in overlays to not be translated correctly.
  • Thanks to Stein Rorvik, worked around a Java bug that caused the OpenDialog.setDefaultDirectory(path) method to sometimes not work as expected on Windows when the path used "/" separators.
  • Thanks to Stein Rorvik, fixed a bug that caused macros calling open("") to not be aborted when the user clicked "Cancel" in the file open dialog and "Use JFileChooser to open/save" was enabled in the Edit>Options>Input/Output dialog box.
  • Thanks to Nicolas De Francesco, fixed a bug that caused Process>FFT>Custom Filter to only process the current stack slice even though "Process entire stack" was checked in the dialog box.

New in ImageJ 1.52r (Apr 15, 2020)

  • Plot enhancements, thanks to Michael Schmid
  • The More>> menus have immediate preview.
  • New More>>Use Template menu (also with immediate preview), useful for creating plots with the same style.
  • Clicking into a rectangular area next to an axis shows the corresponding axis dialog.
  • When adding a curve to a "Live" plot, it remains when the plot is updated.
  • Thanks to Jan Eglinger, saving TIFF images and stacks to network drives is up to 10 times faster.
  • Thanks to Marcel Boeglin, the title of the selection list created by Image>Overlay>List Elements includes the image name. And, when you double click on a line, the image associated with the list is activated, the corresponding selection is activated and stacks are set to the selection position.
  • Thanks to Michael Schmid, Process>Filters>Gaussian Blur now uses a Thread Pool, reducing overhead and making it faster for small images.
  • Thanks to Stein Rorvik, you can now separately view and set the X, Y and Z dimension units in the Image>Properties dialog box.
  • Thanks to Ryan Siu, the double click interval used to complete a polygon selection is reduced from 500ms to 250ms and a confirmation dialog is displayed when completing the selection and there are more than 25 points.
  • Thanks to Stein Rorvik, the slider in the Image>Transform>Rotate dialog now shows the angle using two decimal places and the slider arrows increment/decrement by 0.1 degrees. Use the keyboard arrow keys as a shortcut to finely adjust the angle.
  • Thanks to 'felix.b', labels of multi-point tool markers get larger as the markers get larger and there are two new marker sizes ("XXL" and "XXXL").
  • Thanks to Stein Rorvik, the Image>Adjust>Coordinates command can now be used to set the Z unit.
  • GenericDialogs display an error message if show() is called instead of showDialog().
  • Added the getDir("downloads") macro function and the IJ.getDir("downloads") method.
  • Thanks to Stein Rorvik, added the Roi.getPosition(channel,slice,frame), Roi.setPosition(channel,slice,frame), Stack.setXUnit(), Stack.setYUnit(), Stack.setUnits(x,y,z,time,value), Stack.getOrthoViews(x,y,z), Stack.getOrthoViewsIDs(xy,yz,xz), File.getDirectory(path) and File.getNameWithoutExtension(path) macro functions.
  • Thanks to Leroy Olivier, added the Stack.getPointPosition(index) macro function.
  • Added the IJ.openAsByteBuffer() method (example).
  • Thanks to Michael Schmid, fixed a bug that caused the getInfo("window.title") macro function to not work as expected after opening a large text file using open("/path/to/largeFile.txt").
  • Thanks to Stein Rorvik, fixed a bug that caused min/max values of calibrated 16-bit images to be shown without decimals in the "B&C" dialog.
  • Thanks to Deborah Schmidt, fixed a bug that caused Fiji users to not be able to update via HTTPS through a proxy.
  • Worked around a macOS bug that caused the keyboard arrow keys to not function as shortcuts for the increment/decrement arrows in GenericDialog sliders.
  • Thanks to Marcel Boeglin, fixed a bug that could cause the particle analyzer to throw an exception when creating an overlay and no particles were detected.
  • Thanks to Noreen Walker, fixed a bug that caused the image type to unexpectadly to change to COLOR_256 when using the "glasbey" LUT.
  • Thanks to 'mountain_man', fixed a bug that caused images to not be displayed correctly if a LUT was applied before the image was shown.
  • Thanks to 'mountain_man', fixed a bug that caused 8-bit PNG images with LUTs to open as type COLOR_256.
  • Thanks to Jan Brocher, fixed a bug that caused the Edit>Selection>Create Selection command to ignore the "Black background" setting with non-thresholded binary images.
  • Thanks to 'mountain_man', fixed a bug that caused ImageJ to not be be able to open TIFF files saved without a file path.
  • Thanks to Birgit Moeller, fixed a bug that caused the "Label" column to not be sorted when using the "Sort" command in Results tables.
  • Thanks to lguerard and mountain_man, fixed a bug that caused an ROI's hyperstack position to be lost when adding it to the RoiManager.
  • Thanks to Philippe Carl and Michael Schmid, fixed a bug that caused OvalRoi.getMask() to sometimes return a zero-width mask.
  • Thanks to Francois Gannier and Michael Schmid, fixed a 1.52o regression that caused the "Log" window to unexpectedly become the active window.

New in ImageJ 1.52q (Oct 28, 2019)

  • Thanks to Michael Schmid, added the "Non-blocking filter dialogs" option to Edit>Options>Misc. The Convolve, Mean, Median, Minimum, Maximum, Variance and Image>Math commands use NonBlockingGenericDialogs when this option is enabled.
  • "Save changes?" dialogs on Windows and Linux now use "Don't Save", "Cancel" and "Save" buttons.
  • Thanks to Norbret Vischer, added the Dialog.addMessage(string,fontSize,fontColor) macro function (example).
  • Thanks to Noreen Walker, the Image>Stacks>Statistics command and the StackStatistics class now calculate the median of non-float images.
  • Drag and drop opening of images, tables and LUTs is recorded.
  • Thanks to Michael Schmid, added the Plot.showValuesWithLabels() macro function and the Plot.getResultsTableWithLabels() method. Both create tables that use legend labels and/or axis labels as column headings. The List, Save Data and Copy All Data plot window commands also now use labels.
  • Thanks to Jerome Mutterer, added the getValue("Length") macro function.
  • Thanks to Jerome Mutterer, added the IJ.pad(string,digits) macro function and method.
  • Thanks to Michael Schmid, the ImagePlus lock() and unlock() methods now support multiple lock/unlock operations by the same thread.
  • Added the IJ.getValue(imp,measurement) method, where 'measurement' is "Area", "Mean", "StdDev", etc.
  • Thanks to Stein Rorvik, fixed a bug that caused File>Import>Image Sequence to not correctly handle RGB48 images when "Use virtual stack" was enabled.
  • Thanks to Francois Gannier, fixed a bug that caused the unit to not be set when "Function:" was set to "None" in the Analyze>Calibrate dialog.
  • Thanks to 'Matthew', fixed bugs that cause the Table.deleteRows() macro function and IJ.deleteRows() method to not update particle analyzer overlays.
  • Thanks to Norbert Vischer, fixed bugs that caused tables with missing columns or rows to not be opened correctly.
  • Thanks to Sara Vecchio and Michael Schmid, fixed a bug that caussed the curve fitter to throw an exception if all data points contained NaNs.
  • Thanks to Robert Haase, fixed a bug that caused Process>Find Maxima to throw an exception in Fiji headless mode.
  • Thanks to Stephen Royle, fixed a bug that caused the run("Fill") macro function to ignore setColor(pixelValue) calls.
  • Thanks to 'mendel', fixed a bug that caused enlarged ROIs to be shifted if the polygon defining the original ROI had points outside the filled polygon.
  • Thanks to Michael Schmid, fixed a bug that could cause ImageJ to freezes when running macros that manipulate stacks.
  • Thanks to Norbert Vischer, fixed a bug that caused the numeric field in GenericDialog sliders to be too narrow when the maximum value was greater than 9999.
  • Thanks to Norbert Vischer, fixed a bug that caused the getValue(x,y) macro function to not interpolate when x or y were real numbers.
  • Thanks to Norbert Vischer, fixed a bug that caused the getPixel(x,y) macro function to not return raw pixel values when x or y were real numbers.
  • Thanks to 'mountain_man', fixed a bug that caused line selections to not be correctly converted to ShapeRois.
  • Thanks to Jeremy Adler, fixed a regression that caused the the makeSelection(10, xpoints, ypoints) macro function to throw an exception.
  • Thanks to Dan McDonald, fixed a regression that caused the Raw File Opener to throw an exception.
  • Fixed a 1.52a regression that caused tables created by the gel analyzer to not have row numbers.
  • Thanks to Hyung-song Nam and Curtis Rueden, fixed a 1.52o regression that caused the Channels tool on macOS to become unresponsive.
  • Thanks to Florian Jug, fixed a 1.52o regression that caused the "Auto" button in the "B&C" tool to not have focus on macOS.

New in ImageJ 1.52p (Oct 28, 2019)

  • ImageJ displays a warning dialog before deleting a multi-point selection.
  • Thanks to 'alex', the FITS Reader no longer flips images vertically so inspection of pixels will produce the expected values.
  • Thanks to Jerome Mutterer, added the getValue(measurement) macro function, where 'measurement' is "Mean", "Median", "Feret", etc. (example).
  • Added the getValue(x,y) macro function and the ImageProcessor.getValue(x,y) method.
  • Thanks to "Herbie", restored macro support for the "lightGray", "darkGray" and "pink" named colors.
  • Thanks to Somsubhro Chaudhuri, added the getValue("selection.angle") macro function and the Rotator.getAngle() method.
  • Added the getValue("selection.size") macro function.
  • Added the setOption("CopyHeadings",boolean) macro function.
  • Thanks to Stein Rorvik, added the Roi.setAntiAlias(boolean) macro function, which can be used to control antialiasing when drawing selections (example).
  • Thanks to 'MLdish', added the ParticleAnalyzer.setSummaryTable() method (JavaScript example).
  • Thanks to Wilhelm Burger, added the Menus.add(menuPath,class) method.
  • Thanks to Philippe Carl, added the RoiManager.getErrorMessage() method.
  • Thanks to Laurent Thomas, updated the Javadoc of the MaximumFinder.getMaxima() methods to make it clearer that the npoints variable of the returned Polygon is the number of maxima found, not the length of the xpoints variable.
  • Made the Toolbar.builtInTools array public.
  • Thanks to Mikael Eriksson, fixed a bug that caused the particle analyzer's "Summary" table to not be accessible in macros run from the command line using the -batch option.
  • Thanks to Andrew Clark, fixed a bug that caused Edit>Undo to delete all stack slices except the current one after using the flood fill tool.
  • Thanks to 'Nhthayer', fixed a bug that caused imageJ to incorrectly read TIFF stacks created by the Python tifffile package when the "imagej=True" option was used.
  • Thanks to Marcel Boeglin, fixed a bug that caused the Image>Adjust>Size command to throw an exception with XYCT hyperstacks.
  • Thanks to Francisco Romanos, fixed a bug that caused the run("Scale...",options) macro function to ignore the 'interpolate' options keyword.
  • Thanks to Glen MacDonald and Curtis Rueden, fixed a bug that sometimes caused macros in the "More Tools" (>>) menu to be sorted randomly.
  • Thanks to Philippe Carl, fixed a bug that caused ImagePlus.getStatistic() and ImageProcessor.getStatistic() to not treat one point selections the same way.
  • Thanks to Andrew Sonnier, fixed a bug that caused the particle analyzer to not be recorded if the "In situ" option was used.
  • Thanks to Mikael Eriksson, fixed a bug that caused the run("Colors...",options) macro function to throw an exception when called from a -batch command line macro.
  • Thanks to Stein Rorvik, fixed a bug that caused the Overlay.drawLine() macro function to not work correctly when used in conjuction with Overlay.setColor() and/or Overlay.setPosition().
  • Thanks to 'Niederle', worked around a bug that caused the run("Gamma...", "value=x.xx") macro function to fail in Fiji headless mode.
  • Thanks to 'fieryice12', fixed a bug that caused the Plot.showValues macro function to fail in batch mode.
  • Thanks to NorbertVischer, fixed a bug that caused the Image>Duplicate command to throw on exception if the ROI was outside the image.
  • Thanks to Uwe Schmidt, improved the support for multiple screen setups:
  • Placement of first image window is more predictable.
  • Reliably determine the correct screen for a given location or window, for example to determine if a window can be enlarged.
  • If there is ambiguity about which screen to use, the one that contains the main ImageJ window will be chosen. For example Plugins>Utilities>Capture Screen and Windows>Tile use the screen with the main ImageJ window.
  • Dialogs are shown on the screen containing the main ImageJ window.
  • Maximized image windows no longer revert to the main screen.
  • Improved behavior of "+" (Image>Zoom>In) command.
  • Code simplification, especially by removing special cases for Linux.

New in ImageJ 1.52o (Oct 28, 2019)

  • Added the Help>Examples>Macro>Curve Fitting and Help>Examples>JavaScript>Curve Fitting examples.
  • Thanks to Tiago Ferreira, stack and hyperstack scrollbars now apply the Edit>Options>Appearance "GUI scale".
  • Thanks to 'mountain_man', tables can be sorted alphabetically.
  • Thanks to Neil Switz, the Process>FFT>Inverse FFT command displays a warning message if the "FFT of ..." image has been modified but no pixels have been set to 0 or 255.
  • Thanks to Stein Rorvik, copies of IJ_Props.txt and/or IJ_Prefs.txt in the ImageJ folder override the corresponding files in the default locations.
  • Thanks to Stein Rorvik, the Table.update macro function is called automatically when a macro finsihes and the Table.setSelection(), Table.getSelectionStart and Table.getSelectionEnd functions no longer require that a title be specified.
  • Thanks to Philippe Carl, the isKeyDown() and setKeyDown() macro functions now support the control key (example).
  • Thanks to Stein Rorvik, the setColor() and setLineWidth() macro functions no longer abort the macro if no image is open.
  • Thanks to Sian Culley, removed "Bridge" and "Lena" from the File>Open Samples menu. Macros and scripts that use these images will continue to work.
  • Thanks to Stein Rorvik, the run("Apply LUT") macro function no longer shows an error message with images that have a display range of 0-255.
  • Thanks to NorbertVischer, Philippe Carl and Stein Rorvik, added the Array.deleteValue() and Array.deleteIndex() macro functions (example).
  • Thanks to Stein Rorvik, added the Table.setLocationAndSize() macro function.
  • Thanks to Philippe Carl, added the Dialog.createNonBlocking() macro function (example).
  • Added the ImagePlus.crop(options) method, where 'options' can be can be "stack", "slice" or a range (e.g., "20-30").
  • Thanks to Stein Rorvik, fixed a bug the caused macros using a function key shortcut to not work if the shift key was down.
  • Thanks to Salim Kanoun, fixed a bug in the DICOM reader that caused it to sometimes not correctly open PT DICOM stacks.
  • Thanks to Stein Rorvik, fixed a rounding error with setMinAndMax() on some density calibrated 8-bit images.
  • Fixed non-macro recording of the Image>Duplicate command.
  • Thanks to Norbert Vischer, fixed a bug that caused the doWand(x,y,tolerance,"Smooth") macro function to cause the macro language's &var variable passing method to fail.
  • Thanks to Jan Eglinger, fixed a bug that caused log histogram plots to be malformed if the line width was set to greater than 1.
  • Thanks to Stein Rorvik, fixed a bug that caused the Table.title and getInfo("window.title") macro functions to sometimes not work with custom tables.
  • Thanks to Stein Rorvik, fixed bugs related to saving and opening empty tables.
  • Thanks to Norbert Vischer, fixed a bug that caused the Mac menu bar to disappear when activating the Channels, ColorPicker, ContrastAdjuster and ThresholdAdjuster dialogs.
  • Thanks to Norbert Vischer, fixed a bug that caused the "Save changes?" dialog to not be the front-most window when quitting ImageJ.
  • Thanks to Tihamer, fixed a bug that caused the CurveFitter.getResultString() method to fail if there was a fitting error.
  • Thanks to Ellen Arena, fixed 1.52m regression that caused the Edit>Selection>Create Selection command to not work as expected with non-thresholded images.
  • Thanks to Laurent Thomas, fixed a 1.52n regression that caused the MaximumFinder.getMaxima() method to always return 0 points.
  • Thanks to Gabriel Landini, fixed a regression that could cause the ImagePlus.setSlice() method to throw an exception.

New in ImageJ 1.52n (Oct 28, 2019)

  • Thanks to Ellen T Arena, fixed a 1.52m regression that caused the Edit>Selection>Create Mask command to not preserve spatial calibration.

New in ImageJ 1.52m (Oct 28, 2019)

  • ROI improvements thanks to Michael Schmid, including more accurate Roi.contains, better ShapeRoi filling, improved ShapeRoi.clone(), improved Roi Manager Split, better ShapeRoi length calculation, more accurate perimeter for ovals and rounded rectangles, more accurate MinFeret, removed point selection 32k slice limit, ability to press ESC to abort creation of polygonROI, and addition of Roi.getFeretPoints() macro function (example).
  • Thanks to Tiago Ferreira, the "GUI scale (0.5-3.0)" setting in the Edit>Options>Appearance dialog is now applied to almost all remaining dialogs and widgets, including the Histogram and Plot Windows and the Threshold widget.
  • Thanks to Norbert Vischer, added the File>Show Folder submenu.
  • Thanks to Norbert Vischer and Michael Schmid, changed "Noise Tolerance" to "Prominence" and added a "Strict" option to the Process>Find Maxima dialog.
  • Thanks to Hidenao Yamada, the File>Import>Raw command now uses long instead of int for the gap between images.
  • Thanks to Stein Rorvik, Image>Stacks>Tools>Set Label and Image>Stacks>Tools>Remove Slice Labels work with single images.
  • On macOS, the Help>Update ImageJ command displays a message explaining how to work around Path Randomization if the ImageJ home directory is read-only and the file path starts with "/private/var/folders/".
  • Thanks to Christophe Leterrier, the File>Import>Image Sequence command now always sorts the files names on macOS.
  • The File>Save As>Image Sequence command saves single line slice labels when saving in TIFF format.
  • Thanks to Norbert Vischer, the File>Revert command now works with virtual stacks.
  • Thanks to Alicia Daeden, the makeLine() and makePolygon() macro functions no longer have a 200 point limit.
  • Thanks to Steve Fallows, File>Import>Raw only gets .raw file parameters from the filename when it uses 'x' delimiters.
  • Thanks to Gilles Carpentier, added the is("line") and is("area") macro functions.
  • Thanks to Albert Cardona, added the ImagePlus.updateVirtualSlice() method.
  • Thanks to Michael Kaul, added the Plot.update() method.
  • Thanks to 'cyrilturies' and Jan Eglinger, fixed a bug that caused Results table labels to not be displayed for line measurements if no measurement options were enabled in Analyze>Set Measurements.
  • Thanks to Stein Rorvik, fixed rounding errors in the Image>Scale command.
  • Thanks to Norbert Vischer, fixed a bug that caused the toolbar to be corrupted when opening an overlay containing multi-point selections.
  • Thanks to Norbert Vischer, fixed bugs that caused numerous "//setTool()" statements to be recorded when opening ROI sets or overlays that contain multi-point selections.
  • Fixed a bug that caused multi-point selections to lose their 'pointBeforeDeleting' property when saved and re-opened.
  • Thanks to Michael Schmid, fixed a bug that caused Process>Filters>Gaussian Blur to not be multithread-safe.
  • Thanks to Robert Lockwood, fixed a bug that caused the File>Save command to not be correctly recorded.
  • Thanks to Albert Cardona, fixed bugs that caused Edit>Selection>Restore Selection, and setting an ROI from the ROI Manager, to not emit an Roi MODIFIED event.
  • Thanks to Dr-Frog and Jan Eglinger, fixed a bug that caused the ImageProcessor.fillOutside(Roi) method to modify the Roi passed as the argument.
  • Thanks to Teresa Haider, fixed a bug that sometimes caused Image>Transform>Bin to not correctly display the output image.
  • Thanks to Stein Rorvik, fixed a 1.52d regression that caused File>Import>Image Sequence to use the image label (if present) as the slice label instead of the filename.
  • Thanks to Gilles Carpentier, fixed a 1.52k regression that caused the particle analyzer to unexpectedly create composite ROIs.
  • Thanks to Jan Eglinger, fixed a 1.52i regression that caused macro string expressions like "s"+a[i]*n to generate an error.

New in ImageJ 1.52k (Mar 26, 2019)

  • Thanks to Albert Cardona and Gabriel Landini, added the "GUI scale (0.5-3.0)" option to the Edit>Options>Appearance dialog, which enables scaling of text in GenericDialogs and in the Command Finder. It also doubles the size of the tool icons if the scale is 1.5 or larger and triples the size if the scale is 2.5 or larger.
  • Thanks to Norbert Vischer, added clickable spaces between the four arrow pairs in plot windows for quickly setting a single plot limit.
  • Thanks to Stein Rorvik, ImageJ now displays a progress bar when duplicating large (>200 megapixel) stacks.
  • Michael Schmid contributed an improved version of the ThresholdToSelection class (Edit>Selection>Create Selection) that always converts single pixel wide lines to traced selections and is up to five times faster.
  • Thanks to Tatsuaki Kobayashi, ImageJ can now open 32-bit float DICOM images.
  • Michael Schmid contributed the FloatArray class, an extendable float array.
  • Thanks to Norbert Vischer, added the Table.setSelection(start,end,title), Table.getSelectionStart(title) and Table.getSelectionEnd(title) macro functions (example).
  • Added the setOption("ScaleConversions",boolean) macro function.
  • Thanks to Robert Haase, fixed a bug that caused the Edit>Selection>Create Selection command to ignore the "Black background" setting when processing non-thresholded binary images.
  • Thanks to Johannes Wibisana, fixed a bug in the Particle Analyzer that caused ROIs added to overlays and the ROI Manager to not exclude interior holes.
  • Thanks to Herbie, fixed a bug that caused the Process>Binary>Make Binary command to incorrectly set the threshold of 8-bit binary images.
  • Thanks to Nicolas De Francesco, fixed a bug that caused the LUT to not be saved in the TIFF header when saving a single-channel image with a custom grayscale LUT.
  • Thanks to Mark Mandelkern, fixed a bug that caused multi-image DICOM files with RescaleSlope!=1.0 to open incorrectly.
  • Thanks to Stein Rorvik, fixed a bug that caused the contrast range to change when converting an 8-bit or 16-bit image to 32-bit.
  • Thanks to Stein Rorvik, fixed a bug that caused the Table.getColumn("Label") macro function to throw an exception.
  • Thanks to Philippe Carl, fixed a bug that caused ImageJ to freeze when opening the Interactive Interpreter on Windows using the ctrl+j keyboard shortcut.
  • Thanks to Jerome Mutterer, fixed a bug that caused ImageJ to fail to open one column tables.
  • Thanks to 'Bio7', worked around a bug that caused toolbar popup menus to not work with OpenJDK 11 and 12 on Windows.
  • Thanks to Ved Sharma, fixed a bug that caused the Histogram command to not behave as expected when "Limit to Threshold" was enabled in Analyze>Set Measurements and there was an invisble threshold.
  • Thanks to Norbert Vischer, fixed bugs in the toScaled(length) and toUnscaled(length) macro functions.
  • Thanks to J Xiong, fixed a 1.52j regression that caused the Image>Overlay>From ROI Manager command to throw an exception.
  • Thanks to Philippe Carl, fixed 1.52j9 regression that made it impossible to enter closing brackets into editor windows using French keyboards.
  • Thanks to Stein Rorvik, fixed 1.52j regression that sometimes caused macro errors to be ignored (examples).
  • Thanks to 'yorgodillo', 'mountain_man' and Jan Eglinger, fixed a 1.52e regression that caused float to 8-bit conversions to be done incorrectly.

New in ImageJ 1.52j (Mar 26, 2019)

  • Added the Plugins>Macros>Interactive Interpreter command (shortcut: "j"), which enables interactive editing and running of macro and JavaScript code in an editor window (example). Type "js" in to switch the language to JavaScript.
  • Thanks to Ved Sharma, point selections with more than 65,535 points can now be saved and reopened (example).
  • Thanks to Philippe Carl, the status bar is updated when adjusting elliptical and rotated rectangle selections.
  • Thanks to Ilan Tal, added the "Ignore Rescale Slope" checkbox to the Edit>Options>DICOM dialog box.
  • Thanks to Michael Schmid, Image>Edit>Resize can now convert a single image to a stack.
  • Thanks to MichaelSchmid, improved the calculation of Feret parameters for composite selections. FeretAngle is now reported (within 0.5 deg), works with pixel aspect ratios different from one and is more accuate due to use of 0.5 deg increments.
  • Thanks to MichaelSchmid, the output of ROI Manager 'AND', 'OR' and 'XOR' operations are, if possible, converted from composite ROIs into simpler polygon ROIs.
  • Thanks to Jerome Mutterer, errors in macro run() statements are now reported using a "Macro Error" dialog that displays the line number.
  • Added the ImagePlus.plotHistogram() method. For examples, run Help>Examples>JavaScript>Histogram Plots.
  • Added the JavaScript-friendly ImageStatistics.histogram() method (example).
  • Added the Overlay.setLabelFontSize(size,options), Overlay.setLabelColor(), Overlay.setStrokeColor() and Overlay.setStrokeWidth() macro functions, and corresponding Overlay class methods (example).
  • Thanks to Jerome Mutterer, added the setIgnoreErrors() and getErrorMessage() methods to the Interpreter class (example).
  • Thanks to Michael Schmid, fixed a bug that caused Image>Edit>Resize to not preserve stack lookup tables.
  • Thanks to Stein Rorvik, fixed Orthogonal Views bugs that caused freezing, dragging in XZ and YZ views to not work, missing density calibration and incorrect behavior when "Rotate YZ" and "Flip XZ" where enabled in Edit>Options>DICOM.
  • Thanks to Stein Rorvik, fixed a bug that caused particle analyzer overlays to not be specific to the current slice when processing one slice.
  • Fixed a bug that caused the color of overlay labels to be set to black after the image was saved and reopened.
  • Fixed a bug that caused the Image>Overlay>To ROI Manager command to not preserve overlay properties such a label color and scalability.
  • Thanks to Wilhelm Burger, fixed a bug that caused the Roi.setLocation(x,y) method to not work correctly with ShapeRois if x or y were not integers.
  • Thanks to Philippe Carl, fixed a bug that caused the status bar to not be updated, or to not be updated correctly, when moving or changing the length of straight line and arrow selections using the arrow keys.

New in ImageJ 1.52i (Mar 26, 2019)

  • Thanks to Ved Sharma and Michael Kaul, added the Image>Stacks>Measure Stack command (macro source), useful for plotting stacks using the contextual (right-click) Plot command in Results tables.
  • Thanks to Jerome Mutterer, added the Image>Stacks>Tools>Magic Montage Tools command (macro source).
  • Tables can be sorted using the Sort command in the contextual (right-click) menu or in the Results menu (example).
  • Thanks to Matias Andina, the Image>Transform>Rotate command can now be used interactiely.
  • Thanks to Michael Schmid, added an "F" (Fit All) icon next to the "R" (Reset Range) icon in the bottom-left corner of plot windows.
  • Thanks to Robert Haase and Emanuele Martini, added a "Don't reset range" checkbox to the "Threshold" dialog (example).
  • Added an error bars example to the Help>Examples>Plots>Plot Styles macro.
  • Alphabetized the Image>Stacks>Tools menu.
  • Moved the Image>Stacks>Plot XY Profile command to Image>Stacks>Tools>Plot XY Profile.
  • Thanks to 'Barbara' and Michael Schmid, the Translate command in the ROI Manager remembers the x and y offset values.
  • Thanks to Alex Mironov, added an optional properties string argument to the makePoint() macro function (macro example, JavaScript example).
  • Thanks to Alex Mironov, the setLineWidth() macro function automatically calls Overlay.add() when the line width changes (example).
  • Added the Plot.replace() macro function and method. For examples, run Help>Examples>Plots>Random Data or Help>Examples>JavaScript>Plot Random Data.
  • Thanks to Michael Schmid, added an "Add Fit" commamnd to the Data>> menu of Plot windows.
  • Thanks to Laurent Thomas, ShortProcessor.rotate() and FloatProcessor.rotate() now fill using the value set by setBackgroundValue().
  • Thanks to Kai Barthel, the Analyze>Calibrate command resets the display range of contrast-reduced images.
  • Thanks to Norbert Vischer, the curve fitter now works with datasets containing NaNs.
  • Thanks to Michael Schmid, added the Plot.objectCount macro function.
  • Thanks to Matias Andina, added the setOption("SupportMacroUndo",boolean) macro function (example).
  • Thanks to Michael Schmid, added a constructor for creating a plot from arrays to the PlotContentsDialog class (example).
  • Added the ImagePlus.getSizeInBytes() and PointRoi.getLastCounter() methods.
  • Thanks to Philippe Carl and Michael Schmid, fixed a bug that caused the macro interpreter to incorrectly evaluate string expressions containing numeric arrays indexed using the ++ operator.
  • Thanks to Stein Rorvik, fixed a bug that caused the changeValues() macro funtion to reset the display range of 16-bit and 32-bit images.
  • Thanks to Alex Mironov, fixed a bug that caused setLineWidth(1) in a macro to incorrectly set the line width to the width set in the Edit>Options>Line Width dialog.
  • Thanks to Michael Schmid, fixed a bug that caused the Undo command to not work after rotating an image with "Enlarge image" enabled.
  • Thanks to Matias Andina, fixed a bug that caused the Undo command to not work after cropping or rotating a composite color image.
  • Thanks to Michael Schmid, fixed a bug that caused nudging the end of a line selection with alt-arrow keys to not update a live profile plot.
  • Thanks to Mark Senko and Michael Schmid, fixed a bug that caused profile plots of line selections wider than 1 to differ from profile plots of rectangles of the same size.
  • Fixed a bug that caused DICOM images to be displayed incorrectly if "Open as 32-bit float" was enabled in Edit>Options>DICOM.
  • Thanks to Kenneth Sloan, fixed a bug that caused the Paintbrush Tool (in "Paint on overlay" mode) to delete pre-existing overlays.
  • Thanks to 'mountain_man', fixed a bug that caused the Rescale Slope tag (0028,1053) to be ignored when opening DICOM images and "Open as 32-bit float" was not enabled in Edit>Options>DICOM.
  • Thanks to Fred Damen, fixed a file path recording bug that caused a NullPointerException.
  • Thanks to Michael Schmid, fixed a bug that caused buttons in some dialogs (e.g., "B&C" and "Threshold") to not be displayed correctly on macOS when using the Metal look and feel. Opening an Action Bar switches to Metal or use Edit>Options>Look and Feel in Fiji.
  • Thanks to Michael Schmid, fixed a bug that caused plot stacks to not be spatially calibrated.
  • Thanks to Nicolas Stifani, fixed a 1.52h regression on Windows that caused canceled dialog boxes in macros started using the Plugins>Macros>Run command to throw an exception.
  • Thanks to Jerome Mutterer, fixed a v1.52 regression that caused the getMetadata() macro function (without the "info" or "label" argument) to not work as expected.
  • Bob Goldstein updated the ImageJ tutorial (PDF) he wrote for Make Magazine in 2011.
  • Jerome Mutterer updated the Magic Montage toolset to version 1.6:
  • Worked around a v1.52 regression that caused the montage to not be drawn correctly after it was expanded by dragging outside the existing montage with the Montage Shuffler Tool.
  • Added a "?" button that points to the wiki page.
  • Panel labels are now drawn on an overlay.
  • Added Hide Overlay, Show Overlay, Remove Overlay and Copy to System commands to the contextual (right-click) menu.
  • Upgrade by downloading Magic Montage.ijm into the ImageJ/macros/toolsets folder or install using the Image>Stacks>Tools>Magic Montage Tools command.
  • Jacqueline Ross shared the documentation from the 28th New Zealand Conference on Microscopy.
  • Aleksandr Mironov contributed the Buffon Needles macro, which demonstrates the Buffon's Needle Problem.

New in ImageJ 1.52h (Mar 26, 2019)

  • Added the Help>Examples>Plots>Plot Styles and ...JavaScript>Plot Styles examples.
  • The Edit>Selection>Create Mask command works with overlays created by the Brush and Pencil tools.
  • Added a "Help" button to the Brush and Pencil tool dialog boxes.
  • Thanks to Gabriel Landini and Jerome Mutterer, the text tool now creates an "Enter text..." selection when you click (without dragging) on an image and there is no existing selection.
  • Thanks to Gabriel Landini, the "Show on all slices" option (was "Show all") now appears in both the point and multi-point tool dialogs.
  • Thanks to Stein Rorvik, the Analyze>Tools>Synchronize Windows tool now supports use of the "+" and "-" keys for synchronized zooming when the "Image scaling" option is enabled.
  • Thanks to Lorenzo Cangiano, added a "Points" column to the Image>Overlay>List Elements table.
  • Added the Plot.setStyle() macro function. For an example, run Help>Examples>Plots>Plot Styles.
  • Added the IJ.exit() method, which aborts JavaScripts.
  • Thanks to Bio7, fixed a bug that caused images to turn black when assigned an ImageRoi created by the Brush or Pencil tools.
  • Thanks to Stein Rorvik, fixed bugs that caused File>Open Next to sometimes fail when opening images of dissimilar types.
  • Thanks to Michael Schmid, fixed several bugs in the Image>Adjust>Threshold tool, mostly related to 32-bit images.
  • Thanks to Michael Cammer and Michael Schmid, fixed a bug that caused the "Propagate to the other n channels of this image" option of the "Set" command in the "B&C" tool to not work as expected.
  • Thanks to Stein Rorvik and Michael Schmid, fixed a bug that caused an image pasted into a zoomed image to be incorrectly positioned if the pasted image was equal or larger in size than the target image.
  • Thanks to Stein Rorvik, fixed bugs that caused scale bars to be incorrectly positioned on large images and macros to alter default scale bar dialog settings.
  • Fixed a bug that caused keyboard shortcuts for zooming in and out, as well as other shortcuts, to not work when a text selection was active.
  • Thanks to Stein Rorvik, fixed a bug that caused right-justified text added to an overlay by the Overlay.drawString() macro function to not be displayed correctly.
  • Thanks to "hwada", fixed bugs that caused the ImagePlus.setImage(ImagePlus) method to sometimes not work as expected.
  • Thanks to Nathalie Houssin, fixed a bug that caused the Make Substack command to throw an exception when used with hyperstacks opened by the OlympusViewer plugin.
  • Fixed bugs in the ImagePlus.setStack() method.
  • Thanks to Michael Schmid, fixed a bug that caused the "Show All" button in the ROI Manager to not work as expected with point selections.
  • Thanks to Lorenzo Cangiano, fixed a bug that caused programmatically generated overlays of PointRois on stacks to be not shown when saved and reopened.
  • Thanks to Robert Haase, fixed a bug that could cause the PolygonRoi.getTracedPerimeter() method to throw a NullPointerException.
  • Thanks to Hyung-song Nam and Curtis Rueden, fixed a bug that caused keyboard shortcuts to not work with the "Channels" tool.
  • Thanks to Gilles Carpentier, fixed a 1.52f regression that caused the Edit>Selection>Create Mask command to not work as expected if the image had both an roi and an overlay.
  • Thanks to Norbert Vischer, fixed a 1.52g regression that caused multi-channel images to lose color table and display range information after being cropped and saved.
  • Thanks to Stephen Royle, fixed a 1.52h regression that caused the Image>Transform>Rotate 90 Degrees Right (or Left) command to not work as expected with composite images.
  • Plot enhancements, thanks to Michael Schmid:
  • "Save" in plot windows has moved into a new Data>> menu, which includes two additional items: (1) Add from Plot (takes a PlotObject, e.g. data set, text, etc., from a different plot) and (2) Add from Table (adds data from a "Results" table).
  • Values in tables can be be plotted directly using the contextual menu or the Results>Plot command in "Results" tables.
  • Added the Separated Bar type, a bar graph with some space between the columns. For an example, run Help>Examples>JavaScript>Plot Styles.
  • Histogram-like "Bar" plots also work with non-equidistant points along x.
  • Connected Circles fill the circles with the secondary color (= line color), if that color is given and not null.
  • Improved the code for filling bars and "filled" curves.
  • For "Bar" and "Separated Bar", the base line of the plot is y = 0 if the values differ by more than a factor of 2.

New in ImageJ 1.52g (Sep 18, 2018)

  • A text selection in an overlay can be deleted by alt-clicking on it and pressing backspace+delete (on Windows) or command+delete (on Macs).
  • Fixed a bug that caused polygon and polyline selections to lose properties like color, line width and name when a point is added by shift-clicking on an existing point.
  • Thanks to Dave Mason, fixed a bug that caused the File>Import>URL command to not correctly open Hyperstacks.
  • Thanks to Volko Straub, fixed a 1.52f regression that caused getDirectory("") on Windows to return a string ending in "/" instead of the expected "".

New in ImageJ 1.52f (Sep 18, 2018)

  • Thanks to Norbert Vischer, added the Plot.addHistogram() macro function, which plots a histogram from an array (example).
  • Thanks to Norbert Vischer, any currently running macro is aborted when running an installed macro from the Plugins>Macros menu or the editor's Macros menu.
  • Thanks to Michael Schmid, added the "Error Function" [y=a+b*erf((x-c)/d)] curve fit option and the ij.util.IJ.Math.erf(x) method (example).
  • The Edit>Selection>Create Mask command works with line selections and overlays.
  • The "Black background" setting defaults to 'true'.
  • Thanks to Anna Povolna, the "Open all files in folder" and "Use virtual stack" options in the File>Import>raw dialog can be used at the same time.
  • Thanks to 'Sethur', ImageJ no longer sorts imported DICOM stacks by series number (tag 0020,0011) if "Sort images numerically" is not checked in the File>Import>ImageSequence dialog. Also added a recordable 'noMetaSort' option to the options string of the FolderOpener.open(dir,options) method.
  • Thanks to 'Alan', added the createThresholdMask() and createRoiMask() methods to the ImagePlus class. These methods are recorded when using the Edit>Selection>Create Mask command (JavaScript example).
  • Added the recordable Raw.open(), Raw.openAll() and Raw.openAllVirtual() methods (JavaScript example).
  • Thanks to Stein Rorvik, added the DicomTools.getTagName(tag) method.
  • Thanks to Christian Tischer, fixed bugs in the RoiManager.add(ImagePlus,Roi,int) method than caused it to not behave as expected if the ROI name was not null.
  • Thanks to Norbert Vischer, fixed bugs that caused the Edit>Cut and Analyze>Set Scale commands to not set the 'changes' flag.
  • Thanks to Stein Rorvik, fixed a bug that caused the Overlay.drawString macro function to ignore the justification set by the setJustification() function.
  • Thanks to Stein Rorvik, fixed a bug that caused output of the Overlay.drawString() function to be lost when text is added using Overlay.addSelection().
  • Thanks to Lorenzo Cangiono, fixed a bug that caused selections pasted into images to not be saved.
  • Thanks to Mahmoudi Sidi Ahmed, fixed a bug that caused the Analyze>Calibrate command to not work with signed 16-bit images.
  • Thanks to Menelaos Symeonides, fixed an ROI Manager bug that caused the stack position to be ignored when measuring renamed ROIs.
  • Thanks to Ron DeSpain, fixed a bug that caused attempts to add to (by holding shift key down) and subract from (by holding alt key down) elliptical selections to fail.
  • Thanks to Ron DeSpain, fixed a bug that caused the Window>Tile command to overlap the "ImageJ" window with image titles.
  • Thanks to Pete Bankhead, fixed a bug the caused the Process>Batch>Convert command to not work correctly on Macs.
  • Thanks to 'Hamish', fixed a bug that caused the roiManager("delete") macro function to throw an exception when used in a loop.
  • Thanks to Stein Rorvik, fixed a bug that caused one column results tables to not be displayed correctly.
  • Thanks to Stein Rorvik, fixed a bug that caused File>Import>Raw to silently fail when importing a stack and the file size was smaller than the size of a single image.
  • Thanks to Stein Rorvik, fixed a bug that caused the Overlay.drawString() macro function to not correctly display right-justified text.
  • Thanks to Stein Rorvik, fixed bugs that caused the run("Raw...",options) and run("Image Sequence...",options) macro functions to fail silently if the file or folder did not exist.
  • Thanks to Stein Rorvik, fixed a bug that caused the stack title to be incorrect after importing an image sequence on Windows using a file path with forward slashes.
  • Thanks to Stein Rorvik, fixed a bug that caused File>Open Next to not correctly open a non-composite image after having opened a composite image.
  • Thanks to Ved Sharma, fixed an ROI Manager bug that caused a "Rename ROI" dialog do be unexpectadly displayed when running macro using setKeyDown("alt") and makeOval() to create a composite selection.
  • Thanks to Ved Sharma, fixed an ROI Manager bug that caused an exception when saving an ROI set containing a point selection followed by a composite selection.
  • Thanks to Salim Kanoun, fixed a bug that caused RoiManager.addRoi(roi) calls to be ignored if the ROI was a duplicate.
  • Thanks to 'TMC', fixed a bug that caused the ROI Manager's "Interpolate ROIs" command to throw an exception.
  • Thanks to 'Agnieszka', fixed a bug that caused the ImagePlus.getFileInfo() method to throw a NullPointerException.
  • Thanks to Stein Rorvik, fixed a bug that caused the Macros>Evaluate commands in the text editor to not update the Window menu.
  • Thanks to Norbert Vischer, fixed a bug that caused the macro editor to not always abort any existing macro before running another one.
  • Thanks to Manel Bosch, fixed a 1.52e regression that caused image conversions to RGB to not preserve the color coding.

New in ImageJ 1.52e (Jul 16, 2018)

  • The "Threshold" tool no longer resets the display range of 16-bit and 32-bit images.
  • Restored the "Set" button (removed in 1.51r) to the "Threshold" dialog,
  • Thanks to Kai Schleicher, the options string of the FolderOpener.open(dir,options) method can now include a file name filter (example).
  • Added a no-argument constructor to the PointRoi class (example at Help>Examples>JavaScript>Points).
  • Added the Roi.size() method, equivalent to Roi.getPolygon().npoints.
  • Added the FFT.forward(), FFT.multiply(), FFT.inverse() and FFT.filter() methods (JavaScript example).
  • The open("/path/to/file.avi") macro function and the IJ.openImage("/path/to/file.avi") method now open AVI files by default as virtual stacks.
  • Thanks to Volko Straub and Michael Schmid, fixed bugs that caused the ImageProcessor.isInvertedLut() and ImageProcessor.isColorLut() methods to sometimes incorrectly return 'true' with thresholded images.
  • Thanks to Volko Straub, fixed a bug that could cause non-thresholded pixels in 16-bit and 32-bit images to be highlighted in red (example).
  • Thanks to Thomas Boudier and Jan Eglinger, fixed a bug that caused macro file name parameters containing a "]" character to not be read correctly.
  • Thanks to Michael Nonet, fixed a bug caused the median to always be set to zero when measuring line selections.
  • Thanks to Norbert Vischer, fixed a bug that caused errors after running the run("RGB Stack") or run("HSB Stack") macro functions on large images when running Java 8 on macOS.
  • Thanks to Chris Wood and Curtis Rueden, fixed a bug that caused the Image>Stacks>Delete Slice command to deadlock when deleting the last channel of a hyperstack.
  • Thanks to Stein Rorvik, fixed a bug that caused the Process>Math>NaN Background command to throw an exception when attempting to process a non-32-bit stack.
  • Thanks to Stein Rorvik, fixed a bug on Windows that caused text to be pasted into text editor windows at the wrong position.
  • Thanks to Stein Rorvik, fixed a bug that caused print("nn") to do nothing instead of outputting two blank lines as expected.
  • Thanks to 'mryellow', fixed a bug that caused polygonal ROIs with more than 65,535 points to not be saved correctly.
  • Thanks to Stein Rorvik, fixed a bug that caused right justified TextRois. to not be displayed correctly if the fill color was not set.
  • Thanks to Lorenzo Cangiano and Jan Eglinger, fixed a 1.52c regression that caused a "Save changes?" dialog to be unexpectedly displayed when closing an image with a multi-point selection.
  • Thanks to Stein Rorvik, fixed a 1.52d regression that caused density calibration to be lost when duplicating 8-bit and 16-bit images.

New in ImageJ 1.52d (Jun 14, 2018)

  • The Image>Show Info command no longer truncates one line slice labels to 60 charactera.
  • Thanks to Norbert Vischer, the changeValues() macro function can now be used to replace NaNs. (example).
  • Thanks to Mark Histed, when the shift key is down, the display range is no longer changed when stepping forward/back in a stack.
  • Thanks to Hugo, the Process>FFT command displays an error message if the padded image is going to be 65536x65536 or larger.
  • Thanks to Roger Leigh, the IJ.javaVersion() method works with Java 11.
  • Added the IJ.Roi(x,y,w,h) and IJ.OvalRoi(x,y,w,h) methods.
  • Thanks to Gregor and Michael Schmid, added the ImageProcessor.createMask() method (example).
  • Thanks to David Kysela, added the PointRoi.promptBeforeDeleting(boolean) method (example).
  • Thanks to Laurent Thomas, added the ImagesToStack.run(images) method (example).
  • Added the Tools.getStatistics(double[]) method.
  • Thanks to Ximo Soriano and Michael Schmid, fixed a bug that could cause the newImage("Name","RGB noise",width,height,1) macro function to throw an exception.
  • Thanks to Ruben Gres, fixed a bug that caused the Overlay.duplicate() method to not keep the 'isCalibrationBar' and 'selectable' settings.
  • Thanks to David Schreiner, fixed bugs that caused the File>Import>Image Sequence command to not correctly handle image metadata longer then 60 characters.
  • Thanks to 'yahbai', fixed bugs that caused the saveAs("jpg",path), saveAs("gif",path) and Overlay.measure macro functions to not work in headless mode.
  • Thanks to 'yahbai', fixed a bug that caused the ImagePlus.deleteRoi() method to throw an exception in headless mode.
  • Thanks to Michael Kaul, fixed a 1.52a regression that caused an EOFException when opening Analyze format RGB images.
  • Thanks to Bill Christens-Barry, fixed a 1.52b regression that caused the label set with the setMetadata("Label", label) macro function to not be displayed in the image subtitle of single images.
  • Thanks to Michael Cammer, fixed a 1.52c regression that caused the Image>Crop command to not work as expected with 16-bit images.
  • Thanks to Peter Meijer, fixed a 1.52c regression that could cause ClassCastExceptions when converting RGB images to stacks.

New in ImageJ 1.52c (May 21, 2018)

  • Activating an ROI in an overlay created by Measure (with “Add to overlay" enabled), or by the particle analyzer, selects the corresponding row in the "Results" table.
  • ImageJ displays a "Delete Points?" dialog before deleting a multi-point selection with counters.
  • Thanks to "zzyzyman", fixed a bug that caused ImageJ to fail to open odd-width RGB AVI files.
  • Thanks to Merijn van Erp, fixed a bug that caused the CurveFitter.getSortedFitList() method to throw an exception.
  • Thanks to Kees Straatman and Bill Christens-Barry, fixed a bug in the macro interpreter that caused it to not detect a missing '[' after an array variable.
  • Thanks to Mike, fixed a 1.52b regression that caused the AVI Reader to fail with a "Required item ‘00ix’ not found" error.
  • Thanks to Curtis Rueden, fixed a 1.51t regression that caused errors in headless mode macros to throw a HeadlessException.
  • Thanks to 'cortig' and Curtis Rueden, fixed a 1.52b regression that caused the "Apply" option of the Image>Adjust>Threshold command to not behave as expected with 16 and 32 bit images.

New in ImageJ 1.52b (May 7, 2018)

  • Changed "Random" to "Noise" in the "Fill with:" choice of the File>New>Image dialog box.
  • Thanks to Christian Evenhuis, fixed a bug with the Edit>Selection>Line to Area command that caused the resulting area selection to translated if the source was a polyline or freeline selection less than 5 pixels wide.
  • Added the IJ.javaVersion() method.
  • Thanks to Fred Damen, fixed bugs that caused the Image>Stacks>Tools>Concatenate command to sometimes not work as expected.
  • Thanks to Aryeh Weiss and Michael Schmid, worked around a Linux problem with large images not showing at low magnification.
  • Thanks to Fred Damen, fixed bugs that sometimes caused slices labels of single slice stacks to be lost.
  • Thanks to BrainPatcher and Stefan Helfrich, fixed a bug that caused the ROI Manager's "Multi Measure" command to not work correctly with point selections.
  • Thanks to "zzyzyman", fixed a bug that caused ImageJ to fail to open AVI files that used the 'indx'/'ix00' indexing schema.
  • Thanks to Moses, fixed a 1.52a regression that caused row labels to be omitted from tables created by the ROI Manager's "Multi Measure" command.
  • Thanks to Jerome Mutterer, fixed a 1.52a regression that caused imported Results tables to be displayed without row numbers.

New in ImageJ 1.52a (Apr 24, 2018)

  • Thanks to Michael Schmid, added Apply Macro commands to the Edit and contextual (right click pop-up) menus of table windows. Also added the ResultsTable.applyMacro() method (JavaScript example).
  • Thanks to Ron DeSpain, tables created by the Image>Overlay>List Elements command can be renamed "Results" and the values accessed using the getResults() and getStringResult() macro functions.
  • Removed the obsolete Plugins>New>Table command. Macros that use this command will continue to work.
  • Thanks to Michael Kaul, added an optional 5th argument ('stepSize') to the Dialog.addSlider() macro function (example).
  • Thanks to Gabriel Landini, on Linux, added the “Cancel button on right” option to the Edit>Options>Appearance dialog box.
  • The "showRowNumbers" property of the ResultsTable class now defaults to 'false'.
  • Thanks to Adrian Daerr, when importing ".raw" files with dimensions encoded in the name (e.g. "myfile-640x480.raw"), the byte order is set to big-endian if the name ends in "be.raw" and to little-endian if the name ends in "le.raw".
  • Thanks to Arttu Miettinen, imported ".raw" files with dimensions encoded in the name can have a width and/or height less than 10.
  • Thanks to Stein Rorvik, added toScaled(x,y,z) and toUnscaled(x,y,z) macro functions.
  • Thanks to Trevor Joyce and A Schain, added the macro-callable RoiManager.getIndexesAsString() method.
  • Thanks to Michael Schmid, added the Tools.copyFile(path1,path2) method.
  • Thanks to Salim Kanoun, added the RoiManager.setRoi(roi,index) and Overlay.set(roi,index) methods.
  • Thanks to Fred Damen, fixed a bug that caused the SubHyperstackMaker.makeSubhyperstack() method to not work when extracting a single frame.
  • Thanks to Fred Damen and Michael Schmid, fixed a curve fitter bug that could cause a NullPointerException.
  • Thanks to Norbert Vischer, fixed a bug that caused the File.copy() macro function to not preserve the modification date.
  • Thanks to Philippe Carl, fixed a bug that caused the Image>Hyperstacks>Reduce Dimensionality command to not preserve the "Info" image property.
  • Thanks to Jan Eglinger, fixed bugs that caused the roiManager("open",path) macro function to ignore the roi name and roiManager("save",path) not to be recorded when 'path' ended in ".roi".
  • Thanks to Norbert Vischer, fixed a bug that caused the Image Calculator to not correctly calculate the result when the operation is MULTIPLY or DIVIDE, the 1st image is 8 or 16 bit, the 2nd image is 32 bit and "32-bit result" is unchecked.
  • Thanks to Mark Rivers, fixed a bug that caused ImageJ to not correctly open some uncompressed planar RGB TIFFs.
  • Fixed a 1.51s regression that caused statistical calculations on small 16-bit images or selections to be much slower.
  • Thanks to Michael Schmid, fixed a 1.51o regression that caused the particle analyzer to hang when processong 32-bit images.
  • Added 20 macro functions that work with tables. They operate on the current (frontmost) table or an optional title argument can be provided (e.g., Table.size("My Table")). Examples: Sine/Cosine Tables, Rearrange Table and Access Tables.
  • Table.create() - opens a new table
  • Table.reset() - resets (clears) the table
  • Table.size() - number of rows in the table
  • Table.title() - title of the current table
  • Table.headings() - column headings as a tab-delimited string
  • Table.get(columnName, rowIndex) - returns a numeric value
  • Table.getColumn(columnName) - returns a column as an array
  • Table.getString(columnName, rowIndex) - returns a string value
  • Table.set(columnName, rowIndex, value) - sets numeric or string value
  • Table.setColumn(columnName, array) - sets an array as a column
  • Table.update() - updates table window
  • Table.applyMacro(macro) - applies macro code to table
  • Table.rename(title1, title2) - renames a table
  • Table.save(filePath) - saves the table
  • Table.open(filePath) - opens a table
  • Table.deleteRows(index1, index2) - deletes specified rows
  • Table.renameColumn(oldName, newName) - renames a column
  • Table.deleteColumn(columnName) - deletes specified column
  • Table.showRowNumbers(boolean) - enable/disable row numbers
  • Table.showArrays(titleAndOptions, array1, array2, ...) - displays arrays in a table (like Array.show)

New in ImageJ 1.51v (Mar 12, 2018)

  • Thanks to Norbert Vischer, extended the Plot class to make it relatively simple to draw the x and y values on plots. For examples, refer to Custom Plot Symbols and Bar Charts in the Help>Examples>Plots menu.
  • Thanks to Michael Schmid, added the Dialog.addToSameRow() macro function, which makes the next item added to a GenericDialog appear on the same row as the previous item (example).
  • Thanks to Salim Kanoun, added the Overlay.selectable(boolean) method which can be used to make an overlay non-selectable (example).
  • Thanks to Salim Kanoun, added the Overlay.setLabelFont(font,true) method, which causes labels in overlays to scale as the image is zoomed.
  • Thanks to Michael Schmid, the GenericDialog class automatically generates unique labels for macro recording.
  • Thanks to Michael Schmid, on Linux, the "OK" button in GenericDialogs is now on the right, as it is on Macs.
  • Added a setFontSize() method to the MontageMaker class.
  • Thanks to Michael Schmid, fixed a bug that caused symbols in plots to be drawn at the left or bottom border if there was a NaN value.
  • Thanks to Wilhelm Burger, fixed a bug on Java 9 that caused Plugins>Compile and Run to not work with .class files not in the default package.
  • Thanks to Jerome Mutterer, fixed a 1.51u regression that caused macro calls similar to newArray(a.length) to always return 1.
  • Thanks to Rob Lees, fixed a 1.51u regression that caused the close(pattern) macro function to close the ROI Manager if 'pattern' did not have a wildcard.
  • Thanks to Norbert Vischer, fixed a 1.51u regression that caused the close("\Others") to not work.
  • Thanks to Rob Lees, fixed a 1.51s regression that caused multi-point deletion with “Show all” enabled to not function correctly.

New in ImageJ 1.51u (Feb 19, 2018)

  • Thanks to Norbert Vischer, added support for plotting rectangles, vertical and horizontal bar charts, and vertical and horizontal boxes and whiskers. Use the Bar Charts and Shapes commands in the Help>Examples>Plots menu to see examples.
  • Thanks to Norbert Vischer, zooming in and out of plot windows using the "+" and "-" keys works better.
  • Thanks to Norbert Vischer, added the Help>Examples>Open as Panel command.
  • Thanks to Norbert Vischer, added the Plot.appendToStack() function. The Dynamic Plot and Dynamic Plot 2D macros in the Help>Examples>Plots menu and the Dynamic Plot script in the Help>Examples>JavaScript menu demonstrate how to use it.
  • Thanks to Norbert Vischer, added support for multi-line labels in plots. For an example, see Help>Examples>Plots>BarCharts.
  • Added the Help>Examples>Plots>Histograms example macro, which demonstrates how to use the new Plot.add("bars",x,y) macro function to draw histograms.
  • The File>Save As>Gif command now works with RGB images and stacks, saving stacks as animated GIFs (example1, example2).
  • The Plugins>Utilities>Control Panel now requires a double click to run a command.
  • Thanks to Stein Rorvik, when moving the mouse pointer, or creating a selection, on spatially calibrated images, the uncalibrated x and y pixel coordinates are shown in parenthesis in the status bar.
  • Thanks to Jerome Mutterer, the focus is reset to the prompt when either the backspace or delete key is pressed in the macro functions finder.
  • Thanks to Norbert Vischer, the close(pattern) macro function closes windows whose title matches 'pattern'. Non-image windows, like "Roi Manager" have to be specified without wildcards. For text windows, wildcards are allowed if 'pattern' ends with ".txt", ".ijm" etc. Use close(pattern, "keep") to close only unchanged windows.
  • Thanks to Michael Schmid, added the Recorder.fixString() method, which is used to escape strings passed to the recorder.
  • Thanks to Michael Schmid, the delete key on Windows keyboards can be used as a substitute for backspace as a shortcut for the Image>Clear command, for deleting ROIs from overlays and for deleting lines in Results Tables and in the Log window. In addition, the ',' key on european numeric keypads is mapped to the '.' key.
  • Thanks to Norbert Vischer, added the Plot.drawShapes() and Plot.drawGrid macro functions.
  • Thanks to Gregory Jefferis, fixed a bug that caused the run("Scale...", "...") macro function to fail in Fiji headless mode.
  • Thanks to Stein Rorvik, fixed a bug that caused the min/max constrast values to be lost when duplicating virtual stacks.
  • Thanks to Michael Schmid, fixed a bug that caused incorrect log x axis coordinates to be displayed at the bottom of plot windows.
  • Thanks to Andrew Shum, fixed a bug that caused the File>Batch>Macro and File>Batch>Virtual Stack commands to not be correctly recorded.
  • Thanks to Philippe Carl and Jan Eglinger, fixed a bug that caused the newArray() macro function to fail if there were multiple arguments and the first argument was not a number.
  • Thanks to Stein Rorvik, fixed a bug on Windows that sometimes caused strings to be pasted in the wrong position in text windows.
  • Thanks to Michael Schmid, fixed a bug that caused the Process>Filters>Variance command to sometimes generate negative values with 32-bit images.
  • Thanks to Tobias Starborg, fixed a bug that caused the Image>Stacks>Animation>Animation Options command to not work in batch mode macros.

New in ImageJ 1.51t (Jan 6, 2018)

  • Thanks to Norbert Vischer, the Plot class now supports filled plots. Run Help>Examples>Macro>Damped Wave Plot to see an example.
  • Thanks to Norbert Vischer, when a macro error occurs, the line number is copied to the clipboard and the error message is displayed in the "Debug" window.
  • Added "Synthetic Images" and "Spiral Rotation" examples, in Macro and JavaScript versions, to the Help>Examples menu.
  • Added a "hidden" checkbox to the plot window More>>Contents Style dialog.
  • The Process>Math>Macro command and the ImageProcessor.applyMacro() method automatically add "v=" if it is missing.
  • Thanks to Norbert Vischer, the seed set by the random("seed",n) macro function is now used when creating images with random content and by Process>Noise commands, allowing reproducible test situations to be created (examples).
  • Thanks to Francois Gannier, the x and y-axis labels are used as the first two column headings in the table created by the plot window "List" command when these labels start and end with a space character.
  • Thanks to Jan Brocher, fixed a bug that caused the ColorThresholder.RGBtoYUV() method to not work as expected.
  • Thanks to Stein Rorvik, fixed a bug that caused function key and numeric kaypad macro shortcuts to not work as expected when "Require control key for shortcuts" was enabled in the Edit>Options>Misc dialog.
  • Thanks to Christophe Leterrier, worked around a macOS High Sierra/APFS bug that caused LUTs listed in the Image>Lookup Tables menu and file names returned by the getFileList() macro function to not be sorted.
  • Thanks to Michael Kaul, fixed a v1.51s regression that could cause ImageJ to fail to quit properly if there was an Action Bar launched at startup.
  • Thanks to Norbert Vischer, fixed a v1.51r26 regression that caused the setBatchMode("show") macro function to not work as expected.

New in ImageJ 1.51s (Dec 6, 2017)

  • Thanks to Philippe Carl, added support for diamond symbols to the Plot class.
  • Added the Help>Examples>JavaScript>Event Listener example.
  • Incresed the default plot size from 450x200 to 530x300.
  • Thanks to 'graukatze', line length measurements are now much faster when all measurements are disabled in the Set Measurents dialog.
  • Thanks to Jean Christophe Taveau, ECMAScript 6 is used when running JavaScript code on Java 9 (more info).
  • Thanks to Ron DeSpain, the File.directory() macro function (OpenDialog.getLastDirectory() method) now returns the path to the directory that a macro was loaded from.
  • Thanks to Lorenzo Cangiano, fixed a bug that could cause the "Apply" button in the Image>Adjust>Brightness/Contrast dialog to throw an exception with 16-bit images.
  • Thanks to Rob Lees and Jan Eglinger, fixed a bug that, when deleting a point from a point selection on a stack, could cause an overlaping invisible point in another slice to be deleted.
  • Thanks to 'WaDoMa', fixed a bug that caused ImagePlus.setAntialiasRendering() calls to be ignored when rendering arrows in flattened images.
  • Thanks to Jean Christophe Taveau, fixed a bug that caused scripts installed in the plugins menu to be aborted if the user clicked "Cancel" in a GenericDialog.
  • Thanks to Klaus Michel, fixed a bug that caused the ROI Manager's More>Translate command to not work correctly if one of the ROIs being translated was active.
  • Thanks to Stein Rorvik, fixed bugs that caused the RunAtStartup, AutoRun and command line macros to interfere with each other, causing &variable expansion in run() calls to not work. To avoid this interference, the RunAtStartup macro (created by Edit>Options>Startup), the AutoRun macro (in StartupMacros) and command line macros now all run on the same thread.
  • Thanks to Stein Rorvik, fixed a bug that caused the Startup Macros command in the >> toolbar menu to not work as expected if the StartupMacros file had an ".ijm" extension.
  • Thanks to Alban Favre and Jan Eglinger, fixed a bug that caused the getResult() macro function to not work with tables created by plugins using the ResultsTable.setValue(column,row,value) method.
  • Thanks to Stein Rorvik, fixed a bug that caused forward slash separators to not work with default directories on Windows.
  • Thanks to Adrian Daerr, fixed a bug that caused raw virtual stacks to be opened incorrectly if the number of images specified in the dialog was greater than the actual number of images.
  • Thanks to 'tigers1964', fixed bugs that sometimes caused File>Import>Raw to not correctly zero fill when the specified image size was greater than the file size.
  • Thanks to Michael Kaul, fixed a bug that caused the ImagePlus.setProcessor() method to sometimes not work as expected with stacks.
  • Thanks to 'graukatze', fixed a bug that caused Plot Z-axis Profile, in "Live" mode, to interfere with the Measure command.
  • Thanks to Bjorn Marsen, fixed a v1.51 regression that caused run("Set Measurements...","...") to reset the measurement counter when used in a macro run from the command line using the -batch option.

New in ImageJ 1.51r (Oct 16, 2017)

  • Thanks to Norbert Vischer, custom symbols in plots are now supported. Refer to the Help>Examples>Macro>Custom Plot Symbols command for an example.
  • Thanks to Philippe Carl, replaced the min/max threshold value labels in the "Threshold" dialog by editable text fields and removed the "Set" button. New values are validated once the user hits the enter key. Also added mouse wheel and arrow key support to the min and max sliders. The up/down keys increase/decrease the threshold values when the cursor is within one of the text fields.
  • The "Save column headers" and "Save row numbers" options in the Edit>Options>Input/Output dialog are always enabled on startup.
  • Thanks to Mathieu Prouveur, ImageJ displays an error message when a macro function attempts to return a string enclosed in parenthesis.
  • Thanks to Roger Leigh, fixed bugs that prevented ImageJ from running on Java 9.
  • Thanks to Derek Xu and Michael Schmid, fixed a bug that could cause the Orthogonal Views command to throw an exception.
  • Thanks to Jerome Parent, fixed a bug that caused the median filter to not work correctly with 32-bit images containing NaN values.
  • Thanks to Ron DeSpain, fixed a bug that could cause startup macro shortcuts to be disabled when opening a macro in the macro editor.
  • Thanks to Kees Straatman, fixed a bug that caused the run("Set Measurements...", options) macro function to not work as expected if used after a run("Analyze Particles...", options) call that was missing 'display ' in the options string.
  • Thanks to Jeremy Adler, fixed a bug that caused the run("Stack to Images") macro function to not make the last opened image active.
  • Thanks to Michael Schmid, fixed bugs that sometimes caused the the wrong image to be activated after an image is deleted in a macro.
  • Thanks to Michael Schmid, fixed a 1.51q regression that could cause an exception when creating a plot.

New in ImageJ 1.51q (Oct 6, 2017)

  • Thanks to Norbert Vischer, the Edit>Selection>Straighten and Image>Duplicate commands work with rotated rectangle selections.
  • Thanks to Jerome Parent, added the Image>Stacks>Plot XY Profile command.
  • Thanks to Jerome Parent, added a "Show unit" checkbox to the Analyze>Tools>Calibration Bar dialog box.
  • Thanks to Stein Rorvik, newly opened editor windows are larger and, on Linux and Windows, are less likely to cover the main ImageJ window.
  • Thanks to Norbert Vischer, added a "Smooth if thresholded" option to the Wand tool dialog (example).
  • Thanks to Kenneth Sloan, added a recordable ZProjector.run() method (examples).
  • Thanks to Norbert Vischer, added the makeRotatedRectangle(x1,y1,x2,y2,width) macro function.
  • Thanks to Norbert Vischer, added the List.toArrays(keys,values), List.fromArrays(keys,values) and List.indexOf(key) macro functions.
  • Thanks to Max Leiter, fixed a bug that caused RoiListeners to not be notified when an ROI was created.
  • Thanks to Alvaro Folgado, fixed an OS X command injection vulnerability in the BrowserLauncher.
  • Thanks to Alison Walter, fixed a bug that caused the "Spline fit" checkbox in the "Line Width" dialog to convert angle selections to polygons.
  • Thanks to Chris Lamb, fixed a typo in MemoryMonitor.java where a constant that should have been 1024 was 1204.
  • Thanks to Norbert Vischer, fixed a bug in the Array.resample() macro function that caused it to throw an exception if the langth of the input was 0 or 1.
  • Thanks to John Loveland and Lukas Kvasnica, fixed a v1.51o regression that caused plugins that create virtual stacks without implementing the VirtualStack class to throw an exception.
  • Thanks to Tim Huang, fixed a bug that caused the Image>Overlay>Flatten command to not work correctly with high-resolution images.
  • Thanks to Norbert Vischer, fixed a bug with the Debug>Abort command in the macro editor that caused it to display a bogus error message.
  • Thanks to Stefan Helfrich and Azman Rashid, fixed a bug that caused ImageJ to not correctly read TIFF files created by the Bfconvert command line tool.
  • Thanks to Jan Eglinger, fixed a bug that caused the popup menu (e.g. right-click > Rename...) and the "Dev" menu tool to not get recorded.
  • Thanks to Sethur, fixed a bug that caused scroll wheel zooming in image stacks (enabled using control or shift key) to not work correctly.
  • Thanks to Steffen Schmidt, fixed a bug that caused scale bars to not be correctly positioned with large font sizes.
  • Thanks to Vanessa King and Jan Eglinger, fixed a bug that caused the "List" option in plot windows to sometimes not list all X columns when the columns differed in length.
  • Thanks to Carne Draug, fixed several problems related to building the ImageJ Debian package.
  • Thanks to Salim Kanoun, fixed a bug that caused overlay titles to be selectable when a new ROI was being constructed.
  • Thanks to Norbert Vischer, fixed a bug than caused the Analyze>Gels>Select Next Lane command to sometimes create duplicate plots.
  • Thanks to Michael Kaul, fixed a v1.51o regression that caused the ImagePlus.flatten() method to be much slower.
  • Fixed a 1.51e regression that caused the "Auto" buttion in the Brightness/Contrast dialog to not increase contrast with repeated clicks.
  • Plot enhancements, thanks to Michael Schmid:
  • Plots saved as tiff or zip include the data, so the plot range can be modified (zooming, etc.) and the data can be listed after loading the plot from a file.
  • Changing the axis or label font size of a plot keeps the image size constant and modifies the plot frame size (previously, the plot frame size was constant).
  • Slightly more space for numbers at the left, enough for scientific notation. ImageJ switches to a smaller font if more significant digits are required.
  • Added Plot.getFrameBounds(x, y, width, height) macro function.
  • The default font for plots is now Arial, not Helvetica (Arial is available on more platforms).
  • When opening a plot on a computer where a given font is not available, try to replace fonts by similar ones. This should make the appearance on different platforms more similar.
  • The ImageProcessor getStringWidth() and getStringBounds() methods use the more accurate GlyphVector class.

New in ImageJ 1.51p (Jun 23, 2017)

  • When adding a hyperstack ROI to the ROI Manager, the channel position is set to 0 (display in all channels) if the display mode is "Composite".
  • Added the setOption("ConvertToMicrons",boolean) macro function. When this option is set, units in TIFF images are converted to microns if the pixel width is less than 0.0001 cm.
  • Thanks to Norbert vischer, worked around a bug in Java 8 on OS X that sometimes caused painting of GenericDialogs to be incomplete.
  • Thanks to Rainer Engel, fixed a bug that caused macros that passed variables using "&" notation to fail if they used the Process>Math>Macro command to process a stack.
  • Thanks to Philippe Carl, fixed a 1.51o regression that sometimes caused ImageJ to freeze on Windows when opening or processing images.

New in ImageJ 1.51o (Jun 8, 2017)

  • Added a Command Finder tool to the >> toolbar menu.
  • Thanks to Hermann-Josef Roeser, histograms of RGB images are now labeled with the histogram type ("Intensity (weighted)", "Intensity (unweighted)" or "R+G+B") and the "RGB" button cycle includes these three histogram types.
  • Updated the VirtualStack class to support frequency domain FFT images (example macros).
  • Worked around bugs with Windows 10 Creators Update that caused the file open dialog to freeze and the "ImageJ" window to be taller than normal.
  • Thanks to Michael Kaul, added the Roi.setPosition(ImagePlus) method.
  • Worked around a bug with Java 8 on Mac OS X that caused the buttons in histogram windows to be partially hidden.
  • Thanks to Wilhelm Burger and Tiago Ferreira, fixed a bug that caused coordinates used by the ImageProcessor.getLine() method to retrieve pixel values to be offset by 0.5 pixel when interpolation was not enabled.
  • Thanks to Wilhelm Burger, fixed a bug that caused the ImageProcessor.setColor() method to ignore RGB component weights when setting the associated drawing (i.e., gray) value of non-RGB grayscale images.
  • Thanks to Robert Atwood, fixed a bug that caused the "Auto" option in the Image>Adjust>Threshold tool to sometimes not work as expected with 16-bit stacks.
  • Thanks to Christian Tischer, fixed a bug that caused the Image>Transform>Bin command to change the calibation of the source image.
  • Thanks to Theresa Swayne, fixed a bug that caused the ROI Manager's Multi-Measure command (in "append" mode) to not reset its saved results when the Results Table was cleared.
  • Thanks to Norbert Vischer, fixed a bug that caused screen updates of images with complex overlays to be very slow with Java 8 on Mac OS X.
  • Thanks to Don Levin, fixed a bug that caused the File>Save As>PGM to not correctly save 16-bit images.
  • Thanks to Rob Beetel, fixed a regression that caused the ROI to be deleted after using "Apply" on RGB images in the Brightness/Contrast, Window/Level and Color Balance dialogs.

New in ImageJ 1.51n (May 2, 2017)

  • Fixed a 1.51m regression that caused the "+" command (Image>Zoom>In) to sometimes not work as expected.

New in ImageJ 1.51m (May 2, 2017)

  • Images are scaled to fit when windows are resized.
  • Added the Image>Zoom>Maximize command.
  • Increased the tool button size from 28x28 to 29x30, making the "ImageJ" window 20 pixels wider and 2 pixes taller.
  • Thanks to Agathe Robisson, added a "Center grid on image" checkbox to the Analyze>Tools>Grid dialog.
  • A Plugins>Why are Plugins Missing? command is added to the Plugins menu if plugins were not loaded due to macOS Path Randomization.
  • Added the Help>Examples>JavaScript>TeraByte VirtualStack example script.
  • Changed the default extension when saving tables from ".xls" to ".csv" (coma-separated values) and added support for opening and saving tables in ".tsv" (tab-delimited values) format.
  • The Macros>Evaluate JavaScript command in the text editor now respects the "use strict" directive (Java 8 only) to indicate that the code should be executed in "strict mode". In strict mode, you can not, for example, use undeclared variables.
  • Thanks to Michael Schmid, the Analyze>Plot Profile command remembers whether the alt key was down (used for verticall plotting) when initialized so "Live" plots continue to be vertical.
  • Thanks to Michael Schmid, the AVI Reader tries to recover data from truncated files.
  • Thanks to Jerome Mutterer, added the setOption("SaveBatchOutput",false) macro function, which can be used in Process>Batch>Virtual Stack macros to prevent slices from being written to the output virtual stack.
  • Thanks to Stephan Preibisch, removed the limit of 25 sliders in GenericDialogs.
  • Thanks to Norbert Vischer, added the Array.rotate() and Array.getVertexAngles() macro functions and added an optional edgeMode argument to the Array.findMaxima() function (example1, example2, example1).
  • Added the Roi.hasHyperStackPosition() method.
  • Thanks to Stefan Helfrich and Mojo Dodo, fixed a bug that caused the Image>Color>Arrange Channels command to not close the source image in batch mode macros.
  • Thanks to Robert Dougherty, fixed a bug that caused the "Overlay" checkbox in the Analyze>Tools>Calibration Bar dialog box to not be remenbered.
  • Thanks to Robert Dougherty, fixed a bug that caused the backgrounds of scrollbars to be white when running on Windows 10 and Java 6.
  • Thanks to Martin Hohne, fixed a bug that caused the run("Point Tool...", "...") macro function to not work as expected.
  • Thanks to Stefan Helfrich, fixed a bug that caused the GroupedZProjector to always generate a time series regardless of the input stack format.
  • Thanks to lcsglvr, fixed a bug that caused slow drawing of 16-bit and 32-bit multi-channel composite color images in "Color" mode.
  • Thanks to Michael Schmid, fixed a bug in the AVI Reader that caused the file to not be closed in case of a cancelled dialog or some IO errors.
  • Thanks to Wilhelm Burger, fixed bugs with the PointIterator on line and point selections that caused incorrect point coordinates to be returned.
  • Fixed a bug on Mac OS X that caused the position of the "ImageJ" window to not be remembered if it was located partially offscreen to the right.

New in ImageJ 1.51k (May 2, 2017)

  • Added the Plugins>Utilities>Capture Delayed command.
  • Thanks to Yaman al-Yousof, added Macro and JavaScript "Custom Measurement" examples to the Help>Examples menu.
  • Added this note to the Help>Examples>Macro>Sphere example:
  • "JavaScript on Java 8 runs this code 30 times faster than the macro language when 'size' is set to 4096."
  • Thanks to Norbert Vischer, worked around OSX/Java 8 bugs that caused the toolbar to not be updated after clicking on a new tool with the recorder running, caused newly opened image windows to obscure the ImageJ status and progress bars and caused the selectImage() macro function to sometimes be very slow.
  • Thanks to Florian Jug and Curtis Rueden, fixed a bug that caused ImageJ to incorrectly open TIFF stacks created by Bio-Formats.
  • Thanks to Stein Rorvik, fixed bugs that caused Windows file paths starting with "C:/’ to not work in the open() and runMacro() macro functions.
  • Thanks to Stein Rorvik, fixed bugs that caused min/max values to be lost when resampling virtual stacks.
  • Thanks to Stein Rorvik, fixed a bug that caused z-scaling of 8-bit stacks to not retain the min,max contrast setting.
  • Thanks to Stein Rorvik, fixed a bug that caused Edit>Selection>Rotate to not work for straight line selections if "Rotate around image center" was enabled.
  • Thanks to Stefan Woerz, fixed a bug that caused profile plots to not be displayed if the min and max pixels values were non-zero and equal.
  • Thanks to Volker Baecker, fixed a bug that caused the print("[text-window]", "...") macro function to not work as expected if "text-window" had been saved and re-opened.
  • Thanks to Puifai Santisakultarm, fixed a bug that caused the IJ.run(imp,"RGB Color","") method to not work as expected with non-displayed images.
  • Thanks to Michael Cammer, fixed a bug that caused the run("3D Project...",options) macro function to not work reliably with hyperstacks.
  • Thanks to Edward Muir and and Curtis Rueden, fixed a bug that caused the "Out of memory" error message to incorrectrly report the amount of available memory.

New in ImageJ 1.51j (Feb 6, 2017)

  • Added the Rotated Rectangle selection tool.
  • Added the Edit>Detab command and the Edit>Tab Key Inserts Spaces Checkbox menu item to the text editor;
  • Thanks to Stein Rorvik, added the Macros>Evaluate Macro command to the text editor.
  • Thanks to Jerome Mutterer, added the Help>Examples>Macro>Star Tool example macro tool, just in time for this holiday season.
  • Thanks to Michael Schmid, the File>New>Image command displays a progress bar when creating single RGB images filled with noise.
  • Added JavaScript and Java "plasma cloud" recursion examples to the Help>Examples menu, based on PlasmaCloud.java, from the book Introduction to Programming in Java by Robert Sedgewick and Kevin Wayne.
  • Thanks to Michael Schmid, added the "Save window locations" option to theEdit>Options>Misc dialog (only on Linux). Enable this option to workaround a bug with some Linux window managers that causes windows to wander down the screen when they are repeatedly opened and closed.
  • Added the random("gaussian") and Overlay.measure macro functions.
  • Added the Roi.setStrokeColor(r,g,b), Roi.setStrokeColor(rgb), Roi.setFillColor(r,g,b) and Roi.setFillColor(rgb) macro functions.
  • Thanks to Norbert Vischer, add the getBoolean(message, yesLabel, noLabel) macro function.
  • Added the ImageProcessor.fillRect() method.
  • Added the Overlay.measure(ImagePlus) method.
  • Thanks to Michael Schmid, the ColorProcessor.filter(type) method supports the additional types FIND_EDGES, MEDIAN_FILTER, MIN and MAX.
  • Thanks to Norbert Vischer, fixed a bug that caused the particle analyzer to be very slow in batch mode macros if the "Add to manager" option was enabled.
  • Thanks to Michael Schmid, fixed a bug that caused Process>Smooth to not process the edges.
  • Thanks to Salim Kanoun, fixed a bug that caused the getMetadata("info") macro function to sometimes not work as expected with stacks.

New in ImageJ 1.51i (Dec 19, 2016)

  • Thanks to John Brear, the particle analyzer now allows particles to be selected on circularity values greater than 1.0.
  • Thanks to Johan Doornenbal, the Image>Scale command works when Width or Height are not given.
  • Thanks to Mirekslouf, labeling of point selections in overlays now reflects the state of the "Label points" checkbox in the "Point Tool" dialog.
  • Thanks to Bastian Schmidt, added code to the DICOM importer to handle tags of type SS (signed 16-bit), UL (unsigned 32-bit) and SL (signed 32-bit).
  • Thanks to Michael Schmid, added static ZAxisProfiler.getPlot(ImagePlus) and ZAxisProfiler.getPlot(ImagePlus,String) methods, where the string argument can be either "time" or "z-axis".
  • Added the ImagePlus.getAllStatistics() method and removed the median calculation done in ImagePlus.getStatistics() in previous versions of ImageJ 1.51.
  • Thanks to Benjamen Gyori, added the ImageProcessor.getStats() method, which is up to 70 times faster than ImageProcessor.getStatistics().
  • Added the static FolderOpener.open(path,"virtual") method.
  • Thanks to Michael Schmid, added static getNumParams() methods to the CurveFitter class.
  • Thanks to Gabriel Landini, fixed a bug that caused the Image>Duplicate command to not be correctly recorded with single images when the recorder was not in "Macro" mode.
  • Thanks to Gunjan Pandey, fixed a bug that caused plugins that used the ROI Manager to fail when they were called from batch mode macros. Note that the ROI Manager is not displayed in batch mode macros unless it is opened using run("ROI Manager...") prier to entering batch mode.
  • Thanks to Olivier Burri, fixed a bug the caused the "Append results" option of the ROI Manager's "Multi Measure" command to be ignored if the "One row per slice" option was not enabled.
  • Fixed a bug that sometimes caused the doCommand("Point Tool...") macro function to display the legacy point tool dialog instead of the non-modal multi-point tool dialog.
  • Worked around a OS X/Java 8 bug that caused image windows to be maximized when moved if a modal GenericDialog was open.
  • Thanks to Norbert Vischer, fixed a v1.50 regression that caused the Edit>Selection>Properties command to not work as expected with multi-point selections. Use the alt+y shortcut to display multi-point selection counts.

New in ImageJ 1.51h (Nov 10, 2016)

  • Thanks to Stein Rorvik, the Image>Stacks>Z-axis Profile and Image>Stacks>Tools>Make Substack commands display a progress bar if the stack has more than 400 slices or is a virtual stack.
  • Thanks to Christiane, the Results table, for each point in a multi-point selection, displays the counter associated with the point and the count for that counter.
  • A selection in an overlay can be activated by double clicking the corresponding row in the Image>Overlay>List Elements list.
  • Thanks to Michael Schmid, added the Prefs.splineFitLines flag, set by the "Spline fit" checkbox in the "Line Width" dialog, opened by double clicking on the line tool icon.
  • Thanks to Thorsten Wagner, TIFF files with cm units are now converted to µm units if the pixel width is less than 0.0001 cm. In earlier versions of ImageJ they were only converted when importing an image sequence as a virtual stack.
  • Thanks to Gilles Carpentier, error messages displayed by the Plugins>Compile and Run command now include ImageJ, Java and OS version information.
  • Thanks to Stein Rorvik, added the setOption("AntialiasedText",boolean) macro function and the TextRoi.setAntialiasedText(boolean) method, which control the "Antialiased text" option in the Edit>Options>Fonts dialog.
  • Thanks to Avital Steinberg, fixed a bug that caused the ImageProcessor.getStatistics() method to sometimes not work as expected with ShapeRois.
  • Thanks to krami79, fixed a bug that could cause an exception when closing a live plot window.
  • Thanks to Jan Eglinger, fixed a bug that could cause pugins and scripts using the GenericDialog.getMessage() method to throw an exception.
  • Thanks to Norbert Vischer, fixed a bug that caused dots in plots to be drawn outside the frame.
  • Thanks to Ron Paletzki, fixed a bug that caused Image>Scale and Image>Adjust>Size to not work as expected with z scale factors less than 0.5 when Interpolation was set to None.
  • Thanks to Gilles Carpentier, fixed a 1.50i regression that caused the Edit>Selection>Enlarge command to sometimes not work as expected when shrinking very small selections.

New in ImageJ 1.51g (Sep 23, 2016)

  • Thanks to Michael Schmid, added the Image>Adjust>Coordinates command, which allows the user to set the corner coordinates of the selection bounds or the full image. This modifies the image scale (pixelWidth, pixelHeight) and the xOrigin, yOrigin. If a single point is selected, the coordinates of the point can be specified, which only sets xOrigin and yOrigin. The units for x and y can be also selected.
  • Thanks Marcel Krzan, increased the font size in GenericDialog text areas (Options>Startup, Analyze>Calibrate, Filters>Convolve and Batch>Macros) to 14 points.
  • Thanks to Thomas Boudier, when creating a new stack, a status message and progress bar are only displayed when the stack is 250 MB or larger.
  • Thanks to Norbert Vischer, added the List.setMeasurements("limit") macro function.
  • Thanks to Curtis Rueden, fixed a bug that caused the run("From ROI Manager") macro function to not transfer the selection positions to the overlay.
  • Thanks to Jinghan Chen, fixed a bug that caused the multi-point tool to sometimes fail when using multiple counters.
  • Thanks to Curtis Rueden, fixed bugs that caused the "Run single instance listener" option in Edit>Options>Misc to not work as expected.

New in ImageJ 1.51f (Aug 18, 2016)

  • Thanks to 'mls' and Jan Eglinger, the Image>Stacks>Tools>Combine command now works with hyperstacks.
  • Thanks to Eduardo Kropnick, fixed a 1.51e regression that caused the List.setMeasurements macro function to not work as expected.

New in ImageJ 1.51e (Aug 6, 2016)

  • Added a "Don't set Mac menu bar" option to the Edit>Option>Misc dialog. When this option is set, ImageJ does not set the ImageJ menu bar when image windows are activated. This may prevent ImageJ from becoming unresponsive due to setMenuBar() becoming slower and slower over time. To recover the menu bar, click on the "ImageJ" window or press return, the shortcut for the Window>Main Window command.
  • When running Java 8 on OS X, the "Don't set Mac menu bar" option in Edit>Option>Misc is automatically set when it the setMenuBar() method takes more than two seconds.
  • Thanks to Gabriel Landini, when selecting rectangular ROI handles, the buffer zone is larger on screens wider than 1280 pixels.
  • Thanks to Patrick Darby Parker, plot windows created by macros calling run("Plot Z-axis Profile") now include a "Live" button.
  • Thanks to Philippe Carl, the Plugins>Compile and Run command adds jar files in the plugins/jars folder with "_" in their names to the javac classpath.
  • Added the ImagePlus.crop() method (example).
  • Thanks to Jean-Yves Tineves, added the VirtualStack(width,height,slices) constructor that creates a virtual stack with no backing store (example).
  • Thanks to Ignacio Garcia Gonzalez, fixed a bug that caused ROIs with coordinates greater 65535 to be corrupted when saved and reopened.
  • Thanks to Jens Kriese, fixed a bug that caused the slices of new "Random" stacks to be copies of the first slice.
  • Thanks to Ondrej Sebesta, fixed a bug that caused the roiManager("Select",index) macro function to fail if setKeyDown("Shift") was previously called.
  • Thanks to Marcel, fixed a bug that caused the "Propagate to all open images" option in the "Set" dialog of the Image>Adjust>Window/Level widget to fail.
  • Thanks to Philippe Carl, fixed a bug that caused the Image>Stacks>Tools>Concatenate command to not be correctly recorded when the Recorder was not in "Macro" mode.
  • Thanks to Jan Eglinger, fixed a bug that caused the Image>Color>Channels Tool widget to not work as expected in "Color" mode when using Java 8 on Mac OS X.
  • Thanks to Steve, fixed a bug in the Image>Stacks>Make Montage command that caused it to not work as expected if "Border width" was greater than 0.
  • Thanks to Michael Schmid, fixed a bug that caused the ImageCanvas.setSourceRect() method to sometimes modify the Rectangle passed to it.
  • Thanks to Michael Schmid, fixed a bug that caused the ImageJ menu bar on Mac OS X to disappear when cliking on the "B&C" window to activate it.
  • Thanks to Stefan Helfrich, fixed a bug that caused inconsistent handling of the animation rate if it was set to less than 0.1 fps.
  • Thanks to Stefan Helfrich, fixed a bug that caused the Image>Stacks>Label command to not work as expected with hyperstacks if the "Use overlay" option was enabled.
  • Thanks to Gabriel Landini, fixed a v1.51d regression that caused the ImagePlus.getStatistics() method to be much slower.
  • Thanks to Jean-Yves Tineves, fixed a v1.47 regression that caused overlays to not work with custom virtual stacks.
  • Thanks to jbrazill and Jan Eglinger, fixed a regression that caused the Image>Overlay>Flatten command to not work with non-RGB images without a selection or overlay.

New in ImageJ 1.51d (Jun 17, 2016)

  • Fixed a bug that caused the Measure command to ignore the "Invert Y coordinates" setting in Analyze>Set Measurements when measuring the centroid of stright line selections.
  • Thanks to Aleksandr Mironov, fixed a bug that caused the multi-point tool to fail when creating a second multi-point selection.
  • Thanks to Nuno Martins, fixed a 1.51b regression that caused the run("Duplicate","duplicate") macro function to not work as expected when operating on stacks.

New in ImageJ 1.51c (Jun 7, 2016)

  • Thanks to A Schain, the Plugins>Macros>Startup Macros command opens StartupMacros.fiji.ijm if StartupMacros.txt or StartupMacros.ijm are not found.
  • Thanks to Eduardo Kropnick, fixed a 1.51b regression that caused the List.setMeasurements macro function to fail.

New in ImageJ 1.51b (Jun 6, 2016)

  • Thanks to Gabriel Landini, when using Image>Duplicate to duplicate a single slice of a stack, the title of the resulting image is derived from the slice label.
  • Added the Help>Examples>JavaScript>Gamma Adjuster example script, which demonstrates how to interactively update an image that has been added to a GenericDialog.
  • Thanks to Ralph Albuquerque, the "Add to overlay" option in Analyze>Set Measurements now causes the overlay elements to be labeled by default.
  • Thanks to Curtis Rueden, replaced the Command Finder tooltips, which could cause an exception, with a "Help" button.
  • Thanks to Alex Doe, the GenericDialog.repaint() method now repaints images that have been added to the dialog (example).
  • Thanks to Joe Pickard, the backspace (delete) key is ignored in the Gel Analyzer to prevent inadvertent erasure of the contents of the selection rectangle.
  • Added the ImagePlus.getRawStatistics(), ImageStatistics.getStatistics(ip) and ImageProcessor.getHistogram(nbins) methods.
  • Thanks to Jerome Mutterer, fixed a bug that caused Roi change listeners to not be notified when a line's width was adjusted and a bug that caused Analyze>Measure to report incorrect values for 'min' and 'max' when "Limit to threshold" was enabled and 'area' was zero.
  • Fixed a bug that made it impossible to unset "Show labels" in the Image>Overlay>Labels dialog box if "Use names as labels" was enabled.
  • Thanks to Jerome Mutterer, fixed a bug that caused the Roi.getContainedPoints() macro function and Roi.getContainedFloatPoints() method to throw exceptions with rectangular selections.
  • Thanks to Ezemiron, fixed a bug that caused the Image>Scale command to throw an exception when processing a stack with an overlay.
  • Thanks to Curtis Rueden, fixed bugs that caused Image>Overlay>Add Image to not set the stack position and Image>Scale to not correctly scale ImageRois in overlays.
  • Thanks to Robert Haase, fixed a bug that caused the Edit>Selection>Create Selection command to throw an exception on Java 8 if there were no thresholded pixels.
  • Thanks to Ondrej Sebesta, fixed a bug that caused the File>Open Next command to sometimes incorrectly preserve the isHyperstack flag.
  • Thanks to Ondrej Sebesta, fixed a bug that caused macro code recorded by the Plugins>Shortcuts>Add Shortcut command to not work as expected if the command name contained brackets (e.g., "In [+]").
  • Thanks to Arttu Miettinen, fixed a bug that caused garbage results when perfprming multiple simultaneous reslice operations.
  • Thanks to Elton Rexhepaj, fixed a bug that caused the ChannelSplitter to create ImageStacks with non-working getVoxel() methods.
  • Thanks to Arttu Miettinen, fixed a bug that could cause the IJ.d2s() method to throw an exception.
  • Thanks to Wilhelm Burger, fixed a bug that caused the ImageProcessor.drawDot() method to not remove the ROI that it sets.
  • Thanks to Matthias Kirsch and Curtis Rueden, fixed 1.50d regressions that caused the Edit>Selection>Create Selection and Edit>Selection>Enlarge commands to not work correctly with multi-point selections.

New in ImageJ 1.51a (May 4, 2016)

  • Thanks to Michael Schmid, added a plot window dialog called by More>>Contents Style that allows users to modify the color, line thickness and symbol (line/dots/crosses/circles, etc.) of plot curves.
  • Thanks to Wilhelm Burger and Dimitri Vanhecke, added the Roi.getContainedPoints() macro function, Roi.getContainedPoints() method and Roi.getContainedFloatPoints() method (macro example, JavaScript example).
  • Thanks to Wilhelm Burger, Java plugins can now iterate over the points contained in a selection using "for (Point p : roi) {//process}" (example).
  • Thanks to Avital Steinberg and Jan Eglinger, the ImageProcessor.getStatistics() method now calculates all statistics.
  • Thanks to Elton Rexhepaj, the ImageStack.getVoxel(x,y,z) method now throws an IndexOutOfBoundsException if x, y or z are beyong the stack limits.
  • Thanks to Michael Schmid, added the ImageProcessor.isSigned16Bit() method.
  • Thanks to Ved Sharma, fixed a bug that caused the Image>Stacks>Combine command to not maintain the calibration of the source images.
  • Thanks to Elton Rexhepaj, fixed a bug that caused the ImageProcessor.getRoi() method to return an empty rectangle with FloatProcessors created using the FloatProcessor(int[][]) constructor.
  • Thanks to moreglia, fixed a bug that caused an exception when saving FFTs of RGB images in TIFF format.
  • Thanks to Marton Gulyas, fixed a bug that caused overlays to not work as expected on AVI virtual stacks.
  • Thanks to Curtis Rueden, fixed a bug that sometimes caused macros to not be correctly terminated when an error occurred.
  • Thanks to Greg Reneff, fixed a v1.50d regression that caused Process>Math>Macro to not work as expected with signed 16-bit images.

New in ImageJ 1.50i (Mar 27, 2016)

  • The ImageJ website (imagej.nih.gov/ij) will soon start using encryption incompatible with Java so sample images and updates are now downloaded from wsr.imagej.net and URLs used to open images and text files are redirected to mirror.imagej.net.
  • Thanks to Thorsten Wagner, added the is("global calibration") macro function.
  • Thanks to Philippe Carl, added the RoiManager.rename(index,name) method.
  • Thanks to Nicolas Cedilnik and Mark Hiner, fixed a bug that could cause an exception when saving a virtual stack.
  • Thanks to Kees Straatman, fixed a bug that caused the ROI Manager's "Multi Measure" command to sometimes not work as expected when the "append" option was used.
  • Fixed a bug that caused the "Decimal Places" field in the Analyze>Set Measurements dialog to be ignored after the value was set to zero.
  • Thanks to Stein Rorvik, fixed a 1.50d regression that caused duplicated images to lose their density calibration.

New in ImageJ 1.50h (Mar 15, 2016)

  • Thanks to Ajay Sood, the ROI Manager's OR (Combine) command now uses a progress bar and runs on a separate thread.
  • Thanks to Philippe Carl, the Converter class, which mplements the commands in the Image>Type submenu, now displays a messaged in the "Log" window if the image is locked. This error is typically caused by plugins that mistakenly implement the PlugInFilter interface and call IJ.run() methods.
  • Thanks to Norbert Vischer, the Window>Tile command displays an errow message if there is an unfrozen plot window open. To freeze a plot wondow, use the More>>Freeze Plot command.
  • Thanks to Gabriel Landini, the image size shown in the Window menu is updated when the image is converted to a different type.
  • Thanks to Norbert Vischer, the Dialog.addNumber("Prompt:",NaN) function now creates a blank field instead of showing "NaN".
  • Thanks to Norbert Vischer, added the Plot.setBackgroundColor() macro function (example).
  • Added the ij.plugin.ImageInfo class as a replacement for ij.plugin.filter.info.
  • Thanks to Jeff Hanson, fixed a bug that caused the showMessage() macro function to work with the tag but not with .
  • Thanks to Arttu Miettinen, fixed a bug that could cause image corruption if the slice selector scrollbar was used while a stack operation was being performed.
  • Thanks to Ryota Homma, fixed a bug that caused the ROI Manager's More>Remove Positions command to fail.
  • Thanks to Gabriel Landini, fixed a bug that caused the Image>Rename command to sometimes not correctly update the Window menu.
  • Thanks to Herbie Gluender, fixed a v1.50f regression that caused the Process>FFT>Swap Quadrants command to disappear.
  • Thanks to S. Rothery, fixed a 1.50f regression that caused the Multi Measure command in the ROI Manager to not work correctly with hyperstacks.
  • Thanks to Mark Hiner, fixed a 1.50d regression that caused the multi-point tool to not correctly place points on zoomed images.
  • Thanks to Gilles Carpentier, fixed a 1.50g regression that caused macros that used the run("Copy") function on images with overlays to not work as expected.
  • Thanks to Ryota Homma, fixed a 1.49i regression that caused selection subtraction by drawing with the alt key down to not work reliably.
  • Thanks to Tiago Ferreira, improved the Command Finder (Plugins>Utilities>Find Commands):
  • Resizable and reduced screen "footprint"
  • Auto-scrolling using keystrokes
  • Tooltip that hints at navigation shortcuts
  • Scriptable

New in ImageJ 1.50g (Feb 15, 2016)

  • Thanks to Norbert Vischer, added an "R" (Reset Range) button to the lower left corner of plot windows, and, in the More>>Set Limits dialog, numeric fields can be left empty for automatic range calculation.
  • Thanks to Michael Schmid, changed the name of the Profile Plot Options command to Plots and created a "Profile Plot Options" section at the bottom of the dialog.
  • Thanks to Dorai Iyer, multi-point selections are constrained to a horizontal or vertical line when the shift key is down.
  • Thanks to Michael Schmid, the ROI Manager's "Multi Measure" command displays a progress bar when "One row per slice" is checked.
  • Thanks to Stefan Worz, the Image>Duplicate, Image>Scale, Image>Adjust>Size, Image>Stacks>Stack to Images and Image>Stacks>Images to Stack commands no longer ignore image overlays.
  • Thanks to Christian Irgens, points selections selected in the ROI Manager are no longer moved when they are outside the image boundary.
  • Thanks to Christophe Leterrier, ImageJ now uses the Nashorn JavaScript engine when running on Java 8.
  • Thanks to Mike Davidson, added the call("ij.plugin.frame.ThresholdAdjuster.setMode",mode) macro function and the ThresholdAdjuster.setMode(mode) method, where 'mode' is "Red", "B&W" or "Over/Under".
  • Fixed a bug that caused the Compile and Run command to fail on Java 8 when compiling plugins with errors.
  • Thanks to Jan Eglinger, fixed a bug that caused an exception when saving multi-point selections.
  • Thanks to Rajeev Chaudhary, fixed a bug that caused the Edit>Copy and Edit>Copy to System commands to not correctly handle images with overlays.
  • Thanks to Dan White, fixed a bug that caused the Brightness/Contrast tool to not correctly display min and max values greater than 99999.
  • Thanks to Marc Lartaud, fixed a v1.50c regression that caused the More>>Save command in the ROI Manager to fail if there were duplicate ROI names.
  • Thanks to Michael Schmid and Dan White, fixed a 1.50d regression that caused the File>Save As>AVI command to create files that could not by opened by the Windows Media Player.

New in ImageJ 1.50f (Jan 4, 2016)

  • Added the Analyze>Tools>Grid command, which creates a non-destructive grid of lines, crosses, circles or points on the current image.
  • Thanks to Michael Elbaum, added the Process>FFT>Make Circular Selection command.
  • Thanks to Daniel Chung, text images can now be opened by dragging and dropping them on the ">>" icon in the toolbar.
  • Thanks to Stein Rorvik, with spatially calibrated images, the raw width and height are shown in parenthesis as a selection is being created.
  • Thanks to Sho Fujisawa, the ROI Manager uses 5 digits for y-coordinates in ROI names if the image height is greater than 9999 pixels.
  • Thanks to Norbert Vischer, added the Stack.setOrthoViews(x,y,z), Stack.getOrthoViewsID() and Stack.stopOrthoViews() macro functions (example).
  • Thanks to Stein Rorvik, added the getInfo("macro.filepath") macro function.
  • Thanks to Norbert Vischer, Image>Stacks>Orthoganal Views is faster and more reliable when working with hyperstacks.
  • The getInfo(key) macro function returns "Invalid key" if a value associated with the key is not found.
  • Thanks to Gabriel Landini, added the ImageProcessor.drawLine4(x1,y1,x2,y2) method, which draws 4-connected lines.
  • Added the static RoiManager.getRoiManager() method, which returns a reference to the ROI Manager and opens the "ROI Manager" window if it is not already open.
  • Thanks to Nicolas Stifani, fixed bugs that could cause the getResultLabel(row) and getResultString("Label",row) macro functions to fail.
  • Thanks to MartinH, fixed a bug that caused montages created using Image>Stacks>Make Montage to lose their pixel dimensions.
  • Thanks to Norbert Vischer, fixed a bug that caused the Pixel Inspector tool to not work correctly with blank 32-bit images.
  • Thanks Kees Straatman, fixed a bug that caused Process>Find Maxima, with "Count" output, to sometimes display unwanted results.
  • Thanks to Romain Guiet, fixed a bug in the ROI Manager that caused it to ignore an ROI name if the name was 9 character in length and it had a "-" in the middle.
  • Thanks to Stein Rorvik, fixed a bug that caused macros run from the command line to fail if the argument contained parenthesis.
  • Fixed a 1.50c regression that caused the deprecated RoiManager.getROIs() method to return null.

New in ImageJ 1.50e (Nov 20, 2015)

  • Thanks to Curtis Rueden and Brandon Hurr, the Stack to Images, Window>Tile and Window>Cascade commands, and non-batch mode macros that process multiple images, run faster on Macs (test macro).
  • Pressing "i" (Image>Show Info) when no images are open now displays useful information instead of a "No images are open" error.
  • Added a "Show all" checkbox and a "Help" button to the multi-point tool's options dialog box.
  • Thanks to Peter Haub, the Selection Rotator tool, available in the toolbar's ">>" menu, now rotates about the selection centroid and is recordable.
  • Thanks to Radoslaw Ejsmont, ImageJ's directory chooser, on Mac OS X, now uses the JFileChooser when the "Use JFileChoose to open/save" option is enabled in Edit>Options>Input/Output. Unlike the native directory chooser, JFileChooser still has a title bar on OS X 10.11 (El Capitan).
  • Thanks to Anton Jormescu and John Wolodzko, you can again change the views in Image>Stacks>Orthoganal Views by clicking, but not dragging, in the YZ and XZ planes.
  • Thanks to John Wolodzko, added the Plot.showValues macro function, which displays plot window values in the Results table.
  • Thanks to Peter Haub, added the Roi.getContourCentroid() method.
  • Thanks to Jan Eglinger, fixed a bug that caused Image>Adjust>Size, when using bilinear or bicubic interpolation, to shift positions of pixels by 1.0 in X, 0.5 in Y and 0.5 in Z.
  • Thanks to Michael Schmid, fixed a bug that caused the Brightness/Contrast adjuster's "Apply" function to not be undoable for full images or rectangular selections with 8-bit and 16-bit images.
  • Thanks to Michael Schmid, fixed a bug that caused the Brightness/Contrast adjuster to hang with RGB images when there was a non-rectangular selection extending beyond image boundary.
  • Thanks to Bob Hamilton, fixed bugs that caused the Run to Insertion Point macro debugger command to fail and the debugger to sometimes behave erratically.
  • Thanks to David Gault, fixed a memory leak when closing composite color images.
  • Thanks to Jan Eglinger, fixed a bug with the "d" (Draw) keyboard shortcut that caused it to not be correctly recorded.
  • Thanks to Anton Jormescu, fixed a bug in the Image>Stack>Tools>Grouped Z Project command that changed the Z and T dimensions of the original stack, which caused the Duplicate and Synchronize Windows commands to not work as expected.
  • Thanks to Carl Vandewater, fixed a bug that could cause Image>Color>Merge Channels to throw an exception when an input file name was shorter than three characters.
  • Thanks to Till Bretschneider, fixed a bug on OS X and Java 8 that caused copying of text from the macro recorder to fail.
  • Thanks to Saibal Mitra, fixed a v1.50d regression that caused the Process>Math>Macro command to not work correctly with 32-bit images.
  • Thanks to Michael Schmid, fixed a v1.49 regression that caused NaN values to not be correctly handled in plots.

New in ImageJ 1.50d (Oct 26, 2015)

  • Thanks to Peter Haub, added the Selection Rotator tool to the Toolbar's ">>" menu. To move the selection with this tool, hold down the alt or shift key.
  • The Edit>Options>Point Tool dialog, in multi-point mode, is now non-modal and has a "Counter" drop down menu. As a shortcut for opening this dialog, double click on the multi-point tool icon.
  • A point in a polygon, polyline or point selection can now be deleted by either alt-clicking or control-clicking.
  • The File>Import>Raw command now uses "smart recording" (default options are not recorded).
  • Added the Help>Examples>Autorun checkbox menu item.
  • Thanks to Michael Schmid, the AVI Reader now opens most oversized (>4GB) ImageJ AVI 1 files and the AVI Writer uses the AVI 2 format, which is AVI 1 compatible for files up to approx 0.9 GB. Use the Virtual Test Stack plugin to create multi-gigabyte test stacks.
  • Thanks to Bill Christens-Barry, added the WaitForUserDialog.setNextLocation(x,y) method (macro example).
  • Added the add(Roi,name) and remove(name) methods to the Overlay class.
  • Added the ThresholdAdjuster.setMethod() method.
  • Thanks to Kota Miura, worked around Java 8 bugs that caused cut, copy and paste to not work in the curve fitter (Analyze>Tools>Curve Fitting).
  • Thanks to Jan Eglinger, fixed a bug that caused the Image>Scale command to ignore the "z=" option when run from a macro.
  • Thanks to Stein Rorvik, fixed a bug that caused calibration bars (Analyze>Tools>Calibration Bar) to remove existing overlays.
  • Fixed a bug that caused the Process>Math>Macro command to not work correctly with 16-bit and 32-bit images if the macro code called the getPixel() function.
  • Fixed a bug that caused the Rotate 90 Degrees Right and Rotate 90 Degrees Left commands to not correctly handle non-zero origins.
  • Fixed a bug that caused polygon and polyline selections to lose properties like stroke color and stroke width after one of the selection's points had been deleted.

New in ImageJ 1.50c (Sep 28, 2015)

  • The Image>Stacks>Make Montage command now uses "smart recording" (default options are not recorded).
  • Worked around Java 8 bugs that caused the 't' shortcut (Edit>Selection>Add to Manager) and ROI Manager arrow key and mouse wheel scrolling to not work as expected on OS X.
  • Fixed a bug that caused the "ImageJ" window to expand to full screen on Windows and Linux when you double clicked on the title bar.
  • Thanks to Jens Kriese, fixed a bug that caused no more that 99 menu entries in a plungins.config file to be loaded.
  • Thanks to Jochen Reichel, fixed several RGB-related bugs in the Brightness/Contrast dialog.
  • Thanks to Jan Eglinger, fixed a bug that caused the getResultString() macro function to return "null" on re-opened Results tables if the first column was non-numeric and all other columns were numeric.
  • Thanks to Avital Steinberg, fixed a bug that caused the particle analyzer to alter the Results table counter if the "Display results" option was not enabled.
  • Thanks to John Wolodzko, fixed bugs that prevented ImageJ from correctly opening .csv and .xls tables with cells containing commas.
  • Thanks to Linda Fothergill, fixed a bug that caused selections to change when rotated and then rotated back by the same angle.
  • Fixed a bug that caused the Image>Lookup Tables>Apply LUT command to not work with 16-bit images.
  • Thanks to Martin Hoehne, fixed a bug that caused the run("ROI Manager...") macro function to not work as expected in batch mode macros with hidden ROI Managers.
  • Fixed a 1.50b7 regression that caused the ROI Manager's "Sort" command to not work correctly.

New in ImageJ 1.50b (Aug 27, 2015)

  • Folders and AVI files dropped on the toolbar's ">>" icon open as virtual stacks.
  • Thanks to Jerome Mutterer, added the Help>Examples>Macro>Grab Viridis Colormap example macro.
  • Thanks to Norbert Vischer, added the "Dual Progress Demo" example macro and JavaScript to the Help>Examples> menu.
  • Added the "Non-numeric Table" example macro and JavaScript to the Help>Examples> menu.
  • Added the "Image with Overlay" example image to the File>Open Samples> menu.
  • Thanks to Xiuxia Zhang, the Process>Batch>Convert command and IJ.openImage(path) method work with text images.
  • The Image>Overlay>Overlay Options command uses the 'Y' keyboard shortcut and it adds "Show labels" and "Hide" checkboxes to its dialog box if the current image has an ovelay.
  • Assigned the 'W'' shortcut to the File>Close All command.
  • The "Use virtual stack" option in the AVI Reader is set by default.
  • Thanks to Jochen Reichel, fixed a bug that caused the makeSelection("line", xpoints, ypoints) macro function to throw an exception if either array contained a non-integer value.
  • Thanks to Aryeh Weiss, worked around a Java 8 bug that caused the Memory Monitor to fail.
  • Thanks to Hermann-Josef Roser, fixed a bug that caused some imported RGB TIFFs to be read incorrectly.
  • Thanks to Michael Cammer, fixed a v1.44 regression that caused the setLineWidth() macro function to sometimes not work as expected if the global line width set in the Edit>Options>Line Width dialog was not 1.
  • Thanks to Aryeh Weiss, worked around a Java 8 bug on Macs that sometimes caused ImageJ to freeze when clicking on "Show All" in the "ROI Manager" dialog.
  • Thanks to Michael Entrup, fixed a bug that caused the x-axis label of plots to be cut off on Windows.
  • Thanks to Ved Sharma, fixed a bug that caused the macro code "if (false) Array.invert(a);" to generate an error.
  • Thanks to John Wolodzko, fixed a bug that caused the Plot.setLimitsToFit() macro function to sometimes not work as expected.

New in ImageJ 1.50a (Jul 22, 2015)

  • Thanks to Gerald Torgersen, added the Plugins>Shortcuts>Add Shortcut by Name command and removed the obsolete Plugins>Shortcuts>Install Plugin command.
  • Thanks to SyntonicC, add a "Rotate around image center" option to the Edit>Selection>Rotate command.
  • Thanks to Thomas Julou, cursor coordinates are displayed in pixels in the status bar if either the alt or shift keys are down.
  • Thanks to Radoslaw Ejsmont, the ChannelSplitter.getChannel() method works with RGB images and stacks and it throws an illegal argument exception if the channel argument is out of range.
  • Added the setThreshold(lower,upper,"raw") macro function and the IJ.setRawThreshold(imp,lower,upper,mode) method.
  • Fixed a bug that caused JavaScripts to sometimes unexpectadly display values in the Log window on Java 8.
  • Fixed a bug that caused the eval("js",code) macro function to fail on Java 8.
  • Fixed a bug that sometimes caused the setThreshold() macro function to throw an exception with 16-bit images.
  • Thanks to Megan Hagenauer, fixed a bug that caused incorrect line selection measurements on density calibrated (global) images.
  • Thanks to Jerome Mutterer, fixed bugs that caused a new dialog to be opened each time you pressed shift-ctrl-f in an editor window to open the macro function finder and caused focus to be lost when you closed the dialog.
  • Thanks to Michael Schmid, fixed a bug that caused the particle analyzer to ignore selections on RGB images.
  • Worked around a Java 8 bug on Macs that caused ImageJ to freeze when changing the display mode in the "Channels" dialog.
  • Thanks to Takashi Abe, worked around a Java 8 bug that caused mirrored cursors in synched windows to not be visible.
  • Thanks to Thorsten Wagner, fixed a bug that caused the "Use names as labels" setting in the ROI Manager's More>>Labels dialog to not be persistent.
  • Thanks to Jerome Mutterer, fixed a 1.49o regression that caused live profile plots of wide lines to flicker.

New in ImageJ 1.49v (Jun 24, 2015)

  • Thanks to Jan Eglinger, the open(path) macro function opens a folder of images as a stack. Use open(path,"virtual") to open a folder as a virtual stack.
  • Thanks to Ilan Tal, added the WindowManager.getAllNonImageWindows() method.
  • Thanks to Jan Eglinger, fixed a bug that caused the recorder to display a warning message when recording Image>Properties or Analyze>Set Scale and the unit was "µm".
  • Thanks to Christophe Leterrier, fixed a bug that caused the DirectoryChooser, when using Java 7 or later, to not use the native Mac OS X file chooser.
  • Thanks Thorsten Wagner, fixed a bug in the RoiManager that caused the "Labels" checkbox to be ignored when the "Use ROI names as labels" option was enabled.
  • Thanks to Olivier Burri, fixed a bug that caused the run("Merge Channels...","...") macro function to not correctly handle missing arguments.
  • Thanks to Megan Hagenauer, fixed a 1.49t regression that caused plot windows to disable global calibration.
  • Thanks to Jan Eglinger, fixed a 1.49t regression that caused Image>Properties to change Y and Z units to "pixel".

New in ImageJ 1.49u (Jun 15, 2015)

  • Added the Help>Examples sub-menu and an Examples menu to the text editor. When opening an example macro or script, hold the shift, control or alt key down to also run it. The examples are also available at wsr.imagej.net/download/Examples/.
  • The Wand Tool Options dialog (opened by double clicking on the Wand tool) now has a "Tolerance" slider that dynamically updates the selection.
  • Added the "NaN empty cells" option to the Analyze>Measurements Options dialog.
  • Thanks to Michael Schmid, the Curve Fitter (Analyze>Tools>Curve Fitting), to avoid aliasing, will use more than 100 points to draw the fitted curve.
  • Thanks to Michael Cammer, the Image>Hyperstacks>Hyperstack to Stack command now works with composite color images.
  • Thanks to Aaron Schain, the Image>Stacks>Tools>Concatenate command maintains hyperstack calibration.
  • Added the Array.getSequence() macro function (example).
  • Added the add(shape,xpoints,ypoints), addLegend(labels), addLegend(labels,options), setColor(String) and getPlot() methods to the Plot class.
  • Added the ImagePlus.isThreshold() and ResultsTable.setNaNEmptyCells() methods.
  • Thanks to Kerry Krugh, Image>Show Info now displays the first 60 characters of UN (Unknown) Value Representation DICOM tags.
  • Thanks to Megan Hagenauer, fixed bugs that caused the Analyze>Measure command to not work as expected with line selections when "Limit to threshold" was enabled in Analyze>SetMeasurements.
  • Thanks to Michael Schmid and Timothy Feinstein, fixed a bug that caused the setSelectionLocation() and Roi.move() macro functions to sometimes not work with straight line selections.
  • Thanks to Gabriel Landini and Michael Schmid, fixed a bug that caused the brush tool to sometimes not work as expected on Linux.
  • Thanks to Jan Eglinger, fixed a bug that caused Process>Batch>Convert to throw an exception when converting stacks to TIFF format.
  • Thanks to Laurent Gelman, fixed a 1.49t regression that caused the Image>Adjust>Canvas Size command to not work as expected with plot windows.

New in ImageJ 1.49t (May 13, 2015)

  • Thanks to Malgosia Pakulska, the "Apply" button in the Image>Adjust>Brightness/Contrast dialog works with 16-bit images.
  • Thanks to Nicolas Brouilly, the getResult() macro function works with tables that are not named "Results".
  • The "Save..." button in plot windows uses the "File extension for tables" from Edit>Options>Input/Output as the default extension.
  • Image>Adjust>Color Threshold uses the ColorSpaceConverter class (Image>Type>Lab Stack) to do RGB to Lab conversions.
  • Thanks to Vytas Bindokas, fixed a bug that sometimes caused 16-bit to 8-bit conversion of composte color images to fail.
  • Added the getValue("results.count") macro function.
  • Added the TextPanel.getOrCreateResultsTable() method.
  • Fixed a bug that caused the default "File extension for tables" in the Edit>Options>Input/Output dialog to be set to ".csv" when it was actually ".xls".
  • Thanks to Avital Steinberg, fixed a bug that caused an exception when saving composite selections with properties.
  • Thanks to Gabriel Landini, fixed a bug that caused the Make Binary and Convert to Mask commands to not work correctly with thresholded RGB images.
  • Christoph Derigo fixed bugs that caused the Calibrate.setYUnit() and Calibrate.setZUnit() methods to not convert "um" to "µm".
  • Michael Schmid contributed a greatly improved Plot class with many new features (demo macro):
  • Plot windows can be resized.
  • Use Image>Zoom>View 100% or More>>Reset Format to revert to the size defined in Edit>Options>Profile Plot Options.
  • Image>Zoom>In, or the '+' key, zooms in (both x&y) and Image>Zoom>Out, or the '-' key, zooms out.
  • Put the cursor below the x axis to zoom in/out horizontally and put it left of the y axis to zoom in/out vertically.
  • With the cursor below or left of the plot, arrows appear, which can be clicked on to to shift the limit.
  • With a selection, the '+' key, Image>Zoom>In and Image>Zoom>To Selection set the data range to the selection.
  • Image>Zoom>Original Scale reverts to the original data range.
  • Image>Zoom>Scale to Fit sets the scale to fit all data.
  • Use the hand tool (or drag with the space bar down) to shift the display range.
  • Select whether axes should have ticks, grids etc. in More>>Axis Options.
  • Adjust the font size in More>>Axis Options or in Profile Plot Options (for future plots).
  • Plots can now have a legend, and with "Legend Position" set to "Auto", the legend tries to not cover any data.
  • You can create a high-resolution (publication-quality) version of a plot by using the More>>High-Resolution Plot command.

New in ImageJ 1.49s (Apr 28, 2015)

  • Thanks to Ron Paletzki, the File>Import>Image Sequence command will now import a folder of multi-image TIFF files as a virtual stack.
  • The File>New>Hyperstack command draws the C, Z and T positions both in an overlay and on the images.
  • The recorder, when not in "Macro" mode, records Image>Color>Split Channels as "channels=ChannelSplitter.split(imp)".
  • Thanks to Martin Hohne and Michael Schmid, fixed a bug that caused the first point of a multipoint selection to not be visible on zoomed out images.
  • Thanks to Peter van Loon, fixed a bug that caused the paintbrush tool and Edit>Fill command to not work correctly on composite color images.
  • Fixed a bug that caused ImageJ to throw an exception when calculating the median on 32-bit images if the pixel count was zero.
  • Thanks to Lachlan Whitehead, fixed a 1.49r regression that caused the particle analyzer to fail if "Limit to threshold" was enabled.

New in ImageJ 1.49r (Apr 22, 2015)

  • Thanks to Jerome Mutterer, measurements done using the Set Measurements "Limit to threshold" option add two columns ("MinThr" and "MaxThr") to the Results table.
  • Thanks to Nicolas Brouilly, a progress bar is displayed when large images are resized.
  • The Image>Show Info command (press "i" as a shortcut) displays additional information, including the ImageJ version, java version, OS version, memory in use and the image size.
  • The ROI Manager's "Save..." command is faster and displays a progress bar.
  • The quality of montages created by Image>Stacks>Make Montage is better due to use of bilinear interpolation and averaging when reducing.
  • Added an "Average when reducing" option to the Process>Batch>Convert dialog box.
  • Thanks to Norbert Vischer, the macro editor aborts any existing macro before running or debugging another one.
  • The Image>Stacks>Plot Z-axis Profile command now works with line selections.
  • The macro editor replaces right curly quotes with standard double quotes.
  • Thanks to Jan Eglinger, fixed a bug that caused an exception to be thrown when selecting an image from the Window menu.
  • Thanks to Daisuke Kinose, fixed a bug that caused GenericDialogs without "OK" buttons to throw exceptions.
  • Thanks to Norbert Vischer, fixed a bug that caused pasted image selections to sometimes become permanent before they could be moved.
  • Thanks to Michael Schmid, fixed a bug that caused the OpenDialog.setDefaultDirectory() method to not work as expected on Windows with file paths that ended in slashes instead of backslashes.
  • Thanks to Jurriaan Holzenspies, fixed a bug that caused an exception to be thrown when measuring the perimeter of selections created by the Edit>Selection>Make Rectangular Selection Rounded command in Fiji.
  • Fixed a bug that caused the Process>Batch>Convert progress bar to not work.
  • Thanks to Tomm, fixed a bug the caused the saveAs("Text",filepath) macro function to not work as expected if 'filepath' ended in ".csv".
  • Thanks to Bill Heeschen, fixed a bug that caused macro 'break' and 'continue' statements to not work as expected in 'for' and 'while' loops with inner loops.
  • Thanks to Gilles Carpentier, fixed a 1.49q regression that caused the File>Import>Image Sequence command to ignore overlays.
  • Thanks to Vassilis Kehayas, fixed a 1.45 regression that caused the Histogram command to loss the ability to generate stack histograms of composite color stacks.

New in ImageJ 1.49q (Mar 28, 2015)

  • The File>New>Hyperstack command embeds the channel, slice, frame and stack index into the pixel data.
  • Thanks to Michael Schmid and Michael Doube, the 'invertY' calibration flag is now saved in TIFF headers.
  • The options of the ROI Manager's "Multi Measure" command are recorded if the Recorder is in "Macro" mode.
  • The Image>Color>Merge Channels command now deletes the source images after displaying the merged composite image.
  • The run("Subtract Background...","...") macro function no longer changes the default settings in the Process>Subtract Background dialog.
  • Added the Roi.copy() and Roi.paste() macro functions.
  • The Opener.openLut() method now works with URLs (JavaScript example).
  • Thanks to Francis OBrien, added the ChannelArranger.run() method (JavaScript example).
  • Added the IJ.getDir() method, as an alias for IJ.getDirectory().
  • Thanks to Chris Pudney and Michael Schmid, fixed a bug that caused the PARALLELIZE_IMAGES flag of the PlugInFilter interface to return incorrect ROIs when using non-rectangular masks.
  • Thanks to Kurt Bockhorst, fixed a bug that caused Image>Stacks>Images to Stack to sometimes not work correctly with inverted LUT images.
  • Fixed a bug that caused the Image>Color>Arrange Channels command to not work with overlays.
  • Thanks to Jan Eglinger, fixed a bug that caused the run("Quit") macro function to sometimes not work as expected.
  • Fixed a bug that caused extremely large images (e.g. 25000x25000 pixels) to not be displayed correctly because the minimum zoom of 3.1% was not low enough.
  • Thanks to Kees Straatman, fixed a bug that sometimes caused 8-bit images to be incorrectly converted to 16-bits.
  • Thanks to Christophe Deroulers, fixed a bug that sometimes caused the ROI Manager's "Translate" command to not work as expected.
  • Fixed a bug that caused the IJ.openVirtual() method to throw an exception if the file was not found.
  • Thanks to Curtis Rueden, fixed a bug that could cause a StackOverflowError exception on ImageJ startup on systems with three monitors.
  • Thanks to Michael Schmid, fixed a bug in the curve fitter that caused the RODBARD fit to not fit some data.
  • Thanks to Michael Schmid, fixed a bug that caused the Analyze>Tools>Curve Fitting command to sometimes not correctly scale plots.
  • Thanks to Jorge Valero, fixed a 1.49n regression that caused an exception when measuring an area out of the threshold limits in a 16 bit image and "Limit to threshold" was enabled in "Set Measurements".

New in ImageJ 1.49p (Mar 2, 2015)

  • Stacks open and save in less time due to faster IJ.showStatus() method.
  • Added the Image>Type>Lab Stack command, which converts an RGB image into a L*a*b* stack using code from Duane Schwartzwald's Color Space Converter plugin.
  • Thanks to Ferdinando Pucci, the Image>Stacks>Tools>Concatenate command works with images that differ in width or height.
  • The Image>Overlay>To ROI Manager command starts numbering at 1 instead of 0.
  • Thanks to Curtis Rueden, Image>Stacks>Images to Stack suggest using Image>Stacks>Tools>Concatenate if the user attempts to combine two or more stacks.
  • The IJ.showStatus() method is up to a 1000 times faster (example).
  • ImageJ displays a better error message when attempting to run a plugin with a missing library.
  • Added the getList("image.titles") macro function.
  • Thanks to Norbert Vischer, added the Roi.setPolygonSplineAnchors(), Roi.setPolylineSplineAnchors() and Roi.getSplineAnchors() macro functions (example).
  • Thanks to Philippe Carl, added the RoiManager.isSelected() method (JavaScript example).
  • Thanks to Philippe Carl, fixed a bug that caused plugins using the NonBlockingGenericDialog to hang when they were called using the run() macro function.
  • Thanks to Matt Jackson, fixed a bug that caused the Image>Zoom>To Selection command to sometimes not work as expected (window does not expand) when the alt key is down.
  • Thanks to Analia Lourenco, fixed a bug that caused ROI Manager outlines created by the particle analyzer to not be displayed in batch mode macros.
  • Thanks to Neil Fazel, fixed a bug that caused File>Import>Text Image to not correctly open files containing "nan" (lower case "NaN") values.
  • Thanks to Philippe Carl, fixed a bug that caused the Edit>Selection>Restore Selection command to not work as expected after making a selection in the ROI Manager.
  • Thanks to Ilan Tal, fixed a bug that could cause the "Close All" command to throw an exception and cause ImageJ to hang.
  • Thanks to Leon Espinosa, fixed a 1.49k regression in the behavior, when processing stacks, of the Process>Binary>Convert to Mask command and "Threshold" widget's "Apply" option.
  • Thanks to Philippe Carl, fixed a regression that caused the ROI Manager's "Show All" and "Labels" buttons to not be recorded.

New in ImageJ 1.49o (Jan 22, 2015)

  • Michael Schmid extended the HTMLDialog class to support more text (wrapping lines, scrollbar) and hypertext links. This allows for longer GenericDialog help messages and "About this Plugin" dialogs (Java example).
  • Thanks to Michael Schmid, "Live" mode z-axis profile plots and histograms are updated when you use a command in the Edit>Selection menu, such as shift-a (Select None).
  • Thanks to Michael Schmid, y-units and z-units are saved with and read from tiff/zip files and special characters are preserved in units and description strings.
  • When opening AVI files, the open() macro function no longer displays a dialog box. To open an AVI as a virtual stack, use run("AVI...", "open=file_path use").
  • The measured values (left column) in the Analyze>Calibrate dialog are now validated. With 8-bit images, the values must be in the 0-255 range. With 16-bit images, they must be in the 0-65535 range.
  • Thanks to Cyril Turies, added a Dialog.setLocation(x,y) macro function.
  • Added the IJ.openVirtual(path) method, which opens a TIFF file as a virtual stack.
  • Thanks to Xavier Colome, added the GenericDialog.addImage(ImagePlus) method.
  • Added the setDisplayMode(), getDisplayMode() and setActiveChannels() methods to the ImagePlus class.
  • Added the ij.gui.RoiListener interface.
  • Thanks to Neil Fazel, fixed a bug the caused the ROI Manager's More>>Remove Positions command to sometimes not work as expected.
  • Thanks to Norbert Vischer, fixed a bug that caused the open() macro function to fail when downloading .jar files from https servers.
  • Thanks to Roland Nussbaumer, fixed a bug that caused the "Channels" tool to not be correctly recorded except in "Macro" mode.
  • Thanks to Cong-Xin Qiu, fixed bugs in the FileSaver and RoiManager classes that caused files to not be properly closed when errors occured.
  • Thanks to William Nicolas, fixed a bug that caused the waitForUser() dialog to be closed when the active image was closed.
  • Thanks to Marius Krause, fixed a bug that caused the File>Save As>Image Sequence command to not save overlays when saving in TIFF format.
  • Thanks to Philip Ershler, fixed a bug that caused the Image>Stacks>Plot X-axis Profile command, when plotting a time series stack, to not work if the interframe interval was 0.
  • Thanks to Michael Schmid, fixed a bug that could result in a confusing error message when running a plugin and a class is not found.
  • Thanks to Michael Schmid, fixed a bug that caused updated "Width" and "Height" fields of the Image>Adjust>Size dialog to not be rounded.
  • Thanks to Tokamoto, fixed a 1.49n regression that caused the saveAs("Results",path) macro function to sometimes not work as expected.
  • Thanks to Gilles Carpentier, fixed a 1.49k regression that caused the setupUndo() macro function to not work as expected.

New in ImageJ 1.49n (Dec 18, 2014)

  • ImageJ now requires Java 6 or later.
  • 16-bit image statistics are calculated faster, using less memory.
  • Thanks to Michael Schmid, overlays modified by PluginFilters are now restored if the dialog is canceled or preview is disabled.
  • Added the Opener.openLut() method (JavaScript example).
  • Thanks to Avital Steinberg, added a runCommand(ImagePlus,String) method to the ROI Manager (JavaScript example).
  • Thanks to Michael Schmid, fixed a bug with frequency domain FFT images that caused a slight (1-pixel) shift between the position indicated in the status bar and the cursor.
  • Thanks to Felix Keber, fixed a bug that sometimes caused the "Threshold" widget to not work correctly with 16-bit stacks.
  • Thanks to Norbert Vischer, fixed a bug that caused the shift-a shortcut for Edit>Selection>Select None to not work as expected after using Analyze>Plot Profile and clicking "Live" in the plot window.
  • Thanks to Olivier Burri and Peter Bankhead, fixed a bug that caused the Image>Type>32-bit command to sometimes incorrectly convert 8-bit images to 32-bit.
  • Thanks to Kay Schink, fixed bugs that caused the particle analyzer to not work correctly with hyperstacks.
  • Thanks to Jared Windover, fixed a bug that sometimes caused the saveAs("Results",path) macro function to not work as expected.
  • Thanks to Gabriel Landini, fixed a 1.49k regression that could cause a plugin using the ImageCalculator class to fail when the plugin was called from a batch mode macro.
  • Thanks to Marc Lartaud, fixed a 1.49k regression that made it difficult to modify and update an ROI selected in the ROI Manager.

New in ImageJ 1.49m (Nov 24, 2014)

  • Fixed a bug that caused ImageJ to incorrectly read 3 and 4 channel 16-bit planar TIFFs.
  • Thanks to Dawid Krzempek and Michael Schmid, fixed bugs that caused the setFunction() and setCTable() methods of the Calibration class to sometimes not work as expected.
  • Thanks to Rodrigo Goncalves, fixed a bug that caused the size of maximized windows to be reset when they were moved on Windows 7 and Windows 8.
  • Fixed a 1.49k regression that could cause the imageCalculator() macro function to fail when processing stacks in batch mode macros.
  • Thanks to Frank Ogletree, fixed a 1.48 regression that caused 16-bit Zeiss SEM images to not open correctly.
  • Thanks to Graeme Awcock, fixed a 1.49c regression that caused GIFs with color LUTs to open as RGB images.

New in ImageJ 1.49k (Nov 10, 2014)

  • Thanks to Hermann-Josef Roeser, the Histogram command does a better job of plotting histograms with more than 256 bins. To get a dialog that allows you to specify the number of bins, run the Histogram command by pressing alt-h.
  • Thanks to Michael Schmid, the Process>FFT>FD Math command limits the image choices to power of 2 sizes and spatially calibrates the output image.
  • The table created by clicking on "List" in histogram windows is now a results table.
  • Thanks to Michael Schmid, the "B&C" tool no longer disables undo.
  • When running on Java 8, ImageJ uses the Rhino JavaScript engine instead of the built in, but incompatible, Nashorn engine.
  • Thanks to Christophe Leterrier and Johannes Schindelin, the JavaScript interpreter now supports the load() function.
  • Thanks to Philippe Carl, an ROI selected in the ROI Manager is deselected when it is removed from the image.
  • Thanks to Thomas Templier, the ImageCanvas.setSourceRect() method now sets the magnification and is more robust (JavaScript example).
  • Thanks to Johannes Schindelin, added the ij.macro.Debugger interface.
  • Thanks to Glen MacDonald, the run("Make Binary") macro function now supports a 'slice' option that allows stacks to be converted to binary using custom thresholding methods (example).
  • Thanks to Glen MacDonald, fixed several bugs in the Make Binary and Convert to Mask commands.
  • Thanks to Gerhard Hahm, fixed a bug that caused the imageCalculator() macro function to not select the first (output) image in batch mode macros.
  • Thanks to Johan, fixed a bug that caused the calibration to not be updated after updating an existing plot window using the Plot.update() macro function.
  • Thanks to Michael Schmid, fixed a bug that caused Edit>Selection>Create Mask to not maintain the spatial calibration when converting selections into masks.
  • Thanks to Hermann-Josef Roeser, fixed a bug that caused ImageJ to not correctly open 16-bit, 4 samples per pixel TIFFs, such as those created by VueScan.

New in ImageJ 1.49j (Oct 27, 2014)

  • Thanks to Ulf Dittmer, pixel hex values are displayed in the status bar when the cursor is moved over RGB images and over the color picker.
  • Thanks to Ved Sharma, added a "File name contains" option to the Process>Batch>Macro dialog box. As with File>Import>Image Sequence, regular expressions must be enclosed in parenthesis.
  • Thanks to Stamatis Pagakis, the "Do not save X values" option in the Edit>Options>Profile Plot Options dialog now works with multiple plots.
  • Thanks to Michael Schmid, fixed a bug that caused the setThreshold(t1,t2) macro function, when t1 and t2 were equal, to not work as expected when used with the Create Mask command.
  • Thanks to Matthew Taylor, fixed a bug that caused Process>Math>Log and the log() macro function to not correctly process values less than or equal to zero in 32 bit images.
  • Thanks to Robert Atwood, fixed a v1.49i regression that could cause the Measure command to throw an exception.

New in ImageJ 1.49i (Oct 14, 2014)

  • Impoved Results table auto-formatting.
  • Thanks to Norbert Vischer, the mouse behaves like an eraser if the alt key is held down while creating a polygon, freehand, polyline, freeline or angle selection.
  • Thanks to Stamatis Pagakis, duplicate x columns in profile plot results tables are no longer repeated (example).
  • "Live" and "RGB" buttons are no longer added to stack histogram windows.
  • Thanks to Norbert Vischer, when the color picker background panel is in front, it is labeled "B" and the foreground panel is labeled "F".
  • Thanks to Michael Schmid, added the Array.fourier() macro function and FHT.fourier1D() method (example).
  • Added the ResultsTable.setDecimalPlaces(column,digits) method.
  • Thanks to Matt Pearson, fixed a bug that caused the particle analyzer to not work as expected when processing stacks using the "Overlay Outlines" or "Overlay Masks" options.
  • Thanks to Matt Pearson, fixed a bug that sometimes caused the wrong image to be activated after using the Split Channels command in macros not running in batch mode.
  • Thanks to Christian Tischer and Kota Miura, fixed a bug that caused the BatchProcessor to not ignore hidden Thumbs.db files.
  • Thanks to Christian Tischer, fixed a bug that caused calibration bars to not be displayed correctly on contrast enhanced 8-bit images.
  • Thanks to Bill Christens-Barry, fixed a bug that caused rounded rectangle selections to not be drawn correctly.
  • Thanks to Gadea Mata, fixed a bug that caused the "Intermodes" thresholding method to sometimes not work as expected.
  • Thanks to Konrad Rokicki, fixed bugs that could cause Fiji headless mode exceptions.
  • Thanks to Philippe Gendre and Michael Schmid, fixed a bug that caused the RankFilters.rank(ip,radius,filterType,whichOutliers,threshold) method to ignore the 'threshold' argument.
  • Thanks to Neil Fazel, fixed a v1.49h regression that caused selections moved using the arrow keys to not be drawn correctly.

New in ImageJ 1.49h (Sep 20, 2014)

  • Selections in the ROI Manager and in overlays can be dragged by their labels. To show labels in the ROI Manager, click on the "Labels" checkbox. To show labels in an overlay, enable "Show labels" in the Image>Overlay>Labels dialog.
  • Thanks to Jeremy Adler, added "Type" and "Add to overlay" options to Edit>Options>Point Tool dialog. Note that the "Add to overlay" option is not available if the multi-point tool is active.
  • Thanks to Ilan Tal, single macro tools in the macros/toolsets folder added to the toolbar using the toolbar's ">>" menu are restored to the toolbar when ImageJ restarts, as long as the file name matches the tool name and there is a free toolbar slot.
  • Thanks to Philippe Carl and Jerome Mutterer, added the Roi.contains(x,y) macro function.
  • Thanks to Thomas Siegmund, the RoiManager's getRoisAsArray() method is now synchronized.
  • Thanks to Pedro Pepe, fixed a bug that caused the "Sum Method" of Image>Stacks>Z Project to not work correctly with signed 16-bit stacks.
  • Fixed a bug that caused the makePoint(x,y) macro function to not work correctly with non-integer coordinates.
  • Thanks to Norbert Vischer, fixed a bug that sometimes caused setThreshold() to fail in batch mode macros.
  • Thanks to Pedro Ramos Cabrer and Michael Schmid, fixed a 1.46 regression that caused 4 or 5 parameter custom curve fits to be much slower.
  • Fixed a regression than sometimes caused the Image>Duplicate command to not be correctly recorded.

New in ImageJ 1.49g (Aug 26, 2014)

  • Pinch to zoom works on Windows 8 tablets and touch screen laptops.
  • Mouse wheel scrolling is faster on Windows.
  • Improved script-mode recording of commands in the Edit>Selection submenu.
  • Fixed a bug that caused the Analyze>Tools>Save XY Coordinates command to not work with NaN backgrounds.
  • Fixed a bug in the TiffDecoder that caused it to sometimes incorrectly read the XResolution and YResolution tags.
  • Fixed a 1.49f regression that caused Image>Overlay>Flatten to fail with composite images.

New in ImageJ 1.49f (Aug 19, 2014)

  • The particle analyzer's "Summary" window has an associated ResultsTable and has "Rename" and "Duplicate" commands in its File and contextual (right-click) menus
  • The second argument (delimiters) of the split() macro function can be a regular expression enclosed in parentheses.
  • Fixed bugs that caused layout problems when resizing hyperstacks, especially when "Scale to Fit" resizing by holding down the alt key.
  • Fixed a 1.49e regression that caused the split() macro function to sometimes not behave as expected.
  • Fixed a 1.47 regression in the Image>Scale command that caused unwanted cross-talk in the x,y plane when downsampling in z.
  • Fixed a regression that sometimes caused Image>Stacks>Add Slice to throw an exception when adding a channel to a hyperstack.

New in ImageJ 1.49e (Aug 5, 2014)

  • Added the Edit>Options>Startup command.
  • Thanks to Norbert Vischer, added an "Adjust interval to match" option to the Edit>Selection>Interpolate dialog. This option adjusts the interval so that the steps between the first and last point are equidistant.
  • Thanks to Philippe Carl, the ROI Manager now insures that a selection activated by clicking on its label in the image is made visible in the list.
  • Thanks to Ilan Tal, plugin tools can now have right-click popup menus.
  • Thanks to Norbert Vischer, you can select a function name in the macro editor and use Macros>Macro Functions to get a description of that function.
  • Thanks to Christophe Deroulers, added a deselect() method to the RoiManager class.
  • Thanks to Neil Fazel, fixed a bug that caused error bars added using the Plot.add() macro function to not appear if the data points were added using Plot.add() (example).
  • Thanks to Marc Lartaud and Michael Schmid, fixed a bug that caused Feret's diameter of selections created with the selection brush tool on spatially calibrated images to be reported in pixels.
  • Thanks to Vytas Bindokas, fixed a bug that caused Edit>Selection>Create Mask to create a blank mask when it was used with a thresholded image in "select all" mode.
  • Thanks to Nikolaus Szeverenyi, fixed a bug that caused upper threshold values entered into the Image>Adjust>Threshold "Set" dialog to be reset to the highest pixel value in the image.
  • Thanks to Gabriel Schweighause and Michael Schmid, fixed a bug that caused the split() macro function, when using single character delimiters, to not correctly parse strings with empty cells.
  • Thanks to Ilan Tal, fixed a bug that caused plugin tools with hints in parenthesis to not be installed when ImageJ restarted.
  • Thanks to Gilles Carpentier, fixed a v1.48 regression that caused IJ.log("\n") to not add a blank line to the Log window.
  • Thanks to Christophe Deroulers, fixed a v1.49c regression that caused ROI Manager list selections to not be recorded.

New in ImageJ 1.49d (Jul 10, 2014)

  • Thanks to Philippe Carl and Neil Fazel, horizontal error bars can now be added to plots (example).
  • Thanks to Alan Brooks, non-uniform x and y units are now used in image subtitles (example) and by the Show Info, Specify, Rotate Right, Rotate Left and Surface Plot commands.
  • Added a "Translate" command to the ROI Manager.
  • Plugins>Install now installs tools with names ending in "Tool.txt", "Tool.ijm" and Tool.class" in the toolbar and saves a copy of the tool in the plugins/Tools folder.
  • Thanks to Neil Fazel, the Overlay.drawString() macro function supports multiline strings.
  • Thanks to Michael Schmid, added the getInfo("window.title") macro function.
  • Thanks to Michael Schmid, added the FHT.transform1D() and FHT.inverseTransform1D()methods (example).
  • Thanks to David Gauntt, fixed bugs that could cause the DicomDecoder#getFileInfo() method to hang when attempting to open non-DICOM files.
  • Fixed a bug that caused Help>Refresh Menus and Plugins>Install to delete macros installed in the Plugins>Macros menu.
  • Thanks to Jan Brocher, fixed a bug that caused RoiManager methods called from plugins to be recorded.
  • Thanks to Andrew Porter, fixed a v1.49 regression that caused some imported TIFF stacks to open incorrectly.

New in ImageJ 1.49c (Jun 30, 2014)

  • Selections added to an overlay by the Measure command are removed when the corresponding rows in the Results table are cleared.
  • Animated GIFs can now be opened using File>Open and drag and drop.
  • Overlays are rendered when saving images as GIFs or stacks as animated GIFs.
  • The Analyze>Label command now displays a dialog box that suggests using the "Add to manager" option in Analyze>Set Measurements.
  • Thanks to Lars Damgaard, the run("Image Sequence... ", "...") macro function (File>Save As>Image Sequence) works with single images.
  • When duplicating virtual stacks, progress information is displayed in the status bar.
  • Added the setOption("ShowAngle",boolean) macro function, which determines whether or not "Angle" is reported when measuring straight line lengths.
  • Added the IJ.getFullVersion() macro function.
  • Thanks to Philippe Mailly, added a public multiMeasure() method to the ROI Manager and upgraded the recorder to support this method (example).
  • Thanks to Nicolas Casadei, fixed a bug that caused macros to not reset the "escapePressed" flag, which sometimes caused "INTERRUPTED" to be displayed in the status bar and the macro to not work as expected.
  • Thanks to Christian Renicke, fixed a bug that caused the Brightness/Contrast and Color Balance tools to not work as expected on RGB stacks after an "Apply" operation.
  • Thanks to Matthew Pearson, fixed a bug in the IJ.renameResults() macro function that caused it to sometimes not work as expected if a column had been added using setResult() calls.
  • Thanks to Bryan Callahan and Curtis Rueden, fixed a bug that caused the run("Profile Plot Options...","...") macro function to throw an exception in Fiji headless mode.
  • Thanks to Neil Fazel, fixed a bug that caused Analyze>Plot Profile to not correctly display plot x and y coordinates at the bottom of the plot window when a fixed y-axis scale was used.
  • Thanks to Antoine Vandecreme, fixed a bug that caused ImageJ to incorrectly open non-8bit TIFFs that were missing the BitsPerSample tag.
  • Thanks to Norbert Vischer, fixed a bug in Image>Show Info that caused it to display the pixel size using inadequate precision.
  • Thanks to Philippe Carl, fixed a bug in the setThreshold() macro function that caused it to not update the "Threshold" window.
  • Thanks to Philippe Carl, fixed a bug in the "Threshold" window's "Set" option that caused the plot and scrollbars to not be updated.
  • Thanks to Grimper, fixed a bug that caused the setForegroundColor() macro function to not work in headless mode.
  • Thanks to Tara Ficken and Simon Runde, fixed bugs that sometimes caused ImageJ to incorrectly import TIFF stacks.
  • Thanks to Philippe Carl, fixed ROI Manager bugs that caused it to unexpectedly move selections when using the arrow keys, and to not deselect when switching between images.
  • Thanks to Tiago Ferreira, fixed a v1.48m regression that sometimes caused the "List..." button in plot windows to display an empty table.
  • Thanks to Gabriel Landini, fixed a v1.49 regression that caused cached versions of the blobs.gif sample image to open without an inverting LUT.
  • Thanks to Kees Straatman, fixed a regression that caused the straight line tool to not be recorded.

New in ImageJ 1.49b (May 31, 2014)

  • Thanks to Jeff Spector, Image>Stacks>Reslice can now create multichannel kymographs from time-lapse 4D hyperstacks (c>1,z=1,t>1) .
  • Thanks to Kenneth Sloan, the width and color of the paintbrush tool can be set using macros (example).
  • The Gel Analyzer now labels lanes with a white number on a black background.
  • The "Fixed y-axis scale" option in the Edit>Options>Profile Plot Options dialog is no longer saved in the preferences file.
  • Thanks to Gabriel Landini, the Plugins>Compile and Run command compiles plugins that us the 3D Viewer. (example).
  • Thanks to Christopher Coulon, fixed a bug that caused Image>Overlay>Flatten to not transfer metadata to the output image.
  • Thanks to Christophe Leterrier, fixed a bug that caused Process>Enhance Contrast to sometimes not correctly set the display range of stacks when "Normalize" was enabled.
  • Thanks to Sidnei Paciornik, fixed a bug that caused the "n_situ" particle analyzer option to not work as expected when analyzing a single stack image (example).
  • Thanks to Sidnei Paciornik, fixed a bug that caused the particle analyzer to hang when processing an 8-bit image and the threshold was set to 0-255.
  • Thanks to Marcel Austenfeld, fixed a bug that caused Image>Stacks>Orthogonal Views to sometimes freeze and/or throw a StackOverflow exception when the user dragged in the "XZ" or "YZ" windows.
  • Fixed bugs related to cropping and projecting stacks with labeled overlays.
  • Thanks to Tara Ficken, fixed bugs that caused some float and int32 TIFFs to be read incorrectly.
  • Thanks to Jeremy Walker, fixed a v1.47o regression that caused the getResult() macro function to not be able retrieve numbers added as strings to the results table.
  • Thanks to Christophe Deroulers, fixed a v1.49a regression that sometimes caused progress bars to not work as expected.

New in ImageJ 1.49a (May 16, 2014)

  • Thanks to Kenneth Sloan, added a "Paint on overlay" option to the built in brush tool's options dialog. Add the built in brush tool to the toolbar by selecting "Brush" from the toolbar's ">>" menu.
  • Thanks to Daniel Pensold, Analyze>Tools>Save XY Coordinates saves the coordinates and values of pixels inside selections to a .csv file.
  • Thanks to Volker Wirth, added a "Title:" field to the dialog displayed by Edit>Selection>Straighten when the line width is one or when processing a stack.
  • Selections created by the selection brush tool are deleted after they are added to an overlay.
  • Thanks to Jon Harman, Plugins>Install recognizes .zip files.
  • Thanks to Jerome Mutterer, added the makeArrow() macro function (example).
  • Thanks to Federico Luzzati, added the Stack.toggleChannel() macro function (example).
  • Thanks to Norbert Vischer, the showProgress(progress) macro function displays subordinate progress bars as moving dots when 'progress' is negative (macro example, script example).
  • Thanks to Messaoudi Cedric, Edit>Options>Memory & Threads no longer limits the number of threads to 32.
  • Thanks to Wilhelm Burger, added the IJ.setProperty(String,Object) and IJ.getProperty(String) methods, which are useful for passing data between plugins.
  • Thanks to Stephan Preibisch, added the MultiLineLabel#setText() method (example).
  • Fixed a bug that caused the recording mode to not be saved when quitting ImageJ with the Recorder open.
  • Thanks to Mats Nilsson, fixed a bug that caused the getInfo() macro function and ImagePlus#getStringProperty() method to not work with DICOM tags containing letters.
  • Thanks to Norbert Vischer, fixed a bug the caused the Array.findMaxima() macro function to throw an exception when the array length was one.
  • Fixed a bug that caused images with overlays containing black transparent images to not be correctly saved and restored.
  • Thanks to Jan Brocher, fixed a v1.48 regression that caused changes made in the Image>Overlay>Add to Overlay dialog (displayed when you press alt+b) to not be remembered.
  • Thanks to Kees Straatman, fixed a bug that caused the recorder to incorrectly record the Process>Binary>Convert to Mask command.
  • Thanks to Chris Weisiger, fixed a bug in Image>Stacks>Othogonal Views that caused it to fail with extened StackWindows with custom controls.
  • Thanks to Philippe Carl, fixed a v1.48t regression that caused the Plot#drawNormalizedLine() method to not work with log plots.

New in ImageJ 1.48v (Apr 22, 2014)

  • Plot and Histogram windows are no longer centered on the screen.
  • Added the Overlay.clear and setOption("Add to overlay",boolean) macro functions.
  • Thanks to David Knecht, commands listed in the Plugins>Shortcuts>List Shortcuts and Plugins>Shortcuts>Create Shortcut dialogs are sorted with case ignored.
  • Thanks to Denis Roussel, changed an incorrect Javadoc reference in PlugInFilter.java from SUPPORTS_STACKS to DOES_STACKS.
  • Thanks to Johannes Schindelin, added @link tags to the PlugInFilter.java Javadocs.
  • Fixed a bug that caused the progress bar to not terminate after dragging a jar file to the "ImageJ" window.
  • Fixed a bug that caused the roiManager("add") macro function to unexpectedly set the stack position of the source selection.

New in ImageJ 1.48u (Apr 10, 2014)

  • Selections added to overlays by the Measure command when "Add to Overlay" is enabled in Analyze>Set Measurements are labeled with the measurement number.
  • Thanks to Ted Toal, Image>Zoom>Set sets the zoom center based on a point selection and it no longer enlarges the window.
  • Thanks to Norbert Vischer, the macro debugger's Array Inspector now flags array value changes.
  • Added getStringProperty(key) and getNumericProperty(key) methods to the ImagePlus class.
  • Added a TextWindow constructor that accepts an ArrayList.
  • Thanks to Johannes Schindelin, added the GenericDialog#isPreviewActive() method.
  • Thanks to Herbie Gluender, fixed a bug that caused the output of the Plot Profile and Measure commands to be inconsistent with horizontal or vertical one pixel wide straight line selections.
  • Thanks to Gabriel Landini, fixed a bug that could cause the Results table to be displayed very slowly on Java 1.7 and 1.8.
  • Thanks to Burni, fixed a bug that prevented the ImageWindow.setNextLocation() method from working with windows normally centered on the screen, such as plot windows.
  • Fixed a v1.48 regression that caused the run("Add Selection...", options) macro function to not work as expected with text selections.
  • Thanks to Johannes Schindelin, fixed a v1.48r regression that caused the "Fonts" dialog to be displayed multiple times or incorrectly if you double-clicked the text tool icon multiple times.
  • Thanks to Johannes Schindelin, Gabriel Landini and Volker Baecker, fixed a v1.48r regression on Linux that caused ImageJ to freeze when opening a NonBlockingGenericDialog such as the text tool or arrow tool options dialogs.

New in ImageJ 1.48t (Mar 29, 2014)

  • Thanks to Ted Toal, holding down the alt key prevents the '+' command (Image>Zoom>In) from enlarging the window.
  • ImageJ remembers the location of the first small image opened.
  • Thanks to Norbert Vischer, Plugins>Utilities>Capture Image hides the zoom indicator.
  • Thanks to Dimiter Proanov, Image>Stacks>Plot Z-axis Profile displays the plot in calibrated units.
  • Thanks to Michael Schmid, added a File>Revert command to the text editor.
  • Fixed the Undo command in the text editor and added the Edit>Balance command, which locates the pair of curly braces or parentheses that surround the insertion point.
  • Thanks to Norbert Vischer, the text editor's Edit>Balance command handles '{' and '}' in comments and quotes, handles '[' and ']' brackets, handles escaped characters and detects errors if nested pairs are not balanced.
  • The Edit>Options>Compiler command now supports Java 1.8.
  • Thanks to Lorenz Maier, the run("Macro...", options) function now works when the options string starts with "v=" instead of "code=v=".
  • Thanks to Nico Stuurman, fixed a bug that caused the GaussianBlur.blurGaussian() method to throw an exception if the image had an ROI.
  • Thanks to Michael Schmid, fixed a bug that could cause the BackgroundSubtracter#rollingBallBackground() method to throw an exception when called with a FloatProcessor.
  • Thanks to Carnë Draug and Johannes Schindelin, fixed a bug that caused the File.directory macro function to not return the expected value after calling open(path).
  • Thanks to Carnë Draug, fixed a bug that precluded running macro files without extensions from the command line.
  • Thanks to Bill Heeschen, fixed a bug that caused Image>Duplicate to shift any non-rectangular selection in the source image to x=0, y=0.
  • Thanks to Jochen Cammin, fixed a bug in File>Import>Raw that caused it to only load the first slice from each file when "Open all files in folder" was checked.
  • Thanks to Julio Buonfigli, fixed a bug that caused the File>Compile and Run command in the text editor to throw an exception if the file name did not end in ".java".
  • Thanks to Philippe Carl, fixed bugs that caused the drawLine(), drawNormalizedLine() and drawDottedLine() methods of the Plot class to not work with log plots.
  • Thanks to Norbert Vischer, fixed a bug in Image>Zoom>Set that caused it to not correctly set the window size of stacks with selections.
  • Thanks to Eric Denarier, fixed a bug that caused Image>Overlay>From ROI Manager to not work in batch mode macros.
  • Thanks to Ted Toal, fixed a bug in the setResult() macro function that caused it to not work as expected when changing a string value in the Results table.
  • Thanks to Norbert Vischer, fixed a bug that sometimes caused the getProfile() and run("Plot Profile") macro functions to not work as expected.
  • Thanks to Lorenz Maier, fixed a bug that could cause Process>Math>Macro to throw a null pointer exception.
  • Thanks to Michael Schmid, fixed a bug that caused Process>Math>Gamma to not check for invalid gamma values in preview mode.
  • Thanks to Ilan Tal, fixed a regression that caused the "B&C" and "Threshold" windows to not remember their positions when the "ImageJ" window was closed.

New in ImageJ 1.48s (Mar 10, 2014)

  • Thanks to Johannes Schindelin, added the Window>Main Window [return] menu command. On Windows, the command is Main Window [enter].
  • Thanks to Philippe Gendre, added a "Marker size:" menu to the Edit>Options>Point Tool dialog box. The choices are "Tiny", "Small" (the default), "Mediam" and "Large".
  • Thanks to Jeremy Sword, added a "Zero transparent" option to the Edit>Selection>Image to Selection and Image>Overlay>Add Image commands.
  • The recorder no longer records default options (e.g., 'size=0-Infinity') when recording Analyze>Analyze Particles, File>Import>Image Sequence and Image>Stacks>Z Project.
  • Image>Show Info displays the image's screen location and, in parentheses, the screen dimensions.
  • Plugins>Utilities>ImageJ Properties displays "Max window bounds" and the bounds of all monitors on systems with multiple monitors.
  • When creating a straight line selection, the angle displayed in the status bar is now calculated using sub-pixel resolution.
  • Added the GenericDialog.setSmartRecording() method, which allows plugins to suppress recording of default dialog box parameters.
  • Thanks to Matt Smith, fixed a bug that could cause a deadlock when using the stack window scrollbar to move through the slices.
  • Thanks to Jiri Janacek, fixed a bug that caused alt-click removal of a point selection to fail if the point was over an overlay element.
  • Thanks to Aaron Schain, fixed a bug that caused Image>Stacks>Tools>Concatenate to sometimes not work as expected with hyperstacks.
  • Thanks to Stoyan Pavlov, fixed a bug in the Roi Manager that caused ROIs to not be updated after changing the position in the More>>Properties dialog box.
  • Thanks to Josh Balsam, fixed a bug in Image>Stacks>Tools>Make Substack that caused it to not work in batch mode macros.
  • Thanks to Ryota Homma, fixed a bug that caused NonBlockingGenericDialogs to not be removed from the Window menu when the dialog was closed.
  • Thanks to Jan Brocher, fixed a bug that caused Edit>Selection>Make Band to fail if "EDM output" was not set to "Overwrite" in Process>Binary>Options.
  • Fixed a bug that could cause the "ImageJ" window to open behind the Windows taskbar.
  • Thanks to Gabriel Landini, fixed a 1.48r regression that caused the Image>Adjust>Threshold dialog to throw an exception if it was activated when already open.
  • Thanks to John Lim, fixed a 1.48q regression that caused the run("RGB Color") macro function to not work as expected with composite color images in batch mode macros.

New in ImageJ 1.48r (Feb 19, 2014)

  • Added "Angle", "Color" and "Bkdg" (background color) choices to the dialog displayed when you double click on the text tool or use the Edit>Options>Fonts command.
  • Thanks to Michael Schmid, the Image>Adjust>Threshold dialog displays the percentile of thresholded pixels, along with other improvements (details).
  • With text selections, the Edit>Selection>Properties dialog adds a "Angle:" field and a "Antialiased text" checkbox.
  • Improved text tool recording.
  • NonBlockingGenericDialogs are added to the Window menu.
  • Thanks to Michael Schmid, the Edit>Crop command is undoable.
  • Thanks to Aryeh Weiss, added the RoiEncoder.save() and RoiDecoder.open() methods (example).
  • Thanks to Aryeh Weiss, fixed bugs that caused the recorder to not work as expected when using the ROI Manager to save a single ROI.
  • Thanks to Norbert Vischer, Analyze>Set Scale no longer changes the voxel depth if it is set to a value other than 1.0 (the default value).
  • Thanks to Michael Kummer, fixed a bug that caused ROIs with widths or heights greater than 65535 to not be saved correcty.
  • Fixed a 1.48q reqression that caused CompositeImage unit test errors.
  • Thanks to Norbert Vischer, fixed a bug that caused voxel depths of zero to not be saved in the TIFF header.
  • Thanks to Michael Schmid, fixed bugs that caused the ImageJ menus to disappear on Macs when using the "Threshold", "B&C", "Channels", "CP" (Color Picker) and "Command Finder" dialogs.
  • Fixed a bug that caused the text tool to draw the text outline in the foreground color instead of the selection color.

New in ImageJ 1.48q (Feb 3, 2014)

  • Image>Overlay>Flatten now works with non-RGB stacks and hyperstacks.
  • Thanks to Michael Schmid, the Edit>Selection>Specify command adds a "Constrain square/circle" option, supports non-integer numbers and no longer moves the selection when 'Centered' or 'Scaled units' are checked.
  • Thanks to Jerome Mutterer, added a setAngle() method to the TextRoi class (example1, example2, example3).
  • Thanks to Dimiter Prodanov, Image>Stacks>Plot Z-axis Profile, in "Live" mode, draws a vertical line on the plot that corresponds to the current stack position.
  • Thanks to Jean-Olivier Irisson, added setNormalize(boolean), setProcessStack(boolean) and setUseStackHistogram(boolean) methods to the ContrastEnhancer class.
  • Added the Overlay.setFillColor() macro function (example).
  • Thanks to Mark Hiner, the CompositeImage constructor no longer converts stacks to channels when the number of slices is less than eight if the dimensions have been set or if the mode is IJ.GRAYSCALE.
  • Thanks to Marcel Boeglin, added the ImagePlus.flattenStack() method.
  • Fixed a bug that caused horizontal and vertical lines in overlays in to be deleted when duplicating or cropping images.
  • Thanks to Nicolas Brouilly, fixed a bug that caused scales greater than 2,147,483 pixels/unit to be saved incorrectly in the TIFF header.
  • Fixed a bug that caused File>Open Next to not work as expected with TIFF files with overlays.
  • Thanks to Norbert Vischer, fixed a bug that caused the close(wildcard) macro function to sometimes not keep current image active.
  • Fixed a bug that caused the ImagePlus.hide() method to remove overlays.
  • Fixed a bug that caused macro run() calls using the keyword 'stack' in the options string to fail after the "d" (Draw) or "f" (Fill) keyboard shortcuts had been used.
  • Thanks to Marcel Boeglin, fixed bugs that caused Image>Overlay>Flatten to not work correctly with hyperstacks and to not be correctly recorded.

New in ImageJ 1.48p (Jan 13, 2014)

  • Added an "Overlay" option to the Analyze>Tools>Calibration Bar dialog box.
  • Image>Color>Split Channels and Image>Hyperstacks>Reduce Dimensionality are faster and preserve slice and frame positions.
  • The Image>Color>Make Composite command no longer displays the "Channels" window or resets the slice position.
  • The Help>Update ImageJ dialog now appends the daily build number, if it exists, to the "You are currently running" version.
  • When processing stacks, a "List thresholds" option is added to the Process>Binary>Make Binary dialog box.
  • The Image>Color>Merge Channels command no longer attempts to auto-fill its dialog unless there are open images created by Image>Color>Split Channels.
  • Added a DEBUG option to the ImageJ constructor. For example, a Java program can run ImageJ invisibly in debug mode using "new ImageJ(ImageJ.NO_SHOW+ImageJ.DEBUG)".
  • Thanks to Philippe Carl, added the GenericDialog.getRadioButtonGroups() method.
  • Added the TestRoi(String,int,int) constructor as a drop-in replacement for the Graphics.drawString() method.
  • Thanks to Jon Nathan, fixed a bug that caused radio buttons in GenericDialogs to not generate dialogItemChanged events (example).
  • Thanks to Ashley Peery, fixed bugs in Image>Color>Merge Channels that caused it to not correctly merge more than three RGB images and to ignore the "Make composite" option when merging RGB images.
  • Fixed a bug that caused Image>Stacks>Z Project to not correctly show progress when processing hyperstacks.
  • Fixed a bug that caused the getSelectionCoordinates() macro function to not work as expected with selections created using makeOval().
  • Thanks to Neil Fazel, fixed a bug that caused File>Import>Text Image to skip the first line of the text image if it consisted of all NaNs.
  • Thanks to Tiago Ferreira, fixed a bug that caused the particle analyzer to sometimes unexpectedly display the Results table if "Stack position" was enabled in Analyze>Set Measurements.

New in ImageJ 1.48o (Jan 4, 2014)

  • Fixed a 1.48n regression than caused the "-" (zoom out) command to sometimes display invalid zoom indicators.

New in ImageJ 1.48n (Jan 4, 2014)

  • Thanks to Norbert Vischer, Image>Zoom>Set now works with selections (example).
  • Added the Image>Zoom>Scale to Fit command.
  • Fixed a 1.48m regression than caused the "-" (zoom out) command to sometimes not work correctly with images magnified 100% or less.

New in ImageJ 1.48m (Dec 30, 2013)

  • Thanks to Dimiter Prodanov, Image>Stacks>Plot Z-axis Profile now supports "Live" profiling.
  • Thanks to "aschain", the channel-slice-frame priority used by the ">" (Next Slice) and "Options>Misc. Also, typing ">" or "

New in ImageJ 1.48k (Dec 16, 2013)

  • Added a "previous" choice to the Help>Update ImageJ command.
  • Thanks to Marcel Boeglin, the Image>Stacks>Z Project, Image>Type>RGB Color and Image>Color>Stack to RGB commands now support overlays.
  • Added a TextRoi(x,y,width,height,string,font) constructor that is useful for creating centered and right-justified text selections. (example).
  • Thanks to Marcel Boeglin, fixed a bug that caused right-justified text selections to not be correctly saved and/or retrieved.
  • Fixed a v1.48h regression that caused TrakEM2 tools to not work as expected.
  • The Convert Overlay To Icon macro converts an overlay or selection in a 16x16 image into a tool icon.

New in ImageJ 1.48j (Dec 12, 2013)

  • The toolbar is now expandable, with support for up to 15 custom tools.
  • Added the String.show(string) and String.show(title,string) macro functions.
  • Added a 'G' (draw polygon) command to the macro tool icon generation language (example).
  • Thanks to Thomas Suchyna, the Image>Adjust>Threshold window is resizable on Linux and Windows.
  • Thanks to Norbert Vischer, fixed a bug that caused Edit>Selection>Straighten to throw an exception with composite color images with straight line selections.
  • Thanks to Marcel Boeglin, fixed a bug in the Overlay.crop() method that sometimes caused the cropped overlay to be shifted.
  • Thanks to Marcel Boeglin, fixed bugs in Image>Hyperstacks>Reduce Dimensionality that caused it to not work correctly with overlays and with one channel hyperstacks.
  • Thanks to Mats Nilsson, and Johannes Schindelin, fixed a 1.48h regression that caused the getInfo(DICOM-tag) macro function to return empty strings or unexpected values.
  • Thanks to Dietmar Kunz, fixed a v1.48f regression that caused the ImageProcessor.duplicate() method to sometimes not work as expected.
  • Fixed a v1.48h regression that caused the "Select and Transform" tool in TrakEM2 to not work.

New in ImageJ 1.48i (Dec 3, 2013)

  • The "Abort Macro or Plugin" action tool (used by Fiji) is not installed if its installation would result in no free tool slots.
  • Thanks to Michael Cammer, fixed a bug that caused the Overlay.setPosition() macro function to not work as expected with Overlay.drawSting().
  • Thanks to Davide Heller, fixed a bug in Process>Binary>Skeletonize that could result in disconnected segments (test image).
  • Thanks to Pierre, fixed a bug that sometimes caused spline fit segmented lines to shift 0.5 pixels up and to the left after using Edit>Selection>Interpolate.
  • Thanks to Jay Unruh, fixed a 1.48h regression that could break Fiji if there were AutoRun macros.

New in ImageJ 1.48h (Dec 2, 2013)

  • Replaced the blank "Unused Tool" slot in the toolbar with a 9 pixel gap.
  • Thanks to Jerome Mutterer, added a "List properties" option to the Edit>Selection>Properties dialog box.
  • Thanks to Sebastien Octeau, added a "Skip dialog when opening .raw file" option to the Edit>Options>Input/Output dialog box.
  • Thanks to Norbert Vischer, the information shown in the Help>About ImageJ window is displayed in a text window when you press "i" (Image>Show Info) and is therefore easily copied to the clipboard.
  • Changed the default file extension for tables from ".txt" to ".csv" (comma-separated values).
  • Added "Insert", "Info" and "Close" buttons to the dialog opened by the macro editor's Macros>Function Finder command.
  • Plots created by Analyze>Calibrate always use an x range of 0-255 with 8-bit images.
  • The makeRectangle() and makeOval() macro functions support subpixel resolution.
  • Thanks to Jerome Mutterer, added getProperty(), setProperty() and getProperties() methods to the Roi class and Roi.getProperty(), Roi.setProperty() and Roi.getProperties() macro functions (example).
  • Thanks to Norbert Vischer, added setBatchMode("show") and setBatchMode("hide") macro functions.
  • Added Roi.getBounds(), Roi.getColor, Roi.getFillColor, Roi.getCoordinates(), Roi.getName, Roi.setFillColor(), Roi.setLocation(), Roi.setName(), Roi.setStrokeColor() and setStrokeWidth() macro functions (example).
  • Fixed a bug that caused toolbar icons to sometimes be drawn incorrectly.
  • Thanks to Michael Schmid, fixed a bug in Process>Noise>Salt and Pepper that caused it to omit the last column and row of the image.
  • Thanks to Michael Schmid, fixed bugs in the macro interpreter that caused expressions in the form s+"abc", where 's' is a string variable, to cause macros to abort when used as a function argument or used in a 'return' statement.
  • Thanks to Patrick Page-McCaw, fixed a bug that sometimes caused the particle analyser, when run from a plugin, to display a "No particles were detected..." dialog.
  • Thanks to Norbert Vischer, fixed a bug that caused an exception if the Size or Circularity fields in the particle analyzer dialog box were blank.
  • Fixed a bug that caused the wand tool to not be correctly recorded if the Recorder was not in "Macro" mode.
  • Thanks to Rainer Engel, fixed a bug that caused the particle analyzer to sometimes unexpectedly add selections to overlays.
  • Thanks to Norbert Vischer, fixed a bug that caused the LUT to be incorrect after switching channels in a batch mode macro.
  • Fixed a bug that caused the ROI Manager to sometimes unexpectedly display a "Save n ROIs as an overlay" message.

New in ImageJ 1.48f (Oct 31, 2013)

  • Thanks to Vytas Bindokas, the reported Feret's diameter angle is now between -90 and +90 degrees and the "if (angle>90) angle+=180" correction is no longer needed (example).
  • The Recorder now records File>Import>Import URL as open(url) (macro mode) or imp=IJ.openImage(url) (script or Java mode).
  • Thanks to Michael Schmid and Audrey O'Neill, ImageJ can now open MJPG-encoded files where the size of the JPEG frames differs from the size of the movie frames.
  • Thanks to Jan Eglinger, fixed a bug that caused the Recorder to record duplicate parameters when recording IJ.getFilePath().
  • Thanks to Ivan Micetic, fixed a bug that caused File>Revert to not restore image properties and LUTs.
  • Thanks to Christophe Leterrier, fixed a v1.48a regression that caused selections names longer than 20 characters displayed in the results table to be truncated.
  • Thanks to Bill Heeschen, fixed a v1.48e regression that caused the Process>Filters>Convolve command to fail.
  • Jerome Mutterer contributed the LineAndProfileTool macro tool, which creates a line selection while displaying the corresponding profile plot as an overlay.

New in ImageJ 1.48e (Oct 21, 2013)

  • Thanks to Michael Schmid, plots now use scientific notation for large numbers and the curve fitter no longer runs on the event queue and can be aborted.
  • Changed the ROI Manager's "Remove Slice Info" command to "Remove Positions...".
  • Line selections are always drawn offset 0.5 pixels down and to the right regardless of the "Sub-pixel resolution" option in Edit>Options>Profile Plot Options.
  • Thanks to Miettinen Arttu, File>Import>Raw now decodes image dimensions embedded in file names (e.g., "name1_512x512.raw", "name2_256x256x256.raw").
  • The default "Fill with:" option in the File>New>Image dialog is now "Black" and the default foreground color is white and the default background color is black.
  • Added a "Help" button to the Analyze>Gels>Gel Analyzer Options dialog box.
  • Fixed a 1.48d regression the caused the "Simplex Fitting Options" dialog in Analyze>Tools>Curve Fitting to throw and exception when performing user-defined fits.
  • Thanks to Michael Schmid, fixed a curve fitting bug which could cause unintended values for the initial parameters (resulting in more iterations than necessary).
  • Thanks to Peter Haub, fixed a bug that caused the CommandListener interface to not work as expected when ImageJ was exited by clicking on the "ImageJ" window's the close box.
  • Thanks to Pavol Bauer, fixed a bug that caused Process>Batch>Macro to not open .lsm files using Bio-Formats when the LSM_Reader plugin was not installed.
  • Fixed a bug in the new File>Open Samples>Cache Sample Images command that caused it to throw an exception.
  • Thanks to Dimiter Prodanov, fixed a bug the caused the ImageProcessor.clone() method to not work as expected.
  • Thanks to Michael Schmid, fixed a bug that caused the spline fitter to sometimes not work as expected.
  • Thanks to David Bragason, fixed a bug that made it impossible to subtract from a selection or create a centered oval selection if there was an underlying overlay.
  • Fixed a bug that caused the bounding box of spline fit selections to be incorrect.

New in ImageJ 1.48d (Sep 30, 2013)

  • Thanks to Johannes Schindelin, added the File>Open Samples>Cache Sample Images command.
  • Thanks to Stephan Saalfeld, Image>Type>32-bit now supports conversion of RGB stacks to 32-bit float and RGB to float conversions are done directly.
  • Thanks to Michael Schmid, added "Exponential Recovery (no offset)" and "Chapman-Richards" curve fitting options.
  • The File menu and popup menu of non-active results windows now contain "Rename..." and "Duplicate..." commands.
  • The title of a non-active results window changes if it is saved using a different name.
  • Thanks to Norbert Vischer, added the Array Inspector to the macro debugger (test macro).
  • In the macro language, 'break' and 'continue' statements are now supported in 'for' and 'while' loops.
  • Thanks to Norbert Vischer, added the Array.show() macro function (examples).
  • Thanks to Dimiter Prodanov, fixed a bug that caused the Recorder to not generate a plugin that would compile and run after recording Process>Image Calculator.
  • Thanks to Jonas Ogaard, fixed a bug that sometimes caused an exception when drawing ROIs created with the brush selection tool.
  • Thanks to Dimiter Prodanov, fixed bugs that caused Analyze>Plot Profile to not work correctly when the intensity was uniform.
  • Fixed a bug that caused the Recorder to not correctly record the polygon, segmented line and point tools in "JavaScript" mode.
  • Fixed a bug that caused the Recorder, when not in "Macro" mode, to sometimes not correctly record commands in the Edit>Selection menu.
  • Thanks to Eric Denarier, fixed a bug that could cause the Results window to become inconsistent when using the Measure command after running the particle analyzer.
  • Thanks to Guy Lyons, fixed a bug that caused the roiManager("Show All with labels") macro function to not work in batch mode.
  • Thanks to Dimiter Prodanov, fixed a bug that could cause ImageJ to throw an exception on startup.
  • Thanks to Barry DeZonia, fixed a bug that caused the ImageProperties.getUnitIndex() method to not work correctly when passed the string "mile".
  • Thanks to Barry DeZonia, fixed a bug that caused the Image>Properties dialog to not reset the Y and Z units when the "Unit of length" was changed.
  • Thanks to Michael Schmid, fixed a 1.46f regression that caused some user-defined curve fits to fail.
  • Fixed a 1.48 regression that caused the ROI Manager to not correctly associate hyperstack ROIs to CZT positions.

New in ImageJ 1.48c (Sep 16, 2013)

  • Thanks to Marcel Boeglin, plugins launched using Plugins>Compile and Run now display a full stack trace if they throw an exception.
  • Thanks to Chris Coulon, the "" keyboard shortcuts no longer display "There are no images open" and "Stack required" error messages.
  • Thanks to Norbert Vischer, the output of the Array.print() macro function is better formatted.
  • Thanks to Norbert Vischer, added the Array.findMaxima() and Array.findMinima() macro functions and corresponding MaximumFinder.findMaxima() and MaximumFinder.findMinima() methods (examples).
  • Thanks to Volko Straub, added the Overlay.moveSelection(index,x,y) macro function (example).
  • Thanks to Wilhelm Burger, added convertToByteProcessor(), convertToShortProcessor(), convertToFloatProcessor() and convertToColorProcessor() methods to the ImageProcessor class.
  • Thanks to Arthur Edelstein, added the Prefs.paintDoubleBuffered flag.
  • Thanks to Jose Maria Mateo, fixed a bug that caused run() macro calls using "&" notation to incorrectly pass numeric variables to the GenericDialog's getNextChoice() method.
  • Thanks to Bjoern Thiel, fixed a bug that caused the Analyze>Plot Profile command to not work as expected with spatially calibrated image with non-square pixels.
  • Thanks to Norbert Vischer, fixed a bug that caused the Plot.create() macro function to throw an exception if the y array was shorter than the x array.
  • Thanks to Norbert Vischer, fixed a bug that caused plots created by batch mode macros to not be scaled.
  • Thanks to Ved Sharma, fixed a bug that caused Analyze>Tools>Synchronize Windows to not work as expected with c=1, z=1, t>1 stacks.
  • Thanks to Rainer Engel, fixed bugs that sometimes caused the IJ.redirectErrorMessages() macro function to not prevent file read errors from aborting macros (example).
  • Thanks to Norbert Vischer, fixed a bug that caused Image>Duplicate to throw an exception if there was a selection outside the image.

New in ImageJ 1.48b (Aug 28, 2013)

  • Thanks to Michael Doube and Johannes Schindelin, added the "Interpolate ROIs" command to the ROI Manager.
  • Thanks to Norbert Vischer, submenus are now supported in the Plugins>Macros menu (example).
  • Updated the templates generated by the Plugins>New>Plugin and Plugins>New>Plugin Filter commands.
  • Rather than display an error message, the Copy and Cut commands now copy or cut the entire image when there is a line or point selection.
  • Added the ImageProcessor.set(double) method, now used by the Process>Macro>Set command.
  • Thanks to Eric Barnhill, added the HyperStackConverter.toHyperStack() method. A call to this method is generated if the recorder is running in script mode and the Image>Hyperstacks>Stack to Hyperstack command is used.
  • The Plugins>Macros>StartupMacros command works when the startup macros file is names StartupMacros.ijm.
  • The ImageConverter class works with stacks.
  • Thanks to Johannes Schindelin and Hans Wurscht, fixed a bug that sometimes caused memory used by images opened in batch mode macros to not be reclaimed (test macro).
  • Fixed a bug that caused run("Command") macro calls to run in a separate thread if "Command" was a macro installed in the Plugins>Macros submenu.
  • Thanks to Jan Brocher, fixed a bug that caused Image>Overlay>Flatten to sometimes not work as expected with RGB stacks.
  • Thanks to Gilles Carpentier, fixed a bug in the macro interpreter that caused it to incorrectly assign expanded arrays.
  • Thanks to Michael Schmid, fixed a bug that caused the FFT command to incorrectly display power spectra of RGB images.
  • Thanks to Alberto Duina, fixed a 1.48a regression that sometimes caused the ImageJ.updateAndDraw() method to throw an exception.
  • Fixed a bug that caused the IJ.getImage() method to display a "...Macro cancelled" error when using the "Compile and Run" command and no image was open.
  • Thanks to Gilles Carpentier, fixed a bug that sometimes caused the particle analyzer to display a blank Results table.
  • Thanks to Michael Schmid, fixed a bug that caused ImageJ to not correctly save 16-bit grayscale images in PNG format.
  • Thanks to Alberto Duina, fixed bugs that caused Edit>Selection>Interpolate to create straight line selections shorter than the original and to not work correctly with straight lines selections wider than one.

New in ImageJ 1.48a (Aug 1, 2013)

  • Added the Image>Overlay>List Elements command.
  • Thanks to Peter Haub, color LUTs are saved with 16-bit and 32-bit TIFFs.
  • Thanks to Simon Roussel, added Edit>Find and Edit>Find Next commands to text windows, such as those created by Image>Show Info.
  • The Image>Show Info command displays the display range of each channel, up to 7.
  • The "Set stack positions" option in the Image>Overlay>Options dialog is enabled by default.
  • Added a "Position:" field to the Edit>Selection>Properties dialog box.
  • Thanks to Dimiter Prodanov, added duplicate(), crop() and convertToFloat() methods to the ImageStack class.
  • Thanks to Franz Graf, added the ColorProcessor.setRGBWeights() method, a thread-safe (non-static) version of ColorProcessor.setWeightingFactors().
  • Thanks to Michael Doube, fixed a bug that caused plugins in jar files with a plugins.config entry starting or ending in one or more spaces to not be installed correctly.
  • Thanks to Jason Rogers, fixed a bug that caused the Edit>Copy command in "Results" windows to not work with one line tables.
  • Thanks to Vytas Bindokas, fixed bugs that caused 3D filters in Process>Filters to not work correctly with hyperstacks and to sometimes throw exceptions.
  • Thanks to Fabrice Cordelieres, fixed a 1.47v regression that sometimes caused unexpected results from setting the "plugins.dir" Java property.
  • Thanks to Norbert Vischer, fixed a bug that caused some commands in Process>Filters to throw an exception if the selection was outside the image.
  • Thanks to Gilles Carpentier, fixed a bug that caused a corrupted file to be created when using the setMetadata("Info","") macro function on a composite color image with an overlay and saving in TIFF format.
  • Thanks to Dimiter Prodanov, fixed a bug that sometimes caused a displayed stack to become inconsistent after the ImageStack was updated.
  • Thanks to Julien Berro, fixed a bug the caused the ROI Manager "Update" function to sometimes not work as expected with hyperstacks.
  • Thanks to Karsten, fixed a bug that caused Analyze>Measure to add very long selection names (longer than 20 characters), or selection names duplicating the image name, to labels in the Results table "Label" column.

New in ImageJ 1.47v (Jul 9, 2013)

  • Thanks to Wilhelm Burger, Plugins>Compile and Run works with plugins in packages that correspond to subfolders of the plugins folder and the PluginClassLoader searches ImageJ/jars for library jar files and classes.
  • Thanks to Gilles Carpentier, the ROI Manager's More>>List command now displays ROI stack and hyperstack positions and Overlay ROIs are always displayed on composite color images regardless of the stack positions of the ROIs.
  • Thanks to Laurent Holtzer, fixed a bug that caused Image>Adjust>Brightness/Contrast to not work correctly with 16-bit virtual stacks opened using the Bio-Formats plugin.
  • Fixed a bug the caused the getBitDepth() method of ImageProcessor subclasses to sometimes return 0

New in ImageJ 1.47u (Jun 26, 2013)

  • Thanks to Tiago Ferreira, the Plugins>Utilities>Search command now displays "Double-click on a file name to open it" in the Log window header bar.
  • Added a "Keep after adding to overlay" option to the arrow tool options dialog box.
  • Thanks to Elyse Aurbach, Analyze>Calibrate supports four more calibration functions and displays better calibration plots.
  • Thanks to Norbert Vischer, added the debug("conditional") macro function.
  • Thanks to Ved Sharma, fixed a bug that caused the particle analyzer to always create a new "Summary of ..." table when processing stack slices.
  • Thanks to Tiago Ferreira, fixed a bug in the Overlay.activateSelection() macro function that caused it to ignore stack positions.
  • Thanks to Barry DeZonia, fixed a bug that caused Image>Stacks>Tools>Reverse to not work with virtual stacks defined in Imglib.
  • Thanks to C Heeney, fixed a bug in the PolygonRoi class that caused it to modify the contains of float arrays passed to it in the constructor.
  • Thanks to Sebastien Simard, fixed a bug that caused multi-line arguments passed to user plugins to be displayed in the Log window when ImageJ was in debug mode.
  • Thanks to Jerome Mutterer, fixed a v1.47 regression that caused command line options similar to "-Dplugins.dir=..\ImageJ" to not work as expected.
  • Fixed a bug that caused the paths returned by getDirectory("image") and getDirectory("macros") to be incorrect if the path specified in the "-Dplugins.dir=path" command line option ended in "plugins".
  • Thanks to Andrew York, fixed a bug that caused macros run from the command line to sometimes unexpectedly display dialog boxes.
  • Thanks to Alberto Duina and Gabriel Landini, fixed a v1.47t regression that caused an exception to be thrown if a string with a length less than 3 was entered into a dialog box and the recorder was running.

New in ImageJ 1.47t (Jun 8, 2013)

  • The macro intepreter provides a better error message when a macro tries to index an empty array, such as the ones returned by the split() function when no tokens are found.
  • Thanks to Gilles Carpentier, fixed a bug that caused Image>Stacks>Tools>Reverse to not work as expected with composite color images.
  • Fixed a bug that sometimes caused Edit>Options>Memory & Threads to fail when ImageJ was started using the Linux launcher.
  • Thanks to Josef Borkovec, fixed a bug that caused GenericDialogs to not correctly record strings containing Windows file paths with backslashes.
  • Thanks to Barry DeZonia, fixed a bug in Image>Color>Arrange Channels that caused it to throw an exception with stacks with more than 10 channels.
  • Thanks to Gilles Courtand, fixed a v1.47s regression that caused the Process>Batch>Macro and Process>Batch>Virtual Stack commands to throw exceptions.
  • Peter Bankhead has made available Analyzing fluorescence microscopy images with ImageJ, a 184 page introduction to image analysis in PDF format.

New in ImageJ 1.47s (Jun 3, 2013)

  • Fixed a 1.47r regression that sometimes caused color composite images to not work as expected.

New in ImageJ 1.47r (Jun 3, 2013)

  • Added the Image>Color>Display LUTs command.
  • Improved the Plugins>Utilities>Search command, which now uses radio buttons in its dialog box.
  • Philippe Carl extended the Plot class to support log and arrow plots (example1, example2).
  • Thanks to Federico Luzzati, added a "Prepend" option to the Image>Stacks>Add Slice dialog box.
  • Added a "BeanShell" mode to the command recorder (Plugins>Macros>Record).
  • Thanks to Samuel Inverso, the File>Import>Raw dialog is displayed when a .raw file is dragged and dropped on the "ImageJ" window or opened using File>Open.
  • ImageJ now replaces underscores with spaces when adding .lut files in the ImageJ/luts directory to the Image>Lookup Tables menu.
  • Thanks to Ingo Bartholomaeus, several ImageProcessor methods (e.g. copyBits()) no longer display progress bars.
  • Thanks to Norbert Vischer, the setColor() and Plot.setColor() macro functions now accept hex strings such "#ff0000".
  • Added the getList("LUTs") macro function (example) and the IJ.getLuts() method.
  • Added the newImage(title,type,width,height,channels,slices,frames) macro function, which is recorded when using the File>New>Hyperstack command.
  • Added the addRadioButtonGroup() and getRadioButton() macro functions (example).
  • Added the addRadioButtonGroup() and getNextRadioButton() methods to the GenericDialog class (example).
  • Thanks to David Nauen, fixed a bug that caused Analyze>Measure to not calculate and display "Centroid" values of straight line selections.
  • Thanks to Matt Smith, fixed a bug that caused RGBA tiff stacks to not be opened correctly.
  • Thanks to Gilles Carpentier, fixed a bug that caused the Edit>Selection>Restore Selection command to sometimes fail.
  • Thanks to Gilles Carpentier, fixed a bug that caused Edit>Paste to not work as expected with selections that extend beyond the image boundary.
  • Thanks to Johannes Schindelin, fixed ROI Manager bugs that caused key presses to be recorded twice, caused multiple selections to be recorded incorrectly as single selections, and caused macro calls like roiManager("Select",newArray(1,2)) to not update the GUI.
  • Worked aroung a bug in Java 1.7 for OS X that caused the DirectoryChooser, used by File>Import>Image Sequence, to fail.
  • Thanks to Christophe Leterrier, fixed a bug in File>Import>Image Sequence that caused it to not set the slice label when the folder being opened contained a single image.
  • Thanks to Sebastian Rhode, fixed a bug that sometimes caused Analyze>Tools>Synchronize Windows to not work as expected when synchronizing hyperstack positions.
  • Thanks to Gilles Carpentier, fix a bug that sometimes caused ROIs with names containing dashes to not be displayed in a stack overlay.

New in ImageJ 1.47q (May 7, 2013)

  • Added the Image>Stacks>Tools>Set Label command.
  • Thanks to Stephan Saalfeld, fixed a bug that caused the width and height of selections to be capped at 99999.
  • Thanks to Burri Olivier and Michael Schmid, fixed a bug that caused Analyze>Distribution to not work with ranges containing negative numbers.
  • Thanks to Abed Alnaif, fixed a bug that caused Analyze>Plot Profile to sometimes not work correctly with wide segmented line selections.
  • Thanks to Brian Barford, fixed a v1.47j regression that caused the Chart White Balance plugin to not work correctly.
  • Fixed a v1.47o regression that caused Bio-Formats to throw an exception when opening virtual stacks.

New in ImageJ 1.47p (Apr 30, 2013)

  • Added the Edit>Selection>Scale command.
  • The roiManager("Rename",name) macro function adds "-1" to names that duplicate existing names.
  • Fixed a bug that caused the Edit>Selection>Rotate command to not work with composite selections.
  • Fixed a 1.47o regression that caused incorrect display of measurement results if "Stack position" was enabled in Analyze>Set Measurements and also caused the List.setMeasurements() macro function to fail.
  • Jan Brocher contributed BioVoxxel Toolbox, which includes these macros: Advanced Particle Analyzer, Feature Extractor, Speckle Inspector, Watershed Irregular Structures, EDM Erosion and Dilation, Auto Binary Masking, Threshold Checker, Contrast Detection, Difference of Gaussian, Difference from Median and Hyperstack Color Coding. Documentation is at www.biovoxxel.de/macros.html.

New in ImageJ 1.47o (Apr 27, 2013)

  • Results tables can now contain columns of strings (example).
  • Added the File>Import>Table command.
  • Added an "Open images using Bio-Formats" option to Process>Batch>Convert.
  • Thanks to Norbert Vischer, File>Save As>PNG saves 4-image 8-bit stacks or hyperstacks as PNG with alpha if the label of the fourth image is "Alpha".
  • Thanks to Wilhelm Burger, added the ImagePlus.setAntialiasRendering(boolean) method, which enables/disables use of antialiasing by the ImagePlus.flatten() method and the Image>Overlay>Flatten command.
  • Updated the ColorProcessor.getChannel() and ColorProcessor.setChannel() methods to support the alpha channel (example).
  • Updated the setResult() macro function to work with string values and added the getResultString() function.
  • Updated the ResultsTable addValue() and setStringValue() methods to work with string values and added the getStringValue() method (example).
  • Added the IJ.getFilePath(dialogTitle) method.
  • Added the Opener.openUsingBioFormats(path) and Opener.openTable(path) methods.
  • Johannes Schindelin added missing close() calls that caused Eclipse's resource leak warnings.
  • Johannes Schindelin made the ImageJ source compatible with Java 1.5 again by removing an illegal @override annotation from SubHyperstackMaker.java.
  • Thanks to Tom Kazimiers, fixed a v1.47f regression that caused the saveAs("tif",path) macro function to convert ".tiff" extensions to ".tif".
  • Thanks to Curtis Rueden, fixed a bug the caused Image>Stacks>Make Montage to not work as expected with composite color images.
  • Fixed a bug the caused Edit>Selection>Fit Spline to not work correctly with polygon selections.
  • Thanks to Philippe Carl, fixed a bug that sometimes caused the ImagePlus.setProcessor() method to not work as expected with stacks.
  • Thanks to Fabrice Cordelieres, fixed a bug that caused the Image>Stacks>3D Project command to throw an exception when working with 16 or 32 bit stacks and the "Interpolate" option was enabled.
  • Thanks to Jan Eglinger, fixed a bug that caused the precision of imported results to always be set to 3 decimal places.
  • Norbert Vischer released Perspective Stack View, a macro set that creates perspective views of stacks and hyperstacks for use in presentations or publications.

New in ImageJ 1.47n (Apr 1, 2013)

  • The Image>Show Info command uses the Exif Reader plugin (version 2013/03/29 or later) to display Exif data of JPEG images.
  • Added a Macros>Show Log Window command to the macro editor.
  • Thanks to Johannes Schindelin, the eval("script",JavaScriptCode) macro function now returns, as a string, the value of the last expression evaluated.
  • The ImageListener interface triggers an image updated event when an image is renamed.
  • The Compile and Run command downloads the Java compiler to the plugins/jars folder as needed.
  • Added the blurGaussian() and applyMacro() methods to the ImageProcessor class (example1, example2).
  • Added the Overlay.setPosition(c,z,t) and Overlay.drawLabels() macro functions.
  • Fixed a bug that caused the Python print statement to not work as expected.
  • Thanks to Julian Cooper, fixed a bug that caused bounding box values displayed in the Results window, when measuring lines selections, to always be in pixel units.
  • Thanks to Curtis Rueden, fixed a bug that caused the ROI Manager to not restore hyperstack ROIs to the current CZT position.
  • Thanks to Julian Cooper, fixed a bug that caused vertical lines selections at the left image edge or horizontal line selections at the top image edge to not be restored correctly.
  • Thanks to Dimiter Prodanov, fixed a bug that could cause the ROI Manager to throw an exception if it contained a zero-point PolygonRoi.
  • Thanks to Michael Epping, fixed bugs that caused the Flip Horizontally, Flip Vertically, Rotate Left and Rotate Right commands to not correctly transform the image origin.
  • Thanks to Rich VanMetter, fixed a bug that caused some DICOM images to open slowly.
  • Thanks to Stephen Cody, fixed a bug that caused the "Select" option in Image>Adjust>Color Threshold to sometimes not work as expected.

New in ImageJ 1.47m (Mar 7, 2013)

  • Added the Plugins>Install command.
  • Thanks to John Hayes, added a Macros>Evaluate Python command to the macro editor. The 8MB Jython interpreter is downloaded as needed from the ImageJ website to ImageJ/plugins/jars.
  • Scripts in the plugins folder with ".bsh" and ".py" extensions are added to the Plugins menu.
  • "Exception" windows now display the ImageJ version, Java version, OS version and memory usage.
  • Plugins>Utilities>ImageJ Properties now displays values returned by IJ.getDirectory() and all Java properties.
  • Improved recording of foreground/background color settings and the "Black background" option.
  • Thanks to Wilhelm Burger and Johannes Schindelin, output to System.out and System.err is redirected to the Log window when ImageJ is in the debug mode.
  • Wilhelm Burger's IjLogStream class is built into ImageJ as ij.io.LogStream.
  • Thanks to Christophe Deroulers, added the roiManager("save selected", path) macro function.
  • Added the eval("bsh",script) and eval("python",script) macro functions.
  • Fixed a v1.47d regression that sometimes caused the Process>Binary>Convert to Mask command to change the "Black Background" option.
  • Thanks to Leon Espinosa, fixed a v1.47j regression that caused ROIs added to the ROI Manager by the particle analyzer to have null names.
  • Thanks to Norbert Vischer, fixed a bug that caused the Edit>Selection>Rotate command to not work as expected with rounded rectangle selections.
  • Thanks to Antti Niemisto and Gabriel Landini, fixed a bug that caused the "Minimum" thresholding method to set the wrong threshold for some unusual histograms.

New in ImageJ 1.47k (Feb 18, 2013)

  • Fixed a 1.47j regression that caused the Analyze>Plot Profile command to not work as expected with line selections wider than 1.

New in ImageJ 1.47j (Feb 16, 2013)

  • The Edit>Selection>Enlarge command is much faster.
  • Thanks to Norbert Vischer, the macro debugger now flags changed variables.
  • Thanks to Norbert Vischer, Edit>Selection>Line to Area, with straight line selections, now creates 4-corner polygons instead of traced selections.
  • Added the "Enhanced line tool" option to Edit>Options>Misc, which allows straight line selections to be created by clicking at the start and at again the end.
  • The File.openAsString() macro function no longer has a file size limit.
  • Thanks to Rainer Engel, added the File.copy(path1,path2) macro function.
  • Thanks to Norbert Vischer, added the Array.resample(arr,len) macro function.
  • Added the Overlay.addSelection(color), Overlay.addSelection(color, strokeWidth) and Overlay.addSelection("", 0, fillColor) macro functions.
  • Thanks to Miso Mitkovski, fixed a 1.47i regression that caused the command finder to sometimes not work as expected when using the down arrow and enter keys.
  • Thanks to Gilles Carpentier, fixed a bug that could cause the ROI Manager to not work correctly if ROIs with duplicate names were programatically added.
  • Thanks to Norbert Vischer, fixed a bug that caused the split() macro function to not return a zero length array when no tokens were found.
  • Thanks to Ignacio Arganda-Carreras, fixed a bug that caused the SaveDialog class to add the extension twice if it was longer than four characters.
  • Thanks to Sebastien Tosi, fixed a bug that sometimes caused the getHistogram() macro function to not work as expected with 16-bit images.

New in ImageJ 1.47i (Jan 28, 2013)

  • Thanks to Curtis Rueden, the command finder (Plugins>Utilities>Find Commands) uses a table to display additional information about the commands it finds.
  • Improved the Plugins>Shortcuts>Create Shortcut command.
  • The Image>Stacks>Plot Z-axis Profile command works with hyperstacks.
  • Thanks to Adam Brin, added the IJ.getErrorMessage() method.
  • The "Startup Macros" command in the toolbar's ">>" menu looks for a file named StartupMacros.fiji.ijm if StartupMacros.txt is not found in the macros folder.
  • Added the Overlay.addSelection() and Overlay.activateSelection() macro functions.
  • Michael Schmid fixed a bug that sometimes caused Process>Noise>Remove Outliers and Process>Binary>Erode to not work correctly when processing stacks using multiple threads.
  • Thanks to Alistair MacDougall, fixed a v1.47f regression in the saveAs("tiff",path) macro function that caused it to not update the image title.
  • Fixed a 1.47f regression that caused the saveAs("tiff") macro function to throw an exception.
  • Fixed a bug that caused the String.copyResults() macro function to ignore selections, which is not consistent with the Results window's Edit>Copy command.
  • Thanks to Ved Sharma, fixed a bug that caused the macro language return statement to not correctly return string array values.
  • Thanks to Erik Belanger, fixed a bug the caused Image>Stacks>Delete Slice to not work correctly with hyperstacks.
  • Thanks to Julien Vaubourgeix, fixed a bug in Image>Stacks>Label that caused it to delete any existing overlay when the "Use overlay" option was enabled.
  • Fixed a bug that caused the saveAs(path) macro function to display a "Save As" dialog box.

New in ImageJ 1.47h (Dec 27, 2012)

  • Thanks to Denis Meuthen, you can now create a straight line selection by defining the start of the line with one click and the end with another click.
  • Thanks to Curtis Rueden, Image>Stacks>Tools>Make Substack now works with hyperstacks.
  • Thanks to Jerome Mutterer, the arrow, brush, pencil and pixel inspector tools remember the location of their options dialogs.
  • Thanks to Rainer Engel, the "Log" window remembers its dimensions.
  • File>Save As>Image Sequence displays a warning if the first file in the sequence will overwrite an existing file.
  • The File>New>Hyperstack command can be invoked by pressing alt-n.
  • Thanks to Gilles Carpentier, fixed a bug that caused the run("Make Composite") macro function to sometimes not work as expected.
  • Michael Schmid fixed a bug that prevented the AVI Reader from correctly opening as virtual stacks AVI files with blank frames.
  • Thanks to Alex Hughes, fixed a bug that caused the ROI Manager's Multi Plot command to disregard the "Vertical profile" option in the Edit>Options>Profile Plot Options dialog box.
  • Thanks to Kees Straatman, fixed a bug that caused Analyze>Tools>Analyze Line Graph to hang with non-thresholded images.
  • Thanks to John Oreopoulos, fixed a bug that caused File>Import>Image Sequence to sometimes not work as expected when all the images in the sequence were not the same type.
  • Thanks to Jerome Mutterer, fixed a bug that caused an exception when pasting, in a macro, a non-recangular ROI that was partially outside the target image.
  • Thanks to Vanessa Bell, fixed a bug that caused the getSelectionCoordinates() macro function and Roi.getPolygon() method to sometimes unexpectedly return the bounding rectangle of composite selections.
  • Thanks to Aivar Grislis, fixed a v1.47g regression that caused the setLocation() macro function to not work with some non-image windows.
  • Thanks to Michael Schmid, fixed a bug that caused "Cancel" to not work as expected for dialogs in "Preview" mode with commands called from macros.
  • Thanks to Jarek Sacha, fixed a bug that caused ImageListeners to sometimes not be notified when the image was updated.
  • Michael Schmid fixed two PlugInFilterRunner bugs related to Preview and PARALLELIZE_IMAGES.

New in ImageJ 1.47g (Dec 3, 2012)

  • Changed the "Brightness/Contrast", "Channels", "Threshold" and "Color Picker" windows to modeless dialogs that do not have the iconize and maximize buttons that are problematic on Windows.
  • TAdded an "Auto contrast stacks" option to the Edit>Options>Appearance dialog box. Alternatively, hold down the shift key when scrolling stacks.
  • Plugins>Compile and Run, on Java 1.6 or later, uses javax.tools.JavaCompiler instead of com.sun.tools.javac.Main.
  • Added the close(pattern) macro function (example) and the ij.util.WildcardMatch class.
  • Added the getValue("rgb.foreground") and getValue("rgb.background") macro functions.
  • Added the setForegroundColor(rgb) and setBackgroundColor(rgb) macro functions.
  • Added the setOption("auto contrast",boolean) macro function.
  • Worked around a bug on Windows 8 that made scrollbar thumbs nearly invisible.
  • Fixed a bug that caused an exception when File>Revert was used on a duplicated image.
  • Fixed a bug that could cause an exception when calling an Ext macro function.

New in ImageJ 1.47f (Nov 19, 2012)

  • Added the IJ.saveAsTiff() method.
  • Fixed a v1.46f regression that caused the applet version of ImageJ to not open images specified using HTML parameters.
  • Thanks to Erik Belanger, fixed a bug that caused the setMinAndMax() macro function to not work with batch mode composite color images.
  • Fixed several stack flattening bugs.
  • Fixed several hyperstack related bugs in the Image>Scale command.
  • Fixed a bug that caused the saveAs("tif",path) macro function to not work correctly on consecutive command line macro calls.
  • Thanks to Norbert Vischer, fixed a bug that caused Copy from the "Log" window to not work correctly for lines containing tabs when "Copy row numbers" was not enabled in Edit>Options>Input/Output.
  • Thanks to Jerome Mutterer, fixed a bug that prevented the FigureJ plugin from being able to restore tools.

New in ImageJ 1.47e (Nov 12, 2012)

  • Added the Macros>Evaluate BeanShell command to the macro editor. This command requires that a copy of BeanShell.jar be in the plugins folder.
  • Thanks to Michael Kaul, bilinear interpolation works better with float images containg NaNs.
  • Thanks to Michael Schmid, added a "Gaussian (no offset)" curve fitting option.
  • The recorder displays a warning when the options string in run(command,options) calls contain one or more non-ascii characters.
  • Added the Toolbar.addTempPluginTool() and Toolbar.restoreTools() methods (example).
  • Added the ParticleAnalyzer.setFontColor(String) method and the call("ij.plugin.filter.ParticleAnalyzer.setFontColor","blue") macro function. .
  • Thanks to Thomas Boudier, added a public GaussianBlur3D.blur() method.
  • Thanks to Michael Schmid, fixed a v1.46 regression that could cause curve fitting errors.
  • Simon Bear fixed a bug that caused black pixel data to be ignored when loading CMYK TIFFs.
  • Fixed a bug that caused the source stack to become corrupted when scaling by x=1.0 and y=1.0 in Image>Scale.
  • Thanks to Thorsten Wagner and Michael Schmid, fixed a bug that caused the Analyze>Summarize command to fail if the Results table contained headings with spaces.
  • Thanks to David Gauntt, fixed a bug in the FHT class that caused it to fail when calculating the power spectrum of 1D arrays larger than 32K.
  • Thanks to Jarek Sacha, fixed a bug that cuased File>Import>Image Sequence to sometimes not set the correct slice labels when opening a series as a virtual stack.

New in ImageJ 1.47d (Oct 6, 2012)

  • Thanks to Norbert Vischer, added the Image>Color>Arrange Channels command.
  • Thanks to Michael Cammer, when processing stacks, added "Method" and "Background" choices to the Process>Binary>Convert to Mask dialog.
  • Thanks to Ved Sharma, the arrow tool draws bolder outlined arrows.
  • Deleted the redundent Image>Hyperstacks>Channels Tool menu command.
  • Thanks to Norbert Vischer, added the getInfo("command.name") macro function (example).
  • Added the setOption("jfilechooser") macro function.
  • Fixed a bug that caused the roiManager("select",n) macro function, and RoiManager.select() method, to display an error message if no images were displayed.
  • Thanks to John Page, fixed a bug that caused CMYK TIFFs to open inverted.
  • Thanks to Birgit Möller, fixed a bug that sometimes caused the ImagePlus.show() method to not work as expected on closed images.
  • Thanks to Norbert Vischer, fixed a bug that sometimes caused the Edit>Selection>Line to Area command to not work as expected.
  • Thanks to Gilles Carpentier, fixed bugs in Process>Binary>Skeletonize that caused it to sometimes not remove all skeleton pixels.
  • Thanks to Leon Espinosa, fixed a bug that caused "Apply" in the "Threshold" tool to always use the default thresholding method.
  • Thanks to Jan Eglinger, fixed a bug that caused incorrect recording, when the recoder was in "JavaScript" or "Plugin" mode, of plugins that used the run(imp,..) methods of the Duplicator class.
  • Norbert Vischer fixed a bug that caused line numbers in macro error messages to be incorrect with macros containing emptly lines inside SlashStar comments.
  • Thanks to Jiri Janacek, fixed a bug the caused the perimeter of composite ROIs in spatially calibrated images to be incorrect.
  • Thanks to Michael Schmid, fixed a bug that could cause file corruption if the Crop command was used while a stack was being saved.
  • Thanks to Eric Denarier, fixed a bug in Process>Batch>Macro that caused it to somestimes not output the correct images.
  • Kota Miura has made available two textbooks ("Basics of Image Processing and Analysis" and "Macro Programming in ImageJ") he uses for the ImageJ classes he teaches.

New in ImageJ 1.47c (Sep 10, 2012)

  • Added a "Source" (display source code of selected command) button to Plugins>Utilities>Find Commands.
  • Dorai Iyer added a "Bar" option to the arrow tool.
  • Bill Mohler modified the ROI Manager to use a JList instead of a List, which makes loading and sorting the large (>10,000) ROI sets faster.
  • Added an "Append results" checkbox to the ROI Manager's "Multi Measure" command.
  • When opening images, the transfer rate in MB/sec is displayed in the status bar.
  • Thanks to Sébastien Tosi, opening TIFF files using File>Import>URL is faster and requires less memory.
  • Thanks to Jan Eglinger, fixed a bug that caused incorrect recording of commands implemented in JavaScript when the recorder was in "JavaScript" mode.
  • Thanks to Sébastien Tosi, fixed a bug that caused File>Import>URL to not correctly read TIFF files larger than 2GB.
  • Fixed a bug in the Analyze>Tools>Synchronize Windows command that caused it to not work as expected when changing the channel of composite color images.
  • Thanks to Christoph Deil, fixed a bug in Plugins>Utilities>Find Commands that caused esc and ctrl-w key presses to not close the window after "Show full information" was enabled.
  • Thanks to Christoph Deil, fixed bugs in the "Save changes?" dialog that caused it to not work as expected after the focus was changed (by tabbing) to the "Don't Save" or "Cancel" buttons.

New in ImageJ 1.47b (Aug 13, 2012)

  • Added the Image>Stacks>Statistics command.
  • Thanks to Michael Schmid, the built in brush, pencil and overlay brush tools draw using the background color when alt key is down, are constrained to draw horizontally when shift is down, are resized when shift&control are down (shift&cmd on Macs), and "pick up" the foreground color when control is down (cmd on Macs).
  • Added a "16 bit range" choice to the Edit>Options>Appearance dialog box. This is the same as the "Unsigned 16 bit range" choice in the Brightness/Contast Adjuster's "Set" dialog.
  • Thanks to Olivio Donati, File>Import>Image Sequence opens any associated ROIs that are in a file named RoiSet.zip.
  • Thanks to David Knecht, added a "sum" option to Image>Transform>Bin.
  • The getHistogram() macro function no longer limits the number of bins to 256 with 8-bit and RGB images.
  • Added the IJ.createHyperStack(title,width,height,channels,slices,frames,bitdepth) method, where 'bitdepth' is 8, 16, 24 (rgb), or 32 (float).
  • Thanks to Qingzong Tseng, fixed a bug that caused overlays to be lost when converting composite stacks to RGB.
  • Thanks to Jan Eglinger, fixed a bug that caused images created by the particle analyzer's "Show:" option to not use the calibration of the original image.
  • Thanks to Guenter Giese, fixed bugs that caused the "Unsigned 16 bit range" choice in the Brightness/Contast Adjuster's "Set" dialog to not work as expected with multi-channel images.
  • Thanks to Barry DeZonia, fixed a bug that caused the command recorder to not work with Image>Stacks>3D Project when processing 16 and 32 bit images.
  • Thanks to William Edwards, fixed a bug that sometimes caused the median of 32-bit float images to be calculated incorrectly.
  • Thanks to Michael Cammer, worked around a bug that could cause commands in the Image>Type submenu to not work as expected in non-batch-mode macros.

New in ImageJ 1.47a (Jul 18, 2012)

  • Thanks to Thomas Boudier, added five new 3D filters (Median, Mean, Minimum, Maximum and Variance) to the Process>Filters submenu.
  • Added the "Restore Startup Tools" command to the toolbar's >> menu.
  • Thanks to Tiago Ferreira, built-in and plugin tools can be added to toolsets and the startup macros (example).
  • Michael Schmid modified the Overlay Brush tool for constrained motion (vertical or horizontal) with shift and resizing with ctrl-shift (cmd-shift on Macs).
  • Thomas Tongue added support for the CDELT and CTYPE headers to the FITS Reader.
  • Added the getinfo("selection.color") and getValue("selection.width") macro functions.
  • Thanks to Simon Roussel, fixed a bug that could cause overlays to not be displayed on virtual stacks.
  • Fixed a bug that caused the brush and pencil tools to activate overlay selections.
  • Michael Schmid fixed a bug that sometimes caused Preview to not work correctly with commands in the Process>Filters submenu.
  • Fixed a 1.46 regression that caused the ROI Manager to generate incorrect ROI labels when the Associate 'Show All" ROIs with Slices" option was not enabled.
  • Thanks to Stephan Semmler, fixed a regression that caused the ImagePlus.getNDimensions() method to sometimes return the wrong value.
  • Thanks to Glen MacDonald, fixed a 1.46 regression that caused the setOption("Show All",boolean) macro function to not work.

New in ImageJ 1.46r (Jun 27, 2012)

  • Thanks to Bob Loushin, fixed a bug that caused dashed line ROIs to only display correctly at 100% zoom.
  • Thanks to Raymond Coory, fixed a v1.46o regression that caused the TurboReg plugin to throw an exception.
  • Fixed a v1.46n regression that caused the ROI Manager's "Associate 'Show All' ROIs with Slices" option to not work as expected.
  • Thanks to Olivier Bardot, fixed a v1.46p16 regression that caused the Image>Hyperstacks>Temporal-Color Code command in Fiji to fail.

New in ImageJ 1.46q (Jun 19, 2012)

  • Thanks to Michael Cammer, added the ROI Manager More>>List command.
  • Thanks to Jerome Mutterer, added the Macros>Macro Functions command to the macro editor.
  • On Windows, the preferences file (IJ_Prefs.txt) is now saved in the .imagej directory, in the user's home directory.
  • Thanks to Norbert Vischer, fixed a bug that caused the wrong image window to have focus after another window was closed.
  • Thanks to Kees Straatman, fixed bugs that caused Image>Color>Merge Channels to sometimes lose the scale and to sometimes not work as expected when used in a macro.
  • Thanks to Michael Schmid, worked around a race condition in the run("Make Composite") macro function that could cause non-batch mode macros using it to fail.
  • Thanks to Carlos Becker, fixed a bug that caused File>Open and File>Import>TIFF Virtual Stack to fail when importing TIFF stacks larger than 2GB.
  • Thanks to Michael Schmid, fixed a bug that could cause a 'for' loop, at the end of a macro, containing a single 'if' statement to terminate prematurely.
  • Thanks to Christophe Leterrier, fixed a bug that caused the ResultsTable.open() method to not correctly open results tables with row labels but without row numbers.
  • Tiago Ferreira added a "Print list" button to the Built-in Macro Functions page.
  • Tiago Ferreira updated and improved the ImageJ User Guide for v1.46p, adding sections on overlays, 3D volumes, sub-pixel selections, curve fitting and interface customization. The User Guide, which contains 200 pages and 270 illustrations, is available online, as a 10 MB PDF, and as US and A4 booklets.

New in ImageJ 1.46p (Jun 5, 2012)

  • Added the Edit>Options>Reset command.
  • The line of information at the top of image windows is displayed antialiased.
  • Added the rotate(), setAngle() and setZeroTransparent() methods to the ImageRoi class (example).
  • Fixed a bug that caused an exception when Image>Stacks>Add Slice was used to add a channel to a 7 channel composite color image.
  • Fixed a bug that caused Edit>Selection>Rotate to not work with ImageRois.
  • Thanks to Hiroki Hakoshima, fixed a bug that caused the saveAs() macro function to fail if the file path contained a "]" character.
  • Thanks to Norbert Vischer, fixed a bug that caused Image>Stacks>Add Slice and Image>Stacks>Delete Slice to not set the 'changes' flag.
  • Thanks to Norbert Vischer, fixed a bug that caused the macro interpreter to not correctly parse hex constants larger than 0x7fffffff.
  • Fixed bugs in the Image>Hyperstacks>Stack to Hyperstack and Hyperstack to Stack commands that caused them to not work as expected in batch mode macros.
  • Thanks to Dorai Iyer, fixed a 1.46o regression that caused the ROI Manager "Flatten" command to stop working.

New in ImageJ 1.46o (May 19, 2012)

  • Set the stroke width to 0 in the Edit>Selection>Properties, Image>Overlay>Overlay Options and ROI ManagerProperties dialogs to have selections drawn using a width of one pixel regardless of the image magnification.
  • Fixed a bug that could cause selections being moved to not be displayed correctly when the "Use ROI names as labels" option in the ROI Manager was enabled.
  • Fixed a bug that caused Analyze>Plot Profile to fail with line selections with widths less than 1.0.
  • Thanks to Franklin Shaffer, fixed a bug that sometimes a caused a stack overflow error when importing large image sequences.
  • Thanks to Tiago Ferreira, fixed a 1.46n regression that caused overlay items to be removed when toggling the ROI Manager "Show All" checkbox.

New in ImageJ 1.46n (May 12, 2012)

  • In "Show All" mode, the ROI Manager now uses an overlay to display the selections.
  • Added the More>>Labels... command to the ROI Manager, as a shortcut to Image>Overlay>Labels.
  • Add a "Show plot" checkbox to the Analyze>Calibrate dialog box.
  • File>Save As>XY Coordinates now correctly saves subpixel resolution selections, and it works with more kinds of selections.
  • Tiago Ferreira added a list of valid factors to the Image>Stacks>Tools>GroupedZProjector dialog.
  • Made the IJ.runPlugIn(String,String,String) method public.
  • Added the IJ.getFullVersion() method.
  • Thanks to Burri Olivier, fixed a bug that caused Image>Adjust>Threshold, when the "Stack histogram" option was enabled, to use the histogram of all channels instead of only the current channel.
  • Tiago Ferreira fixed a bug that caused stacks binned with Image>Stacks>Tools>GroupedZProjector to loose spatial calibration.
  • Thanks to Burri Olivier, fixed a bug that caused incorrect auto stack thresholds when "Limit to threshold was enabled in Analyze>Set Measurements.
  • Thanks to Thomas Boudier and Michael Schmid, fixed a bug that caused the Analyze>Summarize command to not work correctly on reopened results tables.
  • Thanks to Jim Passmore, fixed a bug that caused NonBlockingDialogs to not handle the yes/no/cancel option.
  • Thanks to Norbert Vischer, fixed a bug that caused Image>Show Info to incorrectly display the selection location when the image origin was not (0,0).

New in ImageJ 1.46m (Apr 24, 2012)

  • ROIs in an overlay can be activated by alt-clicking, control-clicking or long-pressing (1/4 second or longer).
  • Thanks to Gabriel Landini, the Brush and Pencil tools installed from the toolbar's >> menu can be resized by shift-dragging.
  • The icons for drawing tools installed from the toolbar's >> menu reflect the foreground color and are updated when the foreground color changes.
  • Commands in the Edit>Selection submenu that modify the selection now support Undo/Redo and transfer color and line width properties.
  • Fiji saves and loads custom tool configurations.
  • Thanks to Ved Sharma, removed the restriction in Image>Stacks>Tools>Insert that the destination must be a stack.
  • Thanks to Richie Mort, fixed a bug that could cause the contents of multiple custom results tables created by plugins to be invalid.

New in ImageJ 1.46k (Apr 12, 2012)

  • Custom tool configurations created using the toolbar's ">>" menu are saved in the preferences file.
  • Process>Filters>Gaussian Blur 3D works with hyperstacks.
  • Thanks to Tiago Ferreira, fixed a bug that caused FIle>Import>Image Sequence to throw an exception of the first file in the folder was a stack and other files were not stacks.
  • Thanks to Norbert Vischer, fixed a bug that caused metadata to be lost when saving and reopening 3-channel composite 16-bit images.
  • Fixed a bug that caused Edit>Selection>Properties to change selection stroke widths less than 1.0 to 1.0.
  • Fixed a bug that caused Edit>Selection>Fit Spline and Edit>Selection>Interpolate to reset stroke colors and widths.
  • Fixed regressions that caused Analyze>Measure to not work with angle selections and to sometimes throw an exception.
  • Tiago Ferreira contributed ROI Manager Tools, a macro toolset that renames selections stored in the ROI Manager.
  • Gilles Carpentier contributed Multi-Channel Image and Stack Helper, a macro toolset for working with composite color images and stacks.
  • The Transparent Image Overlay plugin demonstrates how to draw an image with a transparent background in an overlay.

New in ImageJ 1.46j (Mar 28, 2012)

  • Thanks to Ignacio Arganda-Carreras, the Skeletonize 3D plugin is now built in as the Process>Binary>Skeletonize 3D command.
  • Added the Process>Filters>Gaussian Blur 3D command.
  • When the ROI Manager window is closed, a dialog box is displayed that provides the option of moving displayed ROIs to an overlay.
  • File>Import>Image Sequence displays warnings if the folder contains tiff stacks and the "Use virtual stack" option is enabled.
  • Image>Calibrate now uses scientific notation to draw fit parameters, if needed.
  • Thanks to Wilhelm Burger, added a ByteProcessor(ip, scale) constructor.
  • Thanks to Gabriel Landini, fixed a bug that caused an invalid 0.0 to be entered into the Analyze>Calibrate dialog box if "Stack position" was enabled in Analyze>Set Measurements.
  • Thanks to Mark Krebs, fixed a 1.46e regression that could cause Image>Stacks>Tools>Concatenate to fail when called from a macro.
  • Thanks to Michael Cammer, fixed a v1.46g regression that caused the "Use stack histogram" option in Process>Ehance Contrast to not work as expected.
  • Thanks to Norbert Vischer, fixed a v1.46i regression that could cause an exception when using using Analyze>Measure to measure Feret's Diameter.

New in ImageJ 1.46i (Mar 16, 2012)

  • Added the Image>Transform>Bin command, based on Nico Stuurman's Binner plugin.
  • Added the Edit>Selection>Interpolate command. To view the interpolated points, use this command on small selections created on images zoomed 1200% or greater.
  • Added the Image>Transform>Image to Results and Results to Image commands.
  • Added a "Remove Tool" command to the toolbar's >> menu;
  • The Image>Stacks>Add Slice command works with hyperstacks.
  • The Fly Brain and T1 Head sample stacks open displaying the middle slice instead of the first.
  • Added the getChannel(int, ByteProcessor) and setChannel(int, ByteProcessor) methods to the ColorProcessor class (example).
  • Added the getTableAsImage() (example), createTableFromImage() (example) and open2() methods to the the ResultsTable class.
  • Added the ImageProcessor.bin() and Roi.getInterpolatedPolygon() methods.
  • Thanks to Michael Schmid, added the ImageProcessor.isGrayscale() method and the is("grayscale") macro function.
  • Added JavaScript-compatible constructor and methods to the Plot class (examples).
  • Thanks to Jan Eglinger, fixed a bug that caused Image>Transform>Rotate Right and Image>Transform>Rotate Left to not work with square composite color images.
  • Thanks to Gilles Carpentier, fixed a bug that sometimes caused Image>Stacks>Z Project to not work with 3D composite color images.
  • Fixed a bug that caused overlays to be lost when opening TIFF files using a URL.
  • Fixed a bug that caused an exception when the user canceled the File>Import>Results dialog box.
  • Fixed a bug in Process>Binary>Skeletonize that caused it to sometimes create skeletons that were more than one pixel wide.
  • Fixed a bug that caused the setf() functions to not round when storing values in ByteProcessors and ShortProcessors.
  • Fixed a bug that caused the Sync_Windows plugin to not work with hyperstacks.
  • Fixed bugs that caused an error message, or caused the command to be ignored, when saving results created by some MBF plugin using File>Save As>Results.
  • Thanks to Arttu Miettinen, fixed bugs that sometimes caused histogram bin counts of stacks larger than 2 gigapixels to be incorrect.
  • Thanks to Michael Cammer, fixed a bug in Image>Stacks>Reslice that caused it to not work as expected if there was global calibration and "Avoid interpolation" was not checked in the dialog box.

New in ImageJ 1.46h (Feb 29, 2012)

  • Added the Arrow Tool, Overlay Brush Tool, Pixel Inspection Tool, Spray Can Tool and LUT Menu to the toolbar's >> menu.
  • Image>Color>Merge Channels now works with up to 7 channels.
  • Added the String.getResultsHeadings() macro function (example).
  • Thanks to Xiao Chen, fixed a bug that caused ImageJ to not correctly open PNG images with alpha.
  • Fixed a bug that caused the Results window to flicker when the ResultsTable.show("Results") method was called repeatedly (example).
  • Thanks to Andrew French, fixed a bug that caused the ImageStack.getVoxel() method to fail with RGB stacks.
  • Fixed a bug that could cause File>Import>Text Image to fail with files containing empty lines.
  • Thanks to Gregory Reneff, fixed a bug that caused the call("ij.plugin.frame.RoiManager.getName", index) macro function to not work in batch mode.

New in ImageJ 1.46g (Feb 17, 2012)

  • The ">>" toolbar menu lists installed plugin tools.
  • Added "Help" buttons to the Image>Stacks>3D Project and Process>Enhance Contrast dialog boxes.
  • Fixed a bug that caused hyperstacks to be converted to interleaved stacks in macros that opened a hyperstack and did a crop or type conversion operation.
  • Thanks to Gilles Carpentier, fixed a bug that sometimes caused commands in the Image>Lookup Tables submenu to not work as expected with single channel composite images.
  • Thanks to Michael Cammer, fixed a bug that caused Process>Enhance Contrast to not work as expected when the "Equalize histogram", "Process all n slices" and "Stack histogram" options were enabled.
  • Thanks to Rainer Engel, fixed bug that caused Image>Stacks>Z Project to not correctly perform "Median" and "Standard Deviation" projections of RGB stacks.
  • Thanks to Eik Schumann, fixed a bug that caused the run("Merge Channels...","...") macro function to not close source images in batch mode macros.
  • Thanks to Zeljka Maglica, fixed a bug that caused position-dependent overlays to not be saved when using the Image>Overlay>Flatten, File>Save As>AVI and Image>Stacks>QuickTime Movie commands.
  • Thanks to Fabian Svara, fixed a bug that caused an incomplete ROI to be added to the ROI Manager if you pressed "t" (Edit>Selection>Add to Manager) before you finished drawing the ROI.

New in ImageJ 1.46f (Feb 6, 2012)

  • Michael Schmid contributed an improved Curve Fitter.
  • Built in Joachim Walter's Sync Windows plugin as the Analyze>Tools>Synchronize Windows command.
  • Thanks to Denny Hugg, ImageJ uses a custom crosshair cursor if there is a GIF image named "crosshair-cursor.gif" in the ImageJ/images folder. There is an example custom cursor at imagej.nih.gov/ij/images/crosshair-cursor.gif.
  • With hyperstacks, the Image>Stacks>Delete Slice command can delete the current channel, slice or frame.
  • Michael Schmid added support for I420, YV12 (a.k.a. IYUV), NV12 and NV21 formats to the AVI Reader.
  • The GifWriter now uses ImageIO to save single images.
  • Thanks to Norbert Vischer, fixed a bug that made it impossible to select an image with a duplicate name from the Window menu.
  • Thanks to Michael Schmid, added the IJ.d2s(n,significantDigits,maxDigits) method, which is used by the macro language to convert numbers to strings, by Analyze>Histogram to display values in histogram windows, and by ImageJ to display values in the status bar as the curser is moved over float images.
  • Replaced the SocketListener class with Johannes Schindelin's RMI-based OtherListener class from Fiji, which works on multi-user machines and is more secure.
  • Thanks to David M. Gauntt, added the FHT(ImageProcessor,boolean) constructor to the FHT class.
  • Thanks to Denny Hugg, fixed a bug that caused File>Save As>Gif to create GIF images that would not work as custom cursors.
  • Thanks to Gilles Carpentier, fixed a bug that cuased Image>Stacks>Z Project to throw an exceptions if no image window was open.
  • Thanks to Wilhelm Burger, fixed a bug that caused the Image>Adjust>Canvas Size command to not properly repositioned overlays.
  • Thanks to Christopher Harrison, fixed a bug that caused LUTs to be improperly applied to "Grayscale" mode composite images.
  • Fixed a bug that caused Analyze>Plot Profile to not work with rectangular selections containing NaN values.

New in ImageJ 1.46e (Jan 19, 2012)

  • Thorsten Wagner added a "Label" (display slice labels) option to the Image>Stacks>Label dialog box.
  • Changes made to options in the Edit>Options>Appearance dialog box cause the current image to be immediately updated.
  • Upgraded the Image>Stacks>Tools>Concatenate plugin to the Jon Jackson version from the MacBiophotonics distribution and Fiji.
  • Less memory is required to display float images.
  • Thanks to Michel Julier, images zoomed less than 100% are displayed with higher quality.
  • Edit>Selection>Rotate uses floating-point coordinates
  • Added the call("ij.gui.ImageWindow.setNextLocation",x,y) macro call.
  • Added the Roi.getFloatBounds() and FloatPolygon.getFloatBounds() methods.
  • Added the ParticleAnalyzer.setResultsTable() method.
  • Thanks to Jan Eglinger, ImageJ displays an error message when you attempt to apply a threshold or brightness/contrast change to a virtual stack.
  • Thanks to Martin Dressler, fixed bugs in Image>Duplicate and Image>Stacks>Tools>Make Substack that caused image "Info" metadata to be discarded.
  • Thanks to Johannes Schindelin, fixed a 1.46a regression that could cause plugins to fail if they extended the PolygonRoi class, did spline fitting and accessed the protected xp and yp arrays.
  • Thanks to Vytas Bindokas, fixed bugs that could cause Edit>Selection>Rotate to not work as expected with straight line selections.
  • Fixed a bug that caused the makeLine(x1,y1,x2,y2,width) macro function to round non-integer arguments.
  • Fixed a bug that caused thresholds to not be reset when converting from 16-bit to 8-bit.
  • Fixed a v1.45c regression that caused Process>Math>Macro to fail on multiprocessor machines with expressions containing "getPixel".
  • Aleksandr Mironov contributed Merz grid, a macro that creates a Merz grid with semicircular lines and points as a non-destructive overlay.

New in ImageJ 1.46d (Jan 2, 2012)

  • Added the Plugins>New>Macro Tool and Plugins>New>Plugin Tool commands.
  • Single macro tools are now installed in the first available toolbar slot, or if no slots are free, in the last slot.
  • Added the ij.plugin.tool.PlugInTool class, which was inspired by Johannes Schindelin's AbstractTool class in Fiji (examples).
  • Added the getC(), getZ(), getT(), setC(), setZ() and setT() methods to the ImagePlus class.
  • Thanks to Norbert Vischer, fixed a bug the caused the setZCoordinate() macro function to not work as expected.
  • Thanks to Ian Lim, fixed a bug that prevented some AVI files from opening.
  • Thanks to Cheryl McCreary, fixed a bug that caused the run("Histogram","...") macro function to sometimes not work as expected.
  • Thanks to Jerome Mutterer, fixed bugs in Process>Batch>Macro and Process>Batch>Virtual Stack that caused them to fail with macro code that duplicated or opened images.
  • Thanks to Paul Jurczak, fixed a bug that caused some RGB BMP files to fail to open.
  • Fixed a bug that caused the makeText() macro function to not work if the text was too wide.
  • Fixed a regression, introduced in v1.46a, that caused measurements of spline fit freehand and traced selections to be inconsistent with earlier versions of ImageJ.
  • Wilhelm Burger fixed a bug that caused the Edit>Crop command to not correctly handle overlays.

New in ImageJ 1.46c (Dec 13, 2011)

  • Thanks to Tiago Ferreira, the ColorChooser widget now displays hex values.
  • Thanks to Jesper Pedersen and Michael Schmid, ImageJ opens >2GB AVI 2.0 files, opens AVIs faster as virtual stacks and opens MJPEG encoded AVIs that are missing Huffman tables.
  • Thanks to Jerome Muttere, Process>Find Maxima, when the output type is "Count", respects the Analyze>Set Measurements "Display label" setting.
  • Added the "Sub-pixel resolution" option to the Edit>Options>Profile Plot Options dialog box.
  • Added the Array.concat(), Array.slice() and Array.print() macro functions (example1, example2).
  • Thanks to Norbert Vischer, fixed a bug that caused the Stack.setActiveChannels() macro function to not update the "Channels" window.
  • Thanks to Balazs Nyiri, fixed a bug that caused the image id of composite color images to change after using the Image>Stacks>Add Slice and Image>Stacks>Delete Slice commands.
  • Fixed a bug that caused the slice selector scrollbar to not be updated after using the Add Slice or Delete Slice commands.
  • Thanks to Jakob Preus, fixed a bug that caused use of "&" to pass directory path variables in macros using the File>Save As>Image Sequence command to fail.

New in ImageJ 1.46b (Nov 30, 2011)

  • Added the File>Import>XY Coordinates command.
  • Added a "List coordinates" checkbox to the Edit>Selection>Properties dialog box.
  • "Help" buttons in dialog boxes can display HTML formatted messages (example).
  • The Edit>Selection>Line to Area command now works with one pixel wide straight lines.
  • The color of the rounded rectangle tool no longer defaults to the foreground color.
  • Thanks to Aryeh Weiss, the ROI Manager's "OR (Combine)" command now works with line selections.
  • Added the ParticleAnalyzer.setRoiManager() method (example).
  • To support sub-pixel positioning, added constructors that accept double arguments to the Roi, OvalRoi and TextRoi classes (example).
  • Thanks to Norbert Vischer, added the ij.util.StringSorter.sortNumerically() method.
  • Thanks to Jose Wojnacki, fixed a bug that could cause a macro to fail if a drawing tool was used during a waitForUser() break.
  • Thanks to Norbert Vischer, fixed a bug that caused the "Sort names numerically" option in the File>Import>Image Sequence dialog to sometimes not work as expected.
  • Fixed a bug that caused the default stroke width and color to change when an arrow was added to an overlay.
  • Fixed a bug that caused lines to be displayed incorrectly in the ROI Manager "Show All" mode after adding a rounded rectangle.
  • Thanks to Norbert Vischer, fixed a bug that sometimes caused the Plot.show() macro function to return before the plot window was fully displayed.
  • Thanks to Norbert Vischer, fixed a bug that caused macros displaying showMessage() dialogs to not be aborted when the user pressed the esc key.
  • Thanks to Jerome Mutterer, fixed a bug that sometimes caused selections in ROI Manager "Show All" mode and in overlays to be displayed with the wrong stroke width.
  • Thanks to Winfried Wurm, fixed a bug that could cause the run("Restore Selection") and run("Enlarge...") macro functions to fail in batch mode macros.

New in ImageJ 1.46a (Nov 13, 2011)

  • The segmented line, freehand line, point and multi-point tools now support sub-pixel resolution.
  • Added the Edit>Selection>List Coordinates command.
  • The Plot class constructors generate an X value sequence if the X array argument is null or empty (JavaScript examples).
  • An informative message is displayed when a batch mode macro attempts to open an ROI set using open(path) (which does not work) instead of roiManager("open",path).
  • Thanks to Tiago Ferreira, the ROI Manager "Multi Plot" command no longer ignores "Fixed y-axis scale" in Edit>Options>Profile Plot Options.
  • Thanks to Bob Hamilton, "Area Fraction" (renamed "%Area") in the Analyze Particles Summary window now uses the Set Measurements decimal places.
  • Added the MaximumFinder.getMaxima() method (example).
  • Fixed a bug that caused the length of non-straight line profile plots to be greater that the measured line length.
  • Michael Schmid fixed a bug that could cause the RankFilters (Mean, Minimum, Median, etc.) to hang.
  • Thanks to Jan Eglinger, fixed bugs that could cause the recorder to throw bogus error messages or to record "null" or "nullnull" when opening or saving files.
  • Fixed a bug that caused the elliptical selection tool to always have integer starting coordinates.
  • Thanks to Oliver Bannach, fixed a bug that caused Histograms in batch mode macros to not be properly closed.
  • Thanks to Norbert Vischer, fixed a bug that caused File>Import>TIFF as Virtual Stack to not correctly open c=3, z=1, t=1 16-bit hyperstacks.

New in ImageJ 1.45s (Oct 30, 2011)

  • Added the setOption("ExpandableArrays") macro function (example).
  • The Roi.getFloatPolygon() method works with more selection types.
  • Thanks to Kees Straatman, fixed a bug that caused Edit>Selection>Fit Ellipse to not work with spatially calibrated images.
  • Thanks to Gilles Carpentier, fixed a bug that caused the Overlay.drawString() macro function to display text at the wrong Y location and another bug that caused the run("From ROI Manager") macro function to not work in batch mode.
  • Thanks to Michael Schmid, fixed a bug that caused the CurveFitter.setMaxIterations() method to not work as expected.
  • Thanks to Jamie Robinson, fixed a bug that could cause the mm scale of newly opened hybrid DICOM/TIFF files to not be set.
  • David Gauntt fixed a bug that caused the NonBlockingGenericDialog to not correctly handle esc and enter key presses.
  • Thanks to Bentorey Hernandez Cruz, fixed a bug that caused the Panel Window example plugin to not work with hyperstacks.
  • Thanks to Norbert Vischer, fixed a bug that could cause the Plot.add("error bars", errorBars) macro function to throw an exception.
  • Mahdi Rawak contributed Command Bar, a plugin that adds a toolbar with 19 buttons for running ImageJ commands.
  • Kris Sheets contributed 3D Convex Hull, a plugin that calculates 3D shape descriptors, solidity and convexity based on a convex hull constructed from a stack.
  • The University of Leicester is offereing two ImageJ/FIJI workshops in December.

New in ImageJ 1.45r (Oct 17, 2011)

  • Thinks to Norbert Vischer, macro arrays automatically expand as needed (example).
  • Thanks to Gilles Carpentier, image selections created using Edit>Selection>Image to Selection or Image>Overlay>Add Image can now be saved and restored.
  • Thanks to Johannes Schindelin, fixed a bug that caused the status bar to not be updated when scrolling a stack using the mouse wheel.
  • Thanks to Nagananda Gurudev and Johannes Schindelin, fixed a bug that sometimes caused an exception when opening LZW-compressed LSM files.
  • Thanks to Christophe Leterrier, fixed a bug in the newArray() macro function that caused it to not correctly handle array element arguments.
  • Thanks to Gilles Carpentier, fixed a bug that caused Analyze>Tools>Scale Bar to delete pre-existing overlays.

New in ImageJ 1.45q (Oct 5, 2011)

  • Added "Live" buttons to histogram and profile plot windows.
  • Added an "RGB" button to RGB histogram windows.
  • The Histogram command displays composite image LUTs.
  • Thanks to Gabriel Landini, fixed bugs that caused TIFF images larger than 2GB to not be correctly saved or opened.
  • Fixed a bug that caused File>New>Image to throw an exception when the user attempted to open an image larger than the maximum supported size (2 gigapixels).
  • Fixed a bug that sometimes caused the cursor coordinates to not be displayed in plot windows.
  • Thanks to Christophe Leterrier, fixed a bug in the newArray() macro function that caused it to sometimes not correctly handle string variable arguments.
  • Thanks to Norbert Vischer, fixed bugs that caused the plot window "List" and "Save" options to sometimes not work as expected if the window contained multiple plots.
  • Fixed a bug that sometimes caused a blank Results table to be displayed after changing "Decimal places" or enabling/disabling "Scientific notation" in the Analyze>Set Measurements dialog box.
  • Thanks to Christophe Leterrier, fixed bugs in Image>Color>Merge Channels that sometimes caused it to fail.

New in ImageJ 1.45p (Sep 21, 2011)

  • Image>Stacks>Make Montage works with hyperstacks.
  • Added the roiManager("Remove Slice Info") macro function.
  • hanks to Daniel Hornung, removed the Toolbar.setBrushSize() lower limit of 5.
  • Worked around bug in the FileDialog class on Mac OS X that could cause files to be overwritten without warning if "Show all filename extensions" was not enabled in Finder Preferences.
  • Thanks to Bill Mohler, fixed a bug that caused File>Import>Image Sequence to not ignore .zip files created by the ROI Manager .

New in ImageJ 1.45o (Sep 13, 2011)

  • Thanks to Christophe Leterrier, File>Import>Image Sequence loads overlays when opening a folder of TIFFs as a non-virtual stack.
  • Added the ResultsTable.showRowNumbers() method (example) and the setOption("ShowRowNumbers",false) macro function (example).
  • Thanks to Airen Peraza, fixed a bug that caused the setTool() macro function and IJ.setTool(String) method to not work with macro tools.
  • Thanks to Charles Anderson, fixed a bug in the run("Make Composite") macro function that sometimes caused non-batch mode macros to not work as expected.
  • Thanks to Gilles Carpentier, fixed a bug that sometimes caused images with extra periods in their names to be saved without an extension.
  • Fixed a bug that caused the run("Straighten...") macro function to require user input with line selections wider than one pixel.
  • Thanks to Christophe Leterrier, fixed an ROI Manager "Properties" bug that made it impossible to set the line width to 1 after having set it to greater than 1.
  • Thanks to Bill Mohler, fixed a bug in Analyze>Summarize that caused it to fail if the "Integrated Density" option was enabled.
  • Fixed bugs that caused Analyze>Measure to not calculate perimeter, circularity, feret-x, feret-y, feret angle, aspect ratio, roundness and solidity when there was no selection.
  • Fixed a bug that caused Analyze>Measure to not calculate feret-x, feret-y, feret angle and solidity of edited ROIs.
  • Fixed a v1.45n regression that caused the ROI Manager "Save" command to create corrupted .zip files if ROIs had been updated.
  • Norbert Vischer contributed the AdvancedPlots macro set, five macros that demonstrate advanced plotting techniques.

New in ImageJ 1.45n (Sep 6, 2011)

  • Added the Image>Overlay>Labels command.
  • Added the Edit>Selection>Image to Selection command, which replaces the "Create image selection" option in the Image>Overlay>Add Image dialog.
  • Added the "Use file chooser to import [/export image] sequences" option to the Edit>Options>Input/Output dialog box.
  • Thanks to Damon Poburko, the ROI Manager "Delete" and "Deselect" commands are much faster on Windows.
  • The Image>Adjust>Brightness/Contrast command records as a comment.
  • The "Propagate to all open images" option in the "B&C" window's "Set" dialog box works with multi-channel images.
  • The run("Brightness/Contrast...") macro function does nothing if the "B&C" window is open and the current image is RGB.
  • Thanks to Norbert Vischer, added the toScaled(x,y), toUnscaled(x,y) and Plot.setFrameSize(width,height) macro functions (examples).
  • Added the getInfo("threshold.method") and getInfo("threshold.mode") macro functions and the ThresholdAdjuster.getMethod() and ThresholdAdjuster.getMode() methods.
  • Added the makeSelection(type,x,y,n) macro function (example).
  • Thanks to Ajay Gopal, fixed a bug that sometimes caused plots created in macros to be displayed twice and plots created in batch mode to not be displayed.
  • Thanks to Norbert Vischer, fixed a bug that sometimes caused selections added to the ROI Manager using roiManager("Add") to not be associated with the correct stack slice.
  • Thanks to Norbert Vischer, fixed a bug that caused plot window cursor locations displayed in the status bar to be incorrect if the plot x-origin was not zero.
  • Thanks to Jean-Pierre Clamme, fixed a bug that caused the color thresholder to somethimes not work as expected.
  • Fixed a bug that caused macro tools to be restarted on mouse clicks.

New in ImageJ 1.45m (Aug 22, 2011)

  • Added the Image>Overlay>Overlay Options command.
  • Added an "Add to overlay" option to the Analyze>Set Measurements dialog box.
  • The Image>Overlay>Add Selection command only displays a dialog if the alt key is down.
  • Thanks to Ved Sharma, added a "Use text tool font" option to the Image>Stacks>Label dialog box.
  • Improved the appearance of the "Threshold" window on Windows.
  • File>Import>Image Sequence ignores files named "RoiSet.zip".
  • Overlay selection names are preserved when saving in TIFF format.
  • Added the FileSaver.serialize() and Opener.deserialize() methods (example).
  • Thanks to Arttu Miettinen, fixed bugs that caused auto-thresholding of large (>1 gigapixel) stacks to fail and caused the "Threshold" tool to generate unneeded stack histograms.
  • Fixed a bug that sometimes caused the "Threshold" tool to generate incorrect 16-bit image thresholds when enabling/disabling the "Stack histogram" option.
  • Thanks to Ved Sharma, fixed a bug in Image>Stacks>Label that caused it to not work correctly for ranges not starting with 1.
  • Thanks to Michael Cammer, fixed a bug that caused an exception when adding a slice after splitting channels.
  • Fixed a bug that caused Process>Math>Square to not work as expected with 16-bit pixel values greater than 46341.
  • Fixed a bug that caused the run("Make Binary") macro function to display a dialog when the current image was thresholded.
  • Thanks to Steven Green, fixed bugs that caused intensity measurements made with line and point selections to not be redirected.
  • Thanks to Emmanuel Levy, fixed a bug that caused Image>Overlay>To ROI Manager to ignore selection names.
  • Bruno Vellutini fixed a bug that caused the roiManager("show all with labels") macro function to not work as expected.
  • Aleksandr Mironov contributed three macros (Multipurpose grid, Multiple Circles grid and Unbiased Frames) for creating stereological grids and unbiased counting frames as non-destructive overlays.
  • Tiago Ferreira updated the ImageJ User Guide (PDF) for v1.45m and added several new sectons. He also completely redesigned the HTML version and made available printable booklets in US and A4 versions.

New in ImageJ 1.45l (Jul 21, 2011)

  • Thanks to Richard Cole, added a "Use system proxy settings" option to the Edit>Options>Proxy Settings dialog.
  • Thanks to Ved Sharma, added a "Delete slices from original stack" option to Image>Stacks>Tools>Make Substack
  • Added the "Max Dimension" macro snippet, which resizes images to specified maximum dimension, to Process>Batch>Macro.
  • Thanks to Jerome Mutterer, the saveAs("raw",path) macro function no longer requires a ".raw" extension (example).
  • The getFileList() macro function now filters "Thumbs.db" files.
  • Added the ParticleAnalyzer.setFontSize() and ParticleAnalyzer.setLineWidth() methods.
  • Thanks to David McDonald, fixed a bug that caused horizontal and vertical straight line selections to not work with Edit>Selection>Restore Selection.
  • Thanks to John Oreopoulos, fixed bugs that sometimes caused the Plot.getValues() macro function to fail and the run("Distribution...","...") function to throw an exception.
  • Fixed a bug that caused headings of non-displayed results tables to not be saved.
  • Thanks to Ingo Bartholomaeus, fixed a bug that caused drawing tools to not set the image 'changes' flag.
  • Thanks to Gilles Carpentier, fixed a bug that caused an exception when duplicating a stack with a selection extending beyond the image edge.
  • Thanks to Daniel Kalthoff, fixed a bug that caused slice labels to be lost when importing stacks using File>Import>Image Sequence.

New in ImageJ 1.45k (Jul 6, 2011)

  • Added the Image>Stacks>Tools>Remove Slice Labels command.
  • The Process>Batch>Convert command averages when downsizing.
  • Thanks to Michael Doube, fixed a bug that could cause an exception when the image window was closed while a stack was being saved in TIFF format.
  • Thanks to Valerio Mussi, fixed bugs that caused the ROI Manager to not work as expected when the image origin was not at the top left corner.
  • Thanks to Tomas Karlsson, fixed a bug that sometimes caused the "+" and "-" keyboard shortcuts (zoom in/zoom out) to not work as expected with non-US keyboards.
  • Fixed bugs that caused run() macro calls with options like "open=&dir", "size=&min-&max" and "range=&first-&last" to fail.
  • Fixed a 1.45j regression that caused the RankFilters.rank() method to fail.

New in ImageJ 1.45j (Jun 25, 2011)

  • Added the Plugins>Utilities>Monitor Events command.
  • Thanks to Michael Schmid, the Median, Mean, Minimum, Maximum and Variance filters use less memory when processing non-float images.
  • Added a "Overlay" checkbox to the Analyze>Tools>Scale Bar dialog.
  • Added a "Stack histogram" checkbox to the Image>Adjust>Threshold dialog.
  • Added "Center" and "Right" text justification options to the Edit>Options>Fonts dialog, and, with text selections, to the Edit>Selection>Properties, Image>Overlay>Add Selection and the ROI Manager "Properties" dialog boxes.
  • The default text editor directory for saving is saved in the preferences file.
  • Image>Scale no longer limits the X and Y scale factors to 25.
  • Thanks to Johannes Weissmann, added the ImageProcessor.drawString(String, int, int, Color) method and drawString("text", x, y, background) macro function (example).
  • Added the ImagePlus.setImage(ImagePlus) and PlotWindow.getResultsTable() methods.
  • Thanks to Bruno Vellutini, fixed a bug that caused point selection measurements on single images to include a "Slice" Results table column even when "Stack position" was not checked in Analyze>Set Measurements.
  • Fixed bugs that caused JavaScript and Java code recorded by Image>Color>Stack to RGB and Image>Hyperstacks>Reduce Dimensionality to not work as expected.

New in ImageJ 1.45i (Jun 4, 2011)

  • Thanks to Jean-Yves Tinevez and Johannes Schindelin (creators of the Fiji ArrowTool plugin), added an "outline" checkbox to the arrow tool options dialog.
  • Added the Edit>Options>Rounded Rect Tool command.
  • Thanks to Michael Schmid, the popup menu activated by right clicking on an image window now works as expected with non-foreground images.
  • Added an "Ignore source LUTs" option to the Image>Color>Merge Channels dialog box.
  • Added "X center" and "Y center" fields to the Image>Zoom>Set dialog box.
  • The DICOM reader applies the Rescale Slope value when "Open as 32-bit float" is enabled in Edit>Options>DICOM and tag 0028,1053 has a value1.0.
  • Added the openFolder(), openAsVirtualStack() and sortFileNames() methods to the FolderOpener class;
  • Added drawRoi() and drawOverlay() methods to the ImageProcessor class (example).
  • Added the roiManager("select",indexes) macro function and RoiManager.setSelectedIndexes() method.
  • Fixed a bug that caused the magnification to be dropped from the title bar when using Image>Stacks>Add Slice on a single image.
  • Thanks to Vytas Bindokas, fixed bugs that caused the wand tool and the getStatistics() macro function to not work with virtual stacks imported using the Bio-Formats plugin.
  • Thanks to Johannes Schindelin, fixed a bug that sometimes caused the "Add [t]" command in the ROI Manager to sometimes save incorrect slice positions.
  • Michael Schmid, fixed bugs that sometimes caused objects to disappear when using Process>Binary>Ultimate Points and sometimes caused Process>Find Maxima to not work correctly on high dynamic range float images.
  • Thanks to Jan Eglinger, fixed a bug that caused transparent arrows to not be displayed correctly.
  • Thanks to Vytas Bindokas, fixed bugs that sometimes caused Edit>Selection>Make Band to fail.
  • Thanks to Jonathan Silver, fixed a regression that caused File>Save As>Text Image to not save float images using scientific notation when "Scientific notation" was checked in the Analyze>Set Measurements dialog box.
  • Thanks to Norbert Vischer, fixed a bug that caused TIFF virtual stacks to not gracefully handle the deletion of the source TIFF file.
  • Tseng Qingzong has released PIV, a plugin that performs iterative particle image velocimetry analysis.

New in ImageJ 1.45h (May 18, 2011)

  • Added a "Use ROI names as labels" checkbox to the ROI Manager's More>>Options dialog box.
  • The ij.util.Java2.setSystemLookAndFeel() method (called by File>Import>Image Sequence) no longer sets the Swing look and feel to the system look and feel on Linux.
  • Added Stack.getFrameInterval(), Stack.setFrameInterval() and Stack.getUnits() macro functions.
  • Added setAntialiased() and getAntialiased() methods to TextRoi class.
  • Worked around a bug in the text tool that sometimes caused Edit>Clear to clear an area narrower than the drawn text.
  • Thanks to Peter Haub, fixed an ROI Manager "Edit Mode" bug that sometimes made selection of ROIs in stacks unreliable.
  • Thanks to Jan Eglinger, fixed a bug that caused mouse wheel scrolling of inactive hyperstack windows to not work.
  • Thanks to Daniel Kalthoff and Michael Schmid, fixed a macro bug that sometimes caused the Image>Crop, Image>Duplicate and Image>Adjust>Size commands to erroneously change the image focus.
  • Thanks to Mat Al-Tamimi, fixed a bug that caused profiles of image-height vertical lines and image-width horizontal lines to contain one extra value.
  • Thanks to Barry DeZonia, fixed a bug that sometimes caused the ImagePlus.setPositionWithoutUpdate() method to not work as expected.
  • Thanks to Andrii Savchenko, fixed a bug that caused the particle analyzer to not corretly summarize zero particle images.
  • Thanks to Jerome Mutterer, fixed a bug that caused IJ.redirectErrorMessages() to not work as expected with IJ.open(URL).
  • Thanks to Andrew French, fixed a bug that caused Image>Overlay>Flatten to always render text antialiased.

New in ImageJ 1.45g (May 3, 2011)

  • Thanks to Philippe Gendre, added the More>>Multi Plot command to the ROI Manager.
  • Thanks to Jason Newton, ImageJ can now open ZIP-compressed TIFFs.
  • The GenericDialog.getNextNumber() method returns NaN if the user has not entered a valid number (example).
  • The makePoint() macro function can now both add and delete points (example).
  • Fixed v1.45 regression that caused the ROI Manager "Show All" option to not respect slice info.
  • Thanks to Carne Draug, fixed a bug that sometimes caused ImageJ to hang on quitting when running on OpenJDK 6.

New in ImageJ 1.45f (Apr 25, 2011)

  • Added the Edit>Selection>Area to Line command.
  • Thanks to Michael Schmid, the Mean and Variance filters no longer propagate NaNs to the end of the line.
  • If the Rescale Slope tag (0028,1053) exists, and has a value1.0, then the DICOM reader converts to 32-bits and multiples by that value.
  • Thanks to Marcel van Herk, File>Import>Stack from List works with URLs (example).
  • Added the Dialog.addSlider() method (example).
  • Fixed a bug that caused Image>Scale and Image>Adjust>Size to throw an exception when there was a selection and "Average when downsizing" was enabled.
  • Thanks to Simon Roussel, fixed a bug that caused overlays to be lost when converting stacks to hyperstacks and vis versa.
  • Thanks to Kris Sheets, fixed a bug that could cause the ROI Manager to not work as expected on Mac OS X when using the waitForUser() macro function.
  • Thanks to Norbert Vischer, fixed a bug that caused incorrect centroid, major and minor results when using Analyze>Measure on thresholded images with "Fit Ellipse" and "Limit to Threshold" enabled.
  • Fixed a bug that caused the size of JPEG files to not be reduced when re-saving at lower resolution or quality.
  • Thanks to Vytas Bindokas, fixed a bug that caused an exception when an image was listed twice in the Image>Color>Merge Channels dialog box.
  • J. Lewis Muir has released CBF Reader, a plugin for reading miniCBF image files produced by DECTRIS PILATUS detectors.

New in ImageJ 1.45e (Apr 4, 2011)

  • File>Import>Image Sequence and File>Save As>Image Sequence now use the directory chooser.
  • Thanks to Michael Schmid, added the Process>Noise>Remove NaNs command.
  • Analyze>Plot Profile ignores NaNs.
  • "Feret" and "MinFeret" of selections created using the elliptical tool are calculated more accurately.
  • Added the Overlay.copy and Overlay.paste macro functions.
  • Added the FolderOpener.open() method.
  • Thanks to Gabriel Landini, fixed a bug that sometimes caused the ability to record the selectWindow() macro function to be lost after a macro error.
  • Fixed a bug that caused File>Save As>Image Sequence to record duplicate "save=" keys.
  • Thanks to John Pearl, fixed a bug that caused the "Label points" option in Edit>Options>Point Tool to sometimes not work as expected.
  • Thanks to Michael Schmid, fixed a bug that caused the Dynamic Profiler plugin to flicker and sometimes crash.
  • Thanks to Francis Burton, fixed a bug that caused the Plot.update macro function to throw an exception in batch mode.
  • Thanks to Michael Doube, fixed a 1.45d regression that caused Edit>Selection>Add to Manager to sometimes lose the slice position.
  • Thanks to Karen Collins, fixed several bugs in the directory chooser.
  • Thanks to Norbert Vischer, fixed a bug that caused the run("Add to Manager") macro function to sometimes draw the ROI.

New in ImageJ 1.45d (Mar 20, 2011)

  • Thanks to Tiago Ferreira, the Plugins>Utilities menu is now more logically organized and the "Do:" drop down menu in the Process>Binary>Options dialog includes "Outline", "Fill Holes" and "Skeletonize" choices.
  • An ROI Manager selection no longer loses its stack position when its label is changed.
  • The "Update" ROI Manager command now updates the z-position.
  • Thanks to Tseng Qingzong, the particle analyzer respects the Process>Binary>Options "Black background" setting when working with non-thresholded 8-bit binary images.
  • The Image>Duplicate command can duplicate a range of channels in C>1, Z=1, T=1 hyperstacks.
  • Thanks to Frank Sprenger, fixed bugs that caused Image>Color>Split Channels and Image>Hyperstacks>Reduce Dimensionality to sometimes not work correctly in batch mode and to not generate grayscale images when the input image was in "Grayscale" mode.
  • Added the Overlay.setPosition() and IJ.pad() macro functions (example).
  • Added roi.setPosition(), roi.getPosition() and IJ.pad() methods (example).
  • Fixed a bug that could cause Image>Duplicate to fail in non-batch mode macros.
  • Thanks to Jarek Sacha, fixed bugs that caused the coordinate origin to be unchanged after Image>Crop and Image>Duplicate.
  • Thanks to Bill Mohler, fixed a bug that could cause an exception when working with single channel composite images.
  • Fixed a bug that caused overlays stored in the TIFF header to not display on stacks opened using File>Import>TIFF Virtual Stack.

New in ImageJ 1.45c (Mar 11, 2011)

  • Process>Filters>Gaussian Blur processes single images much faster on multi-core computers thanks to multi-threading support added by Stephan Saalfeld.
  • The Process>Math>Macro, Convolve, Despeckle, Remove Outliers, Median, Mean, Minimum, Maximum, Variance and Unsharp Mask commands are faster when processing single images on computers with multi-core CPUs.
  • Tiago Ferreira made the Plugins>Utilities>Search command recordable and added support for scripts.
  • Image Selections (ImageRois) created using Image>Overlay>Add Image can be moved beyond the image boundary and their location is displayed in the status bar as they are moved.
  • Removed the broken Help>Search Website command and renamed Help>List Archives to Help>Mailing List.
  • Thanks to Bill Mohler, fixed a bug that caused the Image>Stacks>Tools>Concatenate command to not work as expected in batch mode macros.
  • Fixed a bug the caused the waitForUser() macro function to not work with the brush and pencil tools.
  • Thanks to Alberto Duina, fixed a bug that caused the IJ.redirectErrorMessages macro function to not prevent macros from being aborted when opening DICOM images.
  • Fixed a bug that enabled "Show All" mode in the ROI Manager when unchecking "Edit Mode".
  • Fixed a bug in Image>Stacks>Make Montage that sometimes caused borders to overlap labels.
  • Fixed a bug in File>Import>Image Sequence that could cause the pixel width and height to be incorrect if the value of "Scale images" in the dialog was not 100.
  • Thanks to Daniel Senff, fixed a bug that caused an exception when using the setForeGroundColor() macro function after starting ImageJ using "new ImageJ(ImageJ.NO_SHOW)".
  • Thanks to Stephan Saalfeld, fixed a bug that caused overlays on composite images to sometimes not display correctly.
  • Alberto Duina contributed Dicom Sorter, a macro that reorders a directory with a lot of dicom files by moving the files to subdirectories sorted by patient id, study id etc.

New in ImageJ 1.45b (Feb 20, 2011)

  • Improved Memory Monitor (Plugins>Utilities>Monitor Memory): it is larger, it displays the number of open images, it remembers its screen position, it is no longer an image window, keyboard shortcuts work when it has focus and clicking on it runs the garbage collector.
  • The "Run single instance listener" option in Edit>Options>Misc is set by default with new Windows installations.
  • Image>Stacks>Add Slice and Delete Slice work with composite images.
  • Fixed a bug that sometimes caused composite images with custom LUTs to not be saved correctly as TIFFs.
  • Thanks to Michael Daube, fixed a bug that could cause the FHT.dfht3() method to throw an exception.
  • Fixed a bug that sometimes caused the DICOM reader to not correctly decode the pixel spacing.
  • Thanks to Michael Schmid, fixed a bug that sometimes caused dynamically updated messages in GenericDialogs to be truncated.
  • Thanks to Michael Schmid, fixed a bug that caused Process>FFT>Inverse FFT to lose the image calibration if the size of the original image was not a power of two.
  • Fixed a bug that made it impossible to open the Color Picker and Fonts windows after they had been closed using File>Close.
  • Fixed a bug that caused the scale of profile plots created using wide line selections on globally calibrated images to be incorrect.
  • Tseng Qingzong has released plugins that use the OpenCV library to do template matching and image alignment.

New in ImageJ 1.45a (Feb 7, 2011)

  • The Edit>Undo command is, in most cases, undoable.
  • Added the "Keep multiple undo buffers" option to the Edit>Options>Memory dialog box.
  • Image>Stacks>Tools>Concatenate works with composite images and stacks.
  • Keyboard shortcuts now work in all TextWindows (e.g., the Log window).
  • Users are prompted to save changed editor windows when quitting ImageJ.
  • Added a keyboard shortcut to the Editor's Debug>Run To Insertion Point command.
  • The waitForUser macro function uses a default "Click OK to continue" message if called without an argument and without parentheses.
  • Added the ImageProcessor.swapPixelArrays() method, which is used to make Undo undoable.
  • Fixed a bug, introduced in 1.44n, that sometimes caused Image>Color>Merge Channels to not work as expected.
  • Fixed a bug that caused pasting of non-rectangular selections the same size as the target image to not work as expected.
  • Fixed a bug that caused the "Run single instance listener" option in Edit>Options>Misc to not work as expected.

New in ImageJ 1.44o (Feb 1, 2011)

  • Process>FFT>Bandpass Filter uses multiple threads when processing stacks.
  • Plugins and scripts can now use IJ.log("\\Close") to close the Log window.
  • Added a constructor to the FileInfoVirtualStack class that allows opening of TIFF stack subsets (example).
  • Added the RGBStackMerge.mergeChannels(ImagePlus[],boolean) method.
  • Fixed bugs that caused incorrect recording of B&C window commands.
  • Fixed a bug that caused incorrect passing of variables using the '&' operator in run() calls within macro functions.
  • Thanks to Norbert Vischer, fixed a bug that caused error messages generated by the selectImage() macro function to be missing the source line number.
  • Fixed a bug that could cause 16-bit LZW compressed TIFFs to fail to open.
  • Tiago Ferreira updated the ImageJ User Guide (PDF) for v1.44 and added sections on advanced ImageJ usage, IJ and Fiji Scripting, command line usage and ImageJ interoperability. He also created a greatly improved HTML version, available either online or as a downloadable ZIP file.

New in ImageJ 1.44n (Jan 18, 2011)

  • Image>Color>Merge Channels preserves LUTs and display ranges when merging images and stacks to create composite images.
  • Thanks to Michael Schmid, the current image is now only auto-thresholded when the Threshold window is activated via the menu command or by pressing "T".
  • Thanks to Duncan Mak, the "Loop back and forth" option in the Image>Stacks>Tools>Animation Options dialog box is now persistent.
  • Added the setOption("loop", boolean) macro function.
  • Fixed a bug that sometimes caused a DICOM sequence opened as a virtual stack to not be sorted correctly.
  • Fixed a bug that caused Plugins>Macros>Run to record incorrect code.
  • Thanks to Michael Schmid, fixed bugs that caused commands that bring windows to the front, like selecting from the Window menus and Window>Show All, do not de-iconify windows on Windows and Linux.
  • Fixed a bug that sometimes caused the More>>Fill command in the ROI Manager to fail with composite ROIs.
  • Fixed a bug that could cause an out of memory error when opening a DICOM sequence from a folder containing a .xml file.
  • Thans to Barry DeZonia, fixed a bug that caused the Paste command to not work as expected in "Transparent-white" mode with 32-bit images.
  • Thanks to Nico Stuurman, fixed a bug that caused channel and slice position changes in animating hyperstacks to be ignored.
  • Fixed a bug that caused an exception when an empty folder was dragged and dropped on the "ImageJ" window.
  • Fixed a bug that caused the getSelectionCoordinates() macro function to not work as expected with wider than one pixel straight line selections.
  • Norbert Vischer contributed Offline Macro Help, a macro that downloads "functions.html" and the files it references, making macro programming documentation locally accessible.
  • David Stepensky contributed IntraCell, a plugin for analysis of nanoparticle colocalization with organelles within the cells

New in ImageJ 1.44m (Jan 3, 2011)

  • Thanks to Ved Sharma and Michael Doube, added the Edit>Selection>Fit Circle command, which fits a circle to line and multi-point selections. With area selections, it creates a circle with the same area and centroid.
  • Thanks to Barry DeZonia, fixed a bug that caused Undo of finalized pastes to fail.
  • Thanks to Bill Mohler, Image>Stacks>3D Project now works with hyperstacks, and with 16 and 32 bit images.
  • Thanks to Michael Ellis, added support for single channel CompositeImages.
  • Added the ImagePlus.duplicate() method.
  • Fixed a bug that caused the roiManager("reset") macro function to not not remove the "Show All" overlay.
  • Fixed a bug that caused macros using run("Calibrate...", "...") to fail.
  • Fixed a bug that caused File>Open Next to fail after saving an image.
  • Fixed a bug that caused an exception if a file displayed in a virtual stack was deleted.
  • Fixed a bug that caused a "Save changes?" dialog to be displayed when closing a virtual stack window.
  • Jan Bonne Aans contributed Nonlinear Polar Transformer, a plugin that corrects radial and angular distortions in X-ray images.

New in ImageJ 1.44l (Dec 16, 2010)

  • Image>Stacks>Orthogonal Views works with hyperstacks and can be started/stopped using the shift-h keyboard shortcut.
  • Thanks to Bob Dougherty, the color bar in histograms is now scaled to reflect the display range of the image.
  • Thanks to Michael Doube, voxel depth of imported DICOMs is based on the distance between the first and last slices.
  • Thanks to Michael Schmid, zooming in or out no longer causes the position to be lost when the cursor is not over the image.
  • Image>Stacks>Z Project saves the projection method in the preferences file.
  • Added a "Bare Outlines" option to the particle analyzer.
  • Thanks to Christian Moll, added the getInfo("log") macro function and the IJ.getLog() method.
  • Added the DicomTools.getTag() method.
  • Fixed a bug in Image>Stacks>Reslice that caused, with a stright line selections, inconsistent line shifting if "Slice count" was greater than 1 and "Avoid interpolation" was enabled.
  • Fixed several bugs in Image>Stacks>Orthogonal Views.
  • Jan Funke fixed a bug that made it impossible to use the ZProjector class concurrently.
  • Fixed a bug that caused Image>Stacks>Make Montage, when used with signed 16-bit images, to sometimes draw borders using pixel values of -32768.
  • Fixed a bug that caused Image>Transform>Translate to fill with white for non-integer bicubic translations.
  • Thanks to Johannes Schindelen, fixed bugs that sometimes caused Image>Color>Merge Channels to not work as expected when merging four stacks.
  • The 2004 ImageJ paper by Michael Abramoff, Paulo Magalhaes and Sunandra Ram, which has over 2000 citations, is now available as a PDF.
  • Wilhelm Burger has released Export EPS, a plugin that exports images as Encapsulated PostScript (EPS) files.
  • Run the Find 3D Max benchmarks to compare the speed of various dimension and type independent pixel access methods.

New in ImageJ 1.44j (Nov 11, 2010)

  • The Image>Duplicate command now works with hyperstacks.
  • Double click on the angle tool icon to enable measurement of reflex angles.
  • Thanks to Johannes Schindelen, added the More>>XOR command to the ROI Manager.
  • Added a "y" keyboard shortcut to the Edit>Selection>Properties command.
  • Added the ImageJ(ImageJ.NO_SHOW) constructor, which allows other Java applications to open ImageJ invisibly.
  • Thanks to Norbert Vischer, added the Array.sortedIndexes() macro function (example).
  • Fixed a bug that caused ImageCanvases to ignore mousePressed and mouseMoved events when using ImageJ as a library.
  • Fixed a bug that caused the Image>Adjust>Size interpolation setting to be changed to "None" after using Image>Crop.
  • Thanks to Wilhelm Burger, fixed a bug in the ByteBlitter class that caused it to throw an exception if the copyBits() method was passed a ShortProcessor or a FloatProcessor.
  • Fixed a bug that caused saving of Results windows created using IJ.write() calls to fail.
  • Thanks to Norbert Vischer, fixed a bug that caused TIFF files opened as virtual stacks to become corrupted when saved in place.
  • Fixed a bug that caused Process>Binary>Skeletonize to not work as expected for some diagonal objects.
  • Fixed a bug that caused use of the up and down arrow keys in the Control Panel to zoom the image in and out.
  • Fixed bugs that caused the "Control Panel" and "List Commands" commands to fail in the drop down menu that appers when right-clicking on an image.
  • Usage statistics for imagej.nih.gov for the month of October are now available. In one month, there were 216,007 visits from 159,623 unique sites and 3029 gigabytes of data were downloaded. ImageJ was downloaded 213,921 times, an average of 6900 times per day.
  • The group photo from the 2010 ImageJ conference in Luxembourg is now available.
  • Gilles Carpentier contributed the Protein Array Analyzer toolset (online documentation).
  • Volker Baecker has made available a comprehensive 93 page ImageJ tutorial (11MB PDF).

New in ImageJ 1.44i (Oct 8, 2010)

  • Added the Edit>Selection>To Bounding Box command.
  • Added the "Run garbage collector on status bar click" checkbox to the Edit>Options>Memory&Threads dialog box.
  • Added "Help" buttons to the FFT dialog boxes.
  • Pressing "+" (Image>Zoom>In) now zooms to the center of the image when the cursor is not over the image window.
  • File>Revert now works with stacks.
  • The particle analyzer now works with virtual stacks and with RGB images thresholded using Image>Adjust>Color Threshold.
  • The state of the Image>Adjust>Threshold and ColorThreshold "Dark background" checkboxes are saved in the preference file.
  • The Array.sort() macro function now does case-insensitive string sorts.
  • Fixed a bug that sometimes caused the magnifying glass tool to zoom the wrong image on Linux.
  • Thanks to Matthew Smith, fixed a bug that caused non-rectangular pastes to fail when switching to another image.
  • Fixed a bug that caused the wrong button to be highlighted in showMessageWithCancel() dialog boxes.
  • Fixed a bug that caused 3D projection of RGB stacks to fail if "Use inverting lookup table" was enabled in Edit>Options>Appearance.
  • Fixed a bug that caused a "Rename as" dialog to be displayed if the alt key was held down while a batch mode macro using the ROI Manager was running.
  • Fixed a bug that caused an FFT window to always be displayed when "Raw power spectrum" was checked in the "FFT Options" dialog box.
  • Fixed a bug with the roiManager("Add") macro function that caused it to set the ROI stroke color to cyan.
  • Timm Weitkamp, David Haas and Alexander Rack contibuted ANKAphase, a plugin that processes X-ray inline phase-contrast radiographs.
  • Kristopher Sheets contributed Open Heyex Raw Files, plugins that import Heidelberg Spectralis OCT images.
  • Dimitrios Vavylonis has released JFilament, a plugin for segmentation and tracking of 2D and 3D filaments in fluorescenece microscopy images.

New in ImageJ 1.44h (Sep 21, 2010)

  • Added drop down menus to the Image>Adjust>Color Threshold window for selecting any of 16 different automatic thresholding methods and for selecting the threshold color.
  • Fixed a bug that sometimes caused the Image>Adjust>Contrast/Brightness "Apply" option to fail with RGB stacks.

New in ImageJ 1.44g (Sep 19, 2010)

  • Plugins>Utilities>Control Panel no longer creates a "PCPanel2.ini" file in the user's home directory.
  • ImageJ can now open zip archives, using a URL, that contain multiple DICOM images.
  • The arrow keys can now be used to vertically scroll the Results window.
  • The getInfo() macro function can now retrieve Bio-Formats metadata values.
  • Added the selectionContains(x,y), is("animated") and debug("dump") macro functions.
  • The TextPanel.setSelection() method now insures that the selection is visible.
  • Added the TextPanel.addMouseListener() method.
  • Thanks to Barry DeZonia, fixed a bug that caused Process>Smooth to not round results with 8-bit images.
  • Fixed a bug that sometimes caused passing of choices in macro run() calls to fail when "item=&varname" notation was used.
  • Fixed a bug that caused virtual stacks backed by a folder containing a script to not open correctly.
  • Fixed a bug that sometimes caused the image count displayed in the dialog box to be incorrect when a folder is dragged and dropped.
  • Barry DeZonia fixed a bug that sometimes caused division of 16-bit images to fail and a bug that could result in Windows directory paths ending in "/\\".
  • Fixed a bug that caused an exception to be thrown when opening LZW compressed 32-bit float TIFFs.
  • Fixed a bug that caused the macro debugger to sometimes fail to work with macro code pasted into the editor on Mac OS X.
  • Thanks to Barry DeZonia, fixed a bug that caused the ImageProcess.convolve3x3() method (used by Process>Sharpen) to not correctly handle edge pixels of 8-bit and RGB images images.
  • Tseng Qingzong fixed a bug in the MaximumFinder.findMaxima() method that caused it to fail when called with outputType List or Count.
  • Andreas Maier fixed an edge handling bug in ImageProcessor.getInterpolatedValue(), which is used by Analyze>Plot Profile.
  • Christian Aeberhard contributed GHT, a plugin that uses the General Hough Transformation to recognize rotated and scaled objects.
  • Thanks to Evan McCreedy, the ImageJ website has a new, easier to remember, URL (imagej.nih.gov/ij). The old URLs (rsbweb.nih.gov/ij and rsb.info.nih.gov/ij) will continue to work.

New in ImageJ 1.44f (Aug 22, 2010)

  • Added the Image>Stacks>Tools>Grouped Z Project command.
  • Thanks to Michael Schmid, Image>Adjust>Size and Image>Scale have "Average when downsizing" options and Image>Adjust>Size supports Undo.
  • Thanks to Michael Doube, the Ortho Viewer (Image>Stacks>Orthogonal Views) can be controled by clicking and dragging in the XZ and YZ views and the mouse wheel changes the screen plane in all three views..
  • Image>Stacks>Z Project now works with RGB hyperstacks.
  • The headers are now saved when saving a DICOM virtual stack in TIFF format.
  • Thanks to Mark Longair, IJ.getScreenSize() now returns the correct size when the screen size is changed after ImageJ has started.
  • The perimeter of a composite selection is now calculated by decomposing it into individual selections. The composite perimeter and the sum of the individual perimeters may be different due to use of different calculation methods.
  • Thanks to Michael Doube, added getInstance(), getCrossLoc() and setCrossLoc() methods to the Orthogonal_Views class (example).
  • SetStack() calls no longer cause a new ImageWindow to be constructed when adding a slice to a single image or subtracting a slice from a two slice stack.
  • Newly opened macro sets with two or more macros are installed in the Plugins>Macros submenu.
  • Added the getInterpolationMethod() and resize(int,int,boolean) methods to the ImageProcessor class.
  • Fixed a regression than caused the particle analyzer to fail with stacks when "Display labels" was enabled in Analyze>Set Measurements.
  • Fixed bugs in Image>Stacks>Orthogonal Views that caused it to not work correctly with anisotropic voxels.
  • Fixed a bug that caused Edit>Selection>Rotate to fail with thick lines.
  • Thanks to Johannes Schindelin, the 16 plugins developed under the supervision of Noël Bonnet were recovered and are now available at plugins/inserm514.
  • Sean Parsons contributed MetaData (Line Scan Analysis), a plugin that saves and opens images with metadata and does filtering, normalization and spark detection of confocal line scans of intracellular calcium.
  • Jorma Isola has released ImmunoRatio, a plugin for analyzing ER, PR, and Ki-67 immunohistochemistry.
  • Ben Corry and Rasha Ruhayel contributed 2D NMR Analysis, a plugin for analysing and integrating peaks in 2D NMR spectra.

New in ImageJ 1.44e (Aug 3, 2010)

  • Added the Image>Stacks>Tools>Make Substack command, based on the Substack Maker plugin by Anthony Padua, Daniel Barboriak and Ved Sharma.
  • Added an "AND" command to the ROI Manager.
  • The Image>Overlay>Add Selection dialog remembers the stroke width and color.
  • The run("Close All") macro function no longer displays a warning message when there are unsaved changes.
  • The particle analyzer now displays a blank image when the count is zero and "Show:" is not "None".
  • Added the Overlay.* macro functions (example).
  • Added the CompositeImage.setChannelsUpdated() and Macro_Runner.runMacroFromJar() methods.
  • Fixed a regression that caused the save() macro function to change the image name.
  • Fixed a regression that caused File>Import>Text Image to fail if the file contained values with a plus sign (e.g., "1.23e+02").
  • Fixed a macro run() call parsing bug that caused "min=234;run("Analyze Particles...", "size=&min");" to fail.
  • Fixed a bug that caused an exception if the newImage() macro function was called with width or height set to zero.
  • Fixed a bug that caused setAutoThreshold("Default") to sometimes not generate the expected threshold with images that had a sharp peak in its histogram.
  • Fixed a bug that caused Plugins>Utilities>Control Panel to not correctly save its preferences.

New in ImageJ 1.44d (Jul 13, 2010)

  • Added the Edit>Selection>Line to Area command.
  • Added "Help" buttons to the File>Import>Image Sequence, File>Import>Raw and Process>Math>Macro dialog boxes.
  • The CurveFitter resolves 6 parameter user-defined equations.
  • Image>Color>Make Composite now opens the new composite color image in place.
  • Removed the "Convert to 8-bit grayscale" option from File>Import>Image Sequence. As a replacement, use the "Use virtual stack" option and then convert to 8-bit using Image>Type>8-bit.
  • Assigned the "U" keyboard shortcut to Plugins>Utilities>Control Panel.
  • ImageJ no longer automatically installs, at startup, plugins in JAR file directories that start with a lower case letter.
  • ImageJ runs "-batch" command line scripts in batch mode.
  • Added setImage(ImagePlus) and setNextLocation(Point) methods to the ImageWindow class.
  • The up and down arrow keys no longer cause the LOCI Data Browser window to zoom in and out.
  • Fixed a bug that sometimes caused an exception when an animating stack window was closed.
  • Fixed a bug that sometimes caused Process>Image Calculator to not work correctly with signed 16-bit stacks.
  • Fixed a bug that caused an exception when using Image>Overlay>Flatten on an image without an overlay.
  • Fixed a bug that sometimes caused the "Ch", "Slice" and "Frame" Results table columns (enabled by checking Stack Position in Set Measurement) to contain incorrect values.
  • Fixed a bug that caused JPEGs smaller than 8x8 pixels to always open as 8-bit grayscale images.
  • File>Save As>AVI no longer caps the frame rate at 60 FPS.
  • Fixed a bug that caused the slice range to be ignored by Image>Stacks>Label when using an overlay.

New in ImageJ 1.44c (Jun 16, 2010)

  • Raw integrated density (sum of pixel values) is displayed when "Integrated density" is enabled in Analyze>Set Measurements.
  • Added a File>Rename command and Results menu to Results windows.
  • Added "Help" buttons to the Process>Find Maxima, Process>Image Calculator and Process>Subtract Background dialog boxes.
  • Pressing 'esc' aborts macros displaying a "WaitForUser" dialog.
  • Changed the name of the File>Save As>Measurements command to File>Save As>Results and changed Help>Update Menus to Help>Refresh Menus.
  • Plugins>Compile and Run adds the Bio-Formats plugin (loci_tools.jar) to the Java compiler's classpath.
  • The TIFF reader displays information needed to import the file (number of images, offset to first images, gap between images) when ImageJ is in debug mode.
  • The MacClipboard plugin, which opens PICT images from the clipboard using QuickTime for Java, is now included in ij.jar.
  • Added the IJ.renameResults() macro function.
  • Worked around a bug that caused the Image>Stacks>Reslice command to be very slow on some 64-bit versions of Java.
  • Fixed a bug that sometimes caused a "negative seek offset" error when opening TIFF files larger than 2GB.
  • Fixed a bug that caused File>Import>TIFF Virtual Stack to not display the TIFF tags when ImageJ was in the debug mode;
  • Fixed a bug that caused "/" to be added to the FileInfo directories when opening a folder of images using drag and drop on Windows.
  • Fixed a bug in the setAutoThreshold() macro function and ImageProcessor.setAutoThreshold() method that caused the threshold level to be one less than the level set by the "Threshold" widget when "Dark background' was enabled.
  • Jerome Mutterer has released Serial Macro Extensions, a plugin that provides macro language functions to talk to a device attached to a serial port.

New in ImageJ 1.44a (May 14, 2010)

  • Overlays are preserved when printing and when saving in PNG format.
  • Thanks to Tiago Ferreira, Image>Stacks>Tools>Montage to Stack now takes borders into acount.
  • Added "Rotate YZ" and "Flip XZ" options to Edit>Options>DICOM.
  • Thanks to Juan Grande, added "Save column headers" and "Save row numbers" options to Edit>Options>Input/Output.
  • Constructing a HistogramWindow when using ImageJ as a library no long causes an image to be displayed.
  • Added a GenericDialog.addCheckboxGroup() method that specifies column headings.
  • Fixed a bug that caused "Results" window summary data to not be saved.
  • Fixed a bug that caused Orthogonal Views crosshair lines to be saved as an overlay when saving in TIFF format.
  • Thanks to Barry DeZonia, fixed a bug that sometimes caused an exception when drawing a composite selection (ShapeRoi).
  • Fixed a bug that could cause the Threshold tool to not work correctly after using File>Revert on a 16-bit DICOM image.
  • Fixed a bug that could cause the Image>Overlay>Hide Overlay and Show Overlay commands to not work as expected.
  • Thanks to Johannes Schindelin, fixed a bug in the PluginClassLoader that could cause an exception when running plugins using MIJ (Matlab to ImageJ interface).
  • Fixed a bug that caused DialogListeners to not be called with checkbox groups with fewer than five checkboxes.
  • Worked around a Linux bug that caused labels in GenericDialog checkbox groups to be centered rather than left justified.
  • Fixed bugs in Image>Stacks>Othogonal Views that caused it to not work correctly with zoomed images and with the "+" (Zoom In) and "-" (Zoom Out) commands.
  • The MultiColumnDialog plugin demonstrates how to create a dialog box with checkboxes in two or more columns.
  • Ben Tupper contributed Graph Demo, a plugin that demonstrates the creation of adjacency lists based on particle separation distances.
  • Tiago Ferreira's ImageJ User Guide (PDF) is now also available in HTML format, either online or as a downloadable ZIP file.
  • Ricardo Henriques has released QuickPALM, a plugin for real-time acquisition, reconstruction and visualization of 3D PALM (PhotoActivated Light Microscopy) or STORM (STochastic Optical Resolution Microscopy) images.
  • Michael Fischer contributed Diameter, a plugin for measuring the diameter of a blood vessels.

New in ImageJ 1.43u (Apr 26, 2010)

  • The code for opening PICT images from the clipboard using QuickTime for Java was moved to a separete plugin (MacClipboard.java) distributed with the OS X version of Image. Fixed a bug that caused the setAutoThreshold() macro function, and the IJ.setAutoThreshold() and ImageProcessor.setAutoThreshold() methods, to not work correctly with 16 and 32 bit images that were not using the default display range.
  • Barry DeZonia contributed an improved OvalRoi.contains() method.
  • Guanghua Du contributed Foci Picker3D, a multithreaded plugin that finds local maxima in 2D and 3D images.

New in ImageJ 1.43t (Apr 19, 2010)

  • ImageJ now requires Java 1.5 or later.
  • Added the Image>Stacks>Tools>Insert and Image>Stacks>Tools>Montage to Stack commands.
  • Image>Stacks>Label works with hyprestacks and support for 00:00 and 00:00:00 timestamp formats.
  • Edit>Draw now draws to left and below rectangular selections when the line width is one.
  • Add "Timestamp" code generator to Process>Batch>Macro and Process>Batch>Virtual Stack.
  • The "Auto", "Reset" and "Set" buttons of the B&C widget are now recorded correctly when the Recorder is in "Script" or "Plugin" mode.
  • File>Import>Raw opens stacks with the middle slice selected.
  • Changed the initial Log fit 'a' and 'b' parameter values to 1.0.
  • Added the SetOption("black background", boolean) macro function.
  • Added the LutLoader.open(String), LutLoader.open(InputStream) and LutLoader.createImage(IndexColorModel) methods.
  • Thanks to Wilhelm Burger, The AutoThresholder class now uses a compile-time safe enum to specify the method rather than a string that can cause an exception to be thrown.
  • Fixed a bug that caused File>Import>Image Sequence to not create slice labels for images imported from stacks.
  • Fixed a bug that caused the "+" shortcut for zooming in to not work with German keyboards.
  • Fixed a bug that could cause ImageJ to hang when when displaying an error message in debug mode.
  • Jonathan Glass contributed Export Point Cloud, a plugin that creates a point cloud viewable in Excel, Matlab or Paraview from a stack of CT scans.
  • Tiago Ferreira contributed The ImageJ User Guide, an 8 MB PDF document that contains:
  • 188 pages
  • 198 illustrations
  • 867 internal cross-references
  • 332 external links to the WWW
  • 5 tables
  • 7 macro listings
  • Tiago Ferreira contributed SourceCodeRetriever, a macro that searches for a menu entry and tries to retrieve the java source file of the respective plugin.
  • The Laboratory of Scientific Image Analysis has released the CDA (Confined Displacement Algorithm for Colocalization) plugin.

New in ImageJ 1.43s (Mar 19, 2010)

  • Moved the Combine, Concatenate, Start Animation, Stop Animation and Animation Options commands from the Image>Stacks submenu to the Image>Stacks>Tools submenu.
  • Moved the Find Maxima command from the Process>Binary submenu to the Process menu.
  • Moved the List Shortcuts command from the Plugins>Utilities submenu to the Plugins>Shortcuts submenu.
  • Moved the Options... command to the bottom of the Process>Binary submenu.
  • Changed the default Find Maxima output type to "Point Selection".
  • Changed the default AVI Writer compression from "Uncompressed" to "JPEG".
  • ImageJ now displays an error message when the user attempts to open a tiled TIFF file.
  • Thanks to Daniel White, Analyze>Tools>Scroll Bar is no longer annoyingly slow for image stacks with thousangs of slices.
  • The ROI Manager More>>Options dialog is now recordable.
  • ImageJ now opens 48-bit TIFFs that are missing the required StripByteCounts tag.
  • Added the ResultsTable.getResultsWindow() and TextWindow.close(boolean) methods.
  • Fixed a bug that caused the particle analyzer to sometimes not work as expected when the "Display Results" option was not enabled.
  • Thanks to Barry DeZonia, fixed a bug that caused big-endian, ARGB, uncompressed TIFFs to not open correctly.
  • Thanks to Barry DeZonia, fixed a bug that sometimes caused an exception when IJ.getImage() was called and the "ImageJ" window was not open.
  • Fixed a bug that caused an exception when opening some BioRad Quantity One 16-bit TIFFs.
  • Fixed a bug that caused PackBits-compressed 16-bit TIFFs to not open correctly.
  • Tiago Ferreira contributed MathMacroDemo, a macro that demonstrates how to use the Process>Math>Macro command to apply custom formulas to each pixel in an image.

New in ImageJ 1.43r (Mar 5, 2010)

  • Added the Edit>Options>DICOM command.
  • Added a "Headless" style to the arrow tool.
  • Overlays are preserved when saving in JPEG format.
  • Restored the ROI Manager "FIll" and "Draw" commands.
  • Added the getInfo("overlay") macro function (example).
  • Fixed regressions that caused 16-bit composite images to be converted to grayscale when saving in JPEG and PNG format.
  • Fixed a bug that caused the particle analyzer to open the Results window when the "ImageJ" window was not open.
  • Fixed a bug that caused the File>Open Next command to not work correctly with composite images and hyperstacks.
  • Fixed a bug that caused stacks created by importing Analyze format images using File>Import>Image Sequence to contain duplicate images.
  • Fixed a bug that sometimes caused the wrong channel to be selected when clicking on the channel slider.
  • Jerome Mutterer contributed MacBook Position, a plugin that uses the JNI library at www.shiffman.net/p5/sms/ to read a MacBook's Sudden Motion Sensor.
  • Gabriel Landini has released Dithering, a macro that dithers an image using one of nine available methods, including Floyd-Steinberg, Atkinson, Jarvis-Judice-Ninke, Stucki, Bayer, Clustered and Random.

New in ImageJ 1.43q (Mar 1, 2010)

  • Fixed a bug, introduced in v1.43p, that caused Image5D to crash.

New in ImageJ 1.43n (Dec 28, 2009)

  • Added the rounded rectangle and arrow tools, which share space on the toolbar with the rectangle and line tools. The arrow tool was inspired by the Fiji arrow tool written by Jean-Yves Tinevez and Johannes Schindelin.
  • Selections (e.g., arrows) can be added to a non-destructive overlay by pressing "b", the new keyboard shortcut for the Image>Overlay>Add Selection command.
  • Added the Edit>Options>Arrow Tool command.
  • Added support for saving results tables as .csv (comma-separated values) files and for opening them using drag and drop.
  • The color picker is no longer an ImageWindow, and it remembers its location.
  • Removed the "JPEG Quality" option (which wasn't working) from the File>Save As>AVI dialog box.
  • The ROI Manager works with stacks that have more than 9999 images.
  • The Command Finder (Plugins>Utilities>Find Commands) remembers the state of the "Close when running" checkbox.
  • The 'changes' flag is now reset after saving an image in PNG, BMP, PGM or FITS format.
  • The "Antialiased tool icons" setting in Edit>Options>Appearance is enabled by default.
  • Fixed a bug in the Command Finder that caused it to fail to run macros installed in the Plugins>Macros submenu.
  • Fixed a bug that caused File>Revert to vertically flip FITS images.
  • Fixed a bug that caused ImageJ to not correctly open some 16-bit TIFFs.
  • Fixed bugs that caused the lineTo() and drawLine() macro functions to not correctly draw lines with negative starting coordinates.

New in ImageJ 1.43m (Dec 7, 2009)

  • Virtual stacks can now be saved in TIFF, "raw", Analyze and NIfTI format.
  • Thanks to Michael Schmid, "MinFeret" calculations are now more accurate and correctly handle pixel aspect ratios not equal to 1.
  • Results tables (in tab-delimited text format) with an ".xls" extension can be opened using File>Open and drag and drop.
  • When using the particle analyzer in a macro, the default values (0-Infinity, 0-1 and "Nothing") are assumed if the 'size', 'circularity' or 'show' options are omitted.
  • The updateResults() macro function and ResultsTable.show() method, when creating a new table, scroll to the top of the window (example).
  • Added the Overlay.getSize() and Overlay.removeSelection() macro functions.
  • Added the ImagePlus.setOverlay(Overlay) method (JavaScript example).
  • Added the ImagePlus.setOverlay(Roi,Color,int,Color) method (JavaScript example).
  • Added open(path) and saveAs(path) methods to the ResultsTable class (JavaScript example).
  • Fixed a bug that caused Analyze>Summarize to somethimes fail if "Stack Position" was enabled in Analyze>Set Measurements.
  • Volker Backer fixed a bug that sometimes caused the B&C adjuster to work with the wrong channel of a composite color image after having changed the channel by dragging the channel selection slider.
  • Tiago Ferreira has released ROI Color Coder, a macro that labels segmented particles by matching measured parameters to indexes of a chosen LUT.
  • Gilles Carpentier contributed Object_Color_Sorting, a macro that demonstrates how to segment objects based on their color.
  • Eugen Labun has released ImageJ SURF, a plugin that does feature detection and image comparison.
  • The ToothRootToCrownRatio macros use a non-destructive overlay to allow easy measurement of tooth dimensions in dental radiographs.

New in ImageJ 1.43l (Nov 25, 2009)

  • Gabriel Landini's Threshold_Colour plugin is now built in as the Image>Adjust>Color Threshold command.
  • Added the Image>Overlay>Remove Overlay command.
  • Added a "New Overlay" option to the Image>Overlay>Add Selection dialog box (example).
  • Added "Opacity" and "Create image selection" options to the Image>Overlay>Add Image dialog box.
  • The Recorder, in "JavaScipt" and "Plugin" mode, correctly records ROI Manager commands.
  • Added the IJ.getToolName() macro function and method.
  • Added the Analyzer.setRedirectImage() method.
  • The AVI Writer displays an error message if the user attempt to overwrite a virtual stack
  • Fixed a bug that caused Image>Color>Merge Channels to always create a composite image when merging four channels.
  • Fixed a bug related to passing path variables to export plugins by macros using "&varname" notation (example).
  • Gabriel Landini fixed a bug in Image>Adjust>Threshold that caused the mask created when "Dark Background" was enabled to not be identical to an inverted version of the mask created when "Dark Background" was not enabled.
  • Fixed a bug in Analyze>Calibrate that could cause values copied into the dialog box from a webpage to be converted to zeros.
  • Fixed a bug that caused 8-bit images with pseudo-color LUTs to be incorrectly classified as type "8-bit Color" (ImagePlus.Color_256).

New in ImageJ 1.43k (Nov 11, 2009)

  • Added the multi-point tool, which is enabled by right-clicking on the point tool.
  • Added a "Record:" drop down menu, with three choices ("Macro", "JavaScript" and "Plugin"), to the Recorder.
  • The Recorder generates thread safe JavaScript and Java code.
  • Thanks to Michael Schmid, Process>Binary>Find Maxima has a "List" output option, and is faster.
  • File>Import>Image Sequence sets the voxel depth equal to the pixel width.
  • Image>Stacks>Reslice displays the voxel size in its dialog box.
  • Spline fit selections and Text selections can now be saved (using File>Save As>Selection) and restored (using File>Open or drag and drop).
  • The Edit>Clear command in the "Results" table is now recorded.
  • Added the IJ.deleteRows() macro function and method.
  • Added the getInfo(DicomTag) macro function.
  • Michael Schmid worked around a Java bug on Windows and Linux that prevented selection of mutltiple ROIs in the ROI Manager with a single shift click.
  • Michael Schmid fixed a bug in Process>Binary>Find Maxima, with "Segmented" output, that caused it to create extra invalid features.
  • Fixed a bug that could cause 8-bit DICOMs to not open correctly.
  • Fixed a bug that could cause headings in empty custom results tables to not be displayed.
  • Fixed a bug in Image>Stacks>Images to Stack that caused it do not work properly with 8-bit color images.
  • Fixed a bug in Image>Hyperstacks>Stack to Hyperstack that caused it to not shuffle the slice labels of stacks not in CZT order.

New in ImageJ 1.43j (Oct 29, 2009)

  • Added the Image>Overlay submenu with Add Selection, Add Image, Hide Overlay, Show Overlay, From ROI Manager, To ROI Manager and Flatten commands (example1, example2).
  • Added the ImageRoi class (JavaScript example).
  • Bruno Vieira contributed Colony Counter, a plugin for counting bacteria colonies in agar plates.
  • Marcel Austenfeld contributed Twain Scan, a plugin that uses the open source library from www.mms-computing.co.uk to capture images from Twain campatible scanners and cameras.

New in ImageJ 1.43i (Oct 22, 2009)

  • Added the Edit>Selection>Create Overlay (example) and Properties commands.
  • Added the Plugins>Macros>Record Script command.
  • Thanks to Jay Unruh, File>Import>Text Image opens images in comma-delimited text format.
  • Thanks to Gabriel Landini, the Thresholding tool's "B&W" mode now respects the "Black background" flag in Process>Binary>Options.
  • Added the "Flatten" button to the ROI Manager and removed the "Draw", "Fill" and "Label" commands from the "More>>" drop down menu.
  • The aspect ratio of rectangular and elliptical selections is displayed in the status bar as they are created and resized.
  • The "Transparent-zero" mode in Edit>Paste Control and Process>Image Calculator now works with 16-bit and 32-bit images.
  • Assigned the shift-f keyboard shortcut to Image>Flatten and the "]" (close bracket) shortcut to Window>Show All.
  • Added the ImagePlus.setDisplayList(Roi,Color,int,Color) method (example).
  • Worked around a bug with Java 1.6 on Mac OS X that caused multiple selection in the ROI Manager to not work.
  • Jerome Mutterer has released Droplet, a drag and drop file processor that uses customizable macros.
  • Thanks to Johannes Schindelin, ImageJ now has a Git version control repository, which is updated daily.
  • Niels Jensen contributed PlateMontage, a macro that creates a labeled plate montage image from BD Pathway 855 / AttoVision 1.6 data sets.

New in ImageJ 1.43h (Oct 10, 2009)

  • Added the "Colors" button and "Labels" checkbox to the ROI Manager (example).
  • Added the Image>Flatten command.
  • Changed the name of the Image>Rotate submenu to Image>Transform.
  • Removed the "Double buffer selections" option from Edit>Options>Appearance. ROIs and display lists (overlays) are now always double buffered on Linux and Windows.
  • Dialogs can be dismissed by pressing ctrl+w.
  • Added the Image>Transform>Flip Z command.
  • Added the makeText(), Array.invert(), getInfo("image.directory" ), getInfo("image.filename" ), roiManager("Set Color", color) and roiManager("Set Line Width", width) macro functions.
  • Added the setLineColor(), setFillColor(), setLineWidth() and setNonScalable() methods to the Roi class (example1, example2, example3).
  • Fixed a bug that could cause an exception if the "l" key (Plugins>Utilities>Find Commands) was pressed immediately after launching Fiji.
  • Fixed bugs that could cause commands to be recorded when a macro was running.
  • Jan Eglinger contributed ThreeColorPlot, a macro that creates profile plots of each channel of a color image and overlays the plots in composite image.

New in ImageJ 1.43g (Sep 19, 2009)

  • Added the Process>Batch>Virtual Stack command.
  • Added the "Draw As Overlay" (display ROIs using a display list) and "Remove Overlay" commands to the ROI Manager.
  • Multi-point and text selectons are now properly displayed in the ROI Manager "Show All" mode.
  • Tiff stacks with a .tif extension open as virtual stacks when dragged and dropped on the ">>" toolbar icon.
  • The Image>Show Info command and the getMetadata() macro function retrieve the "DateTime" and "Software" TIFF tags.
  • Plugins>Compile and Run defaults to the plugins directory instead of the ImageJ directory.
  • Added the ImageCanvas.setDisplayList(Roi,Color) method (example).
  • Added the IJ.handleException() and IJ.setExceptionHandler() methods.
  • Fixed a bug that could cause an exception when using the Measure command with segmented line selections wider than 1 pixel.
  • Fixed a bug that caused commands that opened a web page to fail on Mac OS X 10.6 when running the 32-bit version of Java 1.6.
  • Fixed a bug that caused "[aborted]" to be displayed in the Log window when a macro called using runMacro() was canceled.
  • Fixed a bug that could cause macro files containing 100 or more functions to fail to install.
  • Fixed a bug in Analyze>Measure that cause it to incorrectly calculate the area of line selections on spatially calibrated images and to incorrectly calculate the mean of straight line selections wider than one pixel on spatially calibrated images.
  • Jacqui Ross has written four ImageJ Tutorials (in PDF format), Introduction to ImageJ, Color Analysis Tools, Colocalization Tools and Using and Writing Macros.
  • Joachim Wesner contributed TIFF Tags, a plugin that displays the tags of a specified TIFF file.
  • Curtis Rueden contributed TIFF Dumper, a plugin that uses the Bio-Formats plugin to display the TIFF tags of the current image.
  • Marco Righi has released Vessel_Distribution, a macro that compares the space-filling properties of microvessels networks.

New in ImageJ 1.43f (Aug 24, 2009)

  • The Image>Scale and Image>Adjust>Size commands now scale stacks and hyperstacks in the Z dimension.
  • The Image>Color>Merge Channels command now works with hyperstacks.
  • Added the File>New>Hyperstack command, an alias for Image>Hyperstacks>New Hyperstack.
  • Analyze>Tools>Fractal Box Counter writes results that can be read by macros.
  • Added the List.setCommands, setFont("user"), getInfo("font.name"), getValue("font.size") and getValue("font.height") macro functions.
  • Thanks to Johannes Schindelin, added the NonBlockingGenericDialog class, now used by the Process>Batch>Process command.
  • Fixed a bug that sometimes caused the Image>Adjust>Brightness/Contrast "Apply" function to fail with RGB stacks.
  • Fixed a bug that sometimes caused Image>Color>Split Channels to display a "save changes?" dialog box.
  • Fixed a bug that caused File>Save As>Image Sequence to throw an exception if the window was closed before all the images in the stack were saved.
  • Jerome Mutterer has released PDF Macro Ext, a plugin that uses the iText library to add PDF creation functions to the ImageJ macro language.

New in ImageJ 1.43e (Aug 7, 2009)

  • Added the Process>Batch> submenu, containing Measure, Convert and Process commands.
  • Thanks to Norbert Vischer, it is now much easier to outline circular objects using the constrained (shift key down) elliptical selection tool.
  • Added an "Export" button to Plugins>Utilities>Command Finder.
  • Added the selectWindow("ImageJ") macro function.
  • Fixed a bug that caused image zooming to fail on secondary monitors.
  • Fixed bugs that caused the particle analyzer to sometimes not work as expected when "Black Background" was enabled in Process>Binary>Options.
  • Fixed a bug that caused the Plugins>Utilities>Memory Monitor tool to not work correctly when the line width was greater than one.

New in ImageJ 1.43d (Jul 21, 2009)

  • Thanks to Dimiter Prodanov, plugins (.jar and .class files) dragged from a browser window and dropped on the "ImageJ" window are installed and the menus are updated.
  • Text files (.txt, .ijm, .js and .java) can be opened in ImageJ by dragging from a browser window and dropping on the "ImageJ" window.
  • Thanks to Julian Cooper, the alt key constrains resizing to the current aspect ratio for rectangle and oval selections, and keeps the same length for line selections.
  • Added a "32-bit ABGR" option to the File>Import>Raw dialog box.
  • The ImageJ and Java version numbers are displayed when you click in the status bar.
  • Added the IJ.openUrlAsString() method.
  • Fixed a bug that sometimes caused the micron symbol (µ) to not be displayed correctly on Linux.
  • Fixed a bug that caused big-endian ARGB TIFFs to open incorrectly.
  • Fixed a bug that caused LUTs in the ImageJ/luts folder to not be added to the Image>Lookup Tables menu when running Fiji on OS X.
  • Fixed a bug that could cause Metamorph .stk files to open with an all zero LUT.
  • Fixed a bug that could cause ImageJ to generate an exception or fail to start if there was a corrupted jar file in the plugins folder.
  • Fixed a bug in the TIFF reader that could cause a "Strip offsets are not in order" error.
  • Gilles Carpentier contributed an enhanced LUTs, Macros and Tools Updater toolset.
  • Janos Roszik et al. have released RiFRET, a plugin for the evaluation of intensity-based ratiometric FRET images.

New in ImageJ 1.43c (Jul 9, 2009)

  • Thanks to Olaf Freyer, ImageJ can now open 48-bit LZW compressed TIFFs.
  • Thanks to Michael Schmid, the Process>Binary>Options dialog box now has a "Preview" option.
  • Roi Manager "Show All" mode selections can again be moved by clicking on the selection's label and dragging.
  • Images can be opened by dragging from a browser window and dropping on the ImageJ window.
  • When dragging and dropping, "" is displayed in the status bar when the cursor is over the drop site.
  • Increased the size of toolbar icons from 24x24 to 26x26 pixels, which increased the width of the ImageJ window by 42 pixels.
  • With composite images, Image>Show Info adds a "Composite mode: mode" line to its output.
  • Added the GenericDialog.enableYesNoCancel(yesLabel,noLabel) method (example).
  • The setVoxelSize() macro function converts "um" units "µm".
  • Worked around a "feature" in the latest Mac OS X Java update that caused the getDirectory("temp") macro function to return paths like "/var/folders/C-/C-bqCJHiFxOuNwlNmBmRG1UNxXY/-Tmp-/" instead of the expected "/tmp/".
  • Fixed a bug, introduced in v1.43a, that caused the XStart and YStart values saved by the particle analyzer to be incorrect.
  • Fixed a bug that caused Image>Show Info to not display metadata of stacks opened using File>Import>Stack from List.
  • Fixed a bug that sometimes caused Image>Hyperstacks>Stack to Hyperstack to not correctly set the active image.
  • Fixed a bug that caused the File.directory() macro function and the OpenDialog.getLastDirectory() method to return a path to the luts directory after a LUT had been loaded from the Image>Lookup Tables submenu.
  • Julian Cooper contributed the CT Window Level and Anonymize IJ DICOM plugins.
  • Romain Francois has released a package that embeds ImageJ in R.
  • Andrew Weitz contributed SomaRoiTool, a tool macro for labeling somas (cell bodies) or other elliptical structures.

New in ImageJ 1.43b (Jun 24, 2009)

  • Added the "Use Titles as Labels" checkbox to the Image>Stacks>Images to Stack dialog box.
  • Kevin Moll contributed an enhanced and simplified PluginClassLoader that extends URLClassLoader.
  • Fixed a bug, introduced in v1.43a, that caused Help>Update ImageJ to fail if the path to ij.jar contained a space.
  • Fixed a bug that caused Image>Show Info to not display metadata of stacks opened using File>Import>TIFF Virtual Stack.
  • Fixed a bug that sometimes caused the threshold limits to not be passed to PlugInFilters using the CONVERT_TO_FLOAT flag.

New in ImageJ 1.43a (Jun 20, 2009)

  • Thanks to Michael Schmid, the wand tool now supports 4-connected and 8-connected tracing, and a tolerance can be specified. Double click on the tool icon to configure.
  • The Image>Stacks>Delete Slice command works with hyperstacks.
  • Added a "Name" field to the Image>Stacks>Images to Stack dialog box.
  • Thanks to Johannes Schindelin, Help>Update ImageJ updates ij.jar files in non-standard locations, and those embedded in ImageJ64 on OS X.
  • ImageJ can now be compiled with OpenJDK, thanks to Johannes Schindelin and Mark Longair.
  • Added the doWand(x,y,tolerance,mode) macro function and IJ.doWand(x,y,tolerance,mode) method.
  • Fixed a bug that caused plugins in packages with names starting with "ij" to sometimes not be found.
  • Fixed a bug that caused the Threshold tool "Apply" option to not be recorded for 32-bit images with "Set Background Pixels to NaN" enabled.
  • Fixed a bug that caused uncompressed TIFF stacks larger than 2GB to not open correctly.

New in ImageJ 1.42q (Jun 8, 2009)

  • Fixed bugs, introduced in v1.42p, that caused an exception when opening a virtual stack or when closing an Image5D stack.
  • Fixed a bug that caused bicubic intepolation edge artifacts.
  • David Marso contributed StackBlaster, a macro that allows an image or stack to superimposed upon a background image or stack.
  • Gilles Carpentier contributed List Online Macros, a macro that generates a list of all the macros, tools and toolsets available on the ImageJ website.
  • Michael Schmid has released Versatile Wand, a wand tool with selectable tolerance, gradient detection, 4-connected or 8-connected operation and preview.

New in ImageJ 1.42p (May 28, 2009)

  • Thanks to Gabriel Landini, the Image>Adjust>Threshold tool now has a drop down menu for selecting any of 16 different thresholding methods.
  • Thanks to Julian Cooper, rectangular and elliptical selections can now be created and resized from their centers by holding down the control key (command key on Macs).
  • Added the Label (Time Stamper), Combine and Concatenate commands to the Image>Stacks submenu.
  • Added the "Run socket listener" option to the Edit>Options>Misc dialog. Enabling this option prevents multiple copies of ImageJ from starting but it can cause a security alert when ImageJ starts.
  • Added the setAutoThreshold(string) and getList("threshold.methods") macro functions (example).
  • Added the ImageProcessor.setAutoThreshold(String) method.
  • Added the Dialog.addHelp(string) macro function and the GenericDialog.addHelp(String) method. The new Image>Stacks>Label command uses the addHelp() method.
  • The ImagePlus.flush() method not longer runs System.gc() and no longer nulls the ImageProcessor pixel array.
  • Michael Schmid fxed a bug in Edit>Selection>Straighten that caused it to not work well for very wide selections.
  • Fixed a bug that caused the x values to be deleted in the Analyze>Calibrate dialog box.
  • Fixed a bug that caused the Plot.getValues() macro function, when retrieving values from plot windows, to not work in batch mode macros.
  • Fixed a bug that caused edge artifacts when doing bicubic interpolation.
  • Steffen Schmidt contributed the TIA Reader plugin, which opens .ser files created by the TIA software (FEI/Emispec).
  • Julian Cooper contributed the Make Isotropic and Untilt Stack plugins.
  • Michael Schmid contributed Erode Demo, a plugin that demonstrates how to do binary erosion using the EDM, how to provide a "Preview" option, how to process stacks using parallel threads, and how to add a "Help" button to a dialog box.
  • Michael Schmid has released Radially Averaged Autocorrelation, a macro that calculates the radial average of the autocorrelation of a (binary) image, and Radial Distribution Function, macro that calculates the radial distribution function (RDF) of particle centers.
  • Gilles Carpentier contributed the Scale Bar Tools for Microscopes toolset.

New in ImageJ 1.42o (May 14, 2009)

  • Added the Image>Stacks>Orthogonal Views command, which is based on Dimiter Prodanov's StackSlicer plugin and Albert Codona's Updater class.
  • Thanks to Julian Cooper, a straight line selection can now be rotated about its center by holding down the alt key.
  • File>Save As>AVI now works correctly with 5D hyperstacks (e.g., the Mitosis sample image).
  • Thanks to Michael Schmid, the EDM algorithm is more accurate, there are options for 16-bit and float output, stacks are processed using multiple threads, and Voronoi diagrams can be generated.
  • Thanks to Michael Schmid, Process>Binary>Find Maxima works with images>32768 pixels in width or height.
  • Gabriel Landini added the "Pad edges when eroding" option to Process>Binary>Options.
  • With hyperstacks, Image>Stacks>Make Montage displays instructions that explain how to create C, Z or T montages.
  • Added the Mitosis (26MB, 5D Stack) sample image, courtesy of Eric Griffis and Nico Stuurman.
  • Fixed a bug that caused images with a width or height greater than 65,535 to not be correctly saved in TIFF format.
  • Fixed a bug in the File.openAsRawString() macro function that caused it to not correctly read bytes with values greater than 127.
  • Fixed a bug that caused an error message to be displayed when a URL stack download was aborted by pressing 'esc'.
  • Fixed a bug that caused Process>Filters>Convolve to sometimes record an extra "".
  • Fixed a bug that caused TIFF and RAW virtual stacks greater than 2GB to not open correctly.
  • Fixed a bug that could cause the measurent length of rapidly drawn freehand line selections to be incorrect.
  • Fixed a bug that could cause the newImage() macro function to display a bogus "out of memory" error.
  • Fixed a bug that caused the TIFF reader to not correctly decode metadata containing non-ASCII characters.
  • Fixed a bug that caused Image>Color>Merge Channels to throw an exception of the source images were not all the save type.
  • Philippe Thevenaz has released SheppLogan, a plugin that generates a sampled version of the Shepp-Logan phantom.
  • Tiago Ferreira contributed Filename_Randomizer, a macro that randomize the names of files in a folder.

New in ImageJ 1.42n (Apr 27, 2009)

  • Added the is("binary") macro function and ImageProcessor.isBinary() method.
  • Fixed bugs, introduced in v1.42m, that caused LSM images to open with incorrect channel colors and sometimes caused the Image>Color>Merge Channels command to fail.
  • Fixed a bug that caused the saveAs() macro function to sometimes truncate file names containing periods and no extension
  • Jerome Mutterer has released IJ Ed, a jEdit-based code editor plugin for ImageJ.
  • Jean-Yves Tinevez and Albert Cardona have released the Dynamic Reslice plugin, a dynamic version of the built in Image>Stacks>Reslice command.
  • Gabriel Landini has released Auto Threshold, a plugin that converts 8-bit images to binary using any of 15 global thresholding methods, and Auto Local Threshold, that converts to binary using any of 5 local thresholding methods.

New in ImageJ 1.42m (Apr 22, 2009)

  • The Image>Stacks>Reslice command works with hyperstacks.
  • The up and down arrow keys now substitute for the "+" and "-" shortcuts when zooming in and out. This only works if the shift or control key is down when there is a selection.
  • When there is no selection, or the shift key is down, the arrow keys can substitute for "" when navigating stacks and hyperstacks.
  • The More>>Multi Threshold command in the ROI Manager is much faster.
  • When previewing point selections, Process>Binary>Find Maxima does not label the points regardless of the "Label Shift-Click Points" setting.
  • The Adjust>Threshold tool saves the LUT mode ("Red", "B&W" or "Over/Under") in the preferences file.
  • Added the Stack.getStatistics(), is("changes"), getInfo("selection.name") and File.nameWithoutExtension macro functions.
  • Added the ImageProcessor.setOverColor() and setUnderColor() methods, which can be called from a macro to set the Over/Under threshold colors (example).
  • Norbert Vischer fixed a bug that caused the macro debugger to not work, and error message line numbers to be invalid, with macros containing multiple line /*...*/ comments.
  • Michael Schmid fixed a bug in the public RankFilters.rank() method that caused it to only process the red channel of RGB images.
  • Sylvain Mainguy fixed a bug that caused the cursor to change to a hand at the corners of the bounding box of composite selections.
  • Fixed a bug that caused FL and FD DICOM VRs to not be correctly decoded.
  • Fixed a bug in Image>Hyperstacks>Reduce Dimensionality that caused it to not preserve image labels.
  • Fixed a bug that caused jar files containing class files with "_" in the name in subfolders and no plugins.config file (e.g., ImageJ_3D_Viewer.jar) to generate startup error messages.
  • Fixed a bug, introduced in 1.42i, that could cause ImageJ to hang when using the Measure command if "Shape Descriptors" or "Feret's Diameter" were enabled in Set Measurements.
  • Fixed bugs that caused the Image>Type>RGB Color, Image>Color>Stack to RGB and File>Save As>AVI commands to not work correctly with hyperstacks when called from batch mode macros.
  • Fixed bugs that caused Image>Hyperstacks>Reduce Dimensionality to not be macro compatible.
  • Fixed a bug that caused Image>Hyperstacks>Stack to Hyperstack to throw an exception when converting one channel Image5D stacks.
  • Fixed a bug that caused the Adjust>>Threshold tool to override existing threshold settings of 16 and 32 bit images.
  • Fanny Serman contributed Smart Projector, a plugin that optimizes, for each time point, the projection of time-lapse stacks.
  • Dimiter Prodanov contributed the StackSlicer plugin.

New in ImageJ 1.42l (Mar 27, 2009)

  • Added keyboard shortcuts for hyperstacks:
  • > - next channel
  • < - previous channel
  • ctrl+> - next slice
  • ctrl+< - previous slice
  • alt+> - next frame
  • alt+< - previous frame
  • Added bicubic interpolation option to Image>Rotate>Arbitrarily, Image>Scale and Image>Adjust>Size. The bicubic interpolation method is from Chapter 16 of Digital Image Processing: An Algorithmic Introduction Using Java by Wilhelm Burger and Mark Burge, with the 'a' control parameter set to 0.5 (Catmull-Rom interpolation).
  • The range of images to be copied can be specified when duplicating a stack using Image>Duplicate.
  • Image>Stacks>Images to Stack no longer requires that all images be the same type and size.
  • The Image>Translate command works with sub-pixel offsets (example).
  • Image>Stacks>Make Montage draws antialiased labels and allows the font size to be set in the dialog box.
  • File>Import>URL replaces spaces in URLs with " ".
  • Thanks to code contributed by Mark Longair, Image>Type>HSB Stack now converts RGB stacks to a 3 channel (Hue, Saturation and Brightness) hyperstacks.
  • Image>Type>RGB Stack now converts RGB stacks to a 3 channel (Red, Green and Blue) hyperstacks.
  • Mark Longair made usability improvements to Plugins>Utilities>Command Finder: 1) double-click to run a command; 2) press backspace to switch focus to prompt; 3) press escape to close.
  • Added the Edit>Copy to Image Info command to the text editor.
  • The search command in the text editor remembers the "Case Sensitive" setting.
  • Added the fill(Roi), fileOutside(Roi) and draw(Roi) methods to the ImageProcessor class (example).
  • Fixed a bug in Image>Stacks>Plot Z-axis Profile that caused it to not work correctly in batch mode macros.
  • Fixed a bug that prevented the selection from being resized after using Edit>Selection>Select All.
  • Fixed a bug that could cause an exception when opening 24-bit BMP images.
  • Fixed a bug that caused Process>Binary>Find Maxima to not work with composite color images.
  • The Multiple LUT Stack plugin demonstrates how to display a stack using a lookup table for each image.
  • Gabriel Landini contributed Colorize, a macro which adds hue and saturation to user defined regions in a greyscale image, while leaving the brightness constant.
  • Gilles Carpentier contributed PlotSigmoidDerivatives, macros that demonstrate how to do curve fitting and how to calculate and plot first and second derivatives.

New in ImageJ 1.42k (Mar 6, 2009)

  • Added the Image>Zoom>Set command, which is based on Albert Cardona's ZoomExact plugin.
  • Process>Math> commands now support "Preview" and use parallel threads when processing stacks.
  • Image>Type>RGB Color will convert the channels in a multichannel composite color stack to an RGB stack if the number of channels is the same as the number of images in the stack and the display mode, set with the "Channels" tool, is "Color" or "Grayscale".
  • Scripts can be passed a string argument when called from the command line (using the -macro or -batch options) or using the IJ.runMacroFile() method. Scripts can use the getArgument() function to retrieve the argument.
  • Removed the "Input Slice Spacing" field from the Image>Stacks>Reslice dialog box.
  • File>Import>URL opens JPEG, PNG and GIF images from URLs based on either the extension or the content type.
  • Added the Plot.drawLine(x1,y1,x2,y2) macro function (example).
  • Added the Stack.setTUnit(string) and Stack.setZUnit(string) macro functions.
  • Julian Cooper fixed a bug in Image>Stacks>Reslice that somethimes caused the preview rectangle did not accurately show the extent when starting with a line selection.
  • Berthold Daum fixed a bug that caused ImageJ to fail to open 48-bit TIFFs created by the RawTherapee program.
  • Fixed a bug that caused run("Measure") to not work as expected when used in "-batch" command line macros.
  • Fixed a bug that sometimes caused the cursor X and Y coordinates to not be displayed in plot windows.
  • Fixed a bug that caused scripts called from the command line using the "-batch" option to fail to run.
  • Fixed a bug that caused IJ.getDirecory() calls to not be recorded on Linux and Windows.
  • Fixed a bug that caused Image>Stacks>Reslice to not work correctly with signed 16-bit stacks.
  • Fixed bugs the caused batch mode macros that used Process>Math>Macro or did user-defined curve fitting to fail.
  • Fixed a bug on Windows that sometimes caused paste operations in the macro editor to not insert the text in the correct location.
  • Winnok de Vos contributed the RegisterStackUsingTranslation macro, which registers a stack based on the center of mass of each image.
  • Daniel Senff and Kai Uwe Barthel have released ImageFlow, a plugin that provides a node-based graphical user interface for macro-creation and image editing.
  • Jerome Mutterer contributed the GammaCorrectionTool macro, which allows the Gamma curve to be adjusted by dragging on the image.
  • Julian Cooper contributed Radial Reslice, a plugin that reslices a stack by rotating the sliced plane around the z-axis, and RC Montage, an enhanced version of the Image>Stacks>Make Montage command.

New in ImageJ 1.42j (Feb 23, 2009)

  • Analyze>Analyze Particles is faster because results are no longer continuosly displayed.
  • With 32-bit (float) images, Process>Math>Divide creates Infinity, -Infinity or NaN pixels when the source pixels are positive, negative or zero.
  • Added the Array.copy(), Array.getStatistics(), Array.sort() and Array.trim() macro functions (example).
  • The "Process Stack?" dialog is no longer displayed in macros that call run() without the optional options argument.
  • Values passed to the makeRectangle() and makeOval() macro functions are rounded.
  • JavaScript scripts import more packages (ij.util, ij.plugin, ij.plugin.filter and ij.plugin.frame).
  • The addResults() and updateResults() methods in the ResultsTable class allow values to be added to the "Results" window more quickly.
  • Fixed a bug, introduced in 1.42i, that caused the Smooth, Sharpen and Find Edges commands to invert16-bit stacks.
  • Fixed a bug that caused the Stack.setSlice() macro function to sometimes not work correctly in batch mode macros.
  • Peter Stierlen has released Scan Calculator, a plugin that calculates 3D data from 2D scanline data captured with a laserscanner.

New in ImageJ 1.42i (Feb 17, 2009)

  • Added the Image>Stacks>Reduce Size command.
  • Circularity (4pi*area/perimeter^2) , aspect ratio (major axis/minor axis), roundness (4*area/pi*major axis2) and solidarity (area/convex area) are calculated and displayed when "Shape Descriptors" is enabled in Analyze>Set Measurements.
  • The angle of the Feret's diameter is displayed when "Feret's Diameter" is enabled in Analyze>Set Measurements.
  • Histograms of 16-bit stacks are generated much faster.
  • Edit>Invert inverts 16-bit stacks based on the stack min and max.
  • File>Save As>Selection now saves only the base coordinates of spline fit selections.
  • The frame interval and unit set in Image>Properties are now saved with both single images and stacks.
  • Added "(32-bit)" or "(64-bit)" to the Java version displayed in the Help>About ImageJ window and in the status bar on startup and when the cursor is over an unused toolbar slot.
  • Added the List.setMeasurements() and List.getValue() macro functions (example).
  • The getCursorLoc() macro function sets a flag bit when the cursor is inside an area selection (example).
  • Added the setOption("ShowMin", boolean) macro function.
  • Added the getNonSplineCoordinates() and getUncalibratedLength() methods to the PolygonRoi class.
  • Fixed a bug that caused the "(V)" in the title bar to remain after type converting a virtual stack.
  • Fixed a bug in Analyze>Measure that caused the bounding rectangle to not be calculated correctly for line selections.
  • Fixed a bug on Windows Vista that caused the first few characters of the image subtitle to be cut off.
  • Rob Lewis Fixed a bug that caused File>Import>URL to throw an exception when opening DICOMs with headers larger than 200,000 bytes.
  • Berthold Daum fixed a bug that sometimes caused an exception when opening 48-bit RGB TIFFs.
  • Greg Joss fixed a bug that sometimes caused Edit>Selection>Straighten to not work correctly.
  • Jerome Mutterer contributed the DrawParticleEllipseAxis macro, which demonstrates how to add axis to the ellipses drawn by the particle analyzer.
  • Michael Doube contributed the CheckDICOMSlicePositions macro, which verifies that the slice positions in a DICOM stack agree with the voxel depth.
  • Jerome Mutterer contributed the Fixed Angle Line Tool and L-Shape Tool macros.

New in ImageJ 1.42h (Jan 30, 2009)

  • Added the Process>Math>Macro command, which is modeled after Ulf Dittmer's Expression plugin.
  • A pasted image no longer needs to be the same type as the receiving image.
  • Minimum Feret diameter (minimum rotatating calipers width) is calculated when "Feret's Diameter" is checked in Analyze>Set Measurements
  • Tweaked the default settings in the curve fitter (Analyze>Tools>Curve Fitting) so that it is more likely to converge (example).
  • Selected lines in the Results and Log windows can be deleted by pressing the backspace key.
  • An updated Menus class, contributed by Johannes Schindelin, provides better Fiji compatibility and allows plugins to be installed in more menus.
  • Added the centerDialogMethod() to the GenericDialog class (example).
  • Fixed a bug that caused the Macro>Run Macro and Debug>Debug Macro commands in the macro editor to not run the first macro in a macro set with global variables (example).
  • Fixed a bug on the Mac that caused the macro debugger to fail to work with macros pasted from the system clipboard using File>New>System Clipboard.
  • Fixed a bug with the Convolver.convolve() method that caused it to throw an exception if it passed a non-float image.
  • Fixed a bug with the Fit.doFit() macro function that caused to throw an exception of the arrays were not the same length.

New in ImageJ 1.42g (Jan 13, 2009)

  • ImageJ now checks for, and deletes, duplicate plugins on startup, when running Help>Update Menus and when running Plugins>Compile and Run.
  • Fixed a bug, introduced in v1.42f, that caused commands in the Plugins>Macros submenu to fail to work and caused extra commands to be added to the Plugins>Utilities submenu.
  • Use Benjamin Schmid's 3D Viewer plugin for hardware-accelerated 3D visualization of image stacks as volumes, surfaces and orthoslices.

New in ImageJ 1.42f (Jan 10, 2009)

  • Added the Plugins>Utilities>Capture Image command.
  • Added a "Show 'Debug' Window" option to macro error messages.
  • Added a "*Custom*" (user-defined) fit option to Analyze>Tools>CurveFitting.
  • The LUT Editor (Image>Color>Edit LUT) displays the ending index in the status bar as the user drags to select a range and it no longer moves the green and blue sliders when the red slider is moved.
  • The Fit.doFit() macro function will now fit a user-defined equation to a set of data points (example).
  • Added the Fit.showDialog and Fit.logResults macro functions.
  • Reported UnsupportedClassVersion exceptions now include the line "This plugin requires Java 1.x or later."
  • ImageJ no longer throws an exception when opening DICOMs with UT (unlimited text) tags.
  • Fixed a bug on Windows, introduced in v1.42e, that made it impossible to enter into editor windows some characters (e.g., "{") accessed using the AltGr key.
  • Fixed a bug in the particle analyzer that caused it to sometimes not correctly add particles to the ROI Manager.
  • Fixed a bug in the saveAs() macro function that sometimes caused it to fail if the path contained a period and the file name did not have an extension.

New in ImageJ 1.42e (Dec 17, 2008)

  • Added a "Debug" menu to the macro editor.
  • Histograms of 8-bit and RGB stacks are created much faster.
  • Added the is("Caps Lock Set") macro function.
  • The save() and saveAs() macro functions work with text editor windows.
  • Fixed a rounding error with histograms of RGB stacks.
  • Fixed a bug that sometimes caused ImageJ to create TIFF stacks that caused Matlab to crash.
  • Fixed a bug in File>Save As>FITS that could cause an error when resaving a FITS image.
  • Gabriel Landini created a macro you can run to evaluate your system's performance and compare results with 36 other systems.
  • The Open Source Paleontologist blog has an article about ImageJ.
  • Dimiter Prodanov contributed the Image Moments plugin.
  • Gabriel Prieto Renieblas contributed SSIM Index, a plugin that calculates the structural similarity index.

New in ImageJ 1.42d (Dec 5, 2008)

  • Added the Macros>Debug Mode checkbox menu item to the macro editor.
  • The Image>Colors>Channels Tool is recorded.
  • Added the setMinAndMax(min,max,channels) macro function.
  • Fixed a bug, introduced in v1.42c, that caused the run("Set Scale...", options) macro function to fail.
  • Fixed a bug, introduced in v1.38, that caused the threshold to be reset when clearing or filling a stack slice.

New in ImageJ 1.42c (Dec 2, 2008)

  • Added a "Scaled Units" checkbox to the Edit>Selection>Specify dialog and "Pixel Units" checkboxes to the Analyze>Analyze Particles and Edit>Selection>Enlarge dialogs. These checkboxes are only displayed if the image is spatially calibrated.
  • The ROI Manager "Multi Measure" command adds the ROI name to the column headers if the name does not start with a digit or if its length is less than nine characters.
  • The length of the current straight line selection is now displayed in the Analyze>Set Scale dialog even when the image is spatially calibrated.
  • The getDirectory("image") macro function is more likely to work with an image loaded by an external plugin.
  • Worked around a bug on Mac OS X that required pressing the "Remove Scale" button twice in the Analyze>Set Scale dialog box.
  • Jeffrey Woodward contibuted the QTVirtualStack class, which has been incorporated into the QuickTime Opener plugin.
  • Michael Schmid has released Fast Filters, a collection of filters (mean, min, max, median, background, ...) that are up to 40 times faster than the filters in the Process>Filters submenu.
  • Ignazio Gallo contributed Poisson Noise, a plugin that adds Poisson distributed noise to all ImageJ data types (8-bit, 16-bit, float and RGB), to stacks and to non-rectangular selections.

New in ImageJ 1.42b (Nov 21, 2008)

  • Edit>Selection>Straighten works with stacks.
  • Added an "Add to ROI Manager" option to the Edit>Options>Point Tool dialog box.
  • The File>Import>Image Sequence "Convert to RGB" option now works with the "Use Virtual Stack" option.
  • Added a "Convert to RGB" option to the dialog box displayed when a folder is dragged and dropped onto the "ImageJ" window.
  • Edit>Draw displays a "Process Stack" dialog when operating on a stack. Use the "d" shortcut to avoid this dialog.
  • Image>Show Info now displays the display range of 8-bit images.
  • Process>FFT>Custom Filter now mirrors the image around its edges to avoid wrap around artifacts.
  • The ROI Manager "Multi Measure" function now works with line and (single) point selections.
  • Renamed the "Reset" button in the Analyze>Set Scale dialog to "Remove Scale" and changed the unit displayed with unscaled images from "cm" to "pixel".
  • Image window activations are recorded.
  • 16-bit composite color images are now correctly converted to 8-bits.
  • Fixed a bug, introduced in 1.41n, that caused Process>Math>NaN Background to fail with stacks.
  • Fixed a bug that caused Analyze>Tools>Calibration Bar to throw an exception on Windows if the default calibration bar was taller than the image.
  • Fixed a bug that caused virtual stacks to hang if the backing folder contained images that were not all the same size and type.
  • Fixed a bug that caused indexed 8-bit grayscale images to not be correctly converted to 16 and 32 bits.

New in ImageJ 1.42a (Nov 1, 2008)

  • Added the 4200x4200 "NileBend" image and the "Confocal Series" 4D stack to the File>Open Samples menu.
  • The Image>Color>Stack to RGB command is faster.
  • The IJ.openImage(path) method displays a file open dialog if the 'path' argument is omitted or it is an empty string.
  • Fixed bugs that caused Image>Adjust>Color Balance to not work correctly with composite color images.
  • Fixed a bug that caused the Adjust>Brightness/Contrast "Set" option to not work as expected with composite color images.
  • Fixed a bug that caused the first slice and frame to always be displayed after using Image>Hyperstack>Channels Tool to switch a hyperstack to "Composite" mode.

New in ImageJ 1.41o (Oct 24, 2008)

  • Added the Process>Math>Set command.
  • Help>Update ImageJ, except when updating to the "daily build", deletes "functions.html" in the macros folder, which forces the macro editor's Macros>Function Finder command to download a fresh copy.
  • The call() macro function can now call static methods with integer arguments.
  • Added the getOutputImage() and setHideOutputImage(boolean) methods to the ParticleAnalyzer class.
  • Added the Toolbar.setBrushSize() method.
  • Fixed a bug, introduced in v1.41k, that caused macro functions not in an installed macro set to not be able to write to global (var) variables.
  • Fixed a bug that caused the ImagePlus.getImage() method to return the wrong image in batch mode macros that processed stacks.

New in ImageJ 1.41n (Oct 18, 2008)

  • Added the Edit>Options>Compiler command.
  • Added support for opening PackBits compressed TIFFs and ARGB TIFFs.
  • Added a "Scientific Notation" option to the Analyze>Set Options dialog box.
  • Files in the plugins folder with ".ijm" and ".js" extensions no longer require an "_" in the name to be installed in the Plugins menu.
  • JPEGs are saved using ImageIO if the JpegWriter class is removed, allowing ImageJ to be compiled with the OpenJDK.
  • The d2s() macro function uses scientific notation if the second argument is negative.
  • Help>Update Menus resets the plugin class loader.
  • Added the ImageProcessor.getPixelInterpolated(double,double) method, which was contributed by Stephan Saalfeld.
  • Fixed bugs that caused the setThreshold(), getThreshold() and setMinAndMax() macro functions to not work correctly with intensity calibrated 8-bit images.
  • Fixed a bug, introduced in v1.41l, that caused File>Save As>FITS to create FITS files that could not be opened by some other FITS readers.
  • Fixed a bug that caused the calibration plot to be displayed when running the Analyze>Calibrate command in a macro.
  • Fixed a bug that caused run("Command", "stack") macro statements to not process the entire stack if "Hide 'Process Stack?' Dialog" was enabled in Edit>Options>Misc.
  • Tiago Ferreira contributed Toolset Creator, a macro that creates toolbar menus for running plugins, macros and scripts.
  • Janos Roszik, Janos Szollosi and Gyorgy Vereb have released AccPbFRET, a plugin for analysis of acceptor photobleaching FRET images.
  • Jenoptik has released an ImageJ driver for their ProgRes microscope cameras.

New in ImageJ 1.41m (Sep 20, 2008)

  • File>Save no longer displays a "Save As" dialog when resaving a TIFF stack.
  • A more informative error message is displayed when attempting to process a virtual stack.
  • Analyze>Plot Profile now uses the full file name, minus the extension, in plot window titles.
  • Added the eval("script", javascipt) macro function.
  • Fixed a bug, introduced in v1.41l, that caused infinite numbers to be displayed as "∞" instead of as "Infinity".

New in ImageJ 1.41l (Sep 17, 2008)

  • Added the Help>Update Menus command, which allows plugins to be installed and/or removed without restarting ImageJ.
  • Area, line, angle and point measurements can be recorded in the same Results window.
  • The Roi Manager "Measure" function no longer requires that all selections be areas or all selections be lines.
  • Making a change in the Analyze>Set Measurements dialog box no longer caused the Results window to be reset.
  • The Particle Analyzer's "Summarize" option displays the average mean, mode, perimeter, major axis, minor axis, angle, circularity, Feret diameter, integrated density, median, skewness and kurtosis if the corresponding option is enabled in Analyze>Set Measurements.
  • Frederic Hessman contributed an improved version of File>Save As>FITS that preserves any existing FITS header.
  • Image>Stacks>Stack to Images no longer discards slice labels (e.g., DICOM headers).
  • Numbers displayed using scientific notation in plots, histograms, and in the Results window, now use a maximum of 3 decimal places.
  • The angle tool is now correctly recorded.
  • File>Save As>AVI now accepts frame rates as low as 0.5 (2 seconds per frame).
  • Fixed a bug that caused the Process>Binary>Erode and Dilate commands to throw an exception with one pixel wide images.

New in ImageJ 1.41k (Sep 3, 2008)

  • The "Line Width", "Fonts", "Log" and "ROI Manager" windows remember their locations.
  • The Edit>Adjust>Adjust Line tool updates all images with lines selections and has increased slider range of 1-300.
  • The Measure command and getStatistics() macro function calculate area statistics of line selections wider than one.
  • Process>FFT>Inverse FFT improvements (courtesy of Michael Schmid):
  • Areas marked as "pass" or "filter" in the power spectrum are made symmetric.
  • The smoothing algorithm uses periodic boundary conditions.
  • Inverse FFT on a cropped power spectrum does not cause an exception.
  • The filter created after symmetrizing and smoothing is shown in debug mode or if the alt key is down.
  • The particle analyzer assumes the size is in pixels if it is followed by a "p", for example run("Analyze Particles...", "size=100p display clear").
  • Added a "Close when running" checkbox to the Plugins>Utilities>Find Command window and changed the "Cancel" button to "Close".
  • Added curve fitting functions (Fit.*) to the macro language (example).
  • Added the Plot.getValues() macro function.
  • The open() macro function now works with image URLs.
  • Gzip compressed FITS images on network drives open up to 10 times faster.
  • Fixed a bug, introduced in v1.41b, that caused the ImageJ applet to fail to load DICOM images on startup (example).
  • Fixed a bug in File>Import>AVI, introduced in 1.41h, that caused some color video formats to open as 16-bit grayscale.
  • Fixed a bug that caused the slider in the Image>Adjust>Line Width window to blink on Windows.
  • Fixed a bug that caused the setForegroundColor() macro function to reset the line width.
  • Reduced the likelyhood of a bug that caused the Image>Adjust>Threshold "Set" option to sometimes enter incorrect values on Linux.
  • Fixed a bug that caused upper case shortcuts created using Plugins>Shortcuts>Create Shotcut to open macros instead of running them.
  • Jerome Mutterer contributed TiltedRectangleTool, a macro tool that creates tilted rectangular selections.
  • Joel Sheffield has made available an ImageJ tutorial in PowerPoint format he gave at a recent Microscopy & Microanalysis meeting and the images and stacks used in the tutorial.
  • David Webb contributed Toe_Indexer, a macro set for measuring footprints and calculating the toe index.

New in ImageJ 1.41j (Aug 9, 2008)

  • Profile plots of segmented and freehand lines wider than 1 are averaged across the line.
  • File>Save As>Image Sequence exports hyperstacks as C/Z/T labeled files (e.g., "name_t01_z01_c01").
  • Added the Image>Adjust>Line Width command (or double click on the line tool).
  • Added a "Spline Fit" checkbox to the Image>Adjust>Line Width tool.
  • Added a "Background Value" field, and "Invert Y Coordinates" and "Suppress Log Output" options, to the Analyze>Tools>Save XY Coordinates dialog box.
  • The ROI Manager "Deselect" option is recorded.
  • Added the File.saveString(string,path) and File.append(string,path) macro functions, and corresponding IJ.saveString() and IJ.append() methods.
  • Fixed a bug, introduced in v1.41f, that could cause batch mode macros to fail.
  • Fixed a bug that could cause LZW-compressed TIFFs to be incorrectly decoded.
  • Fixed a bug in Image>Stacks>Reslice the caused the spatial calibration to not be correctly transformed if the voxel width and height were not the same.
  • Fixed a bug that sometimes caused the wrong selection to be copied when duplicating stacks with non-rectangular selections.
  • Fixed a bug that caused a "Data chunk size too short" error when opening uncompressed RGB AVI files.
  • Fixed a bug that caused .flex files to fail to open if the Bio-Formats plugin was not installed.
  • Fixed a bug that caused an exception when opening PGM images less than 20 pixels in size.
  • Fixed a bug that caused the LUT to not be correctly copied when duplicating a single image in hyperstack in a batch mode macro.

New in ImageJ 1.41i (Jul 28, 2008)

  • Added the Edit>Selection>Straighten command.
  • An extension is added to file names in File>Save As dialogs that do not have one.
  • Added the substring(string,index) macro function.
  • Fixed a bug that caused the Analyze>Summarize command to not work with "IntDen" results.

New in ImageJ 1.41h (Jul 19, 2008)

  • Added the Plugins>Macros>Edit command, which replaces the Plugins>Edit command removed in v1.41g. There is also a plugin version of this command at rsb.info.nih.gov/ij/plugins/download/jars/Edit_.jar.
  • JavaScript programs in the plugins folder with an underscore in the name and a ".js" extension are installed in the Plugins menu at startup.
  • Virtual stacks imported using File>Import>Image Sequence now include slice label metadata.
  • ImageJ opens 16-bit grayscale AVIs created by MIL (Matrox Imaging Library), thanks to a patch by Reinhard Mayr.
  • Added the run("Fit Spline", "straighten") macro function, which converts a line selection to one defined by points spaced one pixel apart (example).
  • The point selection tool is now recordable.
  • The ROI Manager "Combine" function works with point selections.
  • Added the addPoint(x,y) macro function and IJ.addPoint(x,y) method.
  • Fixed a bug that caused selections extending beyond the image boundary to not be correctly copied to the clipboard.
  • Fixed a bug that caused the round() macro function to not work correctly with NaN and infinite arguments.
  • Fixed a bug that caused images to no longer be displayed after aborting a batch mode macro by pressing Esc.
  • Fixed a bug that caused the setOption("QueueMacros",true) macro function to not work as expected with macros using a function key shortcut.
  • Fixed a bug that caused the ROI Manager "Update" option to hold a reference to the image, preventing it from being garbage collected.

New in ImageJ 1.41g (Jul 4, 2008)

  • Dialogs can now be canceled by clicking on the close box.
  • Added Merge Channels, Edit LUT, Red, Green, Blue, Cyan, Magenta, Yellow and Grays command to the More� menu in the "Channels" tool.
  • Split the Plugins>New command into a submenu with Macro, JavaScript, Plugin, Plugin Filter, Plugin Frame, Text Window and Table commands.
  • Removed the Plugins>Edit command. In its place, use File>Open or drag and drop.
  • Thanks to a patch by Ulf Dittmer, the File>Open Recent menu no longer lists files multiple times.
  • The "The calibration of this image conflicts with the current global calibration." warning message is not displayed for images opened in macros.
  • The waitForUser() macro function remembers the dialog box location.
  • The PlugInClassLoader loads classes faster from JAR files.

New in ImageJ 1.41f (Jun 25, 2008)

  • The File>Import>URL command now opens Java (.java) and JavaScript (.js) programs.
  • Renamed the Image>Color>RGB Split and RGB Merge to Split Channels and Merge Channels.
  • Added a redundent Image>Color>Channels Tool command.
  • Added a Split Channels command to the More� menu in the "Channels" tool, replacing the Open HeLa Cells command.
  • Added a "JavaScript" type to the Plugins>New dialog.
  • To run JavaScript on Java 1.5 and earlier, and on Mac OS X, download JavaScript.jar to the plugins folder.
  • Added the List.set(key,value), List.get(key), List.size, List.clear, List.setList(string) and List.getList macro functions.
  • Added the IJ.run(ImagePlus, command, options), IJ.save(ImagePlus, path) and IJ.saveAs(ImagePlus, format, path) methods.
  • Fixed bug that could cause Image>Color>RGB Merge to throw an exception if one of the input images was a hyperstack.
  • Fixed a bug that caused an extra tab at the end of Results window lines copied to the clipboard or saved as a text file.

New in ImageJ 1.41e (Jun 11, 2008)

  • Michael Schmid added the ability to save using Motion JPEG and PNG compression to the File>Save As>AVI command and the ability to read JPEG and PNG compressed AVIs to the File>Open command.
  • Added the Macros>Evaluate JavaScript command to the macro editor (example). This command requires Java 1.6, which has the Mozilla Rhino JavaScript interpreter built in.
  • Added the Help>Update ImageJ command, which duplicates the Plugins>Utilities>Update ImageJ command.
  • Added the "Move Isolated Plugins to Misc. Submenu" option to the Edit>Options>Misc dialog. Enable this option and single .class plugins in a directory are installed in the Plugins>MIscellaneous submenu instead of in submenus with only one command.
  • Jerome Mutterer contributed the macro editor's new Macros>Find Functions command.
  • Edit>Selection>Rotate works with composite selections.
  • Edit>Selection>Restore Selection works with non-rectangular selections that extend beyond the boundary of the destination image.
  • The getStatistics() and getRawStatistics() macro functions now work with line selections.
  • The File.delete() macro function now returns true (1) if the file or directory was successfully deleted. "1" will be displayed in the Log window if File.delete() is not called in an assignment or 'if' statement.
  • Fixed a bug that sometimes caused 16-bit signed stacks to not be correctly converted to 32-bits.

New in ImageJ 1.41d (May 29, 2008)

  • Mark Longair contributed the Plugins>Utilities>Find Commands command, which provides a dialog for interactively finding ImageJ commands by typing a substring of the command name. Type "l" (launch), a few letters for disambiguation and then 'enter' to run the matching command.
  • Gabriel Landini contributed an improved version of Process>Binary>File Holes that is up to 100 times faster.
  • The Image>Stacks>Make Montage command now works with composite color images.
  • Enable "Save TIFF and Raw in Intel Byte Order" in Edit>Options>Input/Output and File>Save As>Tiff will save in little-endian format.
  • File>Save As>PNG saves 8, 16 and 32 bit images as 8-bit PNGs, and now works with composite color images.
  • Changed the "GIF Transparent Index (0-255)" field in Edit>Options>Input/Output to "GIF and PNG Transparent Index".
  • The "" keys and the mouse wheel now change hyperstack channels.
  • Added a "Copy Row Numbers" option to the Edit>Options>Input/Output dialog box.
  • Changed the Results window File>Set File Extension menu item to File>Options.
  • Right-clicking on a macro tool runs a macro with the name " Options".
  • DICOM IMPLICIT_VR tags with a length less than 4 are now displayed in the Image>Show Info window.
  • Added the Neuron (1.6M, 5 channels) sample image, which was contributed by John Alexander. Press "i" (Image>Show Info) to get a description.
  • Added the getStringWidth(string) macro function.
  • Added getBufferedImage() methods to the ImagePlus and ImageProcessor classes.
  • Added a get16BitBufferedImage() method to the ShortProcessor class.
  • Fixed a bug that caused Image>Crop to fail with merged composite images when using Java 1.6.
  • Fixed bugs in the Plot class and Plot.* macro functions that caused incorrect axis labeling if setLimits() was not called first and caused lines and shapes wider than three pixels to sometimes be drawn outside the plot frame.
  • Fixed a bug in the imageCalculator() macro function that sometimes caused the result image to not be the currently selected image.
  • Fixed a bug in the setColor() macro function that caused it to always convert the argument to an integer.
  • Fixed a bug in the Image>Adjust>Threshold tool that caused the "Auto" feature to not work correctly on images with line selections.

New in ImageJ 1.41c (May 16, 2008)

  • Added the Plugins>Utilities>Proxy Settings command, based on the NetSetup plugin contributed by Dimiter Prodanov.
  • With merged composite color images, the "Preview" check box is not added to dialog boxes and the "Process all n images?" dialog is not displayed.
  • Added 13 tags to the built in DICOM dictionary.
  • ImageJ calls system.gc() when a stack and/or the last image is closed.
  • Added the Dialog.addCheckboxGroup() macro function.
  • Added the GenericDialog.setEchoChar() method, which is used to implement the password field in the Edit>Options>Proxy Settings "Authentication" dialog.
  • Fixed a bug that sometimes caused the Image>Adjust>Brightness/Contrast "Auto" option to fail on images with non-rectangular selections.
  • Fixed a bug, introduced in v1.40b, that caused the labels in images created by the particle analyzer Show:Outlines option to be black instead or red.
  • Fixed a bug that caused 8-bit PNGs to open in RGB format.
  • Fixed a bug that caused ImageJ to not correctly read ImageJ TIFF stacks modified by LibTIFF.
  • Fixed a bug that sometimes caused 90 degree rotated large composite color images to not be correctly displayed.
  • Fixed a bug that caused an "out of memory" error when opening DICOM files with a UT (Unlimited Text) tag.
  • Fixed a bug that caused the "Show All" feature of the ROI Manager to not work as expected with more than 10,000 slice-associated ROIs.

New in ImageJ 1.41b (May 7, 2008)

  • Michael Schmid's AVI Reader plugin is now built in. AVI files can be opened using File>Open, File>Import>AVI and drag and drop.
  • To reduce the size of the Plugins menu, JAR files that implement fewer than four Plugins submenu commands are installed in the submenu corresponding to the folder containing the JAR file. In addition, single plugins distributed as ZIP archives are installed in the "Miscellaneous" submenu.
  • Johannes Hermen and Christian Mol added the ability to parse float header values to the DICOM reader and also contributed a 2652 tag dictionary (DICOM_Dictionary.txt) that the DICOM reader will use if it is copied to the ImageJ folder.
  • The DICOM reader uses the value of the "Slice Thickness" tag for voxel depth if the "Slice Spacing" tag is missing.
  • The particle analyzer, when run from a batch mode macro, no longer opens the ROI Manager window when "Add to Manager" is enabled, resulting in faster and more reliable operation.
  • Process>Enhance Contrast works with composite color images.
  • The minimum plot size that can be set in Edit>Options>Profile Plot Options was reduced from 300x100 to 100x50.
  • Added a "Restore ROIs Centered" option to the ROI Manager's More�Options command.
  • Added the Stack.setActiveChannels() macro function.
  • Fixed a bug that could cause an exception when saving composite color images.
  • Fixed a bug that caused composite color images with custom LUTs to revert to the default LUTs after resaving.
  • Fixed a bug that caused Z projection of hyperstacks to fail in batch mode macros.
  • Fixed a bug that caused ImageJ to not correctly read ImageJ TIFF stacks modified by LibTIFF.
  • Fixed a bug that caused macros using the Analyze>Surface Plot plot command, with both the "Draw Wireframe" and "Draw Axis" options enabled, to fail.

New in ImageJ 1.40f (Apr 19, 2008)

  • Increased the maximum frame rate accepted by Image>Stacks>Animation Options to 1000.
  • When animating stacks, the frame rate is displayed in the ImageJ status bar.
  • Drag and Drop exceptions are now displayed in an ImageJ window.
  • Fixed a bug that caused some Bruker "fid" files to fail to open.

New in ImageJ 1.40e (Apr 16, 2008)

  • While creating a straight line selection, hold down the alt key to force the two points that define the line to have integer coordinate values.
  • Results table labels now include the file name extension.
  • Set the JPEG Quality in Edit>Options>Input/Output to 100% to disable color sub-sampling, reducing the likelihood of artifacts.
  • The DPI of images saved in JPEG format is set to the scale defined in Analyze>Set Scale if the unit of length is "inch".
  • Added the setOption("Display Labels", boolean) and setOption("Limit to Threshold", boolean) macro functions.
  • Added the Analyzer.setMeasurement(int, boolean) method.
  • Worked around a OSX Leopard/Java 1.5 bug that caused dialogs boxes to return default field values when the return key was pressed.
  • Fixed a bug that caused the LSM Reader to not correctly open 16-bit files using LZW compression with differencing.
  • Fixed a bug that caused saving in BMP format to fail with 16-bit and 32-bit images.

New in ImageJ 1.40d (Apr 10, 2008)

  • Converted the FluorescentCells sample image into a three channel composite color image.
  • The Image Calculator now creates a hyperstack when the input is a hyperstack.
  • Fixed a bug that could cause macros (not in batch mode) running the particle anlyzer on a stack to not run reliably.
  • Fixed a bug that caused reading of LZW compressed TIFF stacks to fail.
  • Fixed a bug that caused the LSM Reader to not correctly open LSM files using LZW compression with differencing.
  • Fixed a bug that caused Image>Color>RGB Merge, when creating a composite image, to sometimes not use expected the channel colors.

New in ImageJ 1.40c (Apr 3, 2008)

  • Image>Stacks>Z Project now works with t-series HyperStacks.
  • Image>HyperStacks>Stack to HyperStack will now convert an Image5D to a HyperStack.
  • Added the File>Open Samples>Organ of Corti sample HyperStack, courtesy of Glen MacDonald.
  • Made the "Channels" window wider on Windows and Linux.
  • Added the Stack.swap(n1,n2) macro function.
  • Fixed a bug, introduced in v1.40b, that caused decimal points to be replaced with commas on European systems.
  • Fixed a bug that causedImage>Color>Stack to RGB to fail to work with 32-bit composite images.
  • Fixed a bug that caused an incorrect z value to be displayed in the status bar as the cursor was moved over a HyperStack.
  • Fixed a bug that caused stack slice labels after the first null label to not be saved.
  • Fixed a bug that made it impossible to open the "Channels" window after it had been closed by WindowManager.closeAllWindows().

New in ImageJ 1.40b (Mar 28, 2008)

  • Added the Image>HyperStacks>Reduce Dimensionality command, based on Jerome Mutterer's Reduce HyperStack macro.
  • Thanks to Alden Dima, added the "Count Mask" option to the particle analyzer, which generates masks filled with a pixel value corresponding to the particle count.
  • Removed the Image>HyperStacks>Split Channels command. Instead, use Image>Color>RGB Split.
  • The Image>Color>RGB Split command, when working with composite images, is faster and uses less memory, and it no longer displays a dialog box.
  • Added the setMetadata("Info", string), getMetadata("Info"), setMetadata("Label", string) and getMetadata("Label") macro functions.
  • Fixed a bug, introduced in v1.39s, that could cause ImageJ to deadlock (hang) when opening a dialog box, especially on Java 1.5.0.
  • Fixed a bug that caused some 48-bit interleaved RGB TIFFs to not display correctly.

New in ImageJ 1.40a (Mar 22, 2008)

  • Added the Stack.setDisplayMode(string) and Stack.getDisplayMode(string) macro funcions.
  • Added the setSelection(start, end) method to the TextPanel class.
  • Fixed numerious hyperstack and composite image bugs.

New in ImageJ 1.3.9u (Mar 14, 2008)

  • Image>Stacks>Start Animation now works with HyperStacks.
  • Added a "Use Virtual Stack" option to the dialog displayed when a folder is dragged and dropped on the ImageJ window.
  • The Gel Analyzer displays an error message if the user clicks with the wand tool and the shift key is down.
  • The command recorder now records blank string fields as "key=[]".
  • Fixed several composite image and hyperstack bugs.
  • Fixed a bug that could cause incorrect centroid calculation on an 8-bit image with a non-rectangular selection larger than ~4 megapixels.
  • Worked around a bug that could cause a thread deadlock in macros attempting to open a non-existant file.

New in ImageJ 1.3.9q (Jan 27, 2008)

  • When using the Image>Adjust>Brightness/Contrast tool, hold the shift key down to simultaneously adjust all channels of a composite image (e.g., File>Open Samples>HeLa Cells).
  • Clicking "Apply" in Image>Adjust>Brightness/Contrast propagates the current composite image display range to the other channels.
  • Image>Adjust>Color Balance works with composite images.
  • The text tool is recorded.
  • ImageJ now opens LZW-compressed RGB planar TIFFs.
  • Added Gaussian fitting to the CurveFitter class.
  • "Maximize" works better with HyperStacks and with image windows that have button panels.
  • Albert Cardona added HandleExtraFileTypes support for File>Import>URL.
  • Added the is("Virtual Stack") macro function.
  • Fixed a bug that caused files in folders dropped onto ImageJ to not be sorted in numeric order.
  • Fixed a bug in File>Import>Raw (ImageReader class) that caused it to not correctly handle EOF errors with data types other than 8-bit.
  • Fixed a bug in the PGM_Reader that caused pixel intensities of imported 48-bit images to differ slightly from the expected values.

New in ImageJ 1.3.9p (Jan 16, 2008)

  • Image>Stacks>Z Project works with HyperStacks.
  • Image>HyperStacks>New HyperStack settings are saved in the preferences file.
  • Added a "Sliding Paraboloid" option to Process>Subtract Background. ImageJ uses the original rolling ball algorithm when this option is not enabled.
  • Added a "Create Composite" option to Image>Color>RGB Merge.
  • Image>Color>RGB Split works with composite images.
  • Process>Smooth, Process>Sharpen and Process>Find Edges now process edge pixels of 16-bit and 32-bit images thanks to code contributed by Michael Schmid.
  • Composite images (e.g., File>Open Samples>HeLa Cells) use less memory.
  • 48 bit PPM files open as 16 bits per channel composite images.
  • 16-bit images use less memory when running Java 1.6 or later.
  • The getInfo("window.contents") macro function works with the Recorder.
  • Added the is("batch mode") macro function.
  • Fixed a bug with Image>Rotate>Arbitrarily that caused it to sometimes clip the image when "Enlarge Image to Fit Result" was enabled.
  • Fixed a bug that caused Image>HyperStacks>New HyperStack to fail when ImageJ was running as an applet.
  • Fixed a memory leak in ByteProcessor.resetMinAndMax() when not running on Java 1.6 or later.

New in ImageJ 1.3.9o (Jan 8, 2008)

  • Image>Stacks>Z project works with HyperStacks.
  • Custom channel LUTs are saved in the TIFF header.
  • Added the "Copy Column Headers" option to Edit>Options>Input/Output.
  • The Image>Adjust>Brightness/Contrast "Auto" option no longer deletes the selection.
  • Image windows open at the top of the screen on systems with a screen height of 600 pixels or less (e.g., the Eee PC).
  • Increased the maximum radius in Median, Mean, Minimum, Maximum and Variance filters from 100 to 1000 pixels.
  • Increased the width of the "Maximum Memory" field in Edit>Options>Memory & Threads from 4 to 5 digits to allow easy entry of values greater than 9999 (9.8GB).
  • Removed the System.gc() call, which sometimes caused long pauses when closing images, from ImagePlus.flush().
  • Fixed a bug that could cause a bogus "Selection required" message when closing the Results window or using the Analyze>Clear Results command.

New in ImageJ 1.3.9m (Dec 18, 2007)

  • The Image>HyperStacks>Stack to HyperStack command converts an RGB stack into a 3 channel HyperStack.
  • For stacks larger than 1GB, memory usage displayed in the image subtitle is in gigabytes.
  • The title of the Edit>Options>Memory and Threads dialog is "Memory (32-bit)" on 32-bit systems and "Memory (64-bit)" on 64-bit systems.
  • Added the IJ.is64Bit() method.
  • Big-endian TIFF files with names ending in .flex are passed to the Bio-Formats plugin.
  • Fixed a bug, introduced in 1.39l, that caused the Stack to HyperStack command to not appear in the Image>HyperStacks> submenu.
  • Fixed a bug that sometimes caused the maximize button in stack windows to not work as expected.
  • Worked around a bug with 64-bit Java on OS X that caused ImageJ to crash when opening a Web page.
  • Fixed a bug with Plugins>Utilities>Memory Monitor that caused an exception of a batch mode macro was running.

New in ImageJ 1.3.9k (Nov 22, 2007)

  • Added the File>Import>TIFF Virtual Stack command.
  • Added a "Display Mode" drop down menu to the Image>HyperStacks>New HyperStack and Stack to HyperStack dialogs.
  • A better error message is displayed when the user attempts to open a JPEG compressed TIFF.
  • Added the is("HyperStack") macro function.
  • Gilles Carpentier contributed CustomTabStatFromResults, a macro set that demonstrates how to create, modify, open and save custom results tables.

New in ImageJ 1.3.9j (Nov 15, 2007)

  • Image>Duplicate preserves non-rectangular area selections.
  • Thanks to a patch by Johannes Schindelin, the macro language now accepts numbers in scientific notation.
  • Plugins>Compile and Run uses the -Xlint:unchecked option on Java 1.5 and later.
  • Fixed a bug that prevented Image>Adjust>Brightness/Contrast, Window/Level and Color Balance from opening if any of these tools was already open.
  • Fixed a bug that caused the Roi Manager to sometimes not work as expected when more than 9999 ROIs were added to it by the particle analyzer.
  • Fixed several bugs related to HyperStacks and CompositeImages.
  • Fixed several ImageListener interface problems.
  • Fixed a bug that caused File>New>Image to display an invalid message in the status bar when opening stacks larger than 2GB.
  • Fixed a bug that caused Plugins>Utilities>Memory Monitor to not work correctly when using more than 2GB.

New in ImageJ 1.3.9i (Nov 9, 2007)

  • Updated to support ImageJ64, a launcher for Mac OS X Leopard that runs ImageJ in 64-bit mode. ImageJ64 requires a Mac with a 64-bit Intel processor and at least 3GB of memory.
  • Column headers are now included when copying data from the Results window.
  • Tables created by Analyze>Gels are now compatible with the nResults() and getResult() macro functions.
  • Reverted to reading PNGs using Toolkit.createImage(), rather than ImageIO, which is much slower and does not correctly read some 8-bit PNGs.
  • Maria Barilla contributed Color Transforms, a plugin that converts an RGB image into XYZ, Yxy, YUV, YIQ, Luv, Lab, AC1C2, I1I2I3, Yuv, YQ1Q2, HSI, HSV, HSL, LCHLuv, LSHLuv or LSHLab color space.

New in ImageJ 1.3.9h (Nov 6, 2007)

  • Added the HS.isHyperStack(), HS.getPosition(), HS.setPosition(), HS.setChannel(), HS.setSlice() and HS.setFrame() macro functions (example).
  • Updated the setLut() macro function to work with composite color images.
  • Fixed a bug, introduced in 1.39g, that caused Plugins>Compile and Run to fail when using Java 1.6.

New in ImageJ 1.3.9g (Nov 3, 2007)

  • Added the Image>HyperStacks submenu, containing New HyperStack..., Stack to HyperStack..., HyperStack to Stack and Channels... commands.
  • Added a "Transparent Zero" (zero pixels are transparent) operator to Process>Image Calculator and Edit>Paste Control.
  • The "List", "Save" and "Copy" options in profile plot windows use 9 decimal places for y values if "Decimal Places" in the Analyze>Set Measurements dialog is less than 6.
  • Multi-image 48-bit RGB TIFF files open as a single composite color stack.
  • Maximizing a zoomed image causes it, if needed, to fill the screen.
  • "(G)" is displayed in all image title bars if the "Global" flag is set in Analyze>Set Scale, Analyze>Calibrate or Image>Properties.
  • Custom tables now use the "File Extension for Tables" default extension specified in Edit>Options>Input/Output.
  • Changed Image>Color>Convert to Composite to Make Composite
  • Use the -port0 command line option and ImageJ will not start the SocketListener used to check for other ImageJ instances.
  • Fixed a bug that caused the memory size displayed in the sub-title of stacks larger than 2GB to be incorrect.
  • Fixed a bug that caused File>Import>Text Image to leave the progress bar in an invalid state if there was an error.
  • Philippe Th�venaz has released MosaicJ, a plugin for building a larger image (a mosaic) out of a collection of overlapping partial images.
  • Edwin Donnelly contributed Polar Transformer, a plugin that converts images to and from polar coordinates.
  • Gilles Carpentier contributed AutoThresholdAndSegment, a macro set that detects bright and dark areas using autothresholding.
  • Michael Schmid contributed an enhanced version of Tony Collins' Sigma Filter, a noise reduction filter that preserves edges.
  • Tiago Ferreira contributed the Rename and Save ROI Sets, a macro toolset that allows fast renaming and saving of multiple ROIs.
  • Sebastien Huart contributed the Slow Fourier Transform macro, which does forward and inverse 1D discrete Fourier transforms.
  • Bruno Vellutini contributed QuickSetScale, an easily customizable macro tool for setting the scale of images aquired from specific microscope and camera setups.

New in ImageJ 1.3.9e (Sep 22, 2007)

  • Added the Image>Stacks>Stack to HyperVolume and HyperVolume to Stack commands, which are based on code from the Stack_to_Image5D class in Joachim Walter's Image5D plugin.
  • Extended the StackWindow class to support hypervolumes (4D and 5D stacks). Use the HyperVolume Maker macro to create example hypervolumes.
  • Toolbar menu commands are now recorded.
  • The setLocation(x,y) macro function now moves non-image windows.
  • Added the getValue("foreground.color") and getValue("background.color") macro functions.
  • Added the setOption("OpenAsHyperVolume", boolean) macro function.
  • Added the setOpenAsHyperVolume(boolean) and getOpenAsHyperVolume() methods to the ImagePlus class.
  • As a work around for a problem on Linux where dialog boxes are sometimes slow to open, run ImageJ using the Motif toolkit with
  • java -Dawt.toolkit=sun.awt.motif.MToolkit -jar ij.jar
  • Fixed a bug, introduced in v1.38, that caused the threshold color to not be taken into account when saving in AVI format.
  • Fixed a bug that sometimes caused toolbar menus to not display currectly on Linux.
  • Francois Aguet has created tutorial on how to use Apple's Xcode to develop ImageJ plugins.