ImgLib2 is a general-purpose, multidimensional image processing library.
It provides an interface-driven design that supports numeric and non-numeric data types (8-bit unsigned integer, 32-bit floating point, etc.) in an extensible way. It implements several data sources and sample organizations, including one single primitive array, one array per plane, N-dimensional array “cells” cached to and from disk on demand, and planes read on demand from disk.
Resources
- ImgLib2 paper
- ImgLib2 Documentation
- ImgLib2 Examples
- ImgLib2 Blog
- Image.sc forum
- ImgLib2 javadoc
- How To Migrate Code From ImgLib To ImgLib2
- “Introduction to ImgLib2” workshop
- “Advanced Programming with ImgLib2” workshop
- “I2K 2020 Introductory ImgLib2” workshop
- “I2K 2020 Advanced ImgLib2” workshop
Source code
You can find the source on GitHub.
There is also a continuous integration system that builds ImgLib2 every time the code changes.
ImgLib2 vs. ImgLib1
ImgLib1 is the previous incarnation of the library. We encourage developers to use ImgLib2 instead, and migrate existing ImgLib1 programs to ImgLib2 whenever possible.
For an explanation of how ImgLib2 has changed from ImgLib1, see the Changes from ImgLib1 to ImgLib2 page.
See the How To Migrate Code From ImgLib To ImgLib2 page for details on how to update your ImgLib1-based code to use ImgLib2.
API Version History
A history of API changes is available at: https://abi-laboratory.pro/java/tracker/timeline/imglib2/
Other links
- ImgLib2 development discussion
- ImgLib2 performance benchmarks
- ImageJ2 uses ImgLib2 as its core data model
Publication
Pietzsch, T., Preibisch, S., Tomančák, P., & Saalfeld, S. (2012). ImgLib2—generic image processing in Java. Bioinformatics, 28(22), 3009-3011.