Skip to content

imagingbook/imagingbook-public

Repository files navigation

frankenburg-1918-960x200k.png

imagingbook - Main Source Code Repository

Maven Central

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 main imagingbook library with implementions of image processing algorithms, associated data structures and utility code. Users interested in applying imagingbook 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 main imagingbook library to minimize third-party dependencies.
  • imagingbook-pdf
    PDF-related library code, separated from the main imagingbook 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 main imagingbook library modules. Includes code for basic file handling, managing resources and automatically compiling plugins.config files 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 of ImageJ plugins related to individual book chapters (including materials from previous editions) and tools for working with ImageJ (e.g., exact zooming and PDF-export).
  • imagingbook_plugins_demos
    Plugins demonstrating the use of various technical concepts in ImageJ and the imagingbook library.

API Documentation

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:

Use With Maven

Maven Central

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.1.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 the imagingbook library, all plugin sets listed above, packaged in a complete ImageJ runtime setup.
  • imagingbook-maven-demo-project
    This is a minimal Maven setup for using the imagingbook library with ImageJ. 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/*.jarImageJ/jars
  • ImageJ/plugins/*.jarImageJ/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: