motmot - overview

Motmot is a collection of modular packages for the real time collection and analysis of uncompressed digital images from a variety of sources. The primary language is Python, but the low-level camera access library (cam_iface) is cross-platform C, and the saved movie format also has MATLABĀ® bindings.

A primary goal of these libraries and applications is speed. Today's CPUs and cameras are fast and getting faster. We need a cross-platform, open source framework to make the best use of the resources for machine vision tasks. We routinely use these libraries to process data from cameras recording 100 MB per second.

Where does the name motmot come from? In short, it grew out of a previous project named "kookaburra", and motmot is a bird related to the kookaburra (both are related to the kingfisher). See http://en.wikipedia.org/wiki/Momotidae

Applications built on motmot packages

fview

The fview application, part of motmot, makes use of these components to create a realtime camera viewer program that can record videos to disk. It includes a convenient plugin mechanism by which realtime video analysis can be performed. fview runs on Linux, Mac OS X, and Windows. This application is essentially a GUI frontend for cam_iface built using the wx toolkit. You may be interested in visiting the screenshot directory. Here is a screenshot of fview running on Mac OS X using an iSight camera:

source:/trunk/fview/screenshots/homepage.png

Here is another screenshot of fview and the flytrax realtime image analysis plugin.

source:/trunk/fview/screenshots/plugin-flytrax-linux-639x437.png

Other software using motmot

http://mosca.caltech.edu/mtrax/screenshots/mtrax-screenshot-tiny.jpg Mtrax

  • Mtrax is multiple fly tracking software to enable quantitative analysis of fly behavior. From recorded videos, it tracks flies using a background/foreground model to track positions and orientations of individual flies over time. Identies of flies are maintained for long durations, with special care given to events such as close contact between flies and rapid movements. Mtrax is free, open-source software.
  • Flydra is a realtime tracking system for performing marker-less tracking of moving image features, such as flying insects or birds. This multi-camera system uses, at its core, the motmot packages running simultaneously on multiple computers connected to multiple cameras to enable high spatial and temporal resolution in a large tracking volume with standard commercial components.
  • flytrax (screenshot above) is a simple realtime tracking system to track moving image features (a walking fly) using a simple but fast background-subtraction algorithm. Flytrax is freely available, open-source software distributed as part of the motmot package and functions as a plugin for fview.

subpackages contained within motmot

package description svn
(entire package ) (All of motmot) svn
cam_iface camera interface C API and Python wrapper
pycamiface Python wrapper of cam_iface
FastImage Pyrex based wrapper of Intel's Integrated Performance Primitives (IPP) Library svn
FlyMovieFormat Code for manipulating .fmf movies. Includes Python (read/write) and MATLABĀ® (read-only) svn
flytrax fview plugin for tracking 2D points in realtime and saving data and small images svn
fview extensible GUI to use cam_iface svn
fview_PLUGIN_TEMPLATE blank fview plugin to use as template for new plugins
fview_c_callback example fview plugin that calls pure C code
fview_live_histogram example fview plugin that calls pure Python code
imops Python extension module to manipulate image codings svn
motmot_utils Facilitate versioning and configuring of motmot packages svn
posix_sched Python extension module to boost priority in POSIX systems
pygarrayimage transfer Python objects supporting the array interface to OpenGL textures svn
pygxinput use XInput devices with pyglet svn
realtime_image_analysis Implements background subtraction and 2D feature extraction using FastImage svn
wxglvideo wxPython OpenGL interface for videos svn
wxvalidatedtext validated integer/float text entry field for wxPython svn
wxvideo wxPython interface for videos svn
wxwrap wrapper to allow use of multiple wxPython versions
trackem multiple point realtime tracker svn

Download and install

Subversion repository: Our source code is kept in the svn repository. https://code.astraw.com/motmot/trunk/ (On Windows, you may be interested in Tortoise SVN.)

Ubuntu packages

Pre-compiled packages for most of motmot are available at http://debs.astraw.com For example, if you're running Ubuntu 8.04 (Hardy), add the following line to /etc/apt/sources.list:

deb http://debs.astraw.com/ hardy/

