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