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