Here are step-by-step instructions using the GUI:

  1. Start Synaptic (System->Administration->Synaptic Package Manager).
  1. Open the "Software Sources" dialog (Settings->Repositories). In the "Ubuntu Software" Tab, make sure the "universe" repository is enabled.
  1. Go to the "Third-Party Software" Tab. Click "Add..." and then type "deb http://debs.astraw.com/ hardy/".
  1. Now, back in the main Synaptic window, click the "Reload" button. You should get an error about a bad GPG signature at this point.
  1. Add Andrew Straw's repository signing keyring to get rid of this error by clicking the "Search" button and typing "astraw-keyring" in the Search field. Then click the "Search" button.
  1. In the small empty square next to "astraw-keyring", click once and select "Mark for installation". Accept the warning and click the "Apply" button. After the installation is finished you will not get more GPG signature errors.
  1. Click the "Reload" button again to get the repository information once more and verify with the newly installed keyring.
  1. Now, install the python-motmot-fview package by following steps 5 and 6 again for "python-motmot-fview" instead of "astraw-keyring".
  1. If you are using a firewire camera, add your user to the "disk" group. Open a terminal window (Applications->Accessories->Terminal), type "sudo adduser <your_user_name_here> disk" and then enter your password when prompted. If you did this, you will need to log out and log in again for the new group membership to take effect.

10. Start fview (Applications->Sound & Video->fview).

Mac OS X

motmot is known to work on Intel Mac OS X (10.4) computers. Until installers available, the installation must be done from the source code.

Microsoft Windows

motmot is known to work on Microsoft Windows XP. Until installers available, the installation must be done from the source code.

License

See the LICENSE.txt file within each subpackage. In general, this code is released under a BSD-like license.

Mailing list

To stay up to date, ask questions, and share information, join the motmot email list. The archives are also online.

Related Software

Similar open source libraries

See the Augmented Reality Toolkit, http://muonics.net/, unicap, OpenCV, and libcam for lots of interesting and fun stuff.

GenICam(TM) and GigEVision(TM)

Another project with similar goals to motmot/camiface is GenICam(TM) http://www.genicam.com/ . Primary differences between camiface and GenICam(TM) include the following: 1) camiface has been developed by a single individual to support a limited number of camera features from a limited number of cameras and is necessarily narrower in scope than an API meant to encompass every available feature on every available camera. 2) camiface operates using existing drivers rather than creating a new implementation of the driver layer.

One implementation of GenICam(TM) appears to be Basler's Pylon. http://www.baslerweb.com/beitraege/beitrag_en_53074.html

For a description of GigEVision(TM) see http://www.machinevisiononline.org/public/articles/index.cfm?cat=167

For an discussion of these libraries from an open source perspective, see this thread on the libdc1394-devel mailing list.

Similar closed source libraries/applications

Scientific papers which used the motmot suite of tools

John A. Bender and Michael H. Dickinson (2006) [http://jeb.biologists.org/cgi/content/full/209/16/3170 Visual stimulation of saccades in magnetically tethered Drosophila]. Journal of Experimental Biology.

John A. Bender and Michael H. Dickinson (2006) [http://jeb.biologists.org/cgi/content/full/209/23/4597 A comparison of visual and haltere-mediated feedback in the control of body saccades in Drosophila melanogaster]. Journal of Experimental Biology.

Seth A. Budick, Michael B. Reiser, and Michael H. Dickinson (2007) The role of visual and mechanosensory cues in structuring forward flight in Drosophila melanogaster. Journal of Experimental Biology.

Dependency list

The following list of dependencies was generated automatically by the motmot_utils/debian_show_depends.sh script.

These were generated on an Ubuntu system, but will give you a rough feel for other systems, too.

Dependencies for building motmot packages on Ubuntu

  • camiface Version: 0.4.dev98-0ads1 Build-Depends: python-all-dev (>= 2.3.5-11), python-setuptools (>= 0.6b3-1), debhelper (>= 5.0.38), python-dev, python-pyrex (>= 0.9.4.1+lxml0.9.5.1a), g++, scons, libdc1394-dev, libdc1394-2-dev, libopenthreads-dev, python-central (>= 0.5.6), python-motmotutils, libprosilica-gige-dev
  • motmot.utils Version: 20071227.00-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
  • posixsched Version: 1.01-1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6), libc6-dev
  • motmot.fastimage Version: 0.5.2~dev-r362-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6), python-pyrex, libipp-dev
  • motmot.flytrax Version: 0.5.3~dev-r362-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
  • motmot.fview Version: 0.5.1~dev-r358-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
  • motmot.fview.livehistogram Version: 0.5.0~dev-r381-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
  • motmot.fview.udplogger Version: 0.4~dev-r376-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
  • motmot.imops Version: 0.5.2~dev-r348-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6), python-pyrex, python-numpy (>= 1:1.0.3)
  • motmot.camiface Version: 0.4.1~dev-r345-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6), libcamiface-dev (>= 0.4.dev341), python-pyrex (>= 0.9.4.1+lxml0.9.5.1a)
  • motmot.realtimeimageanalysis Version: 0.5.3~dev-r362-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6), python-motmot-fastimage, libipp-dev, python-pyrex, python-numpy, python-setuptools
  • motmot.trackem Version: 0.4.1~dev-r362-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
  • motmot.wxglvideo Version: 0.6.0-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
  • motmot.wxvalidatedtext Version: 0.5.1~dev-r350-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)
  • motmot.wxvideo Version: 0.5.2~dev-r382-0ads1 Build-Depends: python-setuptools (>= 0.6b3-1), python-all-dev (>= 2.3.5-11), debhelper (>= 5.0.38), python-central (>= 0.5.6)

