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