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