Maven is the project management behind OpenIMAJ. Therefore, OpenIMAJ has been released on a publicly visible maven repository and can be included into any existing java maven project through addition of requirments in the project's pom.xml. This page assumes knowledge of maven, for further information of maven basics please consult the maven documentation
To successfuly use OpenIMAJ as a library in your maven project you must first define the repository which contains the compiled OpenIMAJ jar files and then add the exact modules you require in your project's pom.xml. This section provides details for the repository and pom details for each submodule
The details for the OpenIMAJ repository are provided below
<repositories> <repository> <id>OpenIMAJ maven releases repository</id> <url>http://maven.openimaj.org</url> </repository> <repository> <id>OpenIMAJ maven snapshots repository</id> <url>http://snapshots.openimaj.org</url> </repository> </repositories>
To use this repository append this to the projects element of your project's pom.xml
The individual submodules of OpenIMAJ may be included into your project using the following format. This is the dependency for including the core OpenIMAJ submodule to your project. It must be appended to your project's pom.xml dependencies element.
<dependency> <groupId>org.openimaj</groupId> <artifactId>core</artifactId> <version>1.0.6-SNAPSHOT</version> <scope>compile</scope> </dependency>
Note that above we are using the SNAPSHOT version of 1.0.6, another release will be made soon!
To include any other module simply change the artifactId to the name of the required module. The modules available are summarised below:
core. Core library functionality concerned with general computer science problems rather than multimedia specific functionality. Includes I/O utilities, randomisation, hashing and type conversion.
feature. Core notion of features, usually denoted as arrays of data. Definitions of features for all primitive types, features with location and lists of features (both in memory and on disk).
image. Core definitions of images, pixels and connected components. Also contains interfaces for processors for these basic types.
video. Core definitions of a video type, and functionality for displaying videos.
math. Mathematical implementations used across the library including geometric, matrix and statistical operators.
processing. Implementations of various image, pixel and connected component processors (resizing, convolution, edge detection, ...).
feature-extraction. Methods for the extraction of low-level image features, including global image features and pixel/patch classification models.
local-features. Methods for the extraction of local features. Local features are descriptions of regions of images (SIFT, ...) selected by detectors (Difference of Gaussian peaks, Harris corners, ...).
faces. Implementation of face detectors, face part detectors and descriptors.
nearest-neighbour. Brute force and KD-Tree implementations of exact and approximate KNN.
clustering. Various clustering algorithm implementations for all primitive types including random, random forest~RandomForest, K-Means (Exact, Hierarchical and Approximate) and RAC.
core-hadoop. The core Hadoop functionality providing reusable wrappers to access and create sequence-files and map-reduce jobs.