Register

ICY: The open source community software for bio-imaging

Over the past decades the image analysis community has put substantial efforts into developing algorithms for various applications, yet their visibility often remained clustered to a handful of people,
due to lack of proper means of communication and advertising. Meanwhile, numerous experts in the biology community have been turning to image analysis to answer their questions, and yet often fail to find adapted (or affordable) tools to fit their needs.
ICY provides an integrated platform that aims at bridging the gap between developers and users, by combining: a) an open-source image analysis software, offering a powerful and flexible environment for developers such as applied mathematicians to write algorithms fast and efficiently; b) a common set of tools to view and manipulate data, and a set of plugins to perform specific quantification or analysis on images; c) a community-based website centralizing all plugins and resources to facilitate their management and maximize their visibility towards users.


ICY in details

ICY's core: the gold standard for today's image processing needs

Images are numbers.

ICY's core has been designed specifically to handle large image data in 2 or 3 dimensions, with time-lapse sequences and an unlimited number of channels, fitting today's bio-imaging standards. While current imaging systems generally store images either in 8- or 16-bit precision, ICY natively supports many more data formats (8-bit byte, 16-bit short, 32-bit integer, 32-bit float, 64-bit long, 64-bit double), in order to allow mathematical computations on images and to be ready for the next generation of imaging setups.
ICY provides a rich API to perform pixel transfer, conversions and assignments in the most efficient way, by minimizing the number of intermediate steps between the raw image data and the target structure. The core data structure describes both temporal and depth information, and allows to reference only a portion of images in time or depth in a sequence. This enables to load several stacks of different depth even with missing frames.

Why re-invent the wheel? We did not !


3d rendering with integrated VTK libraries
While the core has been designed to match today's needs in image handling, ICY makes strong use of efficient and well-known third-party libraries for various tasks, ranging from data input/output and visualization to user-interface management. For instance, ICY relies on the BioFormats library to read the majority of formats available in the bio-imaging community, and uses the VTK library to perform volume rendering of 3D image data. By building upon efficient and well-developed libraries, ICY guarantees a continuous evolution by always providing the leading-edge in software development and user-experience. The full list of third-party libraries used in ICY is available in the About Us section.

ICY's plugin architecture: central, rock-solid.

Plugins first.

ICY is designed to benefit as much as possible from community development through a highly plugin-oriented framework. Plugins can be written and integrated to the software almost everywhere, be this a novel image analysis tool, a new import functionality for your own file format... you can even write your own viewer to look at images the way you want ! The full list of available plugins is accessible here and can be browsed by tag here. Each plugin listed on the website is also visible within ICY with its description and key features, and can be downloaded and installed directly from the application. Once installed, the plugin appears directly on the ribbon bar, ready-to-use and accessible in a single click.

ICY's ribbon interface. Access plugins in a single click.

No bugs allowed.

ICY embarks a robust bug-catching system with one-click bug report option. When a plugin crashes, ICY does not. Instead, an error window pops up and details the reasons of the crash. The user may then choose to ignore the error, or submit it directly to the plugin developer for diagnostic and bug-fixing. In both cases, the user may continue to use ICY, without losing all the precious data worth a week's work.

Your data. Your view. Your way.


Example of RGBA look up table
ICY natively supports almost any image type. Since most data types are not directly compatible with a computer screen, data conversion is performed on-the-fly via look-up tables (LUT). Using rich RGBA (color + transparency) LUTs, image details can be enhanced in each image channel separately and simultaneously. Numerous pre-defined LUTs are available, though other user-defined LUTs can be implemented thanks to the efficient plugin architecture.

Open once. View differently.

When observing an image dataset, one visualization window is often not enough: multiple views of different areas or different times can be necessary to find and track specific events or details. To avoid switching between viewing-modes all the time, ICY lets the user open as many viewers of the dataset as needed, without duplicating data. For instance, it becomes possible to have one viewer on a full sequence, another viewer with 3D volume rendering of a particular area at a different time point, a third viewer with a specific look-up table, and a last viewer displaying a selection of contextual layers. By not duplicating data, ICY runs efficiently, and if ever the data changes via one of the viewers, all the other viewers are instantly updated and kept synchronized.

View data in different viewers without duplication. Each view is either 2D or 3D, with adjustable LUT or layer selection. Any change in data or layer in one viewer is synchronized with the others.

Touch your data.


