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