SNARK09 is now available free of charge.
See Products page for details.
What is SNARK09?
The reconstruction problem has arisen in a large number of scientific
fields (including computed tomography, electron microscopy, radiology,
radio astronomy and holography). Many different methods (algorithms)
have been suggested for its solution.
SNARK09 is a programming system for the
reconstruction of 2D images from 1D projections. It is designed
to help researchers interested in developing and evaluating
In the area of image reconstruction, researchers often desire to
compare two or more reconstruction techniques and assess their relative
merits. SNARK09 provides a uniform framework
in which to implement
algorithms and evaluate their performance. SNARK09 has been designed
to treat both parallel and divergent projection geometries and can
create test data for use by reconstruction algorithms. A number of
frequently used reconstruction algorithms are incorporated.
New in SNARK09
SNARK09 is an updated version of
SNARK05. The following are the major advances
that are incorporated into the SNARK09 package:
- capability of generating mathematically described phantoms that
- capability of applying beam hardening correction to
polychromatic X-ray projection data;
- the imagewise-region-of-interest figure of merit;
- up to 10 user implemented algorithms, at most five
- up to five user defined figures of merit.
SNARK09 is a descendant of earlier releases of
SNARK, the first one of which was written by Richard Gordon in 1970
SNARK77 and SNARK89
were specifically designed to help with the problem of reconstructing
cross-sections of the X-ray absorption coefficient distribution inside
the body from X-ray projections. SNARK93
extended this capability to include positron emission tomography, PET.
The SNARK93 programming system was
implemented in FORTRAN77. It was designed to
- be capable of dealing with many modes of data collection
(different geometrical arrangements of X-ray source and detectors,
different X-ray spectra, etc.);
- contain many of the published reconstruction algorithms;
- be capable of generating mathematically described phantoms
that realistically represent various crosssections of the human body,
together with mathematically simulated projection data of these
crosssections reflecting the characteristics (including noise) of
various possible tomography devices;
- contain subroutines to carry out work which appears to be common
to many reconstruction algorithms, so as to ease the incorporation
of additional (user-defined) algorithms;
- be capable of a variety of display modes;
- contain routines for the statistical evaluation of reconstruction
- provide a methodology for testing for statistically significant
differences between reconstruction algorithms.
The most recent previous version, SNARK05,
was implemented in C++. The following were the major advances that were
incorporated into the SNARK05 package:
- SNARK05 was implemented in C++;
- the file structures for holding projection data, phantoms and
reconstructions had been redesigned to match the capabilities of the
typical computer environment at the beginning of the third millennium
(specifically, XML headers are used in data files);
- all iterative algorithms were capable of handling image
representations that use blobs, as well as those that use pixels;
- the efficient data access ordering was a standard feature;
- all artificial restrictions on sizes were removed - the only
remaining restrictions were those imposed by the hardware, compiler
and operating system.
This website is being maintained by Joanna Klukowska and Gabor
T. Herman, whose work is supported by the National Science Foundation under Grant No. 1114901. Any opinions, findings, and conclusions or
recommendations expressed in this material are those of the authors
and do not necessarily reflect the views of the National Science
This page has been translated to