The OpenIMAJ Modules

archetypes

Maven archetypes for OpenIMAJ.

openimaj-quickstart-archetype

Maven quickstart archetype for OpenIMAJ.

openimaj-subproject-archetype

Maven archetype for creating OpenIMAJ subprojects with the most of the standard configuration completed automatically.

core

Submodule for modules containing functionality used across the OpenIMAJ libraries.

core

Core library functionality concerned with general programming problems rather than multimedia specific functionality. Includes I/O utilities, randomisation, hashing and type conversion.

core-image

Core definitions of images, pixels and connected components. Also contains interfaces for processors for these basic types. Includes loading, saving and displaying images.

core-video

Core definitions of a video type and functionality for displaying and processing videos.

core-audio

Core definitions of audio streams and samples/chunks. Also contains interfaces for processors for these basic types.

core-math

Mathematical implementations including geometric, matrix and statistical operators.

core-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).

core-experiment

Classes to formally describe experiments and evaluations, with support for automatically evaluating their results.

core-citation

Tools for annotating code with publication references and automatically generating bibliographies for your code.

core-aop-support

Core support for Aspect Oriented Programming and Bytecode manipulation as used in core-citation and core-experiment.

image

Submodule for image related functionality.

image-processing

Implementations of various image, pixel and connected component processors (resizing, convolution, edge detection, ...).

image-local-features

Methods for the extraction of local features. Local features are descriptions of regions of images (SIFT, ...) selected by detectors (Difference of Gaussian, Harris, ...).

image-feature-extraction

Methods for the extraction of low-level image features, including global image features and pixel/patch classification models.

faces

Implementation of a flexible face-recognition pipeline, including pluggable detectors, aligners, feature extractors and recognisers.

image-annotation

Methods for describing automatic image annotators.

object-detection

Support for object detection, including a haar-cascade implementation.

image-indexing-retrieval

Subproject for CBIR related components.

vector-image

Support for vector images using the Batik SVG library.

camera-calibration

Camera calibration techniques and associated code.

multiview

OpenIMAJ Multiview reconstruction and 3D imaging library.

video

Sub-modules containing support for analysing and processing video.

video-processing

Various video processing algorithms, such as shot-boundary detection.

xuggle-video

Plugin to use Xuggler as a video source. Allows most video formats to be read into OpenIMAJ.

gstreamer-video

...

audio

Submodule for audio processing and analysis related functionality.

audio-processing

Implementations of various audio processors (e.g. multichannel conversion, volume change, ...).

machine-learning

Sub-module for machine-learning libraries.

clustering

Various clustering algorithm implementations for all primitive types including random, random forest, K-Means (Exact, Hierarchical and Approximate), ...

nearest-neighbour

Implementations of K-Nearest-Neighbour methods, including approximate methods.

machine-learning

The OpenIMAJ Machine Learning Library contains implementations of optimised machine learning techniques that can be applied to OpenIMAJ structures and features.

text

Text Analysis functionality for OpenIMAJ.

nlp

The OpenIMAJ NLP Library contains a text pre-processing pipeline which goes from raw unstructured text to part of speech tagged stemmed text.

thirdparty

Useful third-party libraries (possibly originally written in other languages) that have been ported to Java and integrated with OpenIMAJ. Not all modules have the same license.

klt-tracker

A port of Stan Birchfield's Kanade-Lucas-Tomasi tracker to OpenIMAJ. See http://www.ces.clemson.edu/~stb/klt/.

tld

A port of Georg Nebehay's tracker https://github.com/gnebehay/OpenTLD originally created by Zdenek Kalal https://github.com/zk00006/OpenTLD.

ImprovedArgs4J
IREval

A modified version of the IREval module (version 4.12) from the lemur project with extensions to better integrate with OpenIMAJ. See http://www.lemurproject.org.

FaceTracker

Port of Jason Mora Saragih's FaceTracker to Java using OpenIMAJ. FaceTracker is an implementation of a facial model tracker using a Constrained Local Model.

processing-core
MatrixLib
JTransforms

JTransforms is the first, open source, multithreaded FFT library written in pure Java. Currently, four types of transforms are available: Discrete Fourier Transform (DFT), Discrete Cosine Transform (DCT), Discrete Sine Transform (DST) and Discrete Hartley Transform (DHT). The code is derived from General Purpose FFT Package written by Takuya Ooura and from Java FFTPack written by Baoshe Zhang. This version has been modified to daemonize threads and stop any application using the library waiting after execution has finished, and is based on revision 29 of the svn version of the code from 2014-05-18.

demos

Demos showing the functionality of OpenIMAJ.

demos

Demos showing the use of OpenIMAJ.

sandbox

A project for various tests that don't quite constitute demos but might be useful to look at.

touchtable

Playground for the ECS touchtable.

SimpleMosaic

Demo showing SIFT matching with a Homography model to achieve image mosaicing.

CampusView

Demo showing how we used OpenIMAJ to create a Street-View-esq capture system.

ACMMM-Presentation

The OpenIMAJ presentation for ACMMM 2011. Unlike a normal presentation, this one isn't PowerPoint, but is actually an OpenIMAJ Demo App!.

examples

Example code snippets showing specific functionalities.

SimpleOCR

Simple (numerical) OCR using template matching to extract the timestamps embedded in GlacsWeb time-lapse videos.

knowledge

Submodule for modules related to knowledge representation and reasoning.

core-rdf

Core support for the Resource Description Framework (RDF), including object-rdf mapping.

