3 o Add incremental renderer mean invariant avgf:<x>:<e> weight-limited to
6 o Modify d2::image::defined_scale_by_half() to use a geometric mean, so
7 that alignment at reduced level of detail will still work at larger
8 reductions when using non-zero certainty.
12 o In d2::align, use rotation about the frame center as an alternative
13 in cases where the sampling centroid is undefined.
15 o Modify d2::point::{neg,pos}inf() assertions to allow for isinf()
16 implementations returning any non-zero value for any infinity.
18 o Re-adjust exposure in Irani-Peleg even when no non-linear stage is
21 o Adjust the default pixel definition threshold to account for the
24 o Use a rudimentary, single-pass estimate-based certainty approach for
25 incremental rendering.
27 o When --cx is positive, use only certainty calculated from the simulated
28 scene for estimating tonal registration in Irani-Peleg passes.
30 o Remove --qr default setting, as certainty and range-extension now have
31 established general defaults.
33 o Change --cx to 1 by default. Change --exp-extend to be disabled by
34 default. Remove these flags from default settings.
36 o Update driver names to omit file type qualifiers, according to the
37 convention used in HJ Hornbeck's Nikon D50 device configuration patch.
39 o Add Nikon D50 device configuration. (HJ Hornbeck)
41 o Update default settings according to time and image quality test
42 results. fine:triangle:2, gauss:0.75, and combinations of these
43 filters were suggested by HJ Hornbeck.
45 o Revise incremental renderer to store unnormalized values, for better
46 handling of small weights, and eliminate the minimum contribution weight.
48 o Add inlining and pre-calculation to Irani-Peleg. (HJ Hornbeck)
50 o Add gaussian sampling filter. (HJ Hornbeck)
54 o Remove binaries and documentation sections from the readme, and
55 prune non-package documentation for source distributions.
57 o Make the --follow alignment option default.
59 o Add help text for argument scope.
61 o Modify rotational alignment search to rotate about the centroid
64 o Revert 3D code to experimental status due to poor handling of
67 o Modify 3D code for slightly better handling of real image sets.
69 V 0.8.5-pre3 2006-Nov-03
72 o Fix a potential nondeterminism bug due to undefined seed bits in the
73 random number generator. (Fixes certain alignment failures.)
76 o Modify default settings using Irani-Peleg rendering to use the
77 triangle:2 incremental rendering chain.
79 o Add dynamic monte carlo alignment, and make this default.
81 o Correct --exp-mult arg count. (Gregory Maxwell)
83 o Allow file-scoped use of --perturb-upper.
85 V 0.8.5-pre2 2006-Oct-25
87 o Modify d2::image::scale() to correctly handle offsets for
88 scale factors other than negative powers of two.
90 o Reformat most help text to fit a 79 column screen.
92 o Add option --profile to measure elapsed real time for 2D alignment
93 and rendering operations.
95 o Add support for POSIX threads to 2D alignment and rendering code.
96 (Adding multithreading support was first suggested by Jody (Joe)
97 Harris. Testing of multithreaded code on multiprocessor hardware was
98 done by Gregory Maxwell.)
100 V 0.8.5-pre1 2006-Oct-16
102 o Incorporate all existing ALE documentation within the source
103 tree, and license under GPL. Begin migration of documentation,
104 including package documentation files, to a more flexible format.
106 o Modify ui_tty for correct operation under Hurd and DragonFly
109 o Revise README for autotools build and installation.
111 o Add file 'TODO', containing a to-do list for future releases.
113 o Add AUTHORS file, in accordance with the autotools packaging
116 o Revise Changelog name to autotools-approved ChangeLog
118 o Add NEWS file containing mailing list and Freshmeat announcement text
119 for versions through 0.8.4. This file is required by autotools.
121 o Add options --f{ex,crop} for frame-coordinate exclusion regions.
123 o Add autotools-based configuration, build, and installation facilities,
124 replacing the earlier Makefile-based configuration and build process.
126 o Modify --mc to be a file-scoped option.
128 o Modify command-line interface to accept certain scope operators, and
129 to increase uniformity of syntax.
131 o Move input interface details, including option handling, messages,
132 and help information, to the ui/ subdirectory.
134 o In d3::scene, always use filler spaces when --pc all is specified.
138 o Fix build error noted by Gregory Maxwell and re-tag version.
140 o Add fine-grain UI updates for 3D operations when using ui=tty. Reduce
141 tty UI status update frequency to at most once per second.
143 o Modify --3dpx to affect scene geometry rather than rendered
144 pixels. In certain cases, this change should allow removal of objects
145 close to the camera, hence revealing objects further away.
147 o Add to the Makefile a HASH_MAP option that can be used to assign the
148 3D spatial info structure a hash map type instead of the standard STL
149 map type. As this is likely to break things, it is currently
150 undocumented. HASH_MAP=GNU seems to compile with g++ 4.0.x but
151 has not otherwise been tested.
153 o Add support for synthetic focus via the --focus option, including
154 focus with horizontal and vertical tilt. Adding simulated focus
155 effects, including tilted and swung focal planes, was suggested by
158 o Add support for filtering 3D output with --3d-filter. This
159 is now the default behavior. Add an option --3d-chain for selecting
160 the filter chain used for 3D output. (See --hl and --hq for details.)
162 o Fix dimension comparison bug in d3::space::traverse::get_next_split().
164 o Implement an experimental approach to 3D subspace candidate selection;
165 this seems to perform poorly in most cases due to parallax effects.
166 See the source code for details. (Option --subspace-traverse)
168 o Add adaptive weight decomposition to 3D occupancy algorithms.
170 o Move low-level code concerning scale and level-of-detail from
173 o Move code concerning the nature of space from d3::scene to
176 o Interpolate to generate smooth 3D depth output.
178 o Remove older 3D rendering code.
180 o Add decimation options --di-upper, --di-lower, and --do-try for
181 reducing the complexity of 3D scene geometry, hence reducing the
182 number of operations required for occupancy updating.
184 o Add a script 'transform' for applying an inverse projective
185 transformation. Recalculation of transformations was suggested by Rob
186 Stewart (ALE mailing list message, 2005-Dec-28).
188 o Add dates to the Changelog, using dates in comments in the download
189 page on the website for versions prior to 0.8.0, and using dates from
190 the darcs repository for versions 0.8.0 and later.
195 o Add option --3dpx to specify 3D regions to exclude during final
196 rendering, using a single depth for each pixel in each frame of
197 rendered output. (Evaluates at the depth used in depth-rendering.)
199 o Add option --pc to specify which pairwise comparisons should be
202 o Add --et option to specify encounter thresholds.
204 o Clean up d3::scene to remove triangle-mesh code.
206 o Add an option --def-nn to allow definition of pixels in output images
207 to take values from neighboring pixels within a certain radius, in
208 cases where they would not otherwise be defined.
210 o Modify representation of 3D subspaces so that refined subspaces
211 are roughly cubical, and to allow refinements at multiple
214 o Fix bugs in 3D color and occupancy updating caused by bounding
217 o Add option --pa to set the number of point candidates accepted
218 for each pair of cameras (pairwise ambiguity). The default
219 of 3 preserves existing default behavior.
221 o Add option --oui for determining occupancy update iterations.
222 The new default is 10, halving the previous default of 20.
224 o Add option --tcem for scoring point candidates by third-camera
225 views. The default of 0 preserves existing default behavior.
230 o Add magical file 'dump:' for listing color values numerically
233 o Transition from a subdivisible triangle model to a subdivisible
234 space model, using a rudimentary implementation of Hans Moravec's
237 o Add support for view and depth output from arbitrary cameras.
239 o Add clipping plane options for 3D modeling.
241 o Fix various bugs in control-point alignment reported by Gregory
247 o Modify --q1 to use median-value incremental rendering.
249 o Add support for median-value incremental and Irani-Peleg rendering.
250 Using a statistic other than the mean was suggested by Scott Scriven
251 as a means of eliminating non-uniform artifacts. Using the median
252 seems to improve performance on Scott Scriven's example sequences, as
253 well as on the scaled output of fine:sinc*lanc for sparse inputs.
255 o Move ale-psf-calibrate to a new scripts directory.
257 o Add support for using control points in 2D and 3D alignment, as well
258 as in 3D model construction. New options include '--gs points',
259 '--cpf-load=', '--cpp-upper=', '--cpp-lower=', '--va-upper=', and
262 o Fix enumerator compile bugs noted by Gregory Maxwell and Tom Holroyd
263 to cause compilation failure under GCC 3.4.
265 o Add average magnitude comments to transformation data file output.
267 o Add a color adjustment option --exp-mult=.
269 o For 3D scene reconstruction, use a new unified surface model in place
270 of the depth-based multi-model approach used in 0.8.0. The new model
271 is adjusted on the basis of edge, angle, and color measures.
276 o Add a flag --exp-meta-only which causes tonal registration to be
277 performed only on the basis of exposure metadata (e.g., data encoded
278 as EPPM extended attributes). This approach was suggested by Gregory
281 o Set image offsets in d2/render/combine.h. This allows Irani-Peleg
282 rendering to work with --crop when the default rendering chain
283 includes more than one rendering invariant.
285 o Perform Irani-Peleg updating separately by channel instead of
286 using vector operations. This allows divide-by-zero and other
287 conditions to be localized to particular channels.
289 o Modify the Irani-Peleg renderer to use estimate-based certainty. This
290 seems to improve noise characteristics significantly.
292 o Write the results of tonal registration as a comment in the
293 transformation data file.
295 o Add support for PPM with extended attributes (EPPM). Attributes
296 handled specially include black level, shutter speed, aperture, and
299 o Add experimental cost calculation routines to d3/scene.h.
301 o Modify euclidean alignment so that perturb-upper and perturb-lower
302 apply to rotational arclength.
304 o Fix an index variable bug in d2::image_bayer_ale_real::trigger().
306 o Modify d2::exposure one-sided certainty so that the 'one-sided'
307 condition only applies to bright (>50%) areas. Applying it to dark
308 areas has no clear benefit, and an experiment by Gregory Maxwell
309 demonstrates that doing so can exacerbate noise.
311 o Modify d2::align to use unscaled input images when the scale factor
312 is larger than 1.0, or when a scaled_filter interpolant is being used.
314 o Modify d2::image::scale() to allow scale factors in the interval
315 (0, 1), and modify the command-line interface and help text to reflect
316 this change. --scale= now accepts all finite positive values.
318 o Add user interface options --ui=stream and --ui=tty. The latter
319 includes more detailed status output when terminal width information
320 can be obtained (esp. when IOCTL=1 is set at compile time), and is the
323 o Move certain user interface elements to the source subdirectory ui/.
325 o Modify d2::render::ipc::_ip_frame_correct() so that exposure
326 re-estimation uses a ratio of weighted sums instead of a weighted
329 o Modify d2::align::set_exposure_ratio() so that alignment
330 weights and certainty values are taken into consideration.
332 o Add a --cw option to weight alignment error by certainty values,
333 as suggested by Gregory Maxwell. This allows the contributions of
334 pixels at maxval to be diminished, which can increase alignment
335 success in certain cases.
337 o Replace functions d2::incremental::{increase,decrease}_extents()
338 with new functions that take exclusion regions into account. The new
339 functions should also fix a boundary-calculation bug reported by
342 o Modify d2/render/ipc.h to handle exclusion regions more effectively.
344 o Add --crop argument, which excludes the spatial complement of a
345 specified area over a specified set of frames. Gregory Maxwell notes
346 several advantages of internal over external crops, including
347 preserving knowledge of position in the uncropped frame, which among
348 other benefits allows natural handling of Bayer patterns.
350 o Modify rx_parameters in d2/render.h to use the ale_pos data type
351 instead of int. This should allow exclusion regions to be calculated
357 o Add incremental 3D reconstruction output.
359 o Remove the reference to a non-existent web page in
360 unsupported::fornow().
362 o Allow device-specific bayer patterns to be overridden by the --bayer
365 o Add an option for explicitly setting the camera view angle. Make the
366 default view angle 43.7 degrees.
368 o Implement optimizations that reduce the memory footprint when 3D
371 o Modify the 3D cost reduction algorithm. The new algorithm seems to
372 offer better results than the old in cases tested thus far, and does
373 not require that spatial extension be enabled.
375 o Add support for the Canon 300D with a 50mm f/1.4 lens (specifying view
376 angle), as well as experimental support for the 50mm f/1.4 lens at 1.4
377 (specifying a linear PSF). Also add support for 50mm f/1.8 and 85mm
378 f/1.8 lenses, specifying view angles as specified in the chart at
379 http://www.acapixus.dk/photography/angle_of_view.htm
381 o Don't output final data when --psf-match is specified. Doing so
382 would be useless anyway, and apparently causes a segfault.
384 o For cases where --psf-match is specified, modify the exposure settings
385 for the final input image (i.e., reference image) so that default
386 exposure is used, and modify the bayer pattern settings so that no
387 bayer pattern is used. (The first of these modifications requires
388 changes in the way that the array of input exposures is stored.)
390 o Optionally (when OPTIMIZATIONS == 1) use the output of the default
391 rendering chain directly as the Irani-Peleg initial approximation,
392 instead of copying it.
394 o Add support for PSF convolution and scalar multiplication.
396 o Move all PSF parsing logic to a new file: d2/render/psf/psf_parse.h
398 o Modify help argument processing so that several help arguments can be
399 specified at a time. Change the usage text to reflect this.
401 o Fix concatenated help output; outputs from all help options are now
402 represented. (3D help had been omitted in 0.7.2.)
404 o Add a check to ensure that at most one --q* option is specified.
405 The issue of multiple --q* options being specified was raised on the
406 ALE mailing list by Viktors Rotanovs. As there is currently no
407 support for this, generating an error message is appropriate.
412 o Add cost-minimizing code to reconstruct 3D scenes from 2D inputs.
413 (This code is currently very experimental.)
415 o Add rudimentary device support for raw, linear files from the Canon
416 EOS 300D (Digital Rebel) SLR. CRW files may not be directly usable
417 under all configurations; in cases where they are not, Dave Coffin's
418 dcraw program, with arguments -d -4, will produce a raw, linear PPM
419 file. See http://www.cybercom.net/~dcoffin/dcraw/
421 o Add a new option --gs-mo to establish a minimum overlap area for
422 global searches. This may allow more of Derrick Brashear's historical
423 USGS contour map image sets to align successfully. (from
426 o Allow the scale factor to be explicitly set to one. (from
429 o Print version information to stdout instead of stderr. (from
432 o Add a rudimentary test suite. (from 0.7.1-patch2)
434 o Add support for --perturb-{upper,lower}=x%, where the value x% is
435 specified as a percentage of the smallest image dimension. Use of
436 percentages to specify bounds was suggested by Jeff Epler. (from
439 o In render::is_excluded(), add the offset before checking exclusion
440 regions. (from 0.7.1-patch1)
442 o Add code to shrink the accumulated image in d2/render/incremental.h,
443 so that superfluously large undefined areas are never present. This
444 may improve operation of '--gs inner' in some cases. (from
447 o In d2::align::_align(), rescale default_initial_alignment in parallel
448 with the current transformation, so that it can be used again, if
449 necessary. (from 0.7.1-patch1)
451 o Add experimental options --perturb-source and --perturb-output, which
452 allow some refinement of the manner in which perturbation occurs.
458 o Fix --visp segfault when not using last: filters.
460 o Add help mode --hA to display all help pages.
462 o Add circular point-spread function option "circle=<diameter>".
464 o Add support for the ov7620 sensor (raw, linear modes only). (Updated
465 from 0.7.0-patch1 to specify a linear PSF.)
467 o Add global search option --gs to fix an alignment problem reported by
468 Bert Douglas. (Also included in 0.7.0-patch1.)
470 o Change transformation::eu_{get,set,modify}() so that externally
471 visible values are interpreted in the context of transformations
472 between scaled images, while internal values represent transformations
473 between unscaled images. (Bugfix for 0.7.0. Also included in
476 o d2/tfile.h: Ensure that eu[] parameters are properly scaled when read
477 and written. (Bugfix for 0.7.0. Also included in 0.7.0-patch1.)
479 o Fix order-of-operations bug in d2::image::scale_by_half(). (Bugfix
480 for 0.7.0 and earlier versions. Also included in 0.7.0-patch1.)
482 o Scale alignment weights for reduced level-of-detail in d2::align().
483 (Also included in 0.7.0-patch1.)
485 o For reduced level-of-detail alignment reference images, filter
486 using alignment weights. (Also included in 0.7.0-patch1.)
488 o Add speed optimizations for filtering in the Euclidean case, but
489 leave these disabled, since they are not safe. (Also included
495 o Add support for algorithmic alignment weights. This requires
496 POSIX fork() and execlp(), so add a Makefile variable for POSIX.
498 o Add support for frequency-based alignment weights. Angelo Pesce
499 had initially suggested the related (or more general) idea of
500 edge-based alignment. Frequencies were chosen because of their
501 conceptual simplicity. This option requires that FFTW be linked.
503 o Add support for specifying per-pixel and per-channel alignment weights
504 by providing an additional weight-map image, as suggested by Bert
507 o Remove support for USM.
509 o Add multiple default settings: q0, q1, q2, qn, qr.
511 o Partition help into sections, and add a section for transformation
514 o Add a device type for the XVP610 camera in 640x480 mode.
516 o Modify the divisor in d2/render/ipc.h to ensure convergence when
517 using multiple varieties.
519 o Add experimental handling for Bayer patterns.
521 o Add experimental video stabilization options.
523 o Add options to control output range. By default, use the range of the
526 o For incremental rendering, add general filtering options. Drizzling
527 options are no longer supported as such, but the help output offers
528 examples of how to emulate old drizzling/merging techniques (roughly).
530 o Add options --fail-default and --fail-optimal to select the desired
531 failure mode. --fail-default uses the default alignment in the case
534 o Add option --ex, to support exclusion volumes. Region exclusion was
535 first suggested to the author by Dewayne VanHoozer as a means of
536 solving the 'closed eye problem' in group photography.
538 o Add a barrel distortion adjustment multiplier and rate options.
540 o In d2/transformation.h, add parameters for barrel distortion correction.
541 In d2/tfile.h, add new barrel distortion command 'B'. The approach
542 taken is based on that of Helmut Dersch's PanoTools. (i.e., a
543 polynomial in radial distance is used.)
545 o Increment the latest supported transformation file syntax to version
546 3. This version supports transformation of the original frame, as
547 well as other new features described above.
549 o Move d2/gpt.h to d2/transformation.h.
551 o In d2::align, add support for original frame transformations.
553 o In d2::align::diff() and d2::align::set_exposure_ratio(), treat cases
554 with and without extension identically.
556 o Report unrecognized transformation file commands as errors instead of
559 o In the transformation data file handler, report incompatible
560 transformation types as an error instead of as a warning.
565 o Add a generalized, but rudimentary, implementation of Steve Mann's
566 notion of 'certainty'. For more details, see
567 http://wearcam.org/comparametrics.pdf
569 o Make stdin filter height and width independent of each other.
571 o In the Irani-Peleg renderer, skip frames that fail to reach the match
574 o Convert some operations on pixels and points into vector syntax
575 through C++ operator overloading.
577 o Add command-line options to select plain or raw PNM/PPM formats. Remove
578 makefile variable PLAIN.
580 o Add command-line options to select 8/16 bits per channel. Remove
581 makefile variable BITS.
583 o Revise the device configuration xvp610_320x240 to use a new
584 filter, reflecting driver updates (see the relevant web page
585 http://auricle.dyndns.org/xvp610/ ) and support for non-linear
586 colorspace point-spread functions.
588 o In the Irani-Peleg renderer, use a discrete Fourier transform to
589 ensure that each (point-spread function, backprojection kernel) pair
590 satisfies condition (9) from theorem 4.1 in the source paper.
592 o Add a point-spread function rasterizer.
594 o Extend the --replace option to support drizzling.
596 o Add support for exposure registration (i.e., matching of exposure
597 between different frames).
599 o Change -Os to -O2 in the Makefile, since -Os no longer achieves speedup
600 in the most critical codepaths.
602 o Add command-line support for summation of point-spread functions.
604 o Add a polymorphic point-spread function type psf and convert all
605 external interfaces of ipc.h and usm.h (formerly hf-enhance.h) to use
608 o Fix memory leak in d2/render/combine.h:get_image(). (This fix is also
609 included in a patch for 0.5.1.)
611 o Modify the USM renderer to write output when incremental output is
614 o In the USM renderer, now only defined pixel values contribute to the
615 mask. Also, undefined values are no longer masked.
617 o Update e-mail address information.
619 o Modify the Irani-Peleg calibration script into a general point-spread
620 function calibration script, using a new built-in point-spread function
621 evaluation module to rate candidates.
623 o Irani-Peleg and USM (High-frequency enhancement) renderers now
624 use the same point-spread function configurations. New options --ips,
625 --usm, --lpsf, --nlpsf, and --device subsume and extend the
626 functionality provided by options --ip, --ipc, and --hf-enhance.
628 o Add support for convolutions in non-linear colorspace. This feature
629 is enabled and configured by the command-line option --nlpsf. (See
630 also the item above.)
632 o Linearize channel values within internal data structures so that most
633 ALE operations are performed on linear data. Steve Mann discusses the
634 use of linear representations in image processing, e.g. in his paper
635 http://wearcam.org/comparametrics.pdf . We assume a simple power-law
638 o Modify the image class to use a floating-point data type for
641 o Modify the README to remove information covered in the User Manual.
643 o Revise identifiers and comments in d2/render/ipc.h to better reflect
644 the terminology used in the source paper by Irani and Peleg.
646 o Consoldiate code for computing the position and dimensions of a pixel in a
647 new coordinate system, and use this new abstraction to reduce the code
648 size of d2/render/ipc.h and d2/render/drizzle.h (Irani-Peleg and
649 drizzling code, respectively).
651 o Change several instances of 'double', 'float', and 'my_real' to
652 specialized floating-point types 'ale_real', 'ale_pos', 'ale_sreal',
655 o Fix offset calculation in d2/render/ipc.h. This is necessary for
656 Irani-Peleg rendering of image mosaics extending upwards or to the
657 left of the original frame. (This fix is also included in a patch for
660 o Move classes treating snapshots as two-dimensional data to directory
661 'd2' and create an associated C++ namespace. We can't use '2d' to
662 label the namespace, because the C++ grammar won't allow it.
667 o Several of the changes below are based on a suggestion by Bert
668 Douglas regarding support for 16-bit-per-channel color. See the README
669 for more information about relevant compilation options.
671 o Add information to the README regarding new compilation options.
673 o Modify the makefile to accept a variable BITS, and differentiate between
674 values BITS=8 and BITS=16. The latter option causes the macro BITS_16
675 to be defined during compilation.
677 o Modify image_rw.h to handle 16-bit data when BITS_16 is defined. Also,
678 differentiate between 8-bit and 16-bit ImageMagick builds by checking
681 o In ppm.h, add carriage returns to the set of recognized whitespace
684 o Modify ppm.h to read 16-bit binary PPM files (added to the PPM format
687 o Modify ppm.h to read plain (ASCII) as well as raw (binary) PPM files.
689 o Add a Makefile option for writing plain (ASCII) PPM files instead of
690 raw (binary). This option causes the macro PPM_PLAIN to be defined
693 o Modify ppm.h to write plain (ASCII) PPM files when PPM_PLAIN is defined.
695 o Modify ppm.h to output 16-bit PPM files when BITS_16 is defined.
697 o Modify ppm.h to scale input intensity values based on the internal
698 representation depth (8 or 16 bits per channel).
700 o Add a file 'channel.h' to describe the color channel data type and
701 valid range, both being dependent on whether BITS_16 is defined. Use
702 these generic values, where appropriate, throughout the ALE codebase.
707 o Remove certain cloning operations from align.h, but since cursory tests
708 indicate that scaling with --scale is much more expensive than cloning,
709 allow cloning to occur when scaling occurs.
711 o Add more comment documentation to header files.
713 o Emit a more informative error message when the PPM file handler
714 encounters a file that is not a well-formed PPM binary file.
716 o Move rendering implementations to subdirectory 'render/'.
718 o Modify semantics of alignment following by applying to file-loaded
719 initial transformations a delta transformation D = AB^-1, where B is
720 the previous frame's (unmodified) initial transformation, A is the
721 previous frame's final transformation, and ^-1 is the inverse operator.
722 Using --follow with --trans-load can now improve alignment success when
723 working with panoramic image mosaics.
725 o We're not using simulated annealing, so remove comments that claim
728 o Remove certain unsafe assumptions from ipc/* (now render/ipc/*); this
729 change includes a modification to ipc.h (now render/ipc.h). Limits of
730 the rectangle used as an argument to the <type>::response() function
731 are now explicitly given rather than implied.
733 o Change documentation for --replace.
738 o Modify Irani-Peleg renderer to produce incremental output.
740 o Modify Monte Carlo alignment so that the same set of accumulated image
741 pixels is examined when comparing two transformations.
743 o Add an option for additional upper-bound constraint of rotational
744 perturbation. Jeff Epler had noted that the
745 perturb-upper/perturb-lower options alone may not be suited to working
746 with sets of higher-resolution images.
748 o Resolve a bug introduced in version 0.1.1 which had limited rotational
749 perturbation to 2 degrees.
751 o Add an option to adjust the maximum level of detail used. The default
752 maximum is 2/perturb, which matches the default for previous versions
755 o Modify names of temporary files used in the calibration script.
760 o Add a replacement option suggested by Jeff Treece. This option can
761 be used to facilitate video stabilization.
763 o Irani-Peleg: add support for configurable modules, including
764 a module that reads its configuration data from standard input
765 and a module calibrated for an IBM (Xirlink) XVP610 in 320x240
766 mode. A rudimentary script for calibrating devices with unknown
767 projection functions has been included as ipc/ale-calibrate.
769 o Irani-Peleg: don't truncate correction values in backprojection.
771 o Irani-Peleg: don't multiply the weight function by a scale correction
772 factor in backprojection.
774 o Rename render::operator()() to render::sync(). Update subclasses
780 o Allow --ip and --hf-enhance to be used together. [Modify
781 ip::operator() and hf_filter::operator() so that multiple
782 post-processing filters can be used.]
784 o Initialize the drizzled image to be uniformly black. This fixes
785 a bug introduced in 0.4.2.
787 o Allocate the correct size image for drizzling. This fixes a bug
793 o Ensure correct transformation scaling and difference calculation after
794 alignment is complete, even if alignment terminates with a reduced
795 level of detail (i.e. perturb-lower > 2).
797 o Separate the scale() function into two cases: scale() is reserved for
798 scale factors greater than or equal to one, as in user-specified
799 scaling; and scale_by_half() is used for the scale factor 0.5, needed
800 to provide multiple levels of detail in alignment. Modify the
801 scale_by_half() case to reflect source pixel values more fairly. (This
802 change affects alignment behavior at reduced levels of detail.)
804 o Reduce whitespace in usage() message.
806 o Modify align::diff() to use correctly scaled image offset values.
807 (Bugfix for alignment with --extend.)
809 o Modify align.h so that the image definition array is correctly scaled
810 for all levels of detail. (Bugfix for alignment with --extend.)
812 o Modify image.h to correctly handle image offset values. (Bugfix
813 for --extend operation.)
815 o Remove call to stat() in image_rw.h. This improves OS independence,
816 and apparently also allows URL-specification of images when compiled
817 with ImageMagick support.
819 o Modify image file handler interface so that input files are not scaled.
820 Perform scaling, when necessary, outside of the file handler. Since
821 unscaled data is needed by the drizzling and Irani-Peleg code, this
822 fixes bugs in those modules.
827 o Modify the Monte Carlo pixel selection algorithm so that the expected
828 number of sampled pixels more closely matches the specified number in
831 o Specify the binary mode flag to fopen() calls in the PPM file handler.
832 This change resolves a bug discovered by Benjamin Hill.
837 o Add support for Monte Carlo alignment of images, in which only a
838 random subset of pixels is sampled.
840 o Add an option to disable incremental image output.
845 o Implement an image reconstruction option based on the work of Irani and
848 o Clean up source; move rendering and alignment functions into separate
851 o Change valid drizzling diameter interval to (0,1].
853 o Modify PPM file reader to correctly handle comments in PPM files; this
854 resolves a bug pointed out by Benjamin Hill.
856 o Add missing typecast to resolve compile warning under GCC 3.2.
858 o Make changes to gpt.h that may reduce the Euclidean alignment time.
860 o Move ale.c to ale.cc to follow one of the many C++ naming conventions.
865 o Change language to C++.
867 o Code cleanup in ale.c, image.h, and gpt.h.
869 o Separate into a number of subsections the option descriptions in the
872 o Add URL information to README
874 o Add an experimental drizzling implementation. Research on drizzling
875 by Richard Hook and Andrew Fruchter was brought to the attention of
876 the author by Dan Kaminsky.
878 o Add an option to use the previous frame's final transformation as the
881 o Change pixel weight data type so that more than 255 images can
884 o Add support for increased spatial extents. Research on increased
885 spatial extents by Steve Mann was brought to the attention of the
888 o Modify the transformation algorithm to use transformations from the
889 domain of the input image to the range of the target image. This
890 change is reflected in transformation files. Maintain support for
891 old transformation file versions, however.
893 o Add version information to transformation files and update the version
897 V 0.4.0p1 2003-Apr-04
899 o Merge a bugfix from Debian ALE package version 0.4.0-1. Without this
900 fix, an assertion failure can occur when ImageMagick support is
901 enabled. Original fix implemented by Nick Rusnov.
906 o Add support for general scaling parameters (i.e. all scale
907 factors >= 1.0). --scale2, --scale4, and --scale8 are now deprecated,
908 and replaced with a more general --scale=x argument.
910 o Support enhancement of high frequencies even when the scale factor is
913 o Modify the high-frequency filter algorithm to support filtering near
914 the border of an image.
916 o Modify the high-frequency filter function so that the response is now
917 (4/n)^2 times what it used to be, where n is the scale factor.
922 o Don't filter high frequencies if we're not enhancing them. This
923 improves efficiency, but should not affect output.
929 o Output average match statistic.
931 o Update informational output to transformation files to include original
934 o Add support for post-enhancement of high-frequency details.
939 o Add support for loading and saving transformation data.
941 o Add an option to set the upper bound on correction steps.
943 o Modify Makefile to compile with size optimization, since this
944 appears to improve speed characteristics in some cases.
947 o Move transformation data structure and related functions to
948 a separate header file.
953 o Add support for general projective transformations, and change/add
956 '--translation' used to be '--no-rotate'
957 '--euclidean' used to be '--rotate'
958 '--projective' is a new option
963 o Add optional support for .jpg, .png, .tiff, and other file formats
964 through ImageMagick. Translation using ImageMagick was suggested by
968 o Don't segfault if a file can't be opened.
973 o Use reduced levels of detail in coarser alignment steps to increase
976 o Change perturbation step lower-bound check from less-than ('<') to
977 less-than-or-equal-to ('<='). Change default lower bound
978 to .125 from .1 (the behavior is the same, but the value
981 o Change perturbation initial value to 32 pixels from
982 16 pixels, since coarse alignment is now less expensive.
984 o Modify scale function so that the borders aren't
985 corrupted (too badly).
990 o Add support for correction of rotation about the lens axis.
992 o Add an optional match criterion for merging.
994 o Add an option to adjust minimum step-size.
996 o Add flags to specify which channels to use for alignment. Use
997 a summation of all channels by default.
999 o Add an option to modify the error metric exponent, and change
1000 the default value from 1 to 2.
1002 o Display information about how well a new image matches
1003 the accumulated image.
1005 o Add a rule for ale.exe to the Makefile.