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