Example of an interactive painter
to perform angle measurements.
ICY provides a rich API with all the necessary tools to create overlays and interactivity between the data and the user. Numerous methods allow to draw rich overlays on the image using custom 2D or 3D objects, and these overlays can be context sensitive to enable high user-interactivity: plugins can display data depending on the mouse position, react on click or keyboard entries, drag objects or animate segmentation, detection, progress bars... there is no limit. The API also enables resolution-independent overlays by accessing the Level Of Detail (LOD) of the viewer and feedback on what the viewer is actually rendering to perform optimal display. Several layers of overlay coming from different plugins can be displayed at the same time. The user may freely hide, re-order, destroy or set the transparency of each overlay. This also applies to 3D views, thanks to the VTK library, hence any VTK object can be overlaid on the data without limitation.

Images. In context.

ICY uses an efficient architecture to save and share data via XML, while preserving the original sequence intact. Any time a dataset is loaded, a XML file is automatically created (or reloaded) and bundled with it. This XML file may store various information such as Regions Of Interest (ROI), overlays or any other contextual data created by the user or directly by plugins. This contextual data becomes available to and shared by all other components and plugins of ICY, which greatly facilitates inter-plugin communication within an image processing workflow. This efficient mechanism also allows the user to reload the image together with all its bundled data, improving communication and team work. This feature is called "XML persistency", as it keeps data transparently saved and available at all times.

Workspaces

Organize space. Free time.