ontologies

Submodule for modules which each represent a specific ontology represented in java.

sioc
geocoder

Geocoding and reverse geocoding utilities.

test-resources

Resources for running OpenIMAJ JUnit tests.

tools

Sub-modules containing commandline tools exposing OpenIMAJ functionality.

core-tool

Core library for building openimaj tools.

GlobalFeaturesTool

A tool for extracting various global features from images.

ClusterQuantiserTool

Tool for clustering and quantising features.

LocalFeaturesTool

Tool for extracting local image features.

FaceTools

Tools for detecting, extracting and comparing faces within images.

FeatureVisualisation

Tools for visualising certain types of image feature.

CityLandscapeClassifier

Tool for classifying images as cityscapes (or images containing man-made objects) or landscapes. Based on the edge direction coherence vector.

WebTools

Tools and utilities for extracting info from web-pages.

OCRTools

Tools for training and testing OCR.

ImageCollectionTool

Tool for extracting images from collections (zip, gallery, video etc.).

SimilarityMatrixTool

A tool for performing operations on Similarity Matrices.

TwitterPreprocessingTool

Tool for applying a text preprocessing pipeline to twitter tweets.

RedditHarvester

A tool for harvesting posts and comments from reddit.

picslurper

Tool for grabbing all the images from a social media stream and holding on to some simple stats.

ReferencesTool

Tool for running an OpenIMAJ program and extracting the references for used methods and classes.

openimaj-processing

Set of tools for integrating OpenIMAJ with processing.

CBIRTools

Tools for content-based image indexing and retrieval.

hadoop

Sub-modules for integrating OpenIMAJ with Apache Hadoop to allow Map-Reduce style distributed processing.

core-hadoop

Reusable wrappers and helpers to access and create sequence-files and map-reduce jobs.

tools

Tools that provide multimedia analysis algorithms expressed as Map-Reduce jobs that can be run on a Hadoop cluster.

core-hadoop-tool

Tool for clustering and quantising features using Map-Reduce jobs on a Hadoop cluster.

HadoopFastKMeans

Distributed feature clustering tool.

HadoopDownloader

Distributed download tool.

HadoopLocalFeaturesTool

Distributed local image feature extraction tool.

SequenceFileTool

Tool for building, inspecting and extracting Hadoop SequenceFiles.

HadoopGlobalFeaturesTool

Distributed global image feature extraction tool.

HadoopClusterQuantiserTool

Distributed feature quantisation tool.

HadoopTwitterPreprocessingTool

Tool for clustering and quantising features using Map-Reduce jobs on a Hadoop cluster.

HadoopTwitterTokenTool

Tool for clustering and quantising features using Map-Reduce jobs on a Hadoop cluster.

SequenceFileIndexer

Tool for building an index of the keys in a Hadoop SequenceFile.

HadoopEXIFTool

Tool for extracting EXIF information from images on a Hadoop cluster.

SequenceFileMerger

Base for tools built on hadoop.

HadoopImageIndexer

...

streams

Sub-modules for stream provision, processing and analysis.

storm

Sub-modules for integrating OpenIMAJ with Storm to allow distrbuted stream processing.

core-storm

The main Storm dependency and some extra utility classes specific to OpenIMAJ.

tools

Tools that provide multimedia analysis algorithms expressed as Storm topology that can be run locally or on a Storm cluster.

StormTwitterPreprocessingTool

Tool for processing tweets on Storm.

core-storm-tool

Base for tools built on top of storm.

common-stream

Classes providing access to common types of streaming data (twitter, irc, wikimedia edits, etc) as well as providing methods and techniques for working with streams.

web

Sub-modules containing support for analysing and processing web-pages.

core-web

Implementation of a programatic offscreen web browser and utility functions.

webpage-analysis

Utilities for analysing the content and visual layout of a web-page.

readability4j

Readability4J is a partial re-implementation of the original readability.js script in Java. Many modifications have been made however.

twitter

The twitter project contains tools with which to read JSON data from the twitter API and process the data.

data-scraping

Utility methods and classes for extracting data and information from the web.

hardware

Sub-modules containing interfaces to hardware devices that we've used in projects built using OpenIMAJ.

core-video-capture

Cross-platform video capture interface using a lightweight native interface. Supports 32 and 64 bit JVMs under Linux, OSX and Windows.

serial-driver

Interface to hardware devices that connect to serial or USB-serial ports.

gps

Interface to GPS devices that support the NMEA protocol.

compass

Interface to an OceanServer OS5000 digital compass.

nmea-parser

Contains a parser for NMEA sentences written in Groovy.

kinect

The OpenIMAJ Kinect Library contains the core classes and native code required interface with the Kinect device.

turntable

Integration with our serially controlled turntable.

core-gpgpu
content

Libraries for multimedia content creation.

slideshow

A library for creating slideshows and presentations that can contain interactive demos that utilise all OpenIMAJ components.

animation

Code to help make an animation of data/models/etc.

visualisations

A library that contains classes for visualising various different features, such as audio and video.

ide-integration

Plugins to aid OpenIMAJ development in various IDE's.

documentation

Submodule for documentation.

tutorial

The OpenIMAJ tutorial.

tutorial-content

The content of the OpenIMAJ tutorial.

tutorial-pdf

OpenIMAJ tutorial in PDF format.

tutorial-html

OpenIMAJ Tutorial in HTML format.

tutorial-code

The source-code for the OpenIMAJ Tutorial.