Dependencies for running motmot packages on Ubuntu

  • libcamiface Version: 0.4.dev367-0ads1 Depends: libc6 (>= 2.6-1), libdc1394-13, libdc1394-2, libgcc1 (>= 1:4.2.1), libraw1394-8, libstdc++6 (>= 4.2.1), libprosilica-gige0
  • python-motmot-utils Version: 20071230.00-0ads1 Depends: python2.5, python, python-central (>= 0.5.8), python-setuptools
  • python-posixsched Version: 1.01-0ads5 Depends: python2.5, python-central (>= 0.5.8), python (<< 2.6), python (>= 2.4), libc6 (>= 2.5-0ubuntu1)
  • python-motmot-fastimage Version: 0.5.2~dev-r379-0ads1 Depends: python-central (>= 0.5.8), python (<< 2.6), python (>= 2.4), libc6 (>= 2.6-1), libipp, python-numpy
  • python-motmot-flytrax Version: 0.5.3~dev-r380-0ads1 Depends: python2.5, python, python-central (>= 0.5.8), python-motmot-fview, python-motmot-realtimeimageanalysis, python-motmot-wxvideo, python-motmot-wxvalidatedtext, python-scipy
  • python-motmot-fview Version: 0.5.2~dev-r379-0ads1 Depends: python2.5, python, python-central (>= 0.5.8), python-motmot-camiface, python-motmot-flymovieformat, python-motmot-wxglvideo, python-posixsched, python-setuptools, gksu, python-motmot-wxvalidatedtext, python-motmot-utils, python-pyglet, python-pygarrayimage
  • python-motmot-fview-livehistogram Version: 0.5.0~dev-r381-0ads1 Depends: python, python-central (>= 0.5.8)
  • python-motmot-fview-udplogger Version: 0.4~dev-r376-0ads1 Depends: python, python-central (>= 0.5.8)
  • python-motmot-imops Version: 0.5.2~dev-r379-0ads1 Depends: python-central (>= 0.5.8), python (<< 2.6), python (>= 2.4), libc6 (>= 2.6-1), python-numpy (>= 1:1.0.3), python-setuptools
  • python-motmot-camiface Version: 0.4.1~dev-r379-0ads1 Depends: python-central (>= 0.5.8), python (<< 2.6), python (>= 2.4), libc6 (>= 2.6-1), libcamiface
  • python-motmot-realtimeimageanalysis Version: 0.5.3~dev-r379-0ads1 Depends: python-central (>= 0.5.8), python (<< 2.6), python (>= 2.4), libc6 (>= 2.6-1), python-motmot-fastimage, python-numpy
  • python-motmot-trackem Version: 0.4.1~dev-r362-0ads1 Depends: python, python-central (>= 0.5.8), python-motmot-fview, python-motmot-fastimage, python-motmot-wxvalidatedtext, python-numpy, python-motmot-imops, python-motmot-flytrax
  • python-motmot-wxglvideo Version: 0.6.1~dev-r384-0ads1 Depends: python, python-central (>= 0.5.8), python-opengl, python-wxgtk2.8, python-motmot-imops, python-setuptools, python-pygarrayimage, python-pyglet
  • python-motmot-wxvalidatedtext Version: 0.5.1~dev-r350-0ads1 Depends: python2.5, python, python-central (>= 0.5.8)
  • python-motmot-wxvideo Version: 0.5.2~dev-r382-0ads1 Depends: python, python-central (>= 0.5.8), python-motmot-imops