The purpose of ImgLib, a Generic Java Image Processing Library, is to provide an abstract framework enabling Java developers to design and implement data processing algorithms without having to consider dimensionality, type of data (e.g. byte, float, complex float), or strategies for data access (e.g. linear arrays, cells, paged cells).
This kind of programming has significant advantages over the classical way. An algorithm written once for a certain class of Type will potentially run on any compatible Type, even if it does not exist yet. Same applies for data access strategies and the number of dimensions.
We achieve this abstraction by accessing data through Iterators and Type interfaces. Iterators guarantee efficient traversal through pixels depending on whether random coordinate access is required or just all pixels have to be visited once, whether real or integer coordinates are accessed, whether coordinates outside of image boundaries are accessed or not. Type interfaces define the supported operators on pixel values (like basic algebra) and hide the underlying basic type from the algorithmic implementation.
Imglib provides interfaces to ImageJ for importing, exporting and visualizing data.
As a consequence of its generic aims, the library allows and requires a different way of designing and implementing algorithms. We will first give an overview of ImgLib and its basic design elements and will then hands-on implement a selection of simple algorithms to mediate the way of programming.
imglib, generic programming, image processing, java, fiji
Presenting author: Stephan Preibisch and Stephan Saalfeld
Organisation: Max Planck Institute of Molecular Cell Biology and Genetics, Dresden, Germany
co-authors: Pavel Tomancak
Duration: 90 min
Hardware and Software Requirements: Participants should have a computer with a Sun-Java6-compatible Java compiler, and an IDE with context sensitive syntax-highlighting and auto-completion, Eclipse suggested.
Knowledge of participant: Participants should be familiar with programming in Java, detailed knowledge of ImageJ is not required.