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