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.
The source code is built as a modular Maven project, which includes the following 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 mainimagingbook
library with implementions of image processing algorithms, associated data structures and utility code. Users interested in applyingimagingbook
functionality 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 mainimagingbook
library to minimize third-party dependencies. - imagingbook-pdf
PDF-related library code, separated from the mainimagingbook
library 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 mainimagingbook
library modules. Includes code for basic file handling, managing resources and automatically compilingplugins.config
files for ImageJ plugin sets.
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 ofImageJ
plugins 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 inImageJ
and theimagingbook
library.
- imagingbook-public (aggregated JavaDoc for latest build)
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:
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.xml
file:
<dependency>
<groupId>com.imagingbook</groupId>
<artifactId>imagingbook-common</artifactId>
<version>7.1.0</version>
</dependency>
Replace the number in <version>...</version>
by the most current release version found on
Maven Central.
The following preconfigured projects are available on GitHub for getting started:
- imagingbook-plugins-all
This is a ready-to-go Maven project that includes theimagingbook
library, all plugin sets listed above, packaged in a completeImageJ
runtime setup. - imagingbook-maven-demo-project
This is a minimal Maven setup for using theimagingbook
library 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).
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/jars
ImageJ/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.
Other projects using the imagingbook
library include:
- imagingbook-calibrate: Implementation of Zhang's camera calibration scheme.
- imagingbook-violajones: Implementation of Viola-Jones face detection.