SwisTrack

SwisTrack is an open-source tool for tracking robots and other objects using a camera or a recorded video as input source. It has mainly been developed by Distributed Intelligent Systems and Algorithms Laboratory (DISAL) and the LPM Vision Group at EPFL in Lausanne, Switzerland.

Architecture
SwisTrack is written in C++ using the wxWidgets library for GUI and networking. It uses Intel's OpenCV library for fast image processing and contains interfaces for USB, FireWire and GigE cameras, as well as AVI files.

Since version 4, SwisTrack's pipeline is built by the user from components which interact with each other and pass data through data channels. There are six data channels: input, grayscale image, color image, binary image, particles and tracks. Individual components work only with some of the data channels. Each data channel that the component works with can be in one of the three modes: read, write and edit (i.e. both read and write).

In the typical pipeline, the image is transformed into a binary image, there objects are detected as blobs which are converted into particles, and the particles form tracks by comparing consecutive frames. Blob is a set of connected pixels with the same value.

SwisTrack outputs data either by writing into a tab-separated file or by using the TCP interface with the NMEA 0183 protocol. The latter also allows the remote controlling.