3 * ctsim: Added tips to be displayed at startup and via the help menu.
5 * ctsim: Added center-detector concept. Allow for detector array
6 to be any arbitrary distance from center of scanner. As a result,
7 projection files are not incompatible with previous version of
10 * ctsim: Added generic threaded tasks and background manager for
11 background processing as well as taking advantage of multiple-CPU's
14 * ctsim: Added PPM/PGM and PNG file import to imagefile.
16 * ctsim: Added import of DICOM grayscale files.
18 * ctsim: Added imagefile export to DICOM files.
20 * ctsim: Added plot t-theta sampling to projection file menu.
22 * ctsim: Added background and SMP processing for reconstructions.
24 * ctsim: Added background and SMP processing for scanning.
26 * ctsim: Added background and SMP processing for rasterization.
28 * ctsim: Added "Verbose Logging", "Startup Tips", and
29 "Background processes" options to Preferences dialog.
31 * plotfile: Added scattergram plot functions
33 * ctsim: Added accelerator key for File-Properties
35 * views.cpp: Added out of memory checks to display for huge
36 image and projection files.
38 * distribution: fixed problem with documentation files not
39 being included with the distribution [Reported by Ian Kay].
41 * sgp.cpp: Fixed bug in drawCircle
43 3.0.3 - Released 2/20/01
45 * ctsim: Fixed core dump on Linux with OpenGL
47 * ctsim: Fixed context-sensitive help on Linux
49 * ctsim: Fixed About box on Linux
51 3.0.2 - Released 2/20/01
53 * scanner.cpp: Fixed bug when number of detectors was even.
55 * ctsim: Improved error handling when trying to convert
56 divergent projections into polar form.
58 3.0.1 - Released 2/19/01
60 * ctsim: Fixed dialog box for reconstruction so that
61 rotation angle setting will stay fixed in-between use
64 * syserror: Fixed display bug for trace messages
66 * ctsim: MSVC optimization bug work-around, compiler
69 3.0.0 - Released 2/19/01
71 * ctsim: Massive update/fix to online help and print manual.
73 * ctsim: Added context-sensitive help to dialog boxes
75 * ctsim: Reformated all dialog boxes, much nicer now.
77 * ctsim: Improved accelerator key handling
79 * global: Added Hanning filter.
81 * global: Improved default parameters to that all defaults give
84 3.0.0beta1 - Released 2/11/01
86 * ctsim: Added most-recently-used files to File menu with
87 registry storage between executions.
89 * ctsim: Hides arcane features unless enabled by Preferences dialog
91 * ctsim: Added MDI interface for Windows version and made it default for Windows.
93 * ctsim: Added 3-D wireframe view of images (uses OpenGL)
95 * ctsim: Added graphical About box
97 * ctsim: Escape key now removes cursor lines from image file view
99 * ctsim: Added Revert to ImageFile menu
101 * ctsim: Added accelerator (hotkeys) to frames
103 * ctsim: Online help added!
105 * backprojector: Added cubic interpolation
107 * ctsim: Added icons to Frames on X-Window and MS Windows versions
109 * ctsim: Fixed tick-label placement for plots on projection and
110 reconstruction dialogs.
112 * timer.h: Add use of _ftime when compiling on MSVC
114 * global: Projection files are not compatible with previous version
115 due to new scanner definitions.
117 * global: deleted concept of field-of-view and added
118 view ratio and scan ratio concepts.
120 * ctsim: Fixed crash on shutdown bug
122 * pjinfo: Fixed bug when doing --dump and not specifing --endview
124 * phm2pj: Fixed MPI bug with broadcasting of variables
126 * ctsimtext-lam: Changes for first version to compile under lam
129 3.0.0alpha5 - Released 1/12/00
131 * ctsim: Added EZPlotDialog, used by debugging plots in
134 * ctsimtext: Fixed bugs for MSVC and with empty input lines. Fixed
135 bug in parsing command-line parameters.
137 * views.cpp: Fixed bug in copying of labels from images to
140 * syserror.cpp: fixed reporting for fatal errors
142 * projections.cpp: fixed MSVC failure with std:: namespace
144 * procsignal.cpp: fixed bug in equiangular reconstructions
145 for frequency/inverse-fourier filtering
147 3.0.0alpha4 - Released 1/09/01
149 * ctsim: Added reset to full-intensity scale menu item
151 * ctsim: Add conversion of projections to polar plot [Thanks to
152 Ian Kay for reference and math hints in polar bilinear scaling]
154 * ctsim: improve bilinear scaling of image size [Thanks to Ian Kay
157 * ctsim: imagefile labels are now copied to plotfiles
159 * ctsim: Added more analyze menuitems
161 * ctsimtext: First version. All command-line tools are now accessed
162 through this master shell. Has both command-line and interactive
165 * ctsim: Fixed initialization of min/max bug for PlotFiles
167 * ezplot: Cleaned up y-tick label placement
169 * sgp: Added better support for projection/reconstruction animation
171 3.0.0alpha3 - Released 1/02/01
173 * ctsim: Added plotting of histograms
175 * imagefile.cpp: fixed bug in generation of 16-bit PNG images
177 * ezplot.cpp: adjusted xtick label displays for better placement
179 3.0alpha2 - Released 1/02/01
181 * ctsim: All functions of command-line tools are now in graphical ctsim
183 * ctsim: added generation of filter images
185 * ctsim: Added 2-image math functions (mul, add, div, sub)
187 * ctsim: Added export of imagefiles to graphic file formats
189 * ctsim: Added support for scaling imagefiles in new sizes
191 * ctsim: Added ability to save standard phantom definitions as
192 text files suitable for reading.
194 * ctsim: Add labels for image transformations and display of labels
195 when performing properties of images.
197 * processsignal.cpp: Fixed "off by one" bug in
198 shuffleNaturalToFourierOrder when n is even. Moved functions to
201 * imagefile.cpp: Added FFTW library to imagefile processing. Converted
202 image math functions to complex-valued math.
204 * phantom.cpp: Added ability to save phantom files as ASCII text.
206 3.0alpha1 - Released 12/29/00
208 * Added PlotFile class to system, used by if2 and ctsim for row
209 and column plots and comparison plots
211 * ctsim: Added image comparison statistics and image subtraction
213 * ctsim: Added plotting of rows & columns with y-axis scaling
215 * ctsim: Added row and column plot comparisons between two image
218 * ctsim: Added "Process" menu to image file display with math
219 functions. Added 2-dimensional inverse Fourier to math
220 functions. Added support for complex (real/imaginary) images.
222 * mathfuncs.cpp: Reworked statistics algorithm to share between
223 imagefile and plotfile classes.
225 * imagefile.cpp: Fixed scaling bug when rasterizing Phantom with
226 nsamples > 2. Added generic mage math functions, moved from
227 if1.cpp and if2.cpp to imagefile.cpp. Added support complex
230 * array2dfile.cpp: Added code to support complex (real/imaginary)
233 * if1: Updated to handle error conditions, such as sqrt of a
234 negative number. Converted to use new ImageFile math functions.
236 * if2: Updated to output plot files and use new ImageFile class
239 * if1: Updated to use new ImageFile class math functions
241 * ezplot: Reworked to better store colors/linestyles/symbols with
242 individual curves. Improved display of labels and ticks. Updated
243 to use POL class member variable. Updated to more C++ conventions.
245 * pol: converted to C++ class. Extracted HashTable to separate
248 * sgp: Added linestyle settings
251 First Microsoft Windows GUI version
252 Modifications for Microsoft Visual C++ compilation.
253 Improved pjinfo to output binary headers and view data, useful
254 when manually compiling phantoms that vary during projection
255 process. Thanks to Ian Kay for idea and code submission.
256 Improved sorting to find median in ImageFile::statistics
257 Fixed core-dump bug in Array2dFile::labelsCopy() function (Ian Kay)
258 Changed reconstruction dialog to fix onto smaller screens
259 Fixed display of plotting in Projection views
260 Improved animation displays for Projections and Reconstructions
261 Changed code to explicitly use std:: namespace rather than
262 "namespace using std" statements
263 Fixed reconstruction scaling bug introduced in 2.0.6
264 Renamed if2img to ifexport, if-1 to if1, if-2 to if2
267 Fixed minor compilation problem with procsignal.h
269 Fixed bug when simulating projections and Trace == CONSOLE
270 Fixed scaling bug when performing redundant rotations around object
273 Improved compilation on RedHat 7
274 Changed some of ANSI C header files to C++ header files
275 Removed README.RedHat7
278 Added documentation for --geometry setting
279 Added README.RedHat7 document
282 Fixed bug in generation of binary PGM files
283 Fixed MPI compilation bug in phm2pj.cpp
284 Inverted y-axis output for pj2if (bug alert from Ian Kay)
287 Additions to man pages (Ian Kay)
288 Fix problem with reading of ASCII phantom files (Ian Kay)
291 Fixed syntax error in fftw configuration
292 Slight modifications to support gcc v2.9.6
295 Version 2.0.0 released!
296 ctsim: Added Window menu to Main frame
297 ctsim: Disabled not support reconstruction method
298 Fixed obscure bug in sys_error
299 Fixed compilation in mingw environment not present
300 Fixed compilation in non-graphical environments
303 ctsim: Added animation of reconstruction
304 ctsim: Added saving of dialog parameters for Projection & Reconstruction
305 ctsim: Added progress dialog for rasterization of phantom
306 ctsim: used setpriority to set lower priority
307 ctsim: fixed pReconstruct not being deleted causing scaling problem
308 ctsim: fixed projection animation dialog buttons
311 ctsim: Added projection graph to animation of projection collection
312 ctsim: Added single stepping to projection collection animation
313 ctsim: improved File/Properties display for projection files
314 ctsim: Added progress dialog for reconstructions
315 ctsim: Added file labels for projection and reconstruction images
316 ctsim: Made File/Properties bring up modal dialogs
317 Added reconstruction for Equilinear and Equiangular geometries
318 Changed theta to be -PI/2 to make compliant with Kak-Slaney formulas
319 Separated reconstruction into Reconstructor class
320 Fixed center of detector adjustment for even number of detectors
321 Added --enable-static to generate statically linked programs
324 ctsim: Added animation of projection collection processs
325 ctsim: Added Auto Scaling for image windows
326 ctsim: Change menus from "windowing" to "display scaling"
327 Added FieldOfView and FocalLength ratio parameters to projection collection
328 Added FocalLength & FieldOfView fields to projection data files
329 Added Projection collection for Equilinear and Equiangular geometries
330 Changed name of Rowland Phantom to correct name of Shepp-Logan
331 Fixed bug in backprojection selection
334 Added RCS Id strings to executable files
335 Added RPM Spec file for RPM package creation
336 Added loading of ASCII phanthom definitions from files
337 Fixed compilation for non-SGP architectures
338 Decomposed SignalFilter class into ProcessSignal and SignalFilter classes
339 Added Filter-Generation option to reconstruction to allow direct or
340 inverse_fourier construction of filters
341 Added median to statistics and to auto-windowing
344 Added line color support to SGP
348 Finished support for dmallocxx library
349 Fixed bug in SignalFilter::convertFilterMethodNameToID()
350 Rewrote SGP & EZPlot to use C++ object-oriented. SGP can now write to
351 G2 windows and well as WXWindows.
352 ctsim program: "Create Phantom" now shows phantom object
353 Fixed row-plot bug in if-2
354 Reworked EZPlot's multiple plot operation
357 ctsim program: improved initial size and scroll area for image
359 ctsim program: added rasterization parameters, projections parameters,
360 and reconstruction parameters dialogs
361 Moved char[] static definition from header files to c++ files
362 Completely reorganized option processing in classes to improve
363 expandability and to assist ctsim graphical user interface.
366 ctsim program: Added dialog to set minimum/maximum display levels
367 Started ctsim.tex document file
370 Fixed compiler warnings at -Wall level
371 Began work on CTSim program to be graphical front-end of all functions
372 Moved current src/*.cpp to tools/*.cpp
373 Made CTSim graphical front-end's home to be src/
376 Added highly optimized backprojection method idiff3
377 Moved comparative stats to if-2 program from ifinfo
378 Fixed image display in if2img using G2 library
379 Added column-plot and row-plot options to if-2
380 Added autoselection of analytic/calculated spatial responses to SignalFilter
381 Added frequency-based preinterpolation to SignalFilter and idiff3
382 backprojection method. Currently, this technique is still under
383 development and debugging
384 Moved graphic file writing to ImageFile class from if2img program
387 Cleaned up SignalFilter class
388 Added zeropad option to pjrec
389 Added zeropad options to html and cgi files
390 Added fourier_table and rfttw filter methods
391 Added FFTW routines to use real/half-complex transformations
394 Updated trace level processing
395 Added trace level to SignalFilter
396 Fixed magnitude vs. real output bug in FFT/Fourier filter
399 Fixed const issue with ImageFileArray
400 Fixed Array2dFile::labelsCopy()
401 Added copy constructor and assignment for Array2dFileLabel class
402 Added Timer to if-2.cpp and ifinfo.cpp
403 Added beginning of frequency-based (DFT & FFT) filter to SignalFilter
404 Added option processing for filter-method for pjrec to choose
405 between convolution, dft, & fft filtering
406 Fixed format string for EZPlot so axis labels now print
407 Added support for FFTW library
410 Rewrote Array2dFile class to be non-templated
411 Rewrote Array2dFile class to make reads and writes atomic. No disk files are kept open.
412 Rewrote Array2dFileLabel class to make members private, added access routines
413 Removed timedate.cpp in favor of standard C library time/date functions
414 Renamed ctrec to pjrec, sample-ctrec.sh to sample-ctsim
415 Added signature tag and creation date/time to projection files
418 Standardized string option processing by classes. All classes use character strings
419 to select options rather than numeric constants. Added fail() and failMessage()
420 methods to verify that objects are created correctly by character strings.
421 Hid C++ assignment and copy constructors in classes that should not have assignment/copy
422 Rewrote ImageFile class
423 Started support for dmallocxx library, not finished
424 Added G.T. Herman image comparision statistics to ifinfo (see imagefile.cpp)
425 Updated ifinfo to show comparative statistics
426 Added printLabels() to Array2dFile class
427 Added printStatistics() to ImageFile class
430 Moved conversion filter name/id to Filter class
431 Moved conversion backprojection name/id to Backproj class
432 Added MPI broadcasting of strings
435 Merged proj_reconstr into class Projections
436 Used auto_ptr in Projections::reconstruct to make sure destructor is always called
437 Code cleanup in projections.cpp
438 Moved conversion of phantom names/id to Phantom class
441 Converted projection files to C++ library with frnetorderstream
442 Converted image files to C++ library with frnetorderstream
443 Converted filter and convolution to object-oriented code
444 Changed default image file to float from double -- Changable in imagefile.h
445 Optimized image file writing on little-endian architectures
446 Updated README and INSTALL
449 Reorganized source files
450 MPI bug fixed to phm2pj.cpp
453 Reorganized include files
454 Fixed const pointers in strfuncs
457 Renamed directories, moved source files, combined source files
458 to change from 6 libraries to 3 libraries (libctsim, libctsupport,
462 Skip versions to make version 2.0 the first fully C++ version
463 Renamed Raysums to Projections throughout files
464 Renamed Detector to Scanner
465 Converted Scanner and Projecions to full object-oriented
468 Converted Phantom and PhantomElements to Object-Oriented
469 Converted Detector to Object-Oriented
472 Improved Integer backprojection method
473 Fixed nearest neighbor to be truly nearest neighbor
474 Made linear interpolation more integer arithmetic -> speed improvement
475 Finished converting all C files to C++
476 Converted all use of malloc/free to C++ new/delete
477 Began object-oriented conversion of Phantom and Projection structures
480 Converted MPI data structures to C++ object
481 Made ImageFile directly inherit from Array2dFile
484 First C++ conversions
485 Portable IF (image file) format implemented with objects (SDF removed)
486 - Now all data files are cross-platform compatible
487 Converted from MPI to MPI++
488 Converted backprojection to object-oriented
489 Removed MTX from libkmath as no longer need -- replaced with C++ matrices
492 Simpilifed endian handling
495 Added support for 64-bit (IA64) CPU
496 Removed broken B-spline interpolation
497 Added support for cygwin platform under Windows 2000
498 Added support for 16-bit PNG graphics
501 Added compile-time configuration of endian order
504 Modified the raysum file format to be platform independent
507 Added Microsoft VC compatibility
508 Cleaned up compilation warnings in libgraph
511 Continued conversion to ANSI C
512 Removed old CRT routines
515 Renamed pictures to phantoms, objects to phantom elements
516 Continued code cleanup
519 More code cleanup with reorganizing libraries
520 Added --log and --exp to sdf-1
521 Allowed negative numbers for window levels in CGI interface
524 Continued code cleanup
528 Better documented, coded raysum in-memory on on-disk options
531 Cleaned out library that wasn't being used by CTSim
532 Modified ctsim.cgi to read in configuration file ctsim.conf
535 First open source distribution for GNU/Linux
538 Converted to GNU/Linux
539 added MPI support via LAM library
542 Developed under MS-DOS and IBM EGA graphics