Digital video analysis enables us to extract the trajectories of individual colloidal microspheres from a video tape of their microscope images. The time evolution of the distribution of particles,
then can be used to calculate quantities of interest, some examples of
which we discuss in later sections.
In eqn. (1), is the location of the i-th
particle in a field of N particles at time t.
The software we have developed to extract
from a sequence of digital images consists
of five logical steps:
correcting imperfections in the individual images,
locating candidate particle positions,
refining these positions,
discriminating ``false'' particles,
and finally linking the time-resolved particle locations into trajectories.
In this section, we discuss our solutions to these interrelated
problems.
The difficulty of measuring can vary greatly
from system to system.
For instance, images of
a dilute suspension whose particles are geometrically
confined at the microscope's focal plane are simpler to process than
pictures of a
dense suspension of colloid moving in three dimensions.
In the latter case, the tracking
algorithm has to deal with the changing appearance
of the spheres as they move in and out of focus.
Furthermore, it has to distinguish marginally focused particles
from noise.
The need to locate a large number of spheres by processing the much larger
number of pixels in each of a stream of images also places stringent efficiency
constraints on the code.
The set of algorithms presented below
reliably processes ``easy'' and ``difficult'' images alike, and does
so with minimal intervention in the form of adjustable
tuning parameters.
Our image processing system is implemented in IDL, a programming language optimized for visual data analysis[9]. We have found IDL to be more convenient than conventional languages such as C/C++ or Fortran for rapidly developing, testing, and modifying image analysis software. Although IDL is an interpreted language, its performance on typical tasks such as matrix convolutions is comparable to that of compiled languages thanks to the availability of highly optimized analysis modules and array processing primitives.