Preface

OpenIMAJ is a set of libraries and tools for multimedia content analysis and content generation. OpenIMAJ is very broad and contains everything from state-of-the-art computer vision (e.g. SIFT descriptors, salient region detection, face detection, etc.) and advanced data clustering, through to software that performs analysis on the content, layout and structure of webpages.

OpenIMAJ is primarily written in pure Java and, as such, is completely platform independent. The video capture and hardware libraries contain some native code but Linux (x86, x86_64 and ARM CPUs are supported), OSX and Windows are supported out of the box (under both 32 and 64 bit JVMs). It is possible to write programs that use the libraries in any JVM language that supports Java interoperability, such as Groovy, Jython, JRuby or Scala. OpenIMAJ can even be run on Android phones and tablets.

The OpenIMAJ software is structured into a number of modules. The modules can be used independently, so if, for instance, you were developing data clustering software using OpenIMAJ you wouldn’t need to acquire the modules related to images or text. The list on the following page illustrates the modules and summarises the functionality in each component.

This tutorial aims to instruct the reader on how to get up and running writing code using OpenIMAJ. Currently the tutorial covers the following areas:

  1. Getting started with OpenIMAJ using Maven

  2. Processing your first image

  3. Introduction to clustering, segmentation and connected components

  4. Processing video

  5. Finding faces

  6. Global image features

  7. SIFT and feature matching

In the future we hope to add more content to the tutorial covering the following:

  • Basic text analysis

  • Image and video indexing using ImageTerrier

  • Compiling OpenIMAJ from source

  • Tracking features in video

  • Audio processing

  • Speech recognition

  • Hardware interfaces

  • Advanced local features

  • Scalable processing with OpenIMAJ/Hadoop

  • Machine learning

  • Building a bibliography of the techniques used in your code.