File: ChangeLog

package info (click to toggle)
ale 0.9.0.3-5
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye
  • size: 7,260 kB
  • sloc: cpp: 21,826; sh: 10,106; xml: 4,129; ansic: 2,343; makefile: 563; perl: 454; exp: 319
file content (1339 lines) | stat: -rw-r--r-- 52,789 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
ALE 0.9.0.3 Change log

  David Hilvert

   Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 David Hilvert

   This article is free documentation; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by the
   Free Software Foundation; either version 3 of the License, or (at your
   option) any later version.

   This article is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
   for more details.

   You should have received a copy of the GNU General Public License along
   with this article; if not, write to the Free Software Foundation, Inc., 51
   Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

   Abstract

   This article contains detailed change information for each release.

     ----------------------------------------------------------------------

46. Version 0.9.0.3, 2009-Mar-31

     o Revise --version to include ImageMagick library information.
     o Add ditz issue database and package document BUG-REPORTING.
     o Refine warnings for 8-bit output when --16bpc (incl. default).
     o Fix --16bpc default behavior.
     o Fixed serious memory leak in alignment code, and less serious leaks.

45. Version 0.9.0.2, 2008-Nov-05

  45.1.  Documentation

     o Update documentation makefile for better links compatibility.

  45.2.  Scripts

     o Fix 'exec -a' bashism in ale script, after this was reported by Mihai
       Varzaru as being broken in Ubuntu 8.10.

44. Version 0.9.0.1, 2008-Jun-13

     o Use a pager (e.g., less) when displaying help.
     o Add a man page, at the recommendation of Debian developer Ruben
       Molina. The man page structure roughly follows that of Debian
       Iceweasel, GNU tar, and the earlier ALE manual page for Debian by Nick
       Rusnov and Ruben Molina.
     o Add new algorithms for pixel assignment in multi-alignment, including
       filling, least-size local selection, and global-best selection.
     o Fix various multi-alignment bugs, including a bug causing increased
       computational complexity for rendering, as well as offset and scaling
       bugs.
     o Modify --lod-max to --lod-preferred, add a dimension restriction
       --min-dimension on level-of-detail, and make --lod-preferred=-3 and
       --min-dimension=10 default.
     o Revise DejaGNU test suite for current option syntax, so that "make
       check" now runs all tests.
     o Do not attempt to handle --trans-{save,load} arguments as images in
       the ale wrapper script.
     o Add include <string.h> to ui/ui.h in an attempt to resolve Debian bug
       #482765, reported by Marc Brockschmidt and noted by Ruben Molina.
     o Include more information about scale cluster structures in the logging
       ui.
     o Add tonal registration by element to multi-alignment code.
     o Add a minimum average certainty for registration of multi-alignment
       elements.
     o Modify ale script to tally thread statistics when the environment
       variable ALE_COUNT_THREADS is set non-zero.

43. Version 0.9.0, 2008-Apr-14

     o Add skeletal web documentation to the documentation tree, in doc/web,
       and revise this to consolidate more information on the front page.
     o Implement an alignment technique allowing multiple alignments for a
       single frame. Handling parts of a frame separately to resolve
       alignment issues (but using match thresholding to discard regions
       instead of using multiple alignments) was suggested by Rob Stewart.
     o Add --resident parameter, allowing explicit allocation of backing
       store for (e.g., large) image data structures.
     o Check for NaN in linearization and unlinearization in
       exposure_default, as a possible fix for a segmentation fault reported
       by Bret Towe.

42. Version 0.8.11, 2007-Nov-03

     o Revise certain code for improved execution speed, including disabling
       certain assertions and reducing calls to pow().
     o Replace geometric-mean filtering of weight values with minimum-value
       filtering, reducing calls to pow().
     o Add fixed-point data types selectable at configuration time for
       coordinate and color data, hence improving speed on certain embedded
       platforms. Use on phones was suggested by Wen Guihua.
     o Revise incremental rendering code to store color values unnormalized
       by weights.
     o Revise multi-alignment options for the currently-considered
       implementation.
     o Eliminate NaN propagation that could lead to alignment failure in
       certain cases, perhaps causing an alignment bug reported in earlier
       versions by Gregory Maxwell.

41. Version 0.8.10.1, 2007-Oct-04

     o Change 'char *' referencing string literals to 'const char *'.
     o Set perturbation multipliers to 1 in cases of a non-finite value.

40. Version 0.8.10, 2007-Oct-02

     o Add threading for d2::image::*scale_by_half() functions.
     o Always rescale transformations for full detail after alignment is
       complete.
     o Make --lod-max=-4 default.
     o Make default --dchain auto:triangle:2,fine:box:1,triangle:2, which
       should produce better output during re-filtering than the previous
       default.
     o Revise re-filtering operation to use as a filter scale the distance
       between nearest defined points in opposite axis-centered cones about
       the point to be filtered.
     o Update scale cluster structures and interpolation routines used in
       alignment for calculating and storing certainty and weights; in
       particular, certainty of the input frame is now pre-calculated for
       multiple levels of detail.
     o Add currently-unused skeletal code for non-linear level of detail
       calculations.
     o Revise Monte-carlo value to use a single static default, removing
       dynamic behavior and certain associated support code, and applying the
       sampling rate in a uniform manner to all levels of detail and all
       tonal and spatial registration algorithms.
     o Fix error in level-of-detail accounting in alignment code.
     o Replace references to math.h with references to ale_math.h.

