Re-usability of implemented computational methods is crucial for both algorithmic advancement and scientific progress. ImgLib2 is an open-source Java library for n-dimensional data representation and manipulation with focus on image processing. It aims at minimizing code duplication by being agnostic to data type, dimensionality, and memory layout. The ImgLib2 interface architecture clearly separates pixel-algebra, data access, and data representation in memory. On one hand, this architecture enables fine-grained control in specifying the minimal requirements of an algorithm to facilitate maximum re-usability. On the other hand, it provides great flexibility to developers when adding new data representations and types. ImgLib2 illustrates that an elegant high-level programming interface can be achieved without sacrificing performance. It provides highly efficient implementations of common data types, memory layouts, and algorithms.
ImgLib2 serves as the core data model underlying ImageJ2, KNIP (KNIME Image Processing toolbox), and an increasing number of Fiji-Plugins. The Open Microscopy Environment (OME) plans to make use of the ImgLib2 API in the Bio-Formats library as well as the OMERO server.
ImgLib2 (http://imglib2.net) is licensed under BSD. Source code is available in public git repositories at http://fiji.sc/srv/git/imglib.git and https://github.com/imagej/imglib. ImgLib2 is a core part of the scijava effort http://scijava.github.com. We describe the core concepts of ImgLib2, discuss its performance, and demonstrate a number of practical examples.
ImgLib2, generic programming, n-dimensional image processing
Presenting author: Stephan Saalfeld
Organisation: Max Planck Institute of Molecular Cell Biology and Genetics, Dresden, Germany
co-authors: Pavel Tomancak, Tobias Pietzsch, Stephan Preibisch
Hardware and Software Requirements:
Knowledge of participant: