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