39. Version 0.8.9.1, 2007-Aug-31

     o Attempt to resolve certain 'always true' warnings reported by Marius
       Schamschula on Mac OS 10.3.9 (PPC).
     o Add macros for isinf() and isnan() in an attempt to resolve build
       failures reported by Marius Schamschula on Mac OS 10.3.9 (PPC).
     o Resolve certain build errors occuring when configuring
       --disable-threads, or when threads are unavailable.
     o Remove instrumentation writing to 'lsimulated.png'.

38. Version 0.8.9, 2007-Aug-25

     o Set new defaults for --ips, --dchain, and --3d-dchain, and remove --q*
     o Add rendering chain scaled sampling filter type auto:, implementing
       re-filtering, with rough automatic filter size determination.
     o Add an abstract domain decomposition threading class.
     o Revise Irani-Peleg code for reduced memory and cpu use.
     o Attempt to fix exclusion region handling after a bug report by Gregory
       Maxwell; other issues may remain.
     o Fix handling of --ip-{mean,median}, resolving a bug noted by Gregory
       Maxwell.
     o Add wrapper script 'ale' for handling raw files and extracting Exif
       metadata.
     o Allow any match when the threshold specified is neither positive nor
       zero.
     o Update license to GPLv3.
     o Various rendering bugfixes.

37. Version 0.8.8.1, 2007-May-18

  37.1.  Build

     o Disable d2::gauss::cutoff definition after a build failure reported by
       Marius Schamschula on an Intel Mac running 10.4.9 (gcc 4.0.0?).

36. Version 0.8.8, 2007-May-15

     o Include an incomplete implementation for multiple alignment region
       handling.
     o Make --16bpc default.
     o Add extents calculation to d2::render::ipc to limit the area examined
       during exposure re-estimation.
     o Provide a new cache of fixed size for input images, defaulting to
       256MB, adjustable via the --cache option.
     o Add error statistics for calculating center of rotation and
       perturbation size for alignment.
     o Add loop avoidance for dynamic monte carlo alignment.
     o Reduce --mcd-removal default to 10.
     o Use synchronized instead of unsynchronized dynamic monte carlo removal
       checks.
     o Disable --follow in the non-default case when perturbation size is
       zero.
     o Make --no-inc default.
     o Add 'defaults' global search option, and make this option default.
     o Modify --gs-mo to allow specification as a percentage, and make 67%
       default.
     o Add user interface options --ui=log and --ui=quiet, with greater and
       lesser verbosity, respectively.
     o Modify black level handling to always use linear values.
     o Increase default barrel distortion multiplier and rate maximum to 2.0
       and 8.0, respectively.
     o Revise ordering of ui_tty status output so that more informative
       fields occur earlier in the string.
     o Modify numerical formatting of certain UI elements to preserve
       constancy of field locations in typical cases.
     o Add Gaussian PSF. (HJ Hornbeck)
     o Recalculate diff statistics after increasing the mc parameter in
       dynamic monte carlo alignment.
     o Update Nikon D50 PSF. (HJ Hornbeck)
     o Add UI update thread, in cases where threads are available.
     o Allow file-scoped --gs and --gs-mo options.
     o Ignore fex regions for nex SSFEs, resolving a bug noted by Gregory
       Maxwell.
     o Add --black option for specifying black level as a fraction of
       saturation.
     o Add --ev option for specifying ISO100-equivalent EV.
     o Add breakdown of profiling information by perturbation size for local
       alignment.

35. Version 0.8.7, 2007-Mar-04

  35.1.  Alignment

     o Modify d2::image::defined_scale_by_half() to use a geometric mean, so
       that alignment at reduced level of detail will still work at larger
       reductions when using non-zero certainty.

  35.2.  Rendering

     o Add a weight-limiting option to the Irani-Peleg renderer.
     o Add incremental renderer mean invariant avgf:<x>:<e> weight-limited to
       initial values.

34. Version 0.8.6, 2007-Feb-17

     o In d2::align, use rotation about the frame center as an alternative in
       cases where the sampling centroid is undefined.
     o Modify d2::point::{neg,pos}inf() assertions to allow for isinf()
       implementations returning any non-zero value for any infinity.
     o Re-adjust exposure in Irani-Peleg even when no non-linear stage is
       present.
     o Adjust the default pixel definition threshold to account for the
       certainty floor.
     o Use a rudimentary, single-pass estimate-based certainty approach for
       incremental rendering.
     o When --cx is positive, use only certainty calculated from the
       simulated scene for estimating tonal registration in Irani-Peleg
       passes.
     o Remove --qr default setting, as certainty and range-extension now have
       established general defaults.
     o Change --cx to 1 by default. Change --exp-extend to be disabled by
       default. Remove these flags from default settings.
     o Update driver names to omit file type qualifiers, according to the
       convention used in HJ Hornbeck's Nikon D50 device configuration patch.
     o Add Nikon D50 device configuration. (HJ Hornbeck)
     o Update default settings according to time and image quality test
       results. fine:triangle:2, gauss:0.75, and combinations of these
       filters were suggested by HJ Hornbeck.
     o Revise incremental renderer to store unnormalized values, for better
       handling of small weights, and eliminate the minimum contribution
       weight.
     o Add inlining and pre-calculation to Irani-Peleg. (HJ Hornbeck)
     o Add gaussian sampling filter. (HJ Hornbeck)

