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