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