33. Version 0.8.5, 2007-Jan-19

  33.1.  Documentation

     o Remove binaries and documentation sections from the readme, and prune
       non-package documentation for source distributions.

  33.2.  Alignment

     o Make the --follow alignment option default.
     o Modify rotational alignment search to rotate about the centroid of the
       sample region.

  33.3.  User interfaces

     o Add help text for argument scope.

  33.4.  3D Models

     o Revert 3D code to experimental status due to poor handling of real
       image sets.
     o Modify 3D code for slightly better handling of real image sets.

32. Version 0.8.5-pre3, 2006-Nov-03

  32.1.  Alignment

     o Fix a potential nondeterminism bug due to undefined seed bits in the
       random number generator. (Fixes certain alignment failures.)
     o Add dynamic monte carlo alignment, and make this default.
     o Allow file-scoped use of --perturb-upper.

  32.2.  Rendering

     o Modify default settings using Irani-Peleg rendering to use the
       triangle:2 incremental rendering chain.

  32.3.  Exposure

     o Correct --exp-mult arg count. (Gregory Maxwell)

31. Version 0.8.5-pre2, 2006-Oct-25

  31.1.  Alignment

     o Add option --profile to measure elapsed real time for 2D alignment and
       rendering operations.
     o Add support for POSIX threads to 2D alignment and rendering code.
       (Adding multithreading support was first suggested by Jody (Joe)
       Harris. Testing of multithreaded code on multiprocessor hardware was
       done by Gregory Maxwell.)

  31.2.  Rendering

    31.2.1.  Scale

     o Modify d2::image::scale() to correctly handle offsets for scale
       factors other than negative powers of two.

  31.3.  User interfaces

     o Reformat most help text to fit a 79 column screen.

30. Version 0.8.5-pre1, 2006-Oct-16

     o Incorporate all existing ALE documentation within the source tree, and
       license under GPL. Begin migration of documentation, including package
       documentation files, to a more flexible format.
     o Modify ui_tty for correct operation under Hurd and DragonFly consoles.
     o Revise README for autotools build and installation.
     o Add file 'TODO', containing a to-do list for future releases.
     o Add AUTHORS file, in accordance with the autotools packaging
       standards.
     o Revise Changelog name to autotools-approved ChangeLog
     o Add NEWS file containing mailing list and Freshmeat announcement text
       for versions through 0.8.4. This file is required by autotools.
     o Add options --f{ex,crop} for frame-coordinate exclusion regions.
     o Add autotools-based configuration, build, and installation facilities,
       replacing the earlier Makefile-based configuration and build process.
     o Modify --mc to be a file-scoped option.
     o Modify command-line interface to accept certain scope operators, and
       to increase uniformity of syntax.
     o Move input interface details, including option handling, messages, and
       help information, to the ui/ subdirectory.
     o In d3::scene, always use filler spaces when --pc all is specified.

29. Version 0.8.4, 2006-May-14

  29.1.  Packaging

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

  29.2.  Documentation

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

  29.3.  Alignment

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

  29.4.  Rendering

     o Move low-level code concerning scale and level-of-detail from
       d3::scene to d3::pt.
     o Remove older 3D rendering code.
     o 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.

  29.5.  Filtering

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

  29.6.  User interfaces

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

  29.7.  3D Models

    29.7.1.  Rendering

     o 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.
     o Interpolate to generate smooth 3D depth output.

    29.7.2.  Geometry

     o 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.
     o Fix dimension comparison bug in d3::space::traverse::get_next_split().
     o 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)
     o Move code concerning the nature of space from d3::scene to d3::space.

    29.7.3.  Occupancy

     o Add adaptive weight decomposition to 3D occupancy algorithms.

  29.8.  Undocumented build options

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

28. Version 0.8.3, 2005-Dec-23

  28.1.  Image files

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

  28.2.  Rendering

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

  28.3.  3D Models

    28.3.1.  Stereoscopy

     o Add option --pc to specify which pairwise comparisons should be
       performed.
     o 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.
     o Add option --tcem for scoring point candidates by third-camera views.
       The default of 0 preserves existing default behavior.

    28.3.2.  Geometry

     o Add --et option to specify encounter thresholds.
     o Clean up d3::scene to remove triangle-mesh code.
     o Modify representation of 3D subspaces so that refined subspaces are
       roughly cubical, and to allow refinements at multiple resolutions.

    28.3.3.  Occupancy

     o Fix bugs in 3D color and occupancy updating caused by bounding box
       miscalculation.
     o Add option --oui for determining occupancy update iterations. The new
       default is 10, halving the previous default of 20.

27. Version 0.8.2, 2005-Nov-22

  27.1.  Command line interface

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

  27.2.  Control points

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

  27.3.  3D Models

     o Transition from a subdivisible triangle model to a subdivisible space
       model, using a rudimentary implementation of Hans Moravec's notion of
       occupancy.
     o Add support for view and depth output from arbitrary cameras.
     o Add clipping plane options for 3D modeling.

26. Version 0.8.1, 2005-May-6

  26.1.  Build

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

  26.2.  Defaults

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

  26.3.  Exposure

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

  26.4.  Transformation data files

     o Add average magnitude comments to transformation data file output.

  26.5.  Control points

     o 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'.

  26.6.  User interfaces

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

  26.7.  3D Models

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

  26.8.  Source code organization

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

25. Version 0.8.0, 2005-Jan-12

  25.1.  Image files

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

  25.2.  Exclusion regions

     o 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.
     o 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.
     o Modify d2/render/ipc.h to handle exclusion regions more effectively.
     o 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.
     o 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.

  25.3.  Alignment

     o Modify euclidean alignment so that perturb-upper and perturb-lower
       apply to rotational arclength.
     o 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.
     o Modify d2::align::set_exposure_ratio() so that alignment weights and
       certainty values are taken into consideration.
     o 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.

  25.4.  Rendering

     o 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.
     o Modify the Irani-Peleg renderer to use estimate-based certainty. This
       seems to improve noise characteristics significantly.
     o 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.

  25.5.  Exposure

     o 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.
     o Write the results of tonal registration as a comment in the
       transformation data file.
     o Fix an index variable bug in d2::image_bayer_ale_real::trigger().
     o 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.

  25.6.  User interfaces

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

  25.7.  3D Models

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

  25.8.  Source code organization

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

24. Version 0.7.3, 2004-Dec-1

  24.1.  Build

     o Implement optimizations that reduce the memory footprint when 3D
       options are used.
     o Optionally (when OPTIMIZATIONS == 1) use the output of the default
       rendering chain directly as the Irani-Peleg initial approximation,
       instead of copying it.

  24.2.  Defaults

     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.

  24.3.  Rendering

     o Add incremental 3D reconstruction output.
     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 Move all PSF parsing logic to a new file: d2/render/psf/psf_parse.h

  24.4.  Exposure

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

  24.5.  Filtering

     o Don't output final data when --psf-match is specified. Doing so would
       be useless anyway, and apparently causes a segfault.
     o Add support for PSF convolution and scalar multiplication.

  24.6.  User interfaces

     o Remove the reference to a non-existent web page in
       unsupported::fornow().
     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.)

  24.7.  3D Models

     o Allow device-specific bayer patterns to be overridden by the --bayer
       option.
     o Add an option for explicitly setting the camera view angle. Make the
       default view angle 43.7 degrees.
     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.

23. Version 0.7.2, 2004-Oct-26

  23.1.  Build

     o Add a rudimentary test suite. (from 0.7.1-patch2)

  23.2.  Command line interface

     o Print version information to stdout instead of stderr. (from
       0.7.1-patch2)

  23.3.  Image files

     o Add rudimentary device support for raw, linear files from the Canon
       EOS 300D (Digital Rebel) SLR. CRW files may not be directly usable
       under all configurations; in cases where they are not, Dave Coffin's
       dcraw program, with arguments -d -4, will produce a raw, linear PPM
       file. See http://www.cybercom.net/~dcoffin/dcraw/

  23.4.  Exclusion regions

     o In render::is_excluded(), add the offset before checking exclusion
       regions. (from 0.7.1-patch1)

  23.5.  Alignment

     o Add a new option --gs-mo to establish a minimum overlap area for
       global searches. This may allow more of Derrick Brashear's historical
       USGS contour map image sets to align successfully. (from 0.7.1-patch2)
     o Add support for --perturb-{upper,lower}=x%, where the value x% is
       specified as a percentage of the smallest image dimension. Use of
       percentages to specify bounds was suggested by Jeff Epler. (from
       0.7.1-patch1)
     o Add code to shrink the accumulated image in d2/render/incremental.h,
       so that superfluously large undefined areas are never present. This
       may improve operation of '--gs inner' in some cases. (from
       0.7.1-patch1)
     o In d2::align::_align(), rescale default_initial_alignment in parallel
       with the current transformation, so that it can be used again, if
       necessary. (from 0.7.1-patch1)
     o Add experimental options --perturb-source and --perturb-output, which
       allow some refinement of the manner in which perturbation occurs.
       (from 0.7.1-patch1)

  23.6.  Rendering

    23.6.1.  Scale

     o Allow the scale factor to be explicitly set to one. (from
       0.7.1-patch2)

  23.7.  3D Models

     o Add cost-minimizing code to reconstruct 3D scenes from 2D inputs.
       (This code is currently very experimental.)

22. Version 0.7.1, 2004-Aug-27

  22.1.  Build

     o Add speed optimizations for filtering in the Euclidean case, but leave
       these disabled, since they are not safe. (Also included in
       0.7.0-patch1.)

  22.2.  Alignment

     o Add global search option --gs to fix an alignment problem reported by
       Bert Douglas. (Also included in 0.7.0-patch1.)
     o Change transformation::eu_{get,set,modify}() so that externally
       visible values are interpreted in the context of transformations
       between scaled images, while internal values represent transformations
       between unscaled images. (Bugfix for 0.7.0. Also included in
       0.7.0-patch1.)
     o d2/tfile.h: Ensure that eu[] parameters are properly scaled when read
       and written. (Bugfix for 0.7.0. Also included in 0.7.0-patch1.)
     o Fix order-of-operations bug in d2::image::scale_by_half(). (Bugfix for
       0.7.0 and earlier versions. Also included in 0.7.0-patch1.)
     o Scale alignment weights for reduced level-of-detail in d2::align().
       (Also included in 0.7.0-patch1.)
     o For reduced level-of-detail alignment reference images, filter using
       alignment weights. (Also included in 0.7.0-patch1.)

  22.3.  Rendering

     o Add support for the ov7620 sensor (raw, linear modes only). (Updated
       from 0.7.0-patch1 to specify a linear PSF.)

  22.4.  Filtering

     o Add circular point-spread function option "circle=<diameter>".

  22.5.  User interfaces

     o Add help mode --hA to display all help pages.

  22.6.  Video streams

     o Fix --visp segfault when not using last: filters.

21. Version 0.7.0, 2004-Aug-06

  21.1.  Build

     o Add support for algorithmic alignment weights. This requires POSIX
       fork() and execlp(), so add a Makefile variable for POSIX.

  21.2.  Command line interface

     o Increment the latest supported transformation file syntax to version
       3. This version supports transformation of the original frame, as well
       as other new features described above.

  21.3.  Defaults

     o Add multiple default settings: q0, q1, q2, qn, qr.

  21.4.  Image files

     o In the transformation data file handler, report incompatible
       transformation types as an error instead of as a warning.

  21.5.  Exclusion regions

     o Add option --ex, to support exclusion volumes. Region exclusion was
       first suggested to the author by Dewayne VanHoozer as a means of
       solving the 'closed eye problem' in group photography.

  21.6.  Alignment

     o Add support for frequency-based alignment weights. Angelo Pesce had
       initially suggested the related (or more general) idea of edge-based
       alignment. Frequencies were chosen because of their conceptual
       simplicity. This option requires that FFTW be linked.
     o Add support for specifying per-pixel and per-channel alignment weights
       by providing an additional weight-map image, as suggested by Bert
       Douglas.
     o Add options --fail-default and --fail-optimal to select the desired
       failure mode. --fail-default uses the default alignment in the case of
       failure.
     o Add a barrel distortion adjustment multiplier and rate options.
     o In d2/transformation.h, add parameters for barrel distortion
       correction. In d2/tfile.h, add new barrel distortion command 'B'. The
       approach taken is based on that of Helmut Dersch's PanoTools. (i.e., a
       polynomial in radial distance is used.)
     o Move d2/gpt.h to d2/transformation.h.
     o In d2::align, add support for original frame transformations.
     o In d2::align::diff() and d2::align::set_exposure_ratio(), treat cases
       with and without extension identically.

  21.7.  Rendering

     o Remove support for USM.
     o Modify the divisor in d2/render/ipc.h to ensure convergence when using
       multiple varieties.

  21.8.  Transformation data files

     o Report unrecognized transformation file commands as errors instead of
       warnings.

  21.9.  Control points

     o Add options to control output range. By default, use the range of the
       original frame.

  21.10.  Devices

     o Add a device type for the XVP610 camera in 640x480 mode.

  21.11.  User interfaces

     o Partition help into sections, and add a section for transformation
       data file help.
     o For incremental rendering, add general filtering options. Drizzling
       options are no longer supported as such, but the help output offers
       examples of how to emulate old drizzling/merging techniques (roughly).

  21.12.  Video streams

     o Add experimental video stabilization options.

  21.13.  3D Models

    21.13.1.  Rendering

     o Add experimental handling for Bayer patterns.

