
imagingbook - Main Source Code Repository
This repository contains the Java source code accompanying the Digital Image Processing textbooks by W. Burger and M. J. Burge, published by Springer. This software is based on ImageJ. Please visit our main website imagingbook.com for more information.
Index terms: digital image processing, computer algorithms, Java, ImageJ, textbook support.
Repository Structure
The source code is built as a modular Maven project, which includes the following modules:
Library and Data Modules
These “library-only” modules are packaged as JAR files and typically imported as Maven
dependencies. They may also be copied manually to ImageJ’s jars/ directory
(see Use Without Maven below):
imagingbook-common
This is the mainimagingbooklibrary with implementions of image processing algorithms, associated data structures and utility code. Users interested in applyingimagingbookfunctionality in their own programs only need to import this module (artefact) as a Maven dependency.imagingbook-spectral
Library code related to spectral image processing (Fourier transforms etc.), separated from the mainimagingbooklibrary to minimize third-party dependencies.imagingbook-pdf
PDF-related library code, separated from the mainimagingbooklibrary to minimize third-party dependencies.imagingbook-sample-images
Provides a set of (JAR-packaged) sample images accessible as “named resources”, mainly used for demos and testing.imagingbook-core
Minimal (bootstrap) infrastructure required for building the mainimagingbooklibrary modules. Includes code for basic file handling, managing resources and automatically compilingplugins.configfiles for ImageJ plugin sets.
ImageJ Plugin Modules
These packages contain sets of ImageJ plugins that make use of the imagingbook library.
Each plugin set is packaged as a JAR file and may be imported as a Maven dependency
or copied manually to ImageJ’s plugins/ directory:
imagingbook_plugins_book
A collection ofImageJplugins related to individual book chapters (including materials from previous editions) and tools for working withImageJ(e.g., exact zooming and PDF-export).imagingbook_plugins_demos
Plugins demonstrating the use of various technical concepts inImageJand theimagingbooklibrary.
API Documentation
- imagingbook-public (aggregated JavaDoc for latest build)
Where to Report Problems
This software is mainly intended for educational purposes and comes as is, with no guarantees whatsoever. API changes that make the code incompatible with previous versions may happen at any time. Users are encouraged to report any enountered problems here:
- https://github.com/imagingbook/imagingbook-public/issues
Use With Maven
Using Libraries Only
Each of the above modules is available as a
Maven artifact on Maven Central.
For example, to use the imagingbook-common library, simply include the following in your
project’s pom.xmlfile:
<dependency>
<groupId>com.imagingbook</groupId>
<artifactId>imagingbook-common</artifactId>
<version>7.2.0</version>
</dependency>
Replace the number in <version>...</version> by the most current release version found on
Maven Central
Preconfigured Maven Projects
The following preconfigured projects are available on GitHub for getting started:
- imagingbook-plugins-all
This is a ready-to-go Maven project that includes theimagingbooklibrary, all plugin sets listed above, packaged in a completeImageJruntime setup. - imagingbook-maven-demo-project
This is a minimal Maven setup for using theimagingbooklibrary withImageJ. It includes some sample Java code to get started.
These projects are set up to develop and run ImageJ user plugins out of the box.
They are based on a special Maven profile in
(imagingbook-parent-pom),
which takes care of ImageJ’s particular directory structure during the Maven build.
To use, clone any of these repositories and import it as a Maven project in your favorite IDE.
If necessary, perform Maven clean and install to update all dependencies and the runtime setup.
These projects may also be used as a good starting point when working without Maven (see below).
Use Without Maven
To use the imagingbook library in an existing (non-Maven based) ImageJ environment you need to manually copy all necessary JAR files
e.g., from imagingbook-plugins-all:
ImageJ/jars/*.jar→ImageJ/jarsImageJ/plugins/*.jar→ImageJ/plugins
Then restart ImageJ. Libraries and plugins should be loaded automatically. The JAR files in
imagingbook-plugins-all
are typically from the most recent stable (“release”) build.
Related Projects
Other projects using the imagingbook library include:
- imagingbook-calibrate: Implementation of Zhang’s camera calibration scheme.
- imagingbook-violajones: Implementation of Viola-Jones face detection (project retired).