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