Holographic Video Microscopy
Locating and characterizing colloidal spheres with Lorenz-Mie Microscopy
This tutorial describes the use of the SPHERETOOL software suite to analyze holographic video microscopy images of colloidal spheres.  SPHERETOOL is an interactive front end to routines written in the IDL programming language that fit experimentally recorded holograms to predictions of the Lorenz-Mie theory of light scattering.  Each fit yields the sphere's three-dimensional position relative to the microscope's focal plane, as well as its radius and its complex refractive index.
When performed correctly, these fits offer nanometer resolution for a sphere's position and radius, and part-per-thousand resolution for its refractive index.
This tutorial assumes that you already have a working holographic video microscope and can record holographic images in an appropriate digitized format.
Part 0: Installing SPHERETOOL:
0.  SPHERETOOL is written in the IDL programming language, and requires a licensed copy of IDL to run.  There is an open source clone of IDL called GDL, although SPHERETOOL has not been tested against GDL.
1. SPHERETOOL and associated routines are available from our software page.
Download and unpack the gzipped tar archive into a directory in your IDL search path. You also will need the Utility package.
2. SPHERETOOL makes use of the MPFIT suite of Levenberg-Marquardt nonlinear least-squares fitting routines, and PLOTIMAGE, both of which are available from Craig Markwardt's IDL software site.
3. SPHERETOOL optionally uses GPUlib for GPU accelerated array operations. GPUlib may be downloaded here, and requires appropriate computer hardware.
Part 1: Preparing your holographic image for analysis
The software provided are for spherical objects. (If you need scattering patterns from other shapes and special types of particles, you can consider contacting us and do a collaboration with us.)
First, read in the image file
IDL> a=read_image('demo.tif')
IDL> help, a
A               BYTE      = Array[640, 480]
IDL> plotimage ,bytscl(a)
The individual spheres appear as concentric circular diffraction fringes in this image. However, the image also has lots of interference artifacts and suffers from non-uniform brightness.  It's also of type BYTE.  To fix all of these problems, we normalize the image by a background image.
You might acquire a background image of your field of view by taking a holographic snapshot before moving your particles into the field of view.  Alternatively, if your particles are moving around reasonably rapidly, you can create a background image by computing the median of a stack of images.
IDL> buf=read_gdf('demo.gdf')
IDL> help, buf
BUF               FLOAT     = Array[640, 480, 100]
Although each of the individual snapshots looks like the first, their median is an estimate
of the background:
Now we can normalize the original hologram:
IDL> c = float(a)/(b > 1)
IDL> help, c
C               FLOAT     = Array[640, 480]
IDL> plotimage, bytscl(c)
Now, we are ready....
Part 2: Using SPHERETOOL
IDL> device, decomposed=0
IDL> spheretool, c, mpp= 0.101
The first command is necessary for IDL to treat colors correctly on our system.
The mpp keywords sets the microscope’s magnification in micrometer per pixels. Each pixel on our camera has an effective size of 101 nanometers.
After the second command is issued, a new window will appear on the screen:
This shows the IMAGE panel of the SPHERETOOL user interface. It consists of the normalized holographic image, and text boxes for parameters setting the geometry of a fit. The current estimate for the particle’s centroid is xc and yc, measured in pixels. The size of the window within which to fit is in the radius box, again measured in pixels. The vacuum wavelength of the laser light is LAMBDA, measured in micrometers. The microscope’s magnification in micrometers per pixel is in the mpp box.
The default center is the center of the image, and the default radius describes the largest square that fits in the image.
The default wavelength is 632.8 nm for He-Ne laser.
The default magnification is 135 nm per pixel.
You can fill each of these data boxes in by hand. Alternatively, use your cursor to click on the center of one of the sphere’s images. The text boxes will update accordingly.
Once you have identified a sphere, click on the PROFILE tab to look at the azimuthally averaged holographic image.
This panel shows the normalized intensity of the hologram, average over angles around the present estimate for the sphere’s center. The dashed curves shows the standard deviation relative to that average as a function of distance from the centroid.
The bold green curve is the present estimate for the Lorenz-Mie model based on default parameters.
The lower section provoides controls to adjust all the parameters in the Lorenz-Mie model. These are:
  1. ap: the radius of the particle in micrometers
  2. zp: the particle’s height above the microscope’s focal plane in pixels
  3. np: the real part of the particle’s refractive index
  4. kp: the particle’s extinction coefficient, which is rated to the imaginary part of the refractive index.
  5. nm: the refractive index of the medium
  6. alpha: the relative intensity of the illumination at the particle’s position
In addition, there is a row of push buttons that allow you to precent particular parameters from varying. By default, SPHERETOOL assumes that the particle’s radius, height, and refractive index are all unknown, and that the medium’s refractive index is known, that the background illumination is perfectly uniform, and that the particle is perfectly dielectric, so that kp=0. You will want to click the DEINTERLACE button if your holograms were obtained with an interlaced video camera. This improves the accuracy and greatly increases the speed.
You can change which parameters are to be considered fixed. The only limitation is that np and nm should not both be allowed to vary.
Slider the sliders until the green curve fits between the dotted lines:
Your holograms may peter out beyond a certain radius. In this example, the hologram contains very little information beyond a radius of 100 pixels. Go back to the IMAGE tab and reduce the RADIUS parameter accordingly.
Once you are convinced that your initial guess is reasonable, click on the plot with your mouse to begin the fitting process:
During the fit, SPHERETOOL displays a close-up view of the hologram that is being fit. Once the fit is completed, it returns to the azimuthally averaged plot, with all the fitting parameters updated.
The final results will be displayed in the terminal windows as
 xc=     -0.58034891 ± 0.011264334
 yc=        1.0768762  ± 0.010824111
z  =         107.51925  ± 0.048642542
ap=       0.80001954 ±  0.0014313602
np=       1.5643764   ±  0.00068769123
alpha=  0.67380000 ±  -0.0000000
nm=       1.3328000  ±  -0.0000000
Part 3: Saving Results and Procedure
SPHERETOOL lets you save these results as a GDF file. From the menubar:
File-> Save Values...
calls up a dialog box that lets you select a file name for storing the results.
Once you have successfully analyzed one image of one sphere, SPHERETOOL can create a preconfigured IDL program to analyze more similar movies.
From the menubar:
File->Save Procedure...
calls up a dialog box to save the IDL program. The resulting IDL procedure us a starting point for analyzing a series of holograms. Your will need to modify it before running it on your data. Once you have customized it, this routine will automatically track your particle through a sequence of images.
If you still have anymore queries, please feel free to visit our FAQ page for more information.