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