7c56ff66a106556365ce2a4d61964f7afb1498fa
[ctsim.git] / ChangeLog
1 3.0.0 - Release 2/19/01
2
3         * ctsim: Massive update/fix to online help and print manual.
4
5         * ctsim: Added context-sensitive help to dialog boxes
6         
7         * ctsim: Reformated all dialog boxes, much nicer now.
8         
9         * global: Added Hanning filter.
10
11         * global: Improved default parameters so that all defaults give
12         sensible output.
13
14         * ctsim: Improved accelerator key handling
15         
16         * ctsim,pjrec: Changed rotation angle to be a fraction of
17         a circle rather than a multiple of pi.
18         
19 3.0.0beta1 - Released 2/11/01
20
21         * ctsim: Added most-recently-used files to File menu with
22         registry storage between executions.
23
24         * ctsim: Hides arcane features unless enabled by Preferences dialog
25         
26         * ctsim: Added MDI interface for Windows version and made it default for Windows.
27
28         * ctsim: Added 3-D wireframe view of images (uses OpenGL)
29         
30         * ctsim: Added graphical About box
31
32         * ctsim: Escape key now removes cursor lines from image file view
33
34         * ctsim: Added Revert to ImageFile menu
35         
36         * ctsim: Added accelerator (hotkeys) to frames
37
38         * ctsim: Online help added!
39
40         * backprojector: Added cubic interpolation
41         
42         * ctsim: Added icons to Frames on X-Window and MS Windows versions
43
44         * ctsim: Fixed tick-label placement for plots on projection and
45         reconstruction dialogs.
46
47         * timer.h: Add use of _ftime when compiling on MSVC
48
49         * global: Projection files are not compatible with previous version
50         due to new scanner definitions.
51         
52         * global: deleted concept of field-of-view and added
53           view ratio and scan ratio concepts.
54         
55         * ctsim: Fixed crash on shutdown bug
56
57         * pjinfo: Fixed bug when doing --dump and not specifing --endview
58
59         * phm2pj: Fixed MPI bug with broadcasting of variables
60         
61         * ctsimtext-lam: Changes for first version to compile under lam
62
63         
64 3.0.0alpha5 - Released 1/12/00
65
66         * ctsim: Added EZPlotDialog, used by debugging plots in
67         procsignal.cpp
68         
69         * ctsimtext: Fixed bugs for MSVC and with empty input lines. Fixed 
70         bug in parsing command-line parameters.
71
72         * views.cpp: Fixed bug in copying of labels from images to
73         plotfiles
74         
75         * syserror.cpp: fixed reporting for fatal errors
76
77         * projections.cpp: fixed MSVC failure with std:: namespace
78
79         * procsignal.cpp: fixed bug in equiangular reconstructions
80         for frequency/inverse-fourier filtering
81         
82 3.0.0alpha4 - Released 1/09/01
83
84         * ctsim: Added reset to full-intensity scale menu item
85
86         * ctsim: Add conversion of projections to polar plot [Thanks to
87         Ian Kay for reference and math hints in polar bilinear scaling]
88
89         * ctsim: improve bilinear scaling of image size [Thanks to Ian Kay
90         for math tips]
91
92         * ctsim: imagefile labels are now copied to plotfiles
93
94         * ctsim: Added more analyze menuitems
95         
96         * ctsimtext: First version. All command-line tools are now accessed
97         through this master shell. Has both command-line and interactive
98         interface
99         
100         * ctsim: Fixed initialization of min/max bug for PlotFiles
101
102         * ezplot: Cleaned up y-tick label placement
103
104         * sgp: Added better support for projection/reconstruction animation
105         
106 3.0.0alpha3 - Released 1/02/01
107
108         * ctsim: Added plotting of histograms
109         
110         * imagefile.cpp: fixed bug in generation of 16-bit PNG images
111
112         * ezplot.cpp: adjusted xtick label displays for better placement
113         
114 3.0alpha2 - Released 1/02/01
115         
116         * ctsim: All functions of command-line tools are now in graphical ctsim
117         
118         * ctsim: added generation of filter images
119
120         * ctsim: Added 2-image math functions (mul, add, div, sub)
121
122         * ctsim: Added export of imagefiles to graphic file formats
123
124         * ctsim: Added support for scaling imagefiles in new sizes
125
126         * ctsim: Added ability to save standard phantom definitions as
127         text files suitable for reading.
128         
129         * ctsim: Add labels for image transformations and display of labels
130         when performing properties of images.
131
132         * processsignal.cpp: Fixed "off by one" bug in
133         shuffleNaturalToFourierOrder when n is even. Moved functions to
134         fourier.cpp
135
136         * imagefile.cpp: Added FFTW library to imagefile processing. Converted
137         image math functions to complex-valued math.
138
139         * phantom.cpp: Added ability to save phantom files as ASCII text.
140         
141 3.0alpha1 - Released 12/29/00
142
143         * Added PlotFile class to system, used by if2 and ctsim for row
144         and column plots and comparison plots
145
146         * ctsim: Added image comparison statistics and image subtraction
147
148         * ctsim: Added plotting of rows & columns with y-axis scaling 
149
150         * ctsim: Added row and column plot comparisons between two image
151         files.
152
153         * ctsim: Added "Process" menu to image file display with math
154         functions. Added 2-dimensional inverse Fourier to math
155         functions. Added support for complex (real/imaginary) images.
156
157         * mathfuncs.cpp: Reworked statistics algorithm to share between
158         imagefile and plotfile classes.
159
160         * imagefile.cpp: Fixed scaling bug when rasterizing Phantom with
161         nsamples > 2.  Added generic mage math functions, moved from
162         if1.cpp and if2.cpp to imagefile.cpp. Added support complex
163         images.
164
165         * array2dfile.cpp: Added code to support complex (real/imaginary)
166         images.
167
168         * if1: Updated to handle error conditions, such as sqrt of a
169         negative number. Converted to use new ImageFile math functions.
170         
171         * if2: Updated to output plot files and use new ImageFile class
172         math functions
173
174         * if1: Updated to use new ImageFile class math functions
175
176         * ezplot: Reworked to better store colors/linestyles/symbols with
177         individual curves. Improved display of labels and ticks. Updated
178         to use POL class member variable. Updated to more C++ conventions.
179
180         * pol: converted to C++ class. Extracted HashTable to separate
181         class.
182         
183         * sgp: Added linestyle settings
184         
185 2.5.0 - 12/18/00 
186    First Microsoft Windows GUI version
187    Modifications for Microsoft Visual C++ compilation.
188    Improved pjinfo to output binary headers and view data, useful
189         when manually compiling phantoms that vary during projection
190         process. Thanks to Ian Kay for idea and code submission.
191    Improved sorting to find median in ImageFile::statistics
192    Fixed core-dump bug in Array2dFile::labelsCopy() function (Ian Kay) 
193    Changed reconstruction dialog to fix onto smaller screens
194    Fixed display of plotting in Projection views
195    Improved animation displays for Projections and Reconstructions
196    Changed code to explicitly use std:: namespace rather than 
197         "namespace using std" statements
198    Fixed reconstruction scaling bug introduced in 2.0.6
199    Renamed if2img to ifexport, if-1 to if1, if-2 to if2
200         
201 2.0.6 - 12/03/00
202    Fixed minor compilation problem with procsignal.h
203    Updated README file
204    Fixed bug when simulating projections and Trace == CONSOLE
205    Fixed scaling bug when performing redundant rotations around object
206         
207 2.0.5 - 12/01/00
208    Improved compilation on RedHat 7
209    Changed some of ANSI C header files to C++ header files
210    Removed README.RedHat7
211         
212 2.0.4 - 11/25/00
213    Added documentation for --geometry setting
214    Added README.RedHat7 document
215          
216 2.0.3 - 11/20/00
217    Fixed bug in generation of binary PGM files
218    Fixed MPI compilation bug in phm2pj.cpp
219    Inverted y-axis output for pj2if (bug alert from Ian Kay)
220         
221 2.0.2 - 11/8/00
222    Additions to man pages (Ian Kay)
223    Fix problem with reading of ASCII phantom files (Ian Kay)
224
225 2.0.1 - 10/1/00
226    Fixed syntax error in fftw configuration
227    Slight modifications to support gcc v2.9.6
228         
229 2.0.0 - 9/7/00
230    Version 2.0.0 released!
231    ctsim: Added Window menu to Main frame
232    ctsim: Disabled not support reconstruction method
233    Fixed obscure bug in sys_error
234    Fixed compilation in mingw environment not present
235    Fixed compilation in non-graphical environments      
236         
237 2.0.0-b12 - 9/4/00
238    ctsim: Added animation of reconstruction
239    ctsim: Added saving of dialog parameters for Projection & Reconstruction
240    ctsim: Added progress dialog for rasterization of phantom
241    ctsim: used setpriority to set lower priority
242    ctsim: fixed pReconstruct not being deleted causing scaling problem
243    ctsim: fixed projection animation dialog buttons
244
245 2.0.0-b11 - 9/1/00
246    ctsim: Added projection graph to animation of projection collection  
247    ctsim: Added single stepping to projection collection animation
248    ctsim: improved File/Properties display for projection files
249    ctsim: Added progress dialog for reconstructions
250    ctsim: Added file labels for projection and reconstruction images
251    ctsim: Made File/Properties bring up modal dialogs
252    Added reconstruction for Equilinear and Equiangular geometries
253    Changed theta to be -PI/2 to make compliant with Kak-Slaney formulas
254    Separated reconstruction into Reconstructor class
255    Fixed center of detector adjustment for even number of detectors
256    Added --enable-static to generate statically linked programs
257         
258 2.0.0-b10 - 8/25/00
259    ctsim: Added animation of projection collection processs
260    ctsim: Added Auto Scaling for image windows
261    ctsim: Change menus from "windowing" to "display scaling"
262    Added FieldOfView and FocalLength ratio parameters to projection collection
263    Added FocalLength & FieldOfView fields to projection data files
264    Added Projection collection for Equilinear and Equiangular geometries
265    Changed name of Rowland Phantom to correct name of Shepp-Logan
266    Fixed bug in backprojection selection
267         
268 2.0.0-b9 - 8/22/00
269    Added RCS Id strings to executable files
270    Added RPM Spec file for RPM package creation
271    Added loading of ASCII phanthom definitions from files
272    Fixed compilation for non-SGP architectures 
273    Decomposed SignalFilter class into ProcessSignal and SignalFilter classes
274    Added Filter-Generation option to reconstruction to allow direct or 
275         inverse_fourier construction of filters
276    Added median to statistics and to auto-windowing
277         
278 2.0.0-b8 - 8/1/00
279    Added line color support to SGP
280    Fixed lineAbs bug
281         
282 2.0.0-b7 - 7/25/00
283    Finished support for dmallocxx library
284    Fixed bug in SignalFilter::convertFilterMethodNameToID()
285    Rewrote SGP & EZPlot to use C++ object-oriented. SGP can now write to 
286         G2 windows and well as WXWindows.
287    ctsim program: "Create Phantom" now shows phantom object
288    Fixed row-plot bug in if-2
289    Reworked EZPlot's multiple plot operation
290         
291 2.0.0-b6 - 7/22/00
292    ctsim program: improved initial size and scroll area for image 
293         and projection files
294    ctsim program: added rasterization parameters, projections parameters,
295         and reconstruction parameters dialogs
296    Moved char[] static definition from header files to c++ files
297    Completely reorganized option processing in classes to improve
298         expandability and to assist ctsim graphical user interface.
299         
300 2.0.0-b5 - 7/17/00
301    ctsim program: Added dialog to set minimum/maximum display levels 
302    Started ctsim.tex document file
303         
304 2.0.0-b4 - 7/13/00
305    Fixed compiler warnings at -Wall level
306    Began work on CTSim program to be graphical front-end of all functions
307    Moved current src/*.cpp to tools/*.cpp
308    Made CTSim graphical front-end's home to be src/
309         
310 2.0.0-b3 - 7/10/00
311    Added highly optimized backprojection method idiff3
312    Moved comparative stats to if-2 program from ifinfo
313    Fixed image display in if2img using G2 library
314    Added column-plot and row-plot options to if-2
315    Added autoselection of analytic/calculated spatial responses to SignalFilter
316    Added frequency-based preinterpolation to SignalFilter and idiff3
317         backprojection method. Currently, this technique is still under
318         development and debugging
319    Moved graphic file writing to ImageFile class from if2img program
320
321 2.0.0-b2 - 7/07/00  
322    Cleaned up SignalFilter class
323    Added zeropad option to pjrec
324    Added zeropad options to html and cgi files
325    Added fourier_table and rfttw filter methods
326    Added FFTW routines to use real/half-complex transformations
327         
328 2.0.0-b1 - 7/05/00
329    Updated trace level processing
330    Added trace level to SignalFilter
331    Fixed magnitude vs. real output bug in FFT/Fourier filter
332         
333 1.9.9 - 7/04/00
334    Fixed const issue with ImageFileArray
335    Fixed Array2dFile::labelsCopy()
336    Added copy constructor and assignment for Array2dFileLabel class
337    Added Timer to if-2.cpp and ifinfo.cpp
338    Added beginning of frequency-based (DFT & FFT) filter to SignalFilter
339    Added option processing for filter-method for pjrec to choose
340         between convolution, dft, & fft filtering
341    Fixed format string for EZPlot so axis labels now print
342    Added support for FFTW library
343         
344 1.9.8 - 6/27/2000
345    Rewrote Array2dFile class to be non-templated
346    Rewrote Array2dFile class to make reads and writes atomic. No disk files are kept open.
347    Rewrote Array2dFileLabel class to make members private, added access routines
348    Removed timedate.cpp in favor of standard C library time/date functions
349    Renamed ctrec to pjrec, sample-ctrec.sh to sample-ctsim
350    Added signature tag and creation date/time to projection files
351         
352 1.9.7 - 6/25/2000
353    Standardized string option processing by classes. All classes use character strings
354         to select options rather than numeric constants. Added fail() and failMessage()
355         methods to verify that objects are created correctly by character strings.
356    Hid C++ assignment and copy constructors in classes that should not have assignment/copy
357    Rewrote ImageFile class
358    Started support for dmallocxx library, not finished
359    Added G.T. Herman image comparision statistics to ifinfo (see imagefile.cpp)
360    Updated ifinfo to show comparative statistics
361    Added printLabels() to Array2dFile class
362    Added printStatistics() to ImageFile class
363         
364 1.9.6 - 6/22/2000
365    Moved conversion filter name/id to Filter class
366    Moved conversion backprojection name/id to Backproj class
367    Added MPI broadcasting of strings
368         
369 1.9.5 - 6/21/2000
370    Merged proj_reconstr into class Projections
371    Used auto_ptr in Projections::reconstruct to make sure destructor is always called
372    Code cleanup in projections.cpp
373    Moved conversion of phantom names/id to Phantom class
374         
375 1.9.4 - 6/20/2000
376    Converted projection files to C++ library with frnetorderstream
377    Converted image files to C++ library with frnetorderstream
378    Converted filter and convolution to object-oriented code
379    Changed default image file to float from double -- Changable in imagefile.h
380    Optimized image file writing on little-endian architectures
381    Updated README and INSTALL
382         
383 1.9.3 - 6/19/2000
384    Reorganized source files
385    MPI bug fixed to phm2pj.cpp
386         
387 1.9.2 - 6/18/2000
388    Reorganized include files
389    Fixed const pointers in strfuncs
390         
391 1.9.1 - 6/16/2000
392    Renamed directories, moved source files, combined source files
393    to change from 6 libraries to 3 libraries (libctsim, libctsupport,
394    and libctgraphics)
395         
396 1.9.0 - 6/15/2000
397    Skip versions to make version 2.0 the first fully C++ version
398    Renamed Raysums to Projections throughout files
399    Renamed Detector to Scanner
400    Converted Scanner and Projecions to full object-oriented
401         
402 0.6.1 - 6/12/2000
403    Converted Phantom and PhantomElements to Object-Oriented
404    Converted Detector to Object-Oriented
405         
406 0.6.0-b3 - 6/10/2000
407    Improved Integer backprojection method
408         Fixed nearest neighbor to be truly nearest neighbor
409         Made linear interpolation more integer arithmetic -> speed improvement
410    Finished converting all C files to C++
411    Converted all use of malloc/free to C++ new/delete
412    Began object-oriented conversion of Phantom and Projection structures
413         
414 0.6.0-b2 - 6/8/2000
415    Converted MPI data structures to C++ object
416    Made ImageFile directly inherit from Array2dFile
417         
418 0.6.0-b1 - 6/6/2000
419    First C++ conversions
420    Portable IF (image file) format implemented with objects (SDF removed)
421         - Now all data files are cross-platform compatible
422    Converted from MPI to MPI++
423    Converted backprojection to object-oriented
424    Removed MTX from libkmath as no longer need -- replaced with C++ matrices             
425         
426 0.5.4 - 6/4/2000
427    Simpilifed endian handling
428         
429 0.5.4-b3 - 6/1/2000
430    Added support for 64-bit (IA64) CPU
431    Removed broken B-spline interpolation
432    Added support for cygwin platform under Windows 2000
433    Added support for 16-bit PNG graphics
434         
435 0.5.4-b2 - 5/16/2000
436    Added compile-time configuration of endian order
437
438 0.5.4-b1 - 5/14/2000
439    Modified the raysum file format to be platform independent
440         
441 0.5.3 - 5/11/2000
442    Added Microsoft VC compatibility
443    Cleaned up compilation warnings in libgraph
444         
445 0.5.2-b5 - 5/7/2000
446    Continued conversion to ANSI C       
447    Removed old CRT routines
448         
449 0.5.2-b4 - 5/4/2000
450    Renamed pictures to phantoms, objects to phantom elements
451    Continued code cleanup
452         
453 0.5.2-b3 - 4/30/200
454     More code cleanup with reorganizing libraries
455     Added --log and --exp to sdf-1
456     Allowed negative numbers for window levels in CGI interface
457
458 0.5.2-b2 - 4/30/200
459     Continued code cleanup
460         
461 0.5.2-b1 - 4/29/2000
462     Fixed a few MPI bugs
463     Better documented, coded raysum in-memory on on-disk options
464         
465 0.5.1 - 4/28/2000
466     Cleaned out library that wasn't being used by CTSim  
467     Modified ctsim.cgi to read in configuration file ctsim.conf
468
469 0.5.0 - 4/27/2000 
470     First open source distribution for GNU/Linux
471         
472 6/1999 
473   Converted to GNU/Linux
474   added MPI support via LAM library
475         
476 1983-84 
477   Developed under MS-DOS and IBM EGA graphics
478