HUMIM.org: Human Motion Imitation
Tracking, Modeling, Learning and Simulation of Human Motion

Software for Articulated Tracking

Example output
Figure 1: Example result of the output attained using the tracking software.

Several of the papers published as part of the HUMIM project uses in-house developed software for estimating the pose of a person in every frame of a movie. In order to fully publish the details of this software, we make the source available to everybody.

Download and Documentation

The software is available under the GNU General Public License (version 3 or later), which allows you to study and modify the software as much as you please.

You can download the software from here:

Some basic documentation is available as a technical report. We also provide Doxygen generated documentation, which provide more details of the individual classes.

The software has been developed on Linux, but also works on Mac OS X 10.6 with Xcode 3.2.6. Compiling the library requires at least gcc version 4.2.1. It should run on Windows with small modifications, but as none of the developers use Windows, this might require a bit of work. The tracker depends on several standard libraries, that you need to install in order to compile the tracker. These are

On Linux these should be easy to install using the system package manager and on OS X all relevant libraries can be installed using MacPorts.

Notes for Mac users: On MacOSX 10.6 and above you do not need to install Atlas as the Accelerate framework can be used instead. Also, the glut framework that comes with Xcode can be used. If you install ANN using MacPorts, you might find this CMake configuration file handy.

To compile the software simply use CMake to generate the build files and then go for it! On Unix-like operating systems this boils down to running

        ccmake .
        make
      

from the command line.

Running the Software

When compiled, you will have the following executables

To run a program you need a configuration file that sets parameters, data paths, output paths, etc. The name of this file should be given as first input to all programs. The tracking programs also support an optional second argument --playback that replays previous tracking data rather than perform the tracking again. An example configuration file can be seen here

     observation_type          point_cloud
     state_type                angle_state
     data_template             hands2_060410/image_%.3d.points
     left_image_template       hands2_060410/image_2_%.3d.png
     background_image          hands2_060410/Background_2.png
     intrinsic_matrix          838.08544922 838.90100098 496.17398071 392.37945557
     data_start_idx            1
     output_directory          output
     num_particles             150
     initial_pose              config/hands2_060410_1.pose
     pred_noise                0.15
     convex_lambda             0.05
     external_view             config/hands2_060410.view
     bone_appearance           config/soren_thin_appearance_milimeters_cylinder.txt
     skeleton_xsf              config/soren_milimeters_cylinders.xsf
     measure_threshold         2
     measure_variance          0.1
     mocap_filename            hands2_060410/hands2_060410.mocap     
     

In general you should not expect this code to be something you just run and get a result. It is designed for development of new tracking techniques and not for developing applications of tracking. So some hacking is to be expected to get you what you want.

You can download example data from here. To use it, modify the configuration file distributed with the source code to point at the right paths and use whatever parameters you prefer.

How to Cite this Software

If you use this software in academic work, we would appreciate if you say so in your papers. If you just use the basic particle filter classes you can cite the technical report. If you use specific priors, we would appreciate if you cite the paper that introduces the prior in question. The details of the specific papers are given in the Doxygen documentation for the individual classes.

Briefly put, you can use the following papers for the following classes: