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