No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Multi Object TLD

Multi Object TLD is an Open Source C++ implementation of the TLD algorithm, which was developed and introduced by Zdenek Kalal. Like the original (OpenTLD, see, it is used to track and learn arbitrary, previously unknown objects in a video stream from initially defined bounding boxes.

One distinct feature is its ability to efficiently handle more than one object, since some of the calculations can be reused, provided that the object boxes have the same aspect ratio.
It also allows some very basic level of color recognition abilities, which can for example be used to distinguish different sides of a Rubik's cube, or other structurally similar looking objects.

Another interesting characteristic is that no third party libraries (like OpenCV for instance) are used in the core library. So it is especially handy for portable use or on platforms where an OpenCV installation would be inconvenient (or if you're too lazy to compile it). However, some of the included examples use external libraries like SDL and OpenCV for display purposes or camera input handling.

There are three example programs included:

- batchExample: the most basic one. It can be used to automatically load a sequence of images (including a definition of the initial bounding box(es)) from any folder (for example from the TLD_dataset). The tracking results are written into a textfile.
If the flag OUTPUT_IMAGES is set to 1 visual results are saved to the output folder as ppm images, which might slow down the computation and therefore should be disabled for runtime benchmarking.
The input and output folder may be provided as optional command line arguments (default "input/motocross" and "output").

- sdlExample: Like in the batchExample, files are loaded from a folder. However, the images (including debug information containing patches, detection candidates, clusters and tracking points per frame) are both saved to disk and printed out on the screen. Additionally, arrow keys, pgdn, pgup, home, end can be used to manually navigate through the image sequence if required.
Also receives the file input and output folder as command line arguments.
Since file operations can be quite expensive, this example is not suited for runtime benchmarking. 
This example requires SDL and SDL_image. 

- camExample: Receives its input from a connected webcam. Object boxes can be drawn in real time using the mouse. Toggling of patches, detection candidates, clusters and tracking points in the output image can be done with [P] [D] and [T].
This example requires OpenCV and Highgui.

A more detailed usage description and explanation of configuration settings can be found in the included Doxygen API documentation.

The examples were tested in Linux (Ubuntu, 32 and 64 bit) and Windows (XP and Vista, with Visual Studio 2010, excluding the OpenCV version). 

Multi Object TLD was programmed by Christian Lutz and Thorsten Engesser as part of a student project supervised by Martin Riedmiller, Sascha Lange and Stefan Welker.