Giter Club home page Giter Club logo

motld's Introduction

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 http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html), 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.

motld's People

Contributors

tengesser avatar willyd avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.