20. Version 0.6.0, 2004-Feb-10

  20.1.  Documentation

     o Update e-mail address information.
     o Modify the README to remove information covered in the User Manual.

  20.2.  Build

     o Add command-line options to select plain or raw PNM/PPM formats.
       Remove makefile variable PLAIN.
     o Add command-line options to select 8/16 bits per channel. Remove
       makefile variable BITS.
     o Change -Os to -O2 in the Makefile, since -Os no longer achieves
       speedup in the most critical codepaths.

  20.3.  Command line interface

     o Convert some operations on pixels and points into vector syntax
       through C++ operator overloading.

  20.4.  Rendering

     o In the Irani-Peleg renderer, skip frames that fail to reach the match
       threshold.
     o Revise the device configuration xvp610_320x240 to use a new filter,
       reflecting driver updates (see the relevant web page
       http://auricle.dyndns.org/xvp610/ ) and support for non-linear
       colorspace point-spread functions.
     o In the Irani-Peleg renderer, use a discrete Fourier transform to
       ensure that each (point-spread function, backprojection kernel) pair
       satisfies condition (9) from theorem 4.1 in the source paper.
     o Extend the --replace option to support drizzling.
     o Add a polymorphic point-spread function type psf and convert all
       external interfaces of ipc.h and usm.h (formerly hf-enhance.h) to use
       this type.
     o Fix memory leak in d2/render/combine.h:get_image(). (This fix is also
       included in a patch for 0.5.1.)
     o Modify the USM renderer to write output when incremental output is
       enabled.
     o In the USM renderer, now only defined pixel values contribute to the
       mask. Also, undefined values are no longer masked.
     o Modify the Irani-Peleg calibration script into a general point-spread
       function calibration script, using a new built-in point-spread
       function evaluation module to rate candidates.
     o Irani-Peleg and USM (High-frequency enhancement) renderers now use the
       same point-spread function configurations. New options --ips, --usm,
       --lpsf, --nlpsf, and --device subsume and extend the functionality
       provided by options --ip, --ipc, and --hf-enhance.
     o Add support for convolutions in non-linear colorspace. This feature is
       enabled and configured by the command-line option --nlpsf. (See also
       the item above.)
     o Linearize channel values within internal data structures so that most
       ALE operations are performed on linear data. Steve Mann discusses the
       use of linear representations in image processing, e.g. in his paper
       http://wearcam.org/comparametrics.pdf . We assume a simple power-law
       response by default.
     o Modify the image class to use a floating-point data type for storing
       pixels.
     o Revise identifiers and comments in d2/render/ipc.h to better reflect
       the terminology used in the source paper by Irani and Peleg.
     o Consoldiate code for computing the position and dimensions of a pixel
       in a new coordinate system, and use this new abstraction to reduce the
       code size of d2/render/ipc.h and d2/render/drizzle.h (Irani-Peleg and
       drizzling code, respectively).
     o Change several instances of 'double', 'float', and 'my_real' to
       specialized floating-point types 'ale_real', 'ale_pos', 'ale_sreal',
       and 'ale_accum'.
     o Fix offset calculation in d2/render/ipc.h. This is necessary for
       Irani-Peleg rendering of image mosaics extending upwards or to the
       left of the original frame. (This fix is also included in a patch for
       0.5.1.)

  20.5.  Exposure

     o Add a generalized, but rudimentary, implementation of Steve Mann's
       notion of 'certainty'. For more details, see
       http://wearcam.org/comparametrics.pdf
     o Add support for exposure registration (i.e., matching of exposure
       between different frames).

  20.6.  Filtering

     o Make stdin filter height and width independent of each other.
     o Add a point-spread function rasterizer.
     o Add command-line support for summation of point-spread functions.

  20.7.  Source code organization

     o Move classes treating snapshots as two-dimensional data to directory
       'd2' and create an associated C++ namespace. We can't use '2d' to
       label the namespace, because the C++ grammar won't allow it.

19. Version 0.5.1, 2003-Nov-19

  19.1.  Documentation

     o Several of the changes below are based on a suggestion by Bert Douglas
       regarding support for 16-bit-per-channel color. See the README for
       more information about relevant compilation options.
     o Add information to the README regarding new compilation options.

  19.2.  Build

     o Modify the makefile to accept a variable BITS, and differentiate
       between values BITS=8 and BITS=16. The latter option causes the macro
       BITS_16 to be defined during compilation.
     o Add a Makefile option for writing plain (ASCII) PPM files instead of
       raw (binary). This option causes the macro PPM_PLAIN to be defined
       during compilation.

  19.3.  Image files

     o Modify image_rw.h to handle 16-bit data when BITS_16 is defined. Also,
       differentiate between 8-bit and 16-bit ImageMagick builds by checking
       MaxRGB.
     o In ppm.h, add carriage returns to the set of recognized whitespace
       characters.
     o Modify ppm.h to read 16-bit binary PPM files (added to the PPM format
       spec in April 2000).
     o Modify ppm.h to read plain (ASCII) as well as raw (binary) PPM files.
     o Modify ppm.h to write plain (ASCII) PPM files when PPM_PLAIN is
       defined.
     o Modify ppm.h to output 16-bit PPM files when BITS_16 is defined.
     o Modify ppm.h to scale input intensity values based on the internal
       representation depth (8 or 16 bits per channel).

  19.4.  Exposure

     o Add a file 'channel.h' to describe the color channel data type and
       valid range, both being dependent on whether BITS_16 is defined. Use
       these generic values, where appropriate, throughout the ALE codebase.

18. Version 0.5.0, 2003-Nov-02

  18.1.  Documentation

     o Add more comment documentation to header files.
     o Change documentation for --replace.

  18.2.  Image files

     o Emit a more informative error message when the PPM file handler
       encounters a file that is not a well-formed PPM binary file.

  18.3.  Alignment

     o Remove certain cloning operations from align.h, but since cursory
       tests indicate that scaling with --scale is much more expensive than
       cloning, allow cloning to occur when scaling occurs.
     o Modify semantics of alignment following by applying to file-loaded
       initial transformations a delta transformation D = AB^-1, where B is
       the previous frame's (unmodified) initial transformation, A is the
       previous frame's final transformation, and ^-1 is the inverse
       operator. Using --follow with --trans-load can now improve alignment
       success when working with panoramic image mosaics.
     o We're not using simulated annealing, so remove comments that claim
       otherwise.

  18.4.  Rendering

     o Remove certain unsafe assumptions from ipc/* (now render/ipc/*); this
       change includes a modification to ipc.h (now render/ipc.h). Limits of
       the rectangle used as an argument to the <type>::response() function
       are now explicitly given rather than implied.

  18.5.  Source code organization

     o Move rendering implementations to subdirectory 'render/'.

17. Version 0.4.8, 2003-Aug-01

  17.1.  Alignment

     o Modify Monte Carlo alignment so that the same set of accumulated image
       pixels is examined when comparing two transformations.
     o Add an option for additional upper-bound constraint of rotational
       perturbation. Jeff Epler had noted that the
       perturb-upper/perturb-lower options alone may not be suited to working
       with sets of higher-resolution images.
     o Resolve a bug introduced in version 0.1.1 which had limited rotational
       perturbation to 2 degrees.
     o Add an option to adjust the maximum level of detail used. The default
       maximum is 2/perturb, which matches the default for previous versions
       of ALE.

  17.2.  Rendering

     o Modify Irani-Peleg renderer to produce incremental output.

  17.3.  Scripts

     o Modify names of temporary files used in the calibration script.

16. Version 0.4.7, 2003-Jul-27

  16.1.  Alignment

     o Irani-Peleg: don't truncate correction values in backprojection.
     o Irani-Peleg: don't multiply the weight function by a scale correction
       factor in backprojection.

  16.2.  Rendering

     o Irani-Peleg: add support for configurable modules, including a module
       that reads its configuration data from standard input and a module
       calibrated for an IBM (Xirlink) XVP610 in 320x240 mode. A rudimentary
       script for calibrating devices with unknown projection functions has
       been included as ipc/ale-calibrate.
     o Rename render::operator()() to render::sync(). Update subclasses
       accordingly.

  16.3.  Video streams

     o Add a replacement option suggested by Jeff Treece. This option can be
       used to facilitate video stabilization.

15. Version 0.4.6, 2003-Jul-01

  15.1.  Rendering

     o Allow --ip and --hf-enhance to be used together. [Modify
       ip::operator() and hf_filter::operator() so that multiple
       post-processing filters can be used.]
     o Initialize the drizzled image to be uniformly black. This fixes a bug
       introduced in 0.4.2.
     o Allocate the correct size image for drizzling. This fixes a bug
       introduced in 0.4.5.

14. Version 0.4.5, 2003-Jun-23

  14.1.  Command line interface

     o Reduce whitespace in usage() message.
     o Modify image file handler interface so that input files are not
       scaled. Perform scaling, when necessary, outside of the file handler.
       Since unscaled data is needed by the drizzling and Irani-Peleg code,
       this fixes bugs in those modules.

  14.2.  Image files

     o Remove call to stat() in image_rw.h. This improves OS independence,
       and apparently also allows URL-specification of images when compiled
       with ImageMagick support.

  14.3.  Alignment

     o Ensure correct transformation scaling and difference calculation after
       alignment is complete, even if alignment terminates with a reduced
       level of detail (i.e. perturb-lower > 2).
     o Separate the scale() function into two cases: scale() is reserved for
       scale factors greater than or equal to one, as in user-specified
       scaling; and scale_by_half() is used for the scale factor 0.5, needed
       to provide multiple levels of detail in alignment. Modify the
       scale_by_half() case to reflect source pixel values more fairly. (This
       change affects alignment behavior at reduced levels of detail.)
     o Modify align::diff() to use correctly scaled image offset values.
       (Bugfix for alignment with --extend.)
     o Modify align.h so that the image definition array is correctly scaled
       for all levels of detail. (Bugfix for alignment with --extend.)

  14.4.  Rendering

     o Modify image.h to correctly handle image offset values. (Bugfix for
       --extend operation.)

13. Version 0.4.4, 2003-Jun-06

  13.1.  Image files

     o Specify the binary mode flag to fopen() calls in the PPM file handler.
       This change resolves a bug discovered by Benjamin Hill.

  13.2.  Alignment

     o Modify the Monte Carlo pixel selection algorithm so that the expected
       number of sampled pixels more closely matches the specified number in
       typical cases.

12. Version 0.4.3, 2003-May-30

  12.1.  Alignment

     o Add support for Monte Carlo alignment of images, in which only a
       random subset of pixels is sampled.

  12.2.  Rendering

     o Add an option to disable incremental image output.

11. Version 0.4.2, 2003-May-23

  11.1.  Build

     o Add missing typecast to resolve compile warning under GCC 3.2.

  11.2.  Image files

     o Modify PPM file reader to correctly handle comments in PPM files; this
       resolves a bug pointed out by Benjamin Hill.

  11.3.  Alignment

     o Clean up source; move rendering and alignment functions into separate
       files.
     o Make changes to gpt.h that may reduce the Euclidean alignment time.

  11.4.  Rendering

     o Implement an image reconstruction option based on the work of Irani
       and Peleg.
     o Change valid drizzling diameter interval to (0,1].

  11.5.  Source code organization

     o Move ale.c to ale.cc to follow one of the many C++ naming conventions.

10. Version 0.4.1, 2003-Apr-28

  10.1.  Documentation

     o Separate into a number of subsections the option descriptions in the
       README
     o Add URL information to README

  10.2.  Build

     o Change language to C++.

  10.3.  Alignment

     o Add an option to use the previous frame's final transformation as the
       default alignment.
     o Modify the transformation algorithm to use transformations from the
       domain of the input image to the range of the target image. This
       change is reflected in transformation files. Maintain support for old
       transformation file versions, however.

  10.4.  Rendering

     o Add an experimental drizzling implementation. Research on drizzling by
       Richard Hook and Andrew Fruchter was brought to the attention of the
       author by Dan Kaminsky.
     o Change pixel weight data type so that more than 255 images can be
       merged.
     o Add support for increased spatial extents. Research on increased
       spatial extents by Steve Mann was brought to the attention of the
       author by Dan Egnor.

  10.5.  Transformation data files

     o Add version information to transformation files and update the version
       from 0 to 2.

  10.6.  Source code organization

     o Code cleanup in ale.c, image.h, and gpt.h.

9. Version 0.4.0p1, 2003-Apr-04

  9.1.  Build

     o Merge a bugfix from Debian ALE package version 0.4.0-1. Without this
       fix, an assertion failure can occur when ImageMagick support is
       enabled. Original fix implemented by Nick Rusnov.

8. Version 0.4.0, 2003-Mar-30

  8.1.  Rendering

    8.1.1.  Scale

     o Add support for general scaling parameters (i.e. all scale factors >=
       1.0). --scale2, --scale4, and --scale8 are now deprecated, and
       replaced with a more general --scale=x argument.
     o Support enhancement of high frequencies even when the scale factor is
       1.0.
     o Modify the high-frequency filter function so that the response is now
       (4/n)^2 times what it used to be, where n is the scale factor.

  8.2.  Filtering

     o Modify the high-frequency filter algorithm to support filtering near
       the border of an image.

7. Version 0.3.2, 2003-Mar-26

  7.1.  Filtering

     o Don't filter high frequencies if we're not enhancing them. This
       improves efficiency, but should not affect output.

6. Version 0.3.1, 2003-Mar-25

  6.1.  Rendering

     o Add support for post-enhancement of high-frequency details.

  6.2.  Transformation data files

     o Update informational output to transformation files to include
       original frame.

  6.3.  User interfaces

     o Output average match statistic.

5. Version 0.3.0, 2003-Jan-17

  5.1.  Build

     o Modify Makefile to compile with size optimization, since this appears
       to improve speed characteristics in some cases.

  5.2.  Alignment

     o Add an option to set the upper bound on correction steps.
     o Move transformation data structure and related functions to a separate
       header file.

  5.3.  Transformation data files

     o Add support for loading and saving transformation data.

4. Version 0.2.0, 2003-Jan-01

  4.1.  Alignment

     o Add support for general projective transformations, and change/add
       options as follows: '--translation' used to be '--no-rotate'
       '--euclidean' used to be '--rotate' '--projective' is a new option

3. Version 0.1.2, 2002-Dec-13

  3.1.  Image files

     o Add optional support for .jpg, .png, .tiff, and other file formats
       through ImageMagick. Translation using ImageMagick was suggested by
       Nick Rusnov.
     o Don't segfault if a file can't be opened.

2. Version 0.1.1, 2002-Dec-09

  2.1.  Alignment

     o Use reduced levels of detail in coarser alignment steps to increase
       speed.
     o Change perturbation step lower-bound check from less-than ('<') to
       less-than-or-equal-to ('<='). Change default lower bound to .125 from
       .1 (the behavior is the same, but the value makes more sense).
     o Change perturbation initial value to 32 pixels from 16 pixels, since
       coarse alignment is now less expensive.

  2.2.  Rendering

    2.2.1.  Scale

     o Modify scale function so that the borders aren't corrupted (too
       badly).

1. Version 0.1.0, 2002-Nov-26

  1.1.  Build

     o Add a rule for ale.exe to the Makefile.

  1.2.  Alignment

     o Add support for correction of rotation about the lens axis.
     o Add an option to adjust minimum step-size.
     o Add flags to specify which channels to use for alignment. Use a
       summation of all channels by default.
     o Add an option to modify the error metric exponent, and change the
       default value from 1 to 2.

  1.3.  Rendering

     o Add an optional match criterion for merging.

  1.4.  User interfaces

     o Display information about how well a new image matches the accumulated
       image.

0. Version 0.0.0, 2002-Oct-11

  0.1.  Initial release

     o Initial release.