The following tool/codes are provided to increase the applicability of the acquired data. Most of them are in Matlab. Some routines are written in C++ and compiled by mex for efficiency. The comments in the code contain detailed usage instructions. Please note this is "research-type" code and may have bugs; use it at your own risk.

Synthesis Tool

This is a simple interactive tool to synthesize large texture patterns from the acquired
contamination patterns. The synthesized
texture, in which each channel corresponds to one kind of
parameter for the contaminant, can be mapped on arbitrary
transparent objects for rendering.
The following image shows the interface.
We first build a database by selecting a collection of prototypes
for each of the three categories of contamination (dust, dirt, and
lipids) from the measured data. For synthesis, a user selects prototypes
from each category for the desired contamination pattern and
specifies the size of the output texture. For example, the desired
pattern might be a combination of fingerprints or smudges, some
stripes of water deposit, and a layer of dust. The tool then
synthesizes a contamination layer for each prototype individually.
For dust, we use Image
Quilting for synthesis. For
lipids (fingerprints), we randomly transform (scale and rotate)
the prototype and randomly tile several copies on the canvas. For
dirt, we use a similar random placement but we limit the range of
rotation and translation since the water stripes usually are on
the top of an image. The three synthesized layers are then
alpha-blended together to generate the final texture. A user can
control the amount and the range of transformation for each
prototype and also add/remove more prototypes interactively.