ALE User Manual: Rendering

ALE Image Processing Software Deblurring, Anti-aliasing, and Superresolution. Local Operation localhost 2684415918

[ Up ]

# ALE Rendering

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.

## Merging

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.

## Drizzling

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.)

    --drizzle-diam=x  Drizzle with input pixel diameter x (where x > 0)
    --drizzle-only    If drizzling, output black for pixels with no drizzle data.

For more information about drizzling, see the paper by Richard Hook and Andrew Fruchter, "Variable-Pixel Linear Combination", or the following URL:

http://www.cv.nrao.edu/adass/adassVI/hookr.html

## Point-spread Function (PSF)

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.

### Determining the PSF

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 (`d2/render/psf/ale-psf-calibrate`).

### Device Specification

If a device is known to ALE, then its PSF can be implicitly set with the device option.

    --device <d>      Set the capture device to <d>.

Available devices are as follows:

    xvp610_320x240    IBM PC Camera Pro (XVP610) in 320x240 mode.

### PSF specification

The PSF can also be explicitly specified by using one or both of the psf options. These options have precedence over the device option.

    --lpsf <p>        Set linear colorspace point-spread function to <p>
    --nlpsf <p>       Set non-linear colorspace point-spread function to <p>

Available explicit point-spread functions are as follows:

    box=<d>           Set the PSF to a box filter with diameter <d>.
    stdin             Specify a custom filter at runtime.
    <p>+<p>           Summation of two functions

## Unsharp Mask (USM) Renderer

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.

    --usm <m>         Apply an unsharp mask with multiplier <m>.

## Irani-Peleg iterative solver

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.

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.

    --ips <i>         Run <i> iterations.

For more information on the iterative backprojection technique of Michal Irani and Shmuel Peleg, see their paper, "Improving Resolution by Image Registration", at

ftp://ftp.wisdom.weizmann.ac.il/pub/irani/PAPERS/SR_CVGIP91.pdf

## Exposure Registration

By default, ALE adjusts an exposure model to minimize differences in tone between frames. The option `--exp-noregister` indicates that exposure should be assumed uniform across all frames. In this case, no adjustment is performed.

    --exp-register    Register exposure between frames.  [default]
    --exp-noregister  Assume uniform exposure across all frames.

For more information about analyzing and processing images having differing exposures, see Steve Mann's comparametric paper, at

http://wearcam.org/comparam.htm

## Certainty-weighted Rendering

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 `--cx` can be used.

    --cx <x>          Render with certainty exponent <x>
    --no-cx           Render with uniform certainty.  [default]

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.

For more information on Steve Mann's original approach to certainty-weighted rendering, see his comparametric paper, at

http://wearcam.org/comparam.htm

## Scale factor

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.

    --scale=x         Scale images by the factor x (where x is at least 1.0)

## Image extents

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 alignment section.)

    --extend          Increase image extents to accommodate all pixel data.
    --no-extend       Don't increase extents; crop to original frame. [default]

## Incremental output

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.

    --inc             Produce incremental output.  [default]
    --no-inc          Don't produce incremental output.

## Pixel replacement

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.

### Video Stabilization

If the files

    0.ppm, 1.ppm, ..., 9.ppm

represent frames from an unstabilized video stream, then the following sequence of commands may result in a stabilized sequence:

    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

The resulting stabilized sequence would be:

    0.ppm, 1.stable.ppm, 2.stable.ppm, ..., 9.stable.ppm

### Option Syntax

    --replace         Replace overlapping areas when merging and drizzling.
    --no-replace      Do not replace.  [default]

Copyright 2003, 2004 David Hilvert

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.