Day-to-day use of image analysis softwares can be cumbersome. From a user's point-of-view, three questions often arise:
  • Some plugins are used all the time. How to group them for easier access ?
  • There is always more than one plugin for any given task. How to know and test them all ?
  • Large workflows usually combine small bricks. How to organize them to work faster ?
  • ICY brings an elegant answer to all these problems by introducing Workspaces. A workspace is a virtual group of plugins, and appears within ICY's ribbon bar as a separate tab. Instead of downloading a single plugin, a user may download an entire workspace, which automatically installs all corresponding plugins. A user may have as many workspaces as desired, and a plugin may belong to multiple workspaces.

    Community-powered.

    Any user can create workspaces. Workspaces may remain private, but can also be published online and shared via ICY's website. Workspace maintainers then have the responsibility to keep the set of plugins up-to-date, by testing and adding new plugins, and removing old ones. Workspaces thereby benefit the entire community: users spend less time finding plugins, and developers increase a plugin's visibility by adding them into a workspace.

    Online plugin repository.

    All in one place.


    Sample of the online
    plugin managment webpage
    The interest and impact of ICY is closely related to that of its plugins. To maximize both, ICY brings all the tools needed to publish and promote plugins in a streamlined manner. Plugin distribution takes after the concept of application store or market seen on modern mobile handsets. This website hosts a central repository where all contributed plugins are freely available and open-source (under the GPL license agreement). Once a plugin is ready for publication, it can be uploaded and visible online in just two steps: user registration and plugin upload. Once published, a section called “manage your plugins” lets the developer monitor and increase the visibility of each plugin by setting up additional descriptions, icons, splash screens, etc..
    The central plugin repository hosted here provides the following features:
  • Simultaneous management of one stable and one beta version of each plugin, for testing purposes.
  • Automatic plugin update notification on client systems.
  • Rich plugin description (text, images, splash screens).
  • Workspaces.
  • Public bug report: bug reports sent from ICY appear directly within the plugin management section.
  • Private bug report: bug reports sent from ICY are sent directly to the developer.
  • Plugin dependency: a plugin can depend on other plugins. Upon installation, dependencies are automatically installed as well.
  • Unique plugin identifier, which can be used via short URL links for scientific referencing purposes.
  • Private plugin repositories

    While this website is a central repositories for open-source plugins, ICY also supports private repositories protected by password, whereby teams can share their own plugins using the license of their choice, and take benefit of automatic updates, without being publicly visible.

    Developing with ICY.

    Write plugins. Join the loop.

  • Developing for ICY is both simple and fast thanks to the free Eclipse development platform. Once Eclipse is installed, you can start editing your first plugin in less than 3 minutes (see tutorial video here). A standard knowledge of Java is sufficient to start developing, and a great number of tutorials are provided to explain and show most of the functionalities in action.
  • As the source code is provided, advanced programmers can browse the whole API to thoroughly understand the internal mechanisms of ICY. Developers can also take benefit of the thread-safe architecture of ICY: main native components extensively use multi-threading and tutorials are also provided to do the same with plugins.
  • The forum is also a good way to get help when writing plugins.
  • ICY supports open-source development

    ICY is open-source and released under the GPL license agreement. The current and future developments of ICY are therefore transparent: a forum is dedicated to the development of the kernel, and plugin developers are welcome to participate in this forum too. Moreover, the development team itself follows the good practices of the open-source community to avoid taking private decisions about the design: kernel developers interact through the forum as if they were in different geographical locations, and discuss directly in the forum.

    Loading

    News

    Automatic bug report

    We want ICY to be stable. If a plugin crashes, an automatic bug report log is sent to the author, and you can continue to work as the main application still runs. If any part of ICY crashes, a general bug report allows one to instantly publish, in one click and from the application, a full bug report. details

    Plugin communication

    All plugin can communicate together, they just need to drop data in a common area called the swimming pool, and all other plugins can grab, copy, transform or remove it. This special common area enables easy data sharing between plugins.

    Chart

    ICY uses JFreeChart as chart engine.

    Forum

    You did not find an answer in the FAQ ? Get answers in the forum ! details

    VTK

    ICY uses VTK for its 3D rendering. 3D volume can be rendered in both ray tracing or OpenGL providing ready to publish images !

    Data storage and communication

    ICY framework enables the storage of data link to your images by providing a simple XML file created beside your original image files. Any plugin can store any data in it. You can transmit images with their bounded data by simpy copying this file.

    Frequently asked questions

    Most of the questions you might have about ICY might have already an answer ! Check it out in the FAQ ! details

    Spot Detector

    Spot detector detects and counts spots.

  • Detects spot in noisy images 2D/3D.
  • Versatile input: sequence or batch of file.
  • Detects spot in specific band/channel.
  • Multi band labeling: automaticaly creates ROIs from one band and count in the same or an other band.
  • Fil... details

    ImageBrowser

    Browse files in directories with thumbnails view details

    Active Contours

    Fast multiple coupled active contours using edge and region information for segmentation and tracking details

    Snake Utilities

    This is an icy package that encapsulates tools to design and implement parametric active contours. The package provides fast 2D and 3D filters for image preprocessing, and a framework to create and evolve snakes defined by a set of control points. details

    KMeans Color Quantization

    Quantize a color image in any given number of colors. details

    Multi-Touch provider

    Multi-touch provider allowing developers to let their plug-in receive rich multi-touch interaction. Currently supports Mac OS X, and generates raw finger events as well as pre-processed 2-finger gestures (pinch, drag, rotation) details

    Micro-Manager for Icy

    Micro-Manager plugin for Icy. Use your microscope and microscopic devices in Icy ! (Requires v. 1.1.4 at least) details

    Connected Components

    This plugin extracts groups of connected pixels in 2D and 3D based on their intensity and that of the background. Works on both binary and gray-scale data. Output can be pushed to the swimming pool for other plug-ins to further exploit the extracted objects. details

    EzPlug

    Create nice-looking plug-ins in no time with this library. No required knowledge in GUI programming: declare parameters and EzPlug automatically generates an elegant and standardized interface with rich and intuitive user-interaction. Check out the EzPlug tutorial to see all the features in action details

    EzPlug Tutorial

    Tutorial showing EzPlug\'s features in action. Check out the documentation to have a direct view of the code details

    Stereo Viewer

    This is an icy plug-in that implements a stereo vision system. Renders 3D stacks simulating a dual view camera. Each 3D view is rendered in fullscreen in a different monitor. Key controls: 'q' - Quits the full screen views. 'u' - Increases the separation between the cameras. 'd' - Decreases t... details

    Multi-touch Image Manipulator

    Unleash the power of multi-touch gestures on your viewer, and rotate, zoom or drag the image using two-finger gestures. Currently limited to 2D viewers. details

    Protractor

    A protractor to measure angles on images details

    MaskEditor

    This plugin is designed to manipulate binary masks over images. It contains all the basic tools to manage such objects. details

    Snakes Segmentation

    This is an icy plug-in that implements several fast active contour methods for image segmentation. It allows one to manage several snakes simultaneously, and to keep record of their location and size through the ROI persistence capability of icy. While our active contours are versatile enough to ... details

    ROI Measures

    This tool compute measures on the ROIs of the chosen sequence, updates the measures live when ROIs are changed and allows to copy/paste the measures to 3rd-party sheet edition softwares. Measures include geometric (bounding box) and intensity information. details