Change log

This article contains detailed change information for each release.

## 3

Change 1 Change 2 Change 3
0.8.5 (Prerelease)
Documentation

- Migrate documentation to a modified DocBook format.

- Revise README for autotools build and installation.

- Add file 'TODO', containing a tentative list of future versions and features.

- Add AUTHORS file, in accordance with the autotools packaging standards.

- Revise Changelog name to autotools-recognized ChangeLog

- Add NEWS file containing summary announcement text, including mailing list and Freshmeat announcements for versions through 0.8.4. This file is required by autotools when not running in --foreign mode.

Configuration

- Add autotools-based configuration, build, and installation facilities, replacing the earlier Makefile-based configuration and build process.

Command-line interface

- Modify command-line interface to accept certain scope operators, and to increase uniformity of syntax.

Image constraints

- Add options --f{ex,crop} for frame-coordinate exclusion regions.

3D Rendering

- In d3::scene, always use filler spaces when --pc all is specified.

Source code organization

- Move input interface details, including option handling, messages, and help information, to the ui/ subdirectory.

0.8.4 2006-May-14
Packaging

- Fix build error noted by Gregory Maxwell and re-tag version.

Documentation

- Add dates to the Changelog, using dates in comments in the download page on the website for versions prior to 0.8.0, and using dates from the darcs repository for versions 0.8.0 and later.

Command-line interface

- Add fine-grain UI updates for 3D operations when using ui=tty. Reduce tty UI status update frequency to at most once per second.

3D Rendering

- Add support for synthetic focus via the --focus option, including focus with horizontal and vertical tilt. Adding simulated focus effects, including tilted and swung focal planes, was suggested by Gregory Maxwell.
- Add support for filtering 3D output with --3d-filter. This is now the default behavior. Add an option --3d-chain for selecting the filter chain used for 3D output. (See --hl and --hq for details.)
- Interpolate to generate smooth 3D depth output.

3D Models

- Modify --3dpx to affect scene geometry rather than rendered pixels. In certain cases, this change should allow removal of objects close to the camera, hence revealing objects further away.
- Add decimation options --di-upper, --di-lower, and --do-try for reducing the complexity of 3D scene geometry, hence reducing the number of operations required for occupancy updating.
- Fix dimension comparison bug in d3::space::traverse::get_next_split().
- Implement an experimental approach to 3D subspace candidate selection; this seems to perform poorly in most cases due to parallax effects. See the source code for details. (Option --subspace-traverse)
- Add adaptive weight decomposition to 3D occupancy algorithms.
- Move low-level code concerning scale and level-of-detail from d3::scene to d3::pt.
- Move code concerning the nature of space from d3::scene to d3::space.
- Remove older 3D rendering code.

Scripts

- Add a script 'transform' for applying an inverse projective transformation. Recalculation of transformations was suggested by Rob Stewart (ALE mailing list message, 2005-Dec-28).

Undocumented options

- Add to the Makefile a HASH_MAP option that can be used to assign the 3D spatial info structure a hash map type instead of the standard STL map type. As this is likely to break things, it is currently undocumented. HASH_MAP=GNU seems to compile with g++ 4.0.x but has not otherwise been tested.

0.8.3 2005-Dec-23
Rendering

- Add an option --def-nn to allow definition of pixels in output images to take values from neighboring pixels within a certain radius, in cases where they would not otherwise be defined.

3D Models
Stereoscopy

- Add option --pc to specify which pairwise comparisons should be performed.
- Add option --pa to set the number of point candidates accepted for each pair of cameras (pairwise ambiguity). The default of 3 preserves existing default behavior.
- Add option --tcem for scoring point candidates by third-camera views. The default of 0 preserves existing default behavior.

Geometry

- Add option --3dpx to specify 3D regions to exclude during final rendering, using a single depth for each pixel in each frame of rendered output. (Evaluates at the depth used in depth-rendering.)

- Add --et option to specify encounter thresholds.

- Modify representation of 3D subspaces so that refined subspaces are roughly cubical, and to allow refinements at multiple resolutions.

- Clean up d3::scene to remove triangle-mesh code.

Occupancy

- Fix bugs in 3D color and occupancy updating caused by bounding box miscalculation.

- Add option --oui for determining occupancy update iterations. The new default is 10, halving the previous default of 20.

0.8.2 2005-Nov-22
Image files

- Add magical file 'dump:' for listing color values numerically to stderr.

3D Models

- Transition from a subdivisible triangle model to a subdivisible space model, using a rudimentary implementation of Hans Moravec's notion of occupancy.

- Add support for view and depth output from arbitrary cameras.

- Add clipping plane options for 3D modeling.

Control points

- Fix various bugs in control-point alignment reported by Gregory Maxwell.

0.8.1 2005-May-6
Build

- Fix enumerator compile bugs noted by Gregory Maxwell and Tom Holroyd to cause compilation failure under GCC 3.4.

Defaults

- Modify --q1 to use median-value incremental rendering.

Rendering

- Add support for median-value incremental and Irani-Peleg rendering. Using a statistic other than the mean was suggested by Scott Scriven as a means of eliminating non-uniform artifacts. Using the median seems to improve performance on Scott Scriven's example sequences, as well as on the scaled output of fine:sinc*lanc for sparse inputs.

Exposure

- Add a color adjustment option --exp-mult=.

Control points

- Add support for using control points in 2D and 3D alignment, as well as in 3D model construction. New options include '--gs points', '--cpf-load=', '--cpp-upper=', '--cpp-lower=', '--va-upper=', and '--st'.

Transformation data files

- Add average magnitude comments to transformation data file output.

3D Models

- For 3D scene reconstruction, use a new unified surface model in place of the depth-based multi-model approach used in 0.8.0. The new model is adjusted on the basis of edge, angle, and color measures.

Scripts

- Move ale-psf-calibrate to a new scripts directory.

0.8.0 2005-Jan-12
Command-line interface

- Add user interface options --ui=stream and --ui=tty. The latter includes more detailed status output when terminal width information can be obtained (esp. when IOCTL=1 is set at compile time), and is the new default.

Exclusion regions

- Add --crop argument, which excludes the spatial complement of a specified area over a specified set of frames. Gregory Maxwell notes several advantages of internal over external crops, including preserving knowledge of position in the uncropped frame, which among other benefits allows natural handling of Bayer patterns.
- Modify rx_parameters in d2/render.h to use the ale_pos data type instead of int. This should allow exclusion regions to be calculated more accurately.

Image files

- Add support for PPM with extended attributes (EPPM). Attributes handled specially include black level, shutter speed, aperture, and ISO (or gain).

Exposure

- Add a flag --exp-meta-only which causes tonal registration to be performed only on the basis of exposure metadata (e.g., data encoded as EPPM extended attributes). This approach was suggested by Gregory Maxwell.
- Fix an index variable bug in d2::image_bayer_ale_real::trigger().
- Modify d2::exposure one-sided certainty so that the 'one-sided' condition only applies to bright (>50%) areas. Applying it to dark areas has no clear benefit, and an experiment by Gregory Maxwell demonstrates that doing so can exacerbate noise.

Alignment

- Modify euclidean alignment so that perturb-upper and perturb-lower apply to rotational arclength.
- Modify d2::align to use unscaled input images when the scale factor is larger than 1.0, or when a scaled_filter interpolant is being used.
- Modify d2::align::set_exposure_ratio() so that alignment weights and certainty values are taken into consideration.
- Add a --cw option to weight alignment error by certainty values, as suggested by Gregory Maxwell. This allows the contributions of pixels at maxval to be diminished, which can increase alignment success in certain cases.

Rendering
Scale

- Modify d2::image::scale() to allow scale factors in the interval (0, 1), and modify the command-line interface and help text to reflect this change. --scale= now accepts all finite positive values.

Incremental

- Replace functions d2::incremental::{increase,decrease}_extents() with new functions that take exclusion regions into account. The new functions should also fix a boundary-calculation bug reported by Gregory Maxwell.

Irani-Peleg

- Set image offsets in d2/render/combine.h. This allows Irani-Peleg rendering to work with --crop when the default rendering chain includes more than one rendering invariant.
- Perform Irani-Peleg updating separately by channel instead of using vector operations. This allows divide-by-zero and other conditions to be localized to particular channels.
- Modify the Irani-Peleg renderer to use estimate-based certainty. This seems to improve noise characteristics significantly.
- Modify d2::render::ipc::_ip_frame_correct() so that exposure re-estimation uses a ratio of weighted sums instead of a weighted average of ratios.
- Modify d2/render/ipc.h to handle exclusion regions more effectively.

Transformation data files

- Write the results of tonal registration as a comment in the transformation data file.

3D Models

- Add experimental cost calculation routines to d3/scene.h.

Source code organization

- Move certain user interface elements to the source subdirectory ui/.

0.7.3 2004-Dec-1
3D Models
o Add incremental 3D reconstruction output.
Command-line interface
o Remove the reference to a non-existent web page in unsupported::fornow().
Rendering
o Allow device-specific bayer patterns to be overridden by the --bayer option.
3D Models
o Add an option for explicitly setting the camera view angle. Make the default view angle 43.7 degrees.

o Implement optimizations that reduce the memory footprint when 3D options are used.

o Modify the 3D cost reduction algorithm. The new algorithm seems to offer better results than the old in cases tested thus far, and does not require that spatial extension be enabled.

o Add support for the Canon 300D with a 50mm f/1.4 lens (specifying view angle), as well as experimental support for the 50mm f/1.4 lens at 1.4 (specifying a linear PSF). Also add support for 50mm f/1.8 and 85mm f/1.8 lenses, specifying view angles as specified in the chart at http://www.acapixus.dk/photography/angle_of_view.htm

o Don't output final data when --psf-match is specified. Doing so would be useless anyway, and apparently causes a segfault.

o For cases where --psf-match is specified, modify the exposure settings for the final input image (i.e., reference image) so that default exposure is used, and modify the bayer pattern settings so that no bayer pattern is used. (The first of these modifications requires changes in the way that the array of input exposures is stored.)

o Optionally (when OPTIMIZATIONS == 1) use the output of the default rendering chain directly as the Irani-Peleg initial approximation, instead of copying it.

o Add support for PSF convolution and scalar multiplication.

o Move all PSF parsing logic to a new file: d2/render/psf/psf_parse.h

o Modify help argument processing so that several help arguments can be specified at a time. Change the usage text to reflect this.

o Fix concatenated help output; outputs from all help options are now represented. (3D help had been omitted in 0.7.2.)

o Add a check to ensure that at most one --q* option is specified. The issue of multiple --q* options being specified was raised on the ALE mailing list by Viktors Rotanovs. As there is currently no support for this, generating an error message is appropriate.