On this page, you will find information about Icy, links to installation instructions and documentation, previous releases of Icy (at the bottom of the page, current version can be downloaded via the download button at the top), and instructions on how to cite the Icy software in a scientific publication.

We wish you great success with your image analyses using Icy!

Installation instructions

All installation instructions for the Icy software are available in our installation guide.

About the Icy software

Icy is a software to do image analysis, and is mainly oriented toward the analysis of biological images. Icy is free and open source (license GPLv3). It is a modular software composed of a kernel and plugins. Its kernel and main plugins are developed by the Biological Image Analysis unit at Institut Pasteur.

Icy contains state-of-the-art as well as cutting edge image processing tools. Users can process images via its rich graphical user interface, or via scripting (in Javascript), graphical programming using the Protocols tool and development of Java plugins. Icy is coded in Java and uses a Maven project environment.

Source code of Icy kernel: https://gitlab.pasteur.fr/bia/icy
Source code of Icy plugins developed by the Bioimage Analysist Unit: https://gitlab.pasteur.fr/bia

Documentation

Have a look at our training material page, our contributing guide and code of conduct, and at our blog posts to get started with the Icy software.

Citation

Please cite Icy and the Icy plugins you used in your scientific publications.
Icy citation: de Chaumont, F. et al. (2012) Icy: an open bioimage informatics platform for extended reproducible research, [Nature Methods](https://www.nature.com/articles/nmeth.2075), 9, pp. 690-696
Plugin citation: see plugin documentation on the Icy website and/or contact the authors.

Get previous releases of Icy

ROI merge bugfixes - Java 8 - Windows
Release date: 2024-02-08 17:00:00
View changelog

**Application**
* fixed a regression with ROI merge.
* small fix on ROI boolean operation button in ribbon.

ROI bugfixes - Java 8 - Windows
Release date: 2024-01-23 15:00:00
View changelog

**Application**
* fixed a regression with ROI boolean operations.
* small fix on application updater

Bug fixes, improvements - Java 8 - Windows
Release date: 2022-12-16 13:00:00
View changelog

**Application**
* Saver
- fixed FPS setting on AVI file saving
* Loader
- fixed small bug on multiple files loading
- fixed resolution level parameter which wasn't taken in account
* Canvas
- added `+` / `-` shortcuts to zoom IN / OUT in 2D canvas view
* ROI
- fixed ROI2DPoint / ROI3DPoint focused state
* fixed some issues with old internal HTTP address
* fixed invalid warning report on load
* fixed several issues with MacOS app integration
* updated Bio-Formats to version 6.11.0
* updated ImageJ to version 1.53r
* updated MacOS app launcher
* switched to Markdown for CHANGELOG file

**Developper**
* added new PluginScriptFactory interface for plugin providing ScriptEngineFactory
* cleaned up / removed some old useless classes.

Bug fixes, better performance on file group loading - Java 8 - ALL
Release date: 2022-05-09 12:00:00
View changelog

Application
* Loader
- fixed unresponsive UI when loading large group of file
- improved performance on file group loading
- faster preview refresh
- fixed others smalls issues with file loading in general

Developer
* fixed a small bug where embedded sub class plugin couldn't be found in PluginLoader plugin list
* AbstractImageProvider: added InterruptedException + small fix on process interruption (we were removing interruption state)
* SequencePrefetcher: fixed incorrect InterruptedException handling
* SequenceFileGroupImporter: added 'ordering' parameter (when directly opening a list of file)

Bug fixes, better performance when dealing with many ROIs - Java 8 - ALL
Release date: 2022-04-28 15:00:00
View changelog

Application
* fixed a regression on signed byte image creation
* fixed possible memory leak on colormodel listener release
* updated Bio-Formats to 6.9.0 + added custom patch to fix ND2 file loading
* general better performance when dealing with many ROIs
* Loader
- fixed a bug making a new loaded image irresponsive in some situation
- better colormap restoration on group loading
- improved image paths parsing for image grouping operation
* ROI
- added shift modifier to link new created ROI to current T and Z position
- added Shift+T and Shift+Z shortcuts to attach ROI to current T and Z pos
- others smalls bug fixes and tweaks.

Developer
* added SequenceUtil.setDefaultColormaps(..) method

Reworked Image Cache - fully compatible now with Java 17 - Java 8 - ALL
Release date: 2022-02-02 16:00:00
View changelog

Application
* Viewer
- added current image name in viewer title
* ImageCache
- image cache can now be initialized and shutdown at runtime (better performance and better memory usage)
* Updater
- OSX: removed automatic native library signature
* System
- fixed and improved automatic bug report plugin detection
- re-introduced library path patching for Java version supporting it (still marked as deprecated but better to keep it when supported)
- added general 'interruptible' background process actions
- improved interrupted process handling
- small fixes for headless mode
- fixed exe launcher to accept Java 12 or above
- several bug fixes and tweaks.

Developer
* Image
- implemented proper ColorSpace sharing on IcyColorModel (not anymore using illegal reflection)
* ImageCache
- reworked image cache so it does not anymore require usage of illegal reflection
- better handling of volatile image on loading process
- removed Cache.isEnabled() method (higher level now)
- added Cache.clean() and Cache.isEmpty() methods
- improved Cache.end() implementation
* ROI
- fixed a small bug with ROIUtil.computeWatershedSeparation(..)
* System / advanced
- added ReflectionUtil.setFieldValue(..) methods
- added ClassPatcher.getField(..) and ClassPatcher.setFieldPublic(..) methods
- removed IcySecurityManager (deprecated with Java 14 or >)
- improved 'InterruptedException' throw / propagation and handling

New VTK 3D volume slicer, improved Java 17 compatibility (still many issues with it) - Java 8 - ALL
Release date: 2021-11-05 18:00:00
View changelog

Application
* 3D / VTK
- added new volume slicer tool
- tweaked default opacity
* Loader
- fixed loading non image files from Open command with 'All files' filter selected
* GUI
- fixed a minor viewer toolbar refresh bug when switching rendering mode
- fixed histogram log/linear display state restoration
- improved histogram info display to remain visible even when moving bounds
* ROI
- small optimization on 'Erosion' / 'Watershed' process time
* switch dataset to 'virtual' state asynchronously (as it can takes age to do so)
* fixed ImageJ / Icy image conversion switch
* improved Java 17 compatibility (replacing illegal reflective access where possible)
Still need some work to allow the image cache engine to work with Java 17
* small change to 'Updater' tool

Developer
* 3D / VTK
- added new VtkArrow/Cylinder/PlaneObject classes for easy drawing of these primitives.
* deprecated all illegal reflective access methods
* bit of refactoring / cleanup in project structure (moved all package.html file to 'javadoc' folder)

Fixed crashes when interacting with ROIs during 3D visualization (VTK) - Java 8 - ALL
Release date: 2021-09-09 13:00:00
View changelog

Fixed possible crash when interacting with ROIs during 3D visualization (VTK)

VTK 8.0, new 3D ROIs - Java 8 - ALL
Release date: 2021-08-02 16:00:00
View changelog

Application
* Loader
- fixed images grouping (could group image of different type or dimension)
* ROI
- added new 3D ROIs Rectangle3D, Cylinder3D and FlatPolygon3D which are Z extended version of ROI2DRectangle, ROI2DEllipse and ROI2DPolygon
* VTK
- upgraded VTK / 3D visualization library to version 8.0.1
- upgraded JOAMP / JOGL library to vrsion 2.4.0-rc (fix osx crash with VTK)
* general bug fixes
* fixed high resolution support on OSX
* fixed possible death locks on starting (happen only with certain OpenJDK and on Linux)
* allow illegal-access with Java 16 or above
* major rewrite of README file
* added CODE-OF-CONDUCT and CONTRIBUTING
* fixed links to LICENSE, CHANGELOG and README + tweaked About to redirect to the README.

Developer
* ROI
- added new 3D ROIs ROI3DRectangle, ROI3DCylinder and ROI3DFlatPolygon ROIs classes
- ROI3DStackEllipse, ROI3DStackRectangle and ROI3DStackPolygon are now deprecated
- added ROI2DShape getMinZ()/getMaxZ() methods for easier display evolution
- added base ROI3DZShape / ROI3DBoxShape abstract classes for easier 3D ROI implementation
- small fix to Polygon2D / Polyline2D and added getPoints() / setPoints(..) methods
- avoid throwing change event when not changed (bug touching ROIPolygon2D and ROIPolyline2D)
- replaced ROIUtil.convertToStack(roi) by ROIUtil.convertTo3D(roi) and updated ROIUtil.convertTo2D(..)
- fixed persistence (disabled Overlay persistence as ROI handle it by itself)
* VTK
- lot of changes / fixes to make it work with new VTK 8.0 and also fix all issues on recent OSX
* Overlay
- added base ZShape3D and BoxShape3D abstract classes.
- added new ZBoxAnchor3D, LineAnchor3D and RectAnchor3D classes to handle interaction with 3D objects / ROIs
* cleanup

New Magic Wand tool, VTK view synchronization, others improvements and fixes - Java 8 - OSX
Release date: 2021-04-15 18:00:00
View changelog

Application
* Loader:
- fixed 'Drag and Drop' loading of multi series or folder dataset.
- ignore advanced metadata parsing for image format not supporting it (faster loading)
* Saver:
- fixed overwriting an opened image (image was locked by the Image cache so it couldn't be properly saved)
* ROI:
- added 3D ROI support to 'Separate component' ROI separation tool.
- added new Magic Wand tool and associated preferences.
- fixed global key action (unselect, delete and read-only mode).
* VTK / 3D visualization:
- added support for view synchronization.
* Preferences:
- added a section to set advanced settings for the new Magic Wand tool.
- reset cache / result path if they are not anymore valid.
* general bug fixes

Developer
* Cursor:
- fixed VolumetricCursor getter
* BooleanMask3D:
- added getComponent() method to retrieve connected component from 3D boolean mask
* LUT:
- added LUTViewer.getActiveChannelIndex() method to know which channel tab has focus
* Loader:
- added hasMetadata(path) method to know if dataset designed by given path supports metadata
* cleanup

Better metadata preservation, easier ROI descriptor sorting, fixes - Java 8 - ALL
Release date: 2021-03-17 16:00:00
View changelog

Application
* ROI:
- added global selection and alphabetical sorting function on descriptors selector
- changed 'positive infinity' to 'ALL' value representation for size Z/T/C ROI descriptors (ROI table)
* Loader:
- small fix in 'base path' determination during stiched loading from a set of image files
* MetaData:
- better metadata preservation in general
- added 'User Name' information
- added 'Date' (dataset creation / acquisition date)
* updated Forum help URL (Image.sc)
* minors bug fixes

Developer
* Loader:
- added new openWith(path, flags, readerClass) method to select which reader to use (Bio-Formats importer)
- fixed a small issue preventing stitched loading using loadSequences(..)
* MetaData:
- added T,Z,C plane position fix in MetaDataUtil.keepPlanes(..) method
- added plane metadata preservation in buildMetaData() from group importer
- added MetaDataUtil.get/setUserName(s) methods to get/set experimenter(s) user name
- added new OMEUtil.createOMEXMLMetadata(meta, setUserName) method to define if we set the user name in the meta data
* Sequence:
- added 'user name' property (represent who created / generated the dataset)
* added new PETA / TERA prefixes to UnitPrefix class

Several fixes and tweaks - Java 8 - ALL
Release date: 2021-02-09 17:00:00
View changelog

Application
* fixed Windows launcher to not require JAVA_HOME variable to be defined.
* Sequence:
- fixed sequence filename when loading a dataset from a folder (regression)
* GUI:
- fixed support of custom ROI
- fixed a bug in ROI descriptor computation to avoid error on process interruption
* ROI:
- small optimization for .contains(..) and .intersects(..) methods
* Sequence:
- fixed timestamp metadata calculation (could generate problem when copy/pasting ROI)
* Updated Javassist library to version 3.27 to fix issues with recent Java.

Developer
* ROI:
- fixed id preservation on copyFrom(ROI) method
* Sequence:
- added getProperty(..) / setProperty(..) methods (as in ROI class)

Project migrated to maven, morphological operations for ROI - Java 8 - ALL
Release date: 2020-11-27 12:00:00
View changelog

Application
* Java 8 is now the minimum required version of Java.
* GUI:
- better headless support in general
* Metadata:
- better 'time interval' metadata retrieval
* Sequence:
- fixed fast crop operation (wasn't correctly considering ROI channel information)
* Cache:
- added option do disable cache (through command line)
* ROI:
- ROI2DArea now show its bounding box only when hovered or selected (better for visualization).
- added ROI dilatation / erosion operations
- added ROI distance map operation
- added ROI watershed separation operation
- added ROI unstack operation (convert 3D ROI to multiple 2D ROIS, one for each slice)
- added new 'Intersected' and 'Contained' ROI descriptors (number of intersected and contained ROI)
- added 'Internal id' ROI descriptor to retrieve internal ROI id (can be useful)
- fixed ROI table focusing on double click
- better handling of ROI descriptors process interruption (when switching or closing an image for ex)
- fixed BooleanMask for tiny ROI2DShape (single pixel)
- fixed area multi selection for ROI with channel position different from ALL
* Viewer:
- we can now loop in a timelaps using left/right keys.
- fixed pixel size of sequence rendering views (snapshots)
* Network:
- added option to disable network (through command line)
- ignore possible error on audit process
* Updater:
- fixed weird lockup on process execution error
* better recovery of parent / main plugin for 'Bundled Plugin'
* many others changes, tweaks or fixes

Developer
* project migrated to maven
* repository migrated to GitLab (Pasteur)
* cleanup up unused dependencies / libraries (they are now distributed as plugin)
* IcyBufferedImage:
- added IcyBufferedImageCursor class for easier / faster image data manipulation
- minor tweak on cache data management
* Sequence:
- added VolumetricImageCursor class for easier / faster 3D image data manipulation
- added SequenceCursor class for easier / faster sequence data manipulation
* Plugin:
- added static methods to extract native library files
- added getMainPlugin() method to retrieve Main Plugin descriptor (Bundled Plugin)

Bug fixes and tweaks - Java 7 - ALL
Release date: 2019-10-31 19:00:00
View changelog

Application
* Canvas:
- faster and smaller memory footprint for screenshot for simple 2D image
* VTK:
- fixed colormap alpha restoration for 3D VTK canvas.
* Loader / Bio-Formats:
- fixed tile image loading.
- fixed duplicated data when opening several sequences at once.
- minor tweak to avoid using cache when not needed (better performance).
- minor change on data pre-fetch strategy.
* replaced micro character by 'u' to avoid incorrect display on non UTF-16 softwares
* updated online bug report to make it compliant with new web report.
* small fix in ROI table sorter.

Developer
- fixed MANIFEST.MF file containing an invalid character which was making Eclipse to crash.
- small tweak in XMLUtil.loadDocument(..) methods.

Switched to new internal web interface - Java 7 - ALL
Release date: 2019-08-30 16:00:00
View changelog

Application
* Loader:
- empty pre-fetch tasks on Sequence close.
* VTK:
- correct colormap alpha channel loading for IcyCanvas3D
* Search:
- general improvements on search engine (support +/- operator on keyword).
- switched online search to the new web interface

Developer
* fixed ROIUtil.convertToSequence(..) method to correctly generate labeled image.

Image cache engine fixes and improvements - Java 7 - ALL OS
Release date: 2019-08-12 18:00:00
View changelog

Application
* Loader:
- fixed empty (black) image when opening multi-series Sequence (shared importer was closed)
- limited number of importer (reduce memory usage when the group contains many files)
* ImageCache:
- removed temporal images from the cache to not waste memory
- tweaked EHCache data expiration settings
- minor fix in GUI refresh
* Sequence:
- added simple data prefetch for faster initial data loading
- added getFilename(t, z, c) to get file path for image at given position when Sequence was loaded from multiple files
* added global layer enable/disable action (shift + L)
* fixed native library patching for Java 12 or above
* VTK:
- better error reporting
- minor tweak on VTK native library loading

New image cache engine - Java 7 - ALL OS
Release date: 2019-04-12 12:00:00
View changelog

Application
* new image cache engine.
* new packaging for easier installation on OSX system.
* GUI:
- added new Icy 'virtual mode' button to force the image cache engine to be used for all opened / created images.
- memory monitor now display image cache load level.
- Icy shows 'virtual mode' in title when image cache engine is forced ON.
- improved 'General' and 'Canvas' preferences presentation.
- added image cache settings in 'General preferences' section.
- added informations on image cache at startup.
- fixed position of Series selection dialog
* Loader:
- added lazy data loading for faster Sequence loading operation.
- improved preview display refresh.
* ROI:
- added 'ROI to Square' conversion.
- added 'ROI to Circle' conversion.
- small changes / improvements on ROI tasks GUI
* Viewer:
- timelaps are now in 'repeat' playback mode by default
- added 'SPACE' key shortcut to play/pause timelaps playback
* better background processing of some basic sequence operations ('Duplicate', 'Convert RGB', 'Convert Gray', 'Crop'...)
* minor speed improvement on application start
* added new splash screens
* many other small changes, tweaks, fixes and refactoring

Developer
* IcyBufferedImage:
- many changes to add image cache support.
- added lazy data loading support (for faster Sequence loading operation)
- added isVolatile() / setVolatile(..) method to enable/disable image caching.
- added isDataInitialized() / isDataLoaded().. methods.
- many others changes.
* Sequence:
- added isVolatile() / setVolatile(..) method to enable/disable image caching.
- added setDataXY(..) method (need to use it for image caching)
- changed the way channel bounds are updated (as data can be loaded on demand).
* SequenceUtil:
- fixed getSubSequence(...) method to work with volatile images.
- extractSlice(..) and extractFrame(..) now correctly duplicate original images data (should have been the case).
- minor fix on colormap update in utilities methods.
* Loader:
- added 'forceVolatile' parameter on some methods to force image caching.
- fixed possible Importer leak on error.
* Bio-Formats importer:
- fixed possible bugs during downscaled image/data loading
* ROIUtil:
- added convertToPoint(..), convertToEllipse(..) and convertToRectangle(..) methods
* DataIterator:
- updated to be compatible with volatile images.
* VtkUtil:
- minor change in getBinaryImageData(vtkPolyData, ...) method
* added FileUtil.getDrive(path) method
* added IcyFrame.getBorder() method
* fixed last ROIs objects retention when removing ROIS from an image while keeping the image open.
* added EHCache library.

Fix for Java 11 and small rendering bug with ROI Point in 3D (VTK rendering) - Java 7 - ALL OS
Release date: 2018-11-19 00:00:00
View changelog

Application
* ROI:
- fixed 3D VTK display for ROI2DPoint and ROI3DPoint
- tweaks for faster retrieve of default property value
* Saver:
- FPS is automatically determined from metadata (AVI format)
- added time interval field for easier FPS calculation (AVI format)
* Plugin: minor fix about plugin installation notification
* Network: audit methods cannot lock anymore Icy launch process.
* Minor fix on possible exception with the Clipboard.
* Other minors changes or fixes.

Added image series grouping and improved ROI display in 3D (VTK rendering) - Java 7 - ALL OS
Release date: 2018-09-28 00:00:00
View changelog

Application
* Loader:
- added series grouping when 'grouping' in enabled in Loader dialog
- added groupSeries(..) method to group similar series in an image
* Sequence: fixed series index reset after saving an image
* ROI:
- fixed 3D VTK display (correctly handling specific Z and T position of the ROI)
- fixed ROI Mass Center computation for single point ROI
* VtkCanvas:
- fixed layers refresh on position change
- fixed/better implementation of layers visibility
* Network:
- added warning message for HTTPS compatibility with the future web site
- fixed HTTPS support for future web site (when java version ok)
- replaced automatic redirection by manual (and safer) redirection
- better error handling in general

Developer
* Sequence: added getDataInterpolated(t, z, c, y, x) method
* IcyBufferedImage: added getDataInterpolate(x,y,c) method
* Loader: added groupSeries(..) method to group similar series in an image
* Line2DIterator / Line3DIterator: added forceLastPoint parameter.
* VtkUtil:
- added getJavaArray(vtkDataArray) method
- added getPolyDataFromDataSet(vtkDataSet) method
- added getBooleanMaskFromBinaryImage(vtkImageData..) method

Improved automatic stitching, better metadata preservation - Java 7 - ALL OS
Release date: 2018-07-20 00:00:00
View changelog

Application
* Loader:
- fixed time position (timestamp) in metadata when loading sub part of sequence
- fixed a small bug in setting panel (couldn't change 'loading type' in some situation)
- fixed minor bug with possible invalid metadata when stitching was used.
- stitching disabled when 'loading type' is set to 'separate' (better implementation)
* Minor fix to update plugin processing (incorrect message report)

Developer
* Sequence:
- better metadata initialization
- added getPosition() method for fast XYZ position retrieving
- added getPositionT() / getTimeStamp() methods
- added getPositionTOffset(..) method
- added setPositionT() / setTimeStamp(..) methods
- added setPositionTOffset(..) method
* MetaDataUtil:
- added getPositionT(..) / getTimeStamp(..) methods
- changed getTimePosition(..) by getPositionTOffset(..) methods
- added setPositionT(..) / setTimeStamp(..) methods
- added setPositionTOffset(..) methods
* SequenceUtil:
- added convertPoint(..) methods for easy coordinate conversion between 2 Sequence objects
- added convertRectangle(..) methods for easy region conversion between 2 Sequence objects
* ROIUtil:
- rewrote adjustToSequence(..) method (better implementation).
* VtkUtil:
- added getROIFromBinaryImage(..) method to convert VTK binary image to ROI
- renamed method polyDataToImageDate(..) to getBinaryImageData(..)
- added getTransform(..) method
- renamed method objToMesh(..) to getSurfaceFromOBJ(..)

Improvements in 'multiple file' image loading - Java 7 - ALL OS
Release date: 2018-05-18 00:00:00
View changelog

Application
* Several fixes and improvements on multi file loading
* Fixed updater to keep it compatible with Java 6

Fixed OSX launch issue - Java 7 - ALL OS
Release date: 2017-11-27 00:00:00
View changelog

Application:
* fixed ImageJ issue on last OSX preventing Icy from starting.
* Search: 'Actionable' bundled plugins are not visible in search results.

Developer:
* added added Sequence.getROIs(Class roiClass, boolean sorted) method
* minor tweak/fix in MetaDataUtil.keepSingleSerie(..)tmp

Added scaling features to ROI - Java 7 - ALL OS
Release date: 2017-08-11 00:00:00
View changelog

Application:
- minors fixes and tweaks.

Developer:
* ROI2DArea / BooleanMask2D:
- added upscale() method for 2x up scaling.
- added downscale() method for 2x down scaling.
* ROI3DArea / BooleanMask3D:
- added upscale() method for 2x up scaling.
- added upscale2D() method for 2x up scaling (2D only).
- added downscale() method for 2x down scaling.
- added downscale2D() method for 2x down scaling (2D only).
* ROI:
- getProperty(..) / setProperty(..) property name is not anymore case sensitive.
* ROIUtil:
- added scale(ROI, ...) method (only work for ROI2DShape and ROI3DShape)
- added getUpscaled(..) method for 2x up scaled ROI.
- added getDownscaled(..) method for 2x down scaled ROI.
* Loader: fixed a minor bug on region image loading.
* Saver: fixed "origin" informations on saving operation
* Sequence: added resetOriginInformation() method

Reworked GUI and improved image opening - Java 7 - ALL OS
Release date: 2017-06-06 00:00:00
View changelog

Application:
* GUI: reworked Sequence and ROI menu tasks.
* Loader:
- we can now select image series directly from Loader dialog
- some bug fixes in preview refresh
- fixed Bio-Formats sub resolution loading
- fixed some bugs in Bio-Formats importer
- preserve series information when using 'open sequence region'
* fixed colormap opacity (regression)
* better colormap preservation of some Sequence operations.
* now support HTTPS connection for plugin repository.
* OutputPanel: we can now set a maximum line limit
* several bug fixes

Developer:
* fixed IcyBufferedImage.toBufferedImage(..) method (regression)
* switched to OMEXMLMetadata class from 'ome' package when possible (refactoring)
* MetadataUtil: lot of refactoring (due to OMEXMLMetadata class change mainly)
* OMEUtil: some refactoring (due to OMEXMLMetadata class change mainly)
* added ImageProvider.getOMEXMLMetadata() method to use the good OMEXMLMetadata class ('ome' package)
* VTKUtil: added getImageData(..) method
* MainInterface: added getROIRibbonTask() method
* IcyCanvas: protected listener operations (add/remove/fireEvent)
* minor fix on ROI2DLine.setLine(..) method
* ROIActions: added fillInterior and fillExterior actions
* Sequence: some refactoring
* minor change in function ClassUtil.getFile(String className)
* minor fix in FileUtil.getFileExtension(..) method

Added new 3D ROI and ROI tools - Java 7 - ALL OS
Release date: 2017-04-03 00:00:00
View changelog

Application:
* added new 3D ROI:
- 3D point type ROI.
- 3D line type ROI.
- 3D polyline type ROI.
- Ellipse 3D stack type ROI (available from stacking operation).
- Polygon 3D stack type ROI (available from stacking operation).
* ROI:
- more interaction with 3D VTK display (can move and modify the ROI)
- better and safer VTK rendering in general
- added 'to 3D stack' operation to convert 2D ROI to 3D Stack ROI.
- added 'to Mask' operation to convert shape ROI to Area ROI.
- added 'to Shape' operation to convert area ROI to Polygon ROI.
- added 'Separate' operation to separate unconnected object from an Area ROI.
- added 'ROI Cutter' operation to manually cut/separate ROI.
* ROI Panel:
- can now modify position / size of multiple ROI at same time.
- we can now quickly move view to a specific ROI location by double clicking on it (work in both way: from ROI panel or from the image).
- cleaned GUI:
- removed some ROI operations we usually do from keyboard (copy/paste, delete)
- moved some ROI operations to ROI band (load/save, boolean operator).
- XLS export button moved at the top of the ROI table.
* Image Loader (loader dialog):
- added Z and T range selection
- added channel selection
- added resolution level selection
- added 2D region (XY) selection
- improved preview
- better filename auto ordering
* Image Saver (saver dialog):
- removed Z and T range selection (better to do adjust range before)
- use big tiff when dataset is above 2GB
- setting are now preserved in XML preferences.
- image conversion is now automatically done when you use a save format which isn't compatible with the current image format.
A warning is displayed to inform the user about possible data loss.
* GUI:
- added a new tooltip to explain where is the main menu.
- added java 6 warning for OSX users.
- improved memory usage report in memory monitor.
- reorganized 'File & ROI tools' menu:
- added 'open region...' command to load a specific XY region of an image.
- re-organized the ROI creation actions.
- added many ROI operation actions (see the above 'ROI' and 'ROI Panel' sections).
* Canvas2D:
- reversed panning direction from keypad keys.
- image cache now use volatile accelerated image (image redraw should be much faster on some systems)
* VtkCanvas: improved overlay handling (should be a bit faster and safer)
* better metadata preservation on Sequence operation.
* sequence merging operations is now possible with Sequence of different type.
* ToolTipFrame: we can now clink on URL to open external browser.
* Updater: fixed local directory saving (it was saving in working folder instead of application folder)
* fixed wait for plugin update in headless mode.
* many bug fixes.
* several tweaks and optimizations.
* some code cleanup.

Developer:
* ROI:
- added 'group' field (will be use in future for 'group' ROI operation)
- added getLength(Sequence) method to compute length/perimeter with Sequence pixel size information.
- added getEffectiveDimension(..) dimension method.
- added unselectAllPoints() method.
- moved some methods to ROIUtil.
* ROI3D:
- added ROI3DPainter class for easier display and interaction for 3D ROI.
- added isOverEdge(..) method.
- added add(..), exclusiveAdd(..), intersects(..) and subtract(..) methods.
- added ROI3DShape: abstract class for 3D Shape ROI.
- added ROI3DPoint: 3D point type ROI.
- added ROI3DLine: 3D line type ROI.
- added ROI3DPolyline: 3D polyline type ROI.
- added ROI3DStackShape: abstract class for 3D Stack Shape ROI.
- added ROI3DStackEllipse: Ellipse 3D stack type ROI (available from stacking operation).
- added ROI3DStackPolygon: Polygon 3D stack type ROI (available from stacking operation).
* ROI3DStack:
- fixed setName(..) methods so children get modified as well.
- deprecated getUseChildColor()/setUseChildColor(..) methods.
* ROI3DArea:
- added ROI3DArea(BooleanMask2D, zMin, zMax) constructor.
- added isOverEdge(..) method.
* ROI5DArea: fixed a bug in optimizeBounds()
* ROI Overlay: drawROI(..) and drawName(..) are now public.
* ROIUtil:
- moved methods from ROI: getUnion(..), getIntersection(..), ...
- added convertToStack(..) method to convert 2D ROI to 3D Stack ROI.
- added convertToMask(..) method to convert Shape ROI to Area ROI.
- added convertToShape(..) method to convert Area ROI to Polygon ROI.
- added getConnectedComponents(..) to separate and retrieve connected components from an input ROI.
- added copyROIProperties(..) to copy properties from an input ROI.
- added split(ROI, Line2D) to cut/split a ROI from a given Line2D.
- added convertToSequence(..) method to convert a list of ROI to a labeled sequence.
* ROIDescriptor: added getDescriptor(descriptors, descriptorId) method
* ROIPerimeterDescriptor: modified to use the new ROI.getLength(..) method.
* BooleanMask2D:
- added getConnectedContourPoints(..) method to retrieve contour in 'connected' order.
- minor change to make it safer.
* added new 'geom' classes: Polygon2D, Polyline2D, Shape3D (base class for 3D shape), Line3D, Polyline3D
* Rectangle3D: added intersectsLine(..) method.
* Point3D:
- added many methods to compute distance, total distance, angle, normalize, length, dot product, cross product...
- added translate(..) method
- better hashCode() implementation.
* Anchor2D:
- added integer Z position information (for 3D position of 2D ROI)
- added VTK display and interaction support (allow ROI2D manipulation with VTK).
* PathAnchor2D: fixed visibility for closing point.
* added Rectangle2DUtil, Line2DUtil and Point2DUtil classes (utilities for the java classes)
* Sequence:
- added position X, Y, Z information (metadata)
- added 'origin' resolution, XY region, Z range, T range, channel information (when loading sub part of an image)
- added getOutputBaseName() / getOutputExtension() and getOutputFilename() to obtain wanted output filename given 'origin' informations
- trying to load too large array of data throw a TooLargeArrayException exception
* SequencePersistent: added isValidXMLPersitence(..) methods
* SequenceUtil:
- added getOriginPoint(..) / convertPoint(..) for point position conversion operation
- added getOriginRectangle(..) / convertRectangle(..) for rectangle position conversion operation
* IcyBufferedImage:
- trying to load too large array of data throw a TooLargeArrayException exception
- added copyData(array, ..) method to copy data from an array
* IcyBufferedImageUtil:
- added fast downscaleBy2(..) methods to quickly downscale image by a factor of 2
- changed toBufferedImage(..) method so it returns accelerated volatile image when possible.
* new 'undoable' operations:
- ROIReplaceSequenceEdit (replaced single ROI in a sequence)
- ROIReplacesSequenceEdit (replaced multiple ROI in a sequence)
- PositionROIEdit (modified single ROI position)
- PositionROIsEdit (modified multiple ROI position)
- BoundsROIEdit (modified single ROI bounds)
- BoundsROIsEdit (modified multiple ROI bounds)
- PropertyROIEdit (modified single ROI property)
- PropertyROIsEdit (modified multiple ROI property)
- Point3DAddedROIEdit (added a new point in a 3D ROI)
- Point3DMovedROIEdit (modified a point in a 3D ROI)
- Point3DRemovedROIEdit (removed a point in a 3D ROI)
* DefaultSequenceEdit: default undo operation on Sequence also preserve ROI and Overlays now (reference only)
* IcyCanvas:
- added canvasToImageLogDeltaZ(..) method, this is the Z equivalent to canvasToImageLogDeltaY(..) / canvasToImageLogDeltaX(..) methods.
- added centerOn(region) method for centering view on a specified image location.
* IcyCanvas2D: improved setMousePos(..) method to be safer.
* IcyCanvas3D:
- added methods to handle mouse (image) position.
- added imageToCanvas(..) and canvasToImage(..) methods (with default implementation to avoid breaking compatibility)
* Canvas2D:
- added getFitToCanvas() / setFirToCanvas() methods
- getARGBImage(..) now returns volatile accelerated image for faster image drawing operation (may consume more memory to prepare the image)
* VtkCanvas:
- added getWorldZ(Point) method to retrieve Z depth for a given 2D canvas position.
- added worldToDisplay(Point3D) method to convert a 3D world point to canvas 3D position.
- added displayToWorld(Point) method to convert a 2D canvas position to a world 3D point.
- implemented imageToCanvas(..) and canvasToImage(..) from previous added methods.
- implemented getScaleX/Y() methods.
- implemented setMouseImagePosX/Y/Z(..) methods.
- mouse event now provide a correct mouse position.
- removed the enable picking on Mouse Move switch.
* VtkUtil: simplified getSurfaceFromImage(..) method.
* IcyVtkPanel: added proper event consuming.
* Loader:
- added checkOpening(..) method to check we have enough resource to open an image
- added methods to load only sub part (Z, T and C) and sub resolution of the image.
- fixed issues while using Importer on non image files.
- many changes in general, new methods, refactoring...
* Bio-Format importer:
- added multi thread support.
- added tile loading for large image and sub resolution loading.
- better thumbnail loading.
* AbstractImageProvider / PluginSequenceFileImporter / PluginSequenceIdImporter:
- improved default getThumbnail(..) implementation
- added getImageByTile(..) method to load an image by tile (useful for large image)
* Saver:
- added many new methods to check compatibility image writing compatibility.
- reverted channel combination for 3 channels image saving in TIFF format (better for RGB image preview)
- methods doing Z/T range saving operation are now deprecated (better to do it before)
- added method getCompatibleSequenceForWriter(..) to automatically convert a Sequence so it can be save by a given writer (possible data loss)
- added SaverOptionPanel for easier setting definition
* SequenceDataIterator: fixed typo making some ROI calculations wrong in some situation.
* MetaDataUtil: replaced OMEXMLMetadataImpl class by OMEXMLMetadata in some methods (more generic, check if that bring issue)
* FileUtil: added getFiles(..) method to easily retrieve file with a specific extension without using a FileFilter.
* XMLUtil: added filtering to avoid incorrect character in name/attribute fields.
* SystemUtil:
- added getJavaVersionAsNumber() method
- getJavaFreeMemory() return the total amount of free memory available to the JVM
- getJavaMaxMemory() return the maximum amount of memory the JVM will attempt to use
- getJavaAllocatedMemory() return the memory currently *allocated* by the JVM
- getJavaUsedMemory() return an estimation of the memory currently *used* by the JVM
- getJavaTotalMemory() is deprecated (replaced by getJavaAllocatedMemory())
* ImageComponent: now use a cache for faster image drawing
* NumberTextField: added setInteger(..) method to force integer value instead of double value.
* ImageJUtil: added convertToIcyBufferedImage(..) method to convert a single image from an ImagePlus to an IcyBufferedImage
* IcyExceptionHandler: added anti spam protection for report(..) method.
* IcyCommandButton: added setPopup(..) method to enable popup action.
* RecentList: thread safe accesses, fixed possible NPE.

Last version compatible with Java 6 - ALL OS
Release date: 2016-07-26 00:00:00
View changelog

Application:
* fixed an issue when we tried to reload an image which has been saved after a Z slice remove operation.
* removed POI library from Icy-Kernel package (fix the infamous workbook error in protocol).
* other internals tweaks or changes.

Last version compatible with older VTK OpenGL implementation - Java 6 - ALL OS (required version for OSX < 10.7 or OpenGL < 2.0)
Release date: 2015-11-12 00:00:00
View changelog

Just some bug fixes here and there.