a64a06354ef37436c10181379f09f4312a7cf0ea
[ctsim.git] / ChangeLog
1 3.0.0beta1 - Released 
2
3         * ctsim: Fixed initialization of min/max for PlotFiles
4         
5 3.0.0alpha3 - Released 1/02/01
6
7         * ctsim: Added plotting of histograms
8         
9         * imagefile.cpp: fixed bug in generation of 16-bit PNG images
10
11         * ezplot.cpp: adjusted xtick label displays for better placement
12         
13 3.0alpha2 - Released 1/02/01
14         
15         * ctsim: All functions of command-line tools are now in graphical ctsim
16         
17         * ctsim: added generation of filter images
18
19         * ctsim: Added 2-image math functions (mul, add, div, sub)
20
21         * ctsim: Added export of imagefiles to graphic file formats
22
23         * ctsim: Added support for scaling imagefiles in new sizes
24
25         * ctsim: Added ability to save standard phantom definitions as
26         text files suitable for reading.
27         
28         * ctsim: Add labels for image transformations and display of labels
29         when performing properties of images.
30
31         * processsignal.cpp: Fixed "off by one" bug in
32         shuffleNaturalToFourierOrder when n is even. Moved functions to
33         fourier.cpp
34
35         * imagefile.cpp: Added FFTW library to imagefile processing. Converted
36         image math functions to complex-valued math.
37
38         * phantom.cpp: Added ability to save phantom files as ASCII text.
39         
40 3.0alpha1 - Released 12/29/00
41
42         * Added PlotFile class to system, used by if2 and ctsim for row
43         and column plots and comparison plots
44
45         * ctsim: Added image comparison statistics and image subtraction
46
47         * ctsim: Added plotting of rows & columns with y-axis scaling 
48
49         * ctsim: Added row and column plot comparisons between two image
50         files.
51
52         * ctsim: Added "Process" menu to image file display with math
53         functions. Added 2-dimensional inverse Fourier to math
54         functions. Added support for complex (real/imaginary) images.
55
56         * mathfuncs.cpp: Reworked statistics algorithm to share between
57         imagefile and plotfile classes.
58
59         * imagefile.cpp: Fixed scaling bug when rasterizing Phantom with
60         nsamples > 2.  Added generic mage math functions, moved from
61         if1.cpp and if2.cpp to imagefile.cpp. Added support complex
62         images.
63
64         * array2dfile.cpp: Added code to support complex (real/imaginary)
65         images.
66
67         * if1: Updated to handle error conditions, such as sqrt of a
68         negative number. Converted to use new ImageFile math functions.
69         
70         * if2: Updated to output plot files and use new ImageFile class
71         math functions
72
73         * if1: Updated to use new ImageFile class math functions
74
75         * ezplot: Reworked to better store colors/linestyles/symbols with
76         individual curves. Improved display of labels and ticks. Updated
77         to use POL class member variable. Updated to more C++ conventions.
78
79         * pol: converted to C++ class. Extracted HashTable to separate
80         class.
81         
82         * sgp: Added linestyle settings
83         
84 2.5.0 - 12/18/00 
85    First Microsoft Windows GUI version
86    Modifications for Microsoft Visual C++ compilation.
87    Improved pjinfo to output binary headers and view data, useful
88         when manually compiling phantoms that vary during projection
89         process. Thanks to Ian Kay for idea and code submission.
90    Improved sorting to find median in ImageFile::statistics
91    Fixed core-dump bug in Array2dFile::labelsCopy() function (Ian Kay) 
92    Changed reconstruction dialog to fix onto smaller screens
93    Fixed display of plotting in Projection views
94    Improved animation displays for Projections and Reconstructions
95    Changed code to explicitly use std:: namespace rather than 
96         "namespace using std" statements
97    Fixed reconstruction scaling bug introduced in 2.0.6
98    Renamed if2img to ifexport, if-1 to if1, if-2 to if2
99         
100 2.0.6 - 12/03/00
101    Fixed minor compilation problem with procsignal.h
102    Updated README file
103    Fixed bug when simulating projections and Trace == CONSOLE
104    Fixed scaling bug when performing redundant rotations around object
105         
106 2.0.5 - 12/01/00
107    Improved compilation on RedHat 7
108    Changed some of ANSI C header files to C++ header files
109    Removed README.RedHat7
110         
111 2.0.4 - 11/25/00
112    Added documentation for --geometry setting
113    Added README.RedHat7 document
114          
115 2.0.3 - 11/20/00
116    Fixed bug in generation of binary PGM files
117    Fixed MPI compilation bug in phm2pj.cpp
118    Inverted y-axis output for pj2if (bug alert from Ian Kay)
119         
120 2.0.2 - 11/8/00
121    Additions to man pages (Ian Kay)
122    Fix problem with reading of ASCII phantom files (Ian Kay)
123
124 2.0.1 - 10/1/00
125    Fixed syntax error in fftw configuration
126    Slight modifications to support gcc v2.9.6
127         
128 2.0.0 - 9/7/00
129    Version 2.0.0 released!
130    ctsim: Added Window menu to Main frame
131    ctsim: Disabled not support reconstruction method
132    Fixed obscure bug in sys_error
133    Fixed compilation in mingw environment not present
134    Fixed compilation in non-graphical environments      
135         
136 2.0.0-b12 - 9/4/00
137    ctsim: Added animation of reconstruction
138    ctsim: Added saving of dialog parameters for Projection & Reconstruction
139    ctsim: Added progress dialog for rasterization of phantom
140    ctsim: used setpriority to set lower priority
141    ctsim: fixed pReconstruct not being deleted causing scaling problem
142    ctsim: fixed projection animation dialog buttons
143
144 2.0.0-b11 - 9/1/00
145    ctsim: Added projection graph to animation of projection collection  
146    ctsim: Added single stepping to projection collection animation
147    ctsim: improved File/Properties display for projection files
148    ctsim: Added progress dialog for reconstructions
149    ctsim: Added file labels for projection and reconstruction images
150    ctsim: Made File/Properties bring up modal dialogs
151    Added reconstruction for Equilinear and Equiangular geometries
152    Changed theta to be -PI/2 to make compliant with Kak-Slaney formulas
153    Separated reconstruction into Reconstructor class
154    Fixed center of detector adjustment for even number of detectors
155    Added --enable-static to generate statically linked programs
156         
157 2.0.0-b10 - 8/25/00
158    ctsim: Added animation of projection collection processs
159    ctsim: Added Auto Scaling for image windows
160    ctsim: Change menus from "windowing" to "display scaling"
161    Added FieldOfView and FocalLength ratio parameters to projection collection
162    Added FocalLength & FieldOfView fields to projection data files
163    Added Projection collection for Equilinear and Equiangular geometries
164    Changed name of Rowland Phantom to correct name of Shepp-Logan
165    Fixed bug in backprojection selection
166         
167 2.0.0-b9 - 8/22/00
168    Added RCS Id strings to executable files
169    Added RPM Spec file for RPM package creation
170    Added loading of ASCII phanthom definitions from files
171    Fixed compilation for non-SGP architectures 
172    Decomposed SignalFilter class into ProcessSignal and SignalFilter classes
173    Added Filter-Generation option to reconstruction to allow direct or 
174         inverse_fourier construction of filters
175    Added median to statistics and to auto-windowing
176         
177 2.0.0-b8 - 8/1/00
178    Added line color support to SGP
179    Fixed lineAbs bug
180         
181 2.0.0-b7 - 7/25/00
182    Finished support for dmallocxx library
183    Fixed bug in SignalFilter::convertFilterMethodNameToID()
184    Rewrote SGP & EZPlot to use C++ object-oriented. SGP can now write to 
185         G2 windows and well as WXWindows.
186    ctsim program: "Create Phantom" now shows phantom object
187    Fixed row-plot bug in if-2
188    Reworked EZPlot's multiple plot operation
189         
190 2.0.0-b6 - 7/22/00
191    ctsim program: improved initial size and scroll area for image 
192         and projection files
193    ctsim program: added rasterization parameters, projections parameters,
194         and reconstruction parameters dialogs
195    Moved char[] static definition from header files to c++ files
196    Completely reorganized option processing in classes to improve
197         expandability and to assist ctsim graphical user interface.
198         
199 2.0.0-b5 - 7/17/00
200    ctsim program: Added dialog to set minimum/maximum display levels 
201    Started ctsim.tex document file
202         
203 2.0.0-b4 - 7/13/00
204    Fixed compiler warnings at -Wall level
205    Began work on CTSim program to be graphical front-end of all functions
206    Moved current src/*.cpp to tools/*.cpp
207    Made CTSim graphical front-end's home to be src/
208         
209 2.0.0-b3 - 7/10/00
210    Added highly optimized backprojection method idiff3
211    Moved comparative stats to if-2 program from ifinfo
212    Fixed image display in if2img using G2 library
213    Added column-plot and row-plot options to if-2
214    Added autoselection of analytic/calculated spatial responses to SignalFilter
215    Added frequency-based preinterpolation to SignalFilter and idiff3
216         backprojection method. Currently, this technique is still under
217         development and debugging
218    Moved graphic file writing to ImageFile class from if2img program
219
220 2.0.0-b2 - 7/07/00  
221    Cleaned up SignalFilter class
222    Added zeropad option to pjrec
223    Added zeropad options to html and cgi files
224    Added fourier_table and rfttw filter methods
225    Added FFTW routines to use real/half-complex transformations
226         
227 2.0.0-b1 - 7/05/00
228    Updated trace level processing
229    Added trace level to SignalFilter
230    Fixed magnitude vs. real output bug in FFT/Fourier filter
231         
232 1.9.9 - 7/04/00
233    Fixed const issue with ImageFileArray
234    Fixed Array2dFile::labelsCopy()
235    Added copy constructor and assignment for Array2dFileLabel class
236    Added Timer to if-2.cpp and ifinfo.cpp
237    Added beginning of frequency-based (DFT & FFT) filter to SignalFilter
238    Added option processing for filter-method for pjrec to choose
239         between convolution, dft, & fft filtering
240    Fixed format string for EZPlot so axis labels now print
241    Added support for FFTW library
242         
243 1.9.8 - 6/27/2000
244    Rewrote Array2dFile class to be non-templated
245    Rewrote Array2dFile class to make reads and writes atomic. No disk files are kept open.
246    Rewrote Array2dFileLabel class to make members private, added access routines
247    Removed timedate.cpp in favor of standard C library time/date functions
248    Renamed ctrec to pjrec, sample-ctrec.sh to sample-ctsim
249    Added signature tag and creation date/time to projection files
250         
251 1.9.7 - 6/25/2000
252    Standardized string option processing by classes. All classes use character strings
253         to select options rather than numeric constants. Added fail() and failMessage()
254         methods to verify that objects are created correctly by character strings.
255    Hid C++ assignment and copy constructors in classes that should not have assignment/copy
256    Rewrote ImageFile class
257    Started support for dmallocxx library, not finished
258    Added G.T. Herman image comparision statistics to ifinfo (see imagefile.cpp)
259    Updated ifinfo to show comparative statistics
260    Added printLabels() to Array2dFile class
261    Added printStatistics() to ImageFile class
262         
263 1.9.6 - 6/22/2000
264    Moved conversion filter name/id to Filter class
265    Moved conversion backprojection name/id to Backproj class
266    Added MPI broadcasting of strings
267         
268 1.9.5 - 6/21/2000
269    Merged proj_reconstr into class Projections
270    Used auto_ptr in Projections::reconstruct to make sure destructor is always called
271    Code cleanup in projections.cpp
272    Moved conversion of phantom names/id to Phantom class
273         
274 1.9.4 - 6/20/2000
275    Converted projection files to C++ library with frnetorderstream
276    Converted image files to C++ library with frnetorderstream
277    Converted filter and convolution to object-oriented code
278    Changed default image file to float from double -- Changable in imagefile.h
279    Optimized image file writing on little-endian architectures
280    Updated README and INSTALL
281         
282 1.9.3 - 6/19/2000
283    Reorganized source files
284    MPI bug fixed to phm2pj.cpp
285         
286 1.9.2 - 6/18/2000
287    Reorganized include files
288    Fixed const pointers in strfuncs
289         
290 1.9.1 - 6/16/2000
291    Renamed directories, moved source files, combined source files
292    to change from 6 libraries to 3 libraries (libctsim, libctsupport,
293    and libctgraphics)
294         
295 1.9.0 - 6/15/2000
296    Skip versions to make version 2.0 the first fully C++ version
297    Renamed Raysums to Projections throughout files
298    Renamed Detector to Scanner
299    Converted Scanner and Projecions to full object-oriented
300         
301 0.6.1 - 6/12/2000
302    Converted Phantom and PhantomElements to Object-Oriented
303    Converted Detector to Object-Oriented
304         
305 0.6.0-b3 - 6/10/2000
306    Improved Integer backprojection method
307         Fixed nearest neighbor to be truly nearest neighbor
308         Made linear interpolation more integer arithmetic -> speed improvement
309    Finished converting all C files to C++
310    Converted all use of malloc/free to C++ new/delete
311    Began object-oriented conversion of Phantom and Projection structures
312         
313 0.6.0-b2 - 6/8/2000
314    Converted MPI data structures to C++ object
315    Made ImageFile directly inherit from Array2dFile
316         
317 0.6.0-b1 - 6/6/2000
318    First C++ conversions
319    Portable IF (image file) format implemented with objects (SDF removed)
320         - Now all data files are cross-platform compatible
321    Converted from MPI to MPI++
322    Converted backprojection to object-oriented
323    Removed MTX from libkmath as no longer need -- replaced with C++ matrices             
324         
325 0.5.4 - 6/4/2000
326    Simpilifed endian handling
327         
328 0.5.4-b3 - 6/1/2000
329    Added support for 64-bit (IA64) CPU
330    Removed broken B-spline interpolation
331    Added support for cygwin platform under Windows 2000
332    Added support for 16-bit PNG graphics
333         
334 0.5.4-b2 - 5/16/2000
335    Added compile-time configuration of endian order
336
337 0.5.4-b1 - 5/14/2000
338    Modified the raysum file format to be platform independent
339         
340 0.5.3 - 5/11/2000
341    Added Microsoft VC compatibility
342    Cleaned up compilation warnings in libgraph
343         
344 0.5.2-b5 - 5/7/2000
345    Continued conversion to ANSI C       
346    Removed old CRT routines
347         
348 0.5.2-b4 - 5/4/2000
349    Renamed pictures to phantoms, objects to phantom elements
350    Continued code cleanup
351         
352 0.5.2-b3 - 4/30/200
353     More code cleanup with reorganizing libraries
354     Added --log and --exp to sdf-1
355     Allowed negative numbers for window levels in CGI interface
356
357 0.5.2-b2 - 4/30/200
358     Continued code cleanup
359         
360 0.5.2-b1 - 4/29/2000
361     Fixed a few MPI bugs
362     Better documented, coded raysum in-memory on on-disk options
363         
364 0.5.1 - 4/28/2000
365     Cleaned out library that wasn't being used by CTSim  
366     Modified ctsim.cgi to read in configuration file ctsim.conf
367
368 0.5.0 - 4/27/2000 
369     First open source distribution for GNU/Linux
370         
371 6/1999 
372   Converted to GNU/Linux
373   added MPI support via LAM library
374         
375 1983-84 
376   Developed under MS-DOS and IBM EGA graphics
377