192 lines
8.5 KiB
HTML
192 lines
8.5 KiB
HTML
<html>
|
|
<title>Alignment</title>
|
|
<style type="text/css">
|
|
TABLE.ba { max-width: 678; text-align: center; padding-bottom: 15; padding-top: 5}
|
|
TABLE.inline { padding-right: 300; clear: left}
|
|
TD.text_table {padding-left: 2; padding-right: 2; border-width: 1}
|
|
H2 {clear: left}
|
|
P {max-width: none; padding-right: 300; clear: left}
|
|
BLOCKQUOTE {padding-right: 400 }
|
|
LI {max-width: 640; clear: left}
|
|
P.footer {max-width: none; width: auto; padding-left: 0}
|
|
P.header {max-width: none; width: auto; padding-left: 0}
|
|
HR.main {max-width: 640; clear: left; padding-left: 0; margin-left: 0}
|
|
HR.footer {clear: both}
|
|
</style>
|
|
</head><body>
|
|
|
|
|
|
|
|
<table align=right valign=top width=160>
|
|
<td valign=top height=600 width=160>
|
|
<a href="http://auricle.dyndns.org/ALE/">
|
|
<big>ALE</big>
|
|
<br>
|
|
Image Processing Software
|
|
<br>
|
|
<br>
|
|
<small>Deblurring, Anti-aliasing, and Superresolution.</small></a>
|
|
<br><br>
|
|
<big>
|
|
Local Operation
|
|
</big>
|
|
<hr>
|
|
localhost<br>
|
|
5393119533<br>
|
|
</table>
|
|
|
|
|
|
|
|
<p><b>[ <a href="../">Up</a> | <a href="error/">Error Function</a> ]</b></p>
|
|
<h1>Alignment</h1>
|
|
|
|
ALE aligns each supplemental frame, in sequence, with the merged rendering
|
|
representing all previous frames. This page outlines the three supported
|
|
transformation classes, the algorithm used for alignment, and the properties of
|
|
the alignment algorithm. Following this is a discussion of practical use of
|
|
alignment options, including alignment classes and alignment in the case of
|
|
extended renderings.
|
|
|
|
<h2>Transformations</h2>
|
|
|
|
<p>ALE offers three classes of transformations: </p>
|
|
|
|
<table border>
|
|
<tr><td>Translations</td><td>introduced in version 0.0.0</td>
|
|
<tr><td>Euclidean transformations (excluding reflections)</td><td>introduced in version 0.1.0</td>
|
|
<tr><td>Projective transformations</td><td>introduced in version 0.2.0</td>
|
|
</table>
|
|
|
|
<!-- <p>ALE uses a forward transformation to map from a supplemental frame to the
|
|
accumulated image, and an inverse transformation to map from the accumulated
|
|
image to the supplemental frame. Alignment operates on the parameters of the
|
|
forward transformation. -->
|
|
|
|
<h2>Algorithm</h2>
|
|
|
|
<p>Alignment proceeds by a deterministic search, beginning with an initial
|
|
transformation and modifying this transformation through a series of
|
|
perturbations.
|
|
|
|
<p>The initial transformation may be loaded from a file or selected by default.
|
|
The default initial transformation is either the identity transformation or
|
|
(when the <code>--follow</code> option is specified) the most recently merged
|
|
frame's final alignment. (Note that changes in release 0.5.0 are not reflected
|
|
here; these changes affect the interaction of the --follow and --trans-load
|
|
flags.)
|
|
|
|
<p>Once the initial transformation is determined, an initial perturbation
|
|
amount is selected, and represents the step size by which each of the
|
|
transformation parameters are changed. In translational or Euclidean
|
|
alignment, the perturbation amount is applied to translation -- in units of
|
|
pixels on the two image axes -- and rotation -- in units of degrees about the
|
|
image center. (In version 0.4.8 and later, an additional configurable upper
|
|
bound constrains rotational perturbation separately, preventing, e.g., a
|
|
360 degree perturbation of rotation.) In the case of projective alignment, the
|
|
perturbation amount is applied to the position of the corners of the projected
|
|
quadrilateral in units of pixels, where the projection is from the boundary
|
|
of the supplemental image into the coordinate system of the accumulated image.
|
|
|
|
<p>If possible, transformation parameters are changed to decrease the <a
|
|
href="error/">error</a> between the two images being
|
|
aligned. The perturbation amount is halved whenever it is determined that no
|
|
parameter change of this size improves the alignment of the images. A lower
|
|
bound on the perturbation amount determines when the alignment is complete.
|
|
|
|
<p>The order in which parameters are considered for change is specified in the
|
|
source code, and has the following property: No modified parameter is
|
|
considered for further change until all other parameters have been considered.
|
|
A consequence of this property is that parameters are always considered in a
|
|
fixed (round robin) order.
|
|
|
|
<p>When multiple levels of detail are used, the error may be calculated on
|
|
images with a reduced level of detail. ALE versions 0.1.1 through 0.4.7 use a
|
|
level of detail twice as fine as the perturbation amount for perturbation
|
|
amounts larger than two, and full detail otherwise. Later versions default to
|
|
this behavior, but can be configured differently. Earlier versions do not use
|
|
reduced levels of detail.
|
|
|
|
<h2>Properties</h2>
|
|
|
|
<p>Several assumptions were made throughout the design and testing of the
|
|
algorithm outlined above. These assumptions are outlined below.
|
|
|
|
<p>The algorithm is based on a hill-climbing approach, which requires that any
|
|
local minimum reachable from the starting point by traveling a path of
|
|
decreasing error is also a global minimum (or, in this case, the correct
|
|
alignment). While it is possible that the algorithm outlined above succeeds in
|
|
some cases for which hill-climbing fails, it is still susceptible to entrapment
|
|
in local minima.
|
|
|
|
<p>As outlined above, depending on program options, transformation parameters
|
|
may be changed by perturbations of several units (degrees or pixels) early in
|
|
the alignment process. As long as no change of this magnitude moves the
|
|
transformation out of the 'bowl' in which the minimum error -- and hence
|
|
correct alignment -- lies, this is not a problem. However, it might break in
|
|
some cases where a hill-climbing approach would succeed. (Notably, simulated
|
|
annealing suffers from a similar problem, and it seems likely that a case could
|
|
be constructed in such a way that the algorithm outlined above -- like
|
|
simulated annealing -- could, contrarily, succeed where hill-climbing fails.)
|
|
|
|
<p>Finally, the use of reduced level-of-detail relies on a high signal-to-noise
|
|
ratio at low frequencies. Fortunately, this assumption seems to generally
|
|
hold, but camera defects or radio interference could violate the assumption,
|
|
possibly resulting in misalignment.
|
|
|
|
<h2>Use of Alignment Classes</h2>
|
|
|
|
<p>ALE is likely to be most useful when corresponding regions of different
|
|
frames can be aligned by one of the available alignment classes.
|
|
|
|
<p>As described by Steve Mann in his work on <a
|
|
href="http://wearcam.org/orbits/">Video Orbits</a>, the projective
|
|
transformation offers particular versatility for camera imaging of (ideal
|
|
Lambertian) flat scenes. In this case, any change in camera position and
|
|
orientation can be corrected as long as points always have a defined projection
|
|
onto the rendering plane (for which ALE uses the base of the pyramid
|
|
<b>R<sub>1</sub></b>).
|
|
|
|
<p>In camera imaging of scenes with depth, correction for orientation is almost
|
|
the same as for flat scenes, since, if focus and lens distortion is ignored, a
|
|
scene with depth is indistinguishable from a flat scene from the perspective of
|
|
a camera whose position is fixed.
|
|
|
|
<p>For sequences of camera images with small changes in position or
|
|
orientation, the projective transformations for alignment may closely
|
|
approximate Euclidean transformations; in this case, using Euclidean
|
|
transformations may achieve similar results and may require less time for
|
|
alignment, since there are fewer parameters to tweak (three parameters
|
|
instead of eight).
|
|
|
|
<p>In the case of flatbed scanners that preserve the relative height and width
|
|
of scans, any change in the position or orientation of flat objects can be
|
|
corrected using the Euclidean alignment class.</p>
|
|
|
|
<p>If a flatbed scanner does not preserve relative height and width, but does
|
|
preserve straight lines, then any change in the position or orientation of flat
|
|
objects can be corrected with the projective alignment class.
|
|
|
|
<p>However, even if a transformation is within the alignment class used, the
|
|
alignment algorithm may still be unable to determine large transformations.
|
|
|
|
<h2>Alignment in the case of Extended Renderings</h2>
|
|
|
|
<p>By using the --extend flag, ALE can be used to create image mosaics spanning
|
|
a spatial region larger than that represented by any single image in the frame
|
|
sequence. In these cases, if adjacent frames in the sequence tend to be more
|
|
closely aligned with each other than they are with the original frame, it may
|
|
be helpful to also use the --follow flag as a hint to the alignment algorithm.
|
|
</p>
|
|
|
|
|
|
<br><br>
|
|
<small>
|
|
</small>
|
|
|
|
<hr>
|
|
<i>Copyright 2002, 2003 <a href="mailto:dhilvert@auricle.dyndns.org">David Hilvert</a></i>
|
|
<p>Verbatim copying and distribution of this entire article is permitted in any
|
|
medium, provided this notice is preserved.
|
|
</body>
|
|
</html>
|