Boulder Laboratory for 3-Dimensional Electron Microscopy of Cells
FINDDISTORT(1) FINDDISTORT(1)
NAME
finddistort - Solves for image distortion field from overlapping images
SYNOPSIS
finddistort [options] input_file output_rootname
DESCRIPTION
Finddistort analyzes overlapping images and solves for the underlying image
distortion field. The basis for the analysis is the fact that after two
overlapping images are shifted into best registration, the remaining image
displacement at a particular point in the overlap zone is the difference
between the distortion vectors at two locations in the original images. The
optimal input for this analysis is a set of 4 pairs of overlapping images.
Each pair would overlap over a little more than 50% of their area. The two
paired images would be displaced from each other horizontally, vertically,
and on 45 and 135 degree diagonals for the 4 kinds of pairs. With this
arrangement, the different pairs provide largely independent rather than
redundant information, and the amount of data about image displacements is
about twice as numerous as the number of vectors of the image distortion
field to be solved for; thus a robust solution can be obtained.
The program operates as follows. First, each pair of images is
cross-correlated with a large amount of padding to find the overall
displacement. This is done by running Tiltxcorr. Next, this overall
displacement is applied to align the two images where they overlap, then the
local displacements are found at a grid of locations in the overlap zone,
using the same subroutines that Blendmont uses to find "edge functions".
The spacing of this grid is specified by the GridSpacing option. Linear
equations are set up relating data interpolated from this grid (at a spacing
set by the DataSpacing option) to the unknown vectors of the underlying
distortion field. These unknowns are located on a grid at yet another
spacing (set by the FieldSpacing option), and making this spacing larger
than the data spacing makes the equations even more overdetermined. The
program solves these equations to find an initial distortion field.
Once there is a distortion field, the procedure is iterated, except that the
images are undistorted before being correlated to find the overall
displacement. However, this procedure will not converge to a unique
solution unless the distortion field is modified by another operation at
each step, because it is possible to change the overall displacement between
overlapping images and stretch the distortion field to compensate. Thus,
every time a field is solved for, any net stretch in the field is removed to
preduce a stretch-free distortion field. With this step, the iterations
converge to a stable solution for the stretch-free distortion field. This
distortion field is output to a file rootname.nosidf after each iteration.
The stretch in the distortion field can be determined from the
transformation needed to align two images of the same field rotated by an
angle near 90 degrees. When such a transformation is supplied, the program
computes the implied stretch in the projection process, and then introduces
this stretch into the distortion field. Whether or not this transformation
is given, the final field is output into rootname.idf.
Other temporary files produced are: rootname.xcxf with the shifts for one
image pair, output by Tiltxcorr; rootname.tmpxf with rootname.rawxf with
the initial shifts between paired images; rootname.udxf with the shifts
between undistorted imaged; rootname.udst with the undistorted images.
Finddistort uses the PIP package for input exclusively (see the manual page
for pip). The following options can be specified either as command line
arguments (with the -) or one per line in a command file or parameter file
(without the -):
-input OR -InputFile File name
Input image file with distortion pairs. If this option is not entered,
the first non-option argument will be taken as the input file name.
-output OR -OutputRoot File name
Root name for output files. If this option is not entered, the second
non-option argument will be used as the root name.
-pairs OR -PairsToAnalyze List of integer ranges
List of images to analyze in pairs; for example 0-7 if sections 0 and 1, 2
and 3, 4 and 5, and 6 and 7 are all image pairs. The default is to assume
that all images in the file form successive pairs. Sections are numbered
from 0.
-binning OR -ImageBinning Integer
Binning of images on the CCD camera (default 2)
-field OR -FieldSpacing Integer
Pixel spacing for output distortion field (default 40)
-data OR -DataSpacing Integer
Pixel spacing for data used to solve linear equations for the distortion
field. This spacing should be about half of the spacing for the output
field. The default is 20.
-grid OR -GridSpacing Integer
Pixel spacing for grid on which displacements will be measured in the
overlap zones between paired images (default 16).
-box OR -BoxSize Integer
Size of box used to measure local displacements. Boxes of this size will
be correlated between the two images at every position on the grid. The
default is 24. This value should be increased if the solution is noisy.
-indent OR -GridIndent Integer
Amount to indent the boxes in the grid of displacements from the edge of
the overlap zone. The default is 4 pixels; this vakue can be dropped to 2
for larger than default boxes.
-iterations OR -Iterations Integer
Maximum number of iterations when solving equations
-usexf OR -UseOldTransforms
Use existing transforms instead of running Tiltxcorr on the first
iteration; these transforms are stored in the file rootname.rawxf when
Tiltxcorr is run on the first iteration.
-strfile OR -StretchFile File name
File with transformation that aligns two 90-degree rotated images of the
same area. This transformation is used to determine the absolute stretch
in the distortion field.
-patch OR -PatchOutput
Output a patch file to convert to a model with patch2imod. The patch file
will be named rootname.patch.
-coverage OR -CoverageImage File name
Name of file in which to place an image representing the amount of data
available for solving each vector. This is image is based on the sum of
the coefficients for each distortion vectors, normalized so that the mean
sum will equal the ratio of total measurements to unknowns (rows to
columns in the data matrix). To get a true representation of the amount
of nonredundant coverage of each field position, use -data to set the data
spacing the same as the field spacing.
-redirect OR -RedirectOutput Text string
String for redirecting output from Tiltxcorr and Newstack. The default is
"> /dev/null", which will not work in Windows. A valid Windows path must
be entered; "> xcorr.tmp" would work.
-multr OR -SolveWithMultr
Use matrix inversion instead of iterative method to solve equations.
-param OR -ParameterFile Parameter file
Read parameter entries as keyword-value pairs from a parameter file.
-help OR -usage
Print help output.
-StandardInput
Read parameter entries from standard input.