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:
Here is another screenshot of fview and the flytrax realtime image analysis plugin.
Other software using motmot
- 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:
- Start Synaptic (System->Administration->Synaptic Package Manager).
- Open the "Software Sources" dialog (Settings->Repositories). In the "Ubuntu Software" Tab, make sure the "universe" repository is enabled.
- Go to the "Third-Party Software" Tab. Click "Add..." and then type "deb http://debs.astraw.com/ hardy/".
- Now, back in the main Synaptic window, click the "Reload" button. You should get an error about a bad GPG signature at this point.
- 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.
- 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.
- Click the "Reload" button again to get the repository information once more and verify with the newly installed keyring.
- Now, install the python-motmot-fview package by following steps 5 and 6 again for "python-motmot-fview" instead of "astraw-keyring".
- 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
- Streams 5 by IO Industries
- StreamPix and the Hermes API by Norpix
- The MATLAB Image Acquisition Toolbox.
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



