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