The Problem

After many months of exhausting experiments you have finaly captured a video where some moving objects (viruses, beads, bacteria, cells, rats, stars... you name it) are finally behaving as they should. However, due to a complex environment, poor contrast, overlapping of particles, optical artefacts etc. you are unable to use an automated particle tracker software to extract trajectories from video. There is no other way but to manually click the particles in each frame and write down their positions. Tedious and error-prone!

The Solution

A tiny application called MVA (which stands for "Manual Video Analysis"). It allows to dynamically add and simultaneously follow the movement of multiple particles. Unfortunatelly you still have to click on each particle but the MVA takes care of image handling and position bookkeeping.


  1. Chop the video into frames using VirtualDub. The names of the output frames should include a number (with a fixed number of digits) and a minus sign (-) to separate the base name and the number, for example 'crystalA-00001.jpg', 'crystalA-00002.jpg', 'crystalA-00003.jpg' and so on.
  2. Open the first image of the sequence in MVA using "Open" button.
  3. Click on the image with right mouse button to add a particle you want to follow. A marker will appear. You can add multiple particles.
  4. Click with the left mouse button to update the position of the particle in the same frame.
  5. Use + button to move to the next frame. Click the image with the left mouse button to update the position of a particle. If the position is the same you don't have to click.
  6. When you finish click "Save results" button. For each particle it will write an ascii file that contains three columns (frame_number X_position_in_Pixels Y_position_in_Pixels).
  7. If you want work on a magnified image just change the magnification to an integer number and reload the images.


MVA Manual Video Analyser (v1.27, Windows exe, zipped, 1 Mbyte)


Please send comments, suggestions, bug reports and sailboats to natan.osterman (at) .
This work was supported by Slovenian Research Agency (Grants No. J1-2200 and No. J1-2209).