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