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