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