2022-07-30 14:46:04 -03:00

285 lines
9.8 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ALE User Manual: Rendering</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>
2684415918<br>
</table>
<p><b>[ <a href="../">Up</a> ]</b></p>
<h1>ALE Rendering</h1>
Rendering determines how an output image is constructed from a series of
aligned input frames. The incremental renderers, merging and drizzling, update
the output image after reading each new frame from the series, whereas
non-incremental renderers wait until the last frame has been loaded before
producing output. More than one renderer can be involved in producing the
final output. Available rendering options are outlined below.
<h2>Merging</h2>
Merging, the default incremental renderer, works most effectively on images
that have no large changes in scale (e.g. camera zooming). Since it uses
bilinear interpolation, output images are approximately convolved with the
triangle, or Bartlett, filter, and may appear to have reduced contrast and
resolution when compared with the output of other renderers.
<h2>Drizzling</h2>
The drizzling renderer is an incremental renderer that can usually produce
better images than merging, but it works most effectively with devices having
very little blur and optical distortion. Devices sampling very small angles of
the scene at each pixel are ideal; hence, if very fine staircase aliasing is
visible in the input frames, drizzling should work very well. (For creation of
higher resolution images with drizzling, use also the --scale option described
below.)
<pre>
--drizzle-diam=x Drizzle with input pixel diameter x (where x &gt; 0)
--drizzle-only If drizzling, output black for pixels with no drizzle data.
</pre>
<p>For more information about drizzling, see the paper by Richard Hook and
Andrew Fruchter, "Variable-Pixel Linear Combination", or the following URL:
<p><a href="http://www.cv.nrao.edu/adass/adassVI/hookr.html">http://www.cv.nrao.edu/adass/adassVI/hookr.html</a>
<h2>Point-spread Function (PSF)</h2>
<p>Non-incremental renderers use a point-spread function to model the optical
and electronic properties of the capture device used. The PSF can be specified
in terms of a linear and non-linear component. The non-linear component is
disabled by default.
<h3>Determining the PSF</h3>
<p>The point-spread function can be approximated through trial-and-error or
based on known scenes. ALE includes a script that numerically approximates the
point-spread function based on images captured from known scenes. This script
can be found in the source distribution
(<code>d2/render/psf/ale-psf-calibrate</code>).
<h3>Device Specification</h3>
If a device is known to ALE, then its PSF can be implicitly set with the device
option.
<pre>
--device &lt;d> Set the capture device to &lt;d>.
</pre>
Available devices are as follows:
<pre>
xvp610_320x240 IBM PC Camera Pro (XVP610) in 320x240 mode.
</pre>
<h3>PSF specification</h3>
<p>The PSF can also be explicitly specified by using one or both of the psf
options. These options have precedence over the device option.
<pre>
--lpsf &lt;p> Set linear colorspace point-spread function to &lt;p>
--nlpsf &lt;p> Set non-linear colorspace point-spread function to &lt;p>
</pre>
Available explicit point-spread functions are as follows:
<pre>
box=&lt;d> Set the PSF to a box filter with diameter &lt;d>.
stdin Specify a custom filter at runtime.
&lt;p>+&lt;p> Summation of two functions
</pre>
<h2>Unsharp Mask (USM) Renderer</h2>
<p>This non-incremental renderer uses an unsharp mask to compensate for
blur introduced by the image capture device. It is fairly inexpensive
computationally, but it may not be effective in all cases.
<pre>
--usm &lt;m> Apply an unsharp mask with multiplier &lt;m>.
</pre>
<h2>Irani-Peleg iterative solver</h2>
<p>This non-incremental renderer is very general, and attempts to reconstruct the
original scene based on the captured frames and the PSF. Unlike the USM
renderer, it can compensate for blur introduced by the incremental
renderers, and it may be more effective than the USM renderer in compensating
for blur introduced by the image capture device.
<p>Note that this method can take a long time to produce output. If
incremental output is enabled (see below), output is written after each
iteration is complete. Using more iterations will generally improve output, up
to the point of convergence, when additional iterations have no effect. A dot
is displayed to indicate the completion of each iteration.
<pre>
--ips &lt;i> Run &lt;i> iterations.
</pre>
<p>For more information on the iterative backprojection technique of Michal Irani and
Shmuel Peleg, see their paper, "Improving Resolution by Image Registration", at
<p><a href="ftp://ftp.wisdom.weizmann.ac.il/pub/irani/PAPERS/SR_CVGIP91.pdf">ftp://ftp.wisdom.weizmann.ac.il/pub/irani/PAPERS/SR_CVGIP91.pdf</a>
<h2>Exposure Registration</h2>
<p>By default, ALE adjusts an exposure model to minimize differences in tone
between frames. The option <code>--exp-noregister</code> indicates that
exposure should be assumed uniform across all frames. In this case, no
adjustment is performed.</p>
<pre>
--exp-register Register exposure between frames. [default]
--exp-noregister Assume uniform exposure across all frames.
</pre>
For more information about analyzing and processing images having differing
exposures, see Steve Mann's comparametric paper, at
<p><a href="http://wearcam.org/comparam.htm">http://wearcam.org/comparam.htm</a>
<h2>Certainty-weighted Rendering</h2>
<p>The exposure model in ALE includes an associated certainty function, which
quantifies the reliability of sensor measurements. By default, this function
is raised to the zeroth power to obtain uniform certainty for all measurements.
To specify a different certainty exponent, the option <code>--cx</code> can be
used.
<pre>
--cx &lt;x> Render with certainty exponent &lt;x>
--no-cx Render with uniform certainty. [default]
</pre>
Note that ALE uses a one-sided certainty function, biased by
backprojection value, in Irani-Peleg rendering. In some cases, this approach
seems to offer better results than the unbiased function used in drizzling and
merging. For more information on the certainty weighting approach used by ALE,
see the ALE source code.
<p>For more information on Steve Mann's original approach to certainty-weighted
rendering, see his comparametric paper, at
<p><a href="http://wearcam.org/comparam.htm">http://wearcam.org/comparam.htm</a>
<h2>Scale factor</h2>
Rendering with a larger scale factor causes internal data structures to store
more information, resulting in image output of the specified larger scale.
Larger scales can improve alignment precision and output image quality, but can
also increase alignment and rendering times.
<pre>
--scale=x Scale images by the factor x (where x is at least 1.0)
</pre>
<h2>Image extents</h2>
The --extend option records pixel data that falls outside of the region of the
first frame in the sequence. This can be useful for providing additional
alignment constraints or creating panoramic image mosaics. (See also the
description of the --follow option in the <a href="../alignment">alignment</a>
section.)
<pre>
--extend Increase image extents to accommodate all pixel data.
--no-extend Don't increase extents; crop to original frame. [default]
</pre>
<h2>Incremental output</h2>
By default, the output file is written every time a renderer completes an
update cycle. In order to suppress output until the final image is rendered,
specify the --no-inc option.
<pre>
--inc Produce incremental output. [default]
--no-inc Don't produce incremental output.
</pre>
<h2>Pixel replacement</h2>
<p>When using the merging or drizzling renderer, --replace indicates that each
new frame should replace the corresponding region of the rendering, instead of
being averaged with data from previous frames. This option was originally
suggested by Jeff Treece for use in stabilization of video streams. His
approach to stabilization is outlined below.
<h3>Video Stabilization</h3>
<p>If the files
<pre>0.ppm, 1.ppm, ..., 9.ppm</pre>
represent frames from an unstabilized video stream, then the following sequence
of commands may result in a stabilized sequence:
<pre>
ale --replace 0.ppm 1.ppm 1.stable.ppm
ale --replace 1.stable.ppm 2.ppm 2.stable.ppm
ale --replace 2.stable.ppm 3.ppm 3.stable.ppm
.
.
.
ale --replace 8.stable.ppm 9.ppm 9.stable.ppm
</pre>
<p>The resulting stabilized sequence would be:
<pre>0.ppm, 1.stable.ppm, 2.stable.ppm, ..., 9.stable.ppm</pre>
<h3>Option Syntax</h3>
<pre>
--replace Replace overlapping areas when merging and drizzling.
--no-replace Do not replace. [default]
</pre>
<br>
<hr>
<i>Copyright 2003, 2004 <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>