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