1 Oct 5, 2003 Version 4.3.0
3 * Ported to incompatible FFTW3 library. CTSim will no longer compile or run with FFTW2.
5 Oct 3, 2003 Version 4.2.7
7 * Add support for building on RedHat AMD64
9 Sep 30, 2003 Version 4.2.7
11 * Fix minor issue with floating point difference backprojection, add
14 * Fix building with newest versions of automake 1.7
16 * Add support for 8-byte longs [for example, Athlon64] in
17 integer difference backprojection allowing for 64-bit integer
20 Mar 22, 2003 Version 4.2.3
22 * Added Fourier reconstruction method
24 * Support gcc 3.2, wxWindows 2.4, and MacOS X
26 * Fix polar interpolation
28 Jun 26, 2002 Version 3.5.6
30 * Fix minor color PNG image importing bug
32 * Bug fix for building on Debian alpha platform
34 * Fix g++ compilation warnings
36 Jun 13, 2002 Version 3.5.5
38 * Fix printing of version number
42 * Updated Win32 compatibility
44 Jun 8, 2002 Version 3.5.4
46 * Print version number in log window with About command
48 * Fix problem with captions not showing on some windows. Reworked
49 creation of new windows.
51 * Disabled status bar on 3d views
53 * Fix bug in configure.ac that prevented using compiler
56 * Updated About splash screen
58 May 29, 2002 Version 3.5.3
59 * Added support for g++ 3.04 compiler
61 May 8, 2002 Version 3.5.2
62 * configure: improved CTN (DICOM) installation search
63 * src/ctsim.cpp: Fixed initial image size with import command
65 May 5, 2002 Version 3.5.1
69 * ctsim: Added tips to be displayed at startup and via the help menu.
70 * ctsim: Added center-detector concept. Allow for detector array
71 to be any arbitrary distance from center of scanner. As a result,
72 projection files are not incompatible with previous version of
74 * ctsim: Added threaded tasks and background manager for
75 background processing as well as taking advantage of multiple-CPU's
76 on SMP systems. (Microsoft Windows only)
77 * ctsim: Added plot t-theta sampling to projection file menu.
78 * ctsim: Added Reconstruction with Rebinning for faster
79 divergent beam reconstructions.
80 * ctsim: Added import and export of DICOM image files.
81 * ctsim: Added PPM, PGM, and PNG file import to imagefile.
82 * ctsim: Added FFT/IFFT of columns of image files.
83 * ctsim: Added clipboard cut/copy/paste for image files.
84 * ctsim: Added region of interest to reconstructions.
85 * ctsim: Added Convert Rectangular Image to Projection files
86 * ctsim: Added "Verbose Logging", "Startup Tips", and
87 "Background processes" options to Preferences dialog.
88 * ctsim: Added plotting of projection file histograms.
89 * plotfile: Added scattergram plot functions
90 * ctsim: Added accelerator key for File-Properties
91 * ctsim: Improved wireframe 3-d display to remove hidden
93 * backprojectors.cpp: Added setting of axis extent and increment
95 * projections.cpp: Can read and reconstruct SIEMENS AR.STAR DICOM
96 projection data files.
100 * views.cpp: reduced calls to progress bar update, significant speedup
101 * views.cpp,ctsim.cpp: Fixed bug with window frames sometimes
102 not being displayed on Unix platforms.
103 * views.cpp: Added out-of-memory checks to display for huge
104 image and projection files.
105 * filter.cpp: Fixed Hanning parameter to be 0.5 rather than 0.54
106 * imagefile.cpp: Fixed scaling factor in fftRows
107 * imagefile.cpp: Fixed bug when performing magnitude() on real-valued
109 * sgp.cpp: Fixed bug in drawCircle.
110 * distribution: fixed problem with documentation files not
111 being included with the distribution (Reported by Ian Kay).
112 * sgp.cpp/ezplot.cpp: Improved plotting with markers.
113 * fixed ctsimtext shell when giving no parameters to function-name
114 * phm2if, phm2pj: Updated help messages for renamed phantoms
116 3.0.3 - Released 2/20/01
118 * ctsim: Fixed core dump on Linux with OpenGL
120 * ctsim: Fixed context-sensitive help on Linux
122 * ctsim: Fixed About box on Linux
124 3.0.2 - Released 2/20/01
126 * scanner.cpp: Fixed bug when number of detectors was even.
128 * ctsim: Improved error handling when trying to convert
129 divergent projections into polar form.
131 3.0.1 - Released 2/19/01
133 * ctsim: Fixed dialog box for reconstruction so that
134 rotation angle setting will stay fixed in-between use
137 * syserror: Fixed display bug for trace messages
139 * ctsim: MSVC optimization bug work-around, compiler
142 3.0.0 - Released 2/19/01
144 * ctsim: Massive update/fix to online help and print manual.
146 * ctsim: Added context-sensitive help to dialog boxes
148 * ctsim: Reformated all dialog boxes, much nicer now.
150 * ctsim: Improved accelerator key handling
152 * global: Added Hanning filter.
154 * global: Improved default parameters to that all defaults give
157 3.0.0beta1 - Released 2/11/01
159 * ctsim: Added most-recently-used files to File menu with
160 registry storage between executions.
162 * ctsim: Hides arcane features unless enabled by Preferences dialog
164 * ctsim: Added MDI interface for Windows version and made it default for Windows.
166 * ctsim: Added 3-D wireframe view of images (uses OpenGL)
168 * ctsim: Added graphical About box
170 * ctsim: Escape key now removes cursor lines from image file view
172 * ctsim: Added Revert to ImageFile menu
174 * ctsim: Added accelerator (hotkeys) to frames
176 * ctsim: Online help added!
178 * backprojector: Added cubic interpolation
180 * ctsim: Added icons to Frames on X-Window and MS Windows versions
182 * ctsim: Fixed tick-label placement for plots on projection and
183 reconstruction dialogs.
185 * timer.h: Add use of _ftime when compiling on MSVC
187 * global: Projection files are not compatible with previous version
188 due to new scanner definitions.
190 * global: deleted concept of field-of-view and added
191 view ratio and scan ratio concepts.
193 * ctsim: Fixed crash on shutdown bug
195 * pjinfo: Fixed bug when doing --dump and not specifing --endview
197 * phm2pj: Fixed MPI bug with broadcasting of variables
199 * ctsimtext-lam: Changes for first version to compile under lam
202 3.0.0alpha5 - Released 1/12/00
204 * ctsim: Added EZPlotDialog, used by debugging plots in
207 * ctsimtext: Fixed bugs for MSVC and with empty input lines. Fixed
208 bug in parsing command-line parameters.
210 * views.cpp: Fixed bug in copying of labels from images to
213 * syserror.cpp: fixed reporting for fatal errors
215 * projections.cpp: fixed MSVC failure with std:: namespace
217 * procsignal.cpp: fixed bug in equiangular reconstructions
218 for frequency/inverse-fourier filtering
220 3.0.0alpha4 - Released 1/09/01
222 * ctsim: Added reset to full-intensity scale menu item
224 * ctsim: Add conversion of projections to polar plot [Thanks to
225 Ian Kay for reference and math hints in polar bilinear scaling]
227 * ctsim: improve bilinear scaling of image size [Thanks to Ian Kay
230 * ctsim: imagefile labels are now copied to plotfiles
232 * ctsim: Added more analyze menuitems
234 * ctsimtext: First version. All command-line tools are now accessed
235 through this master shell. Has both command-line and interactive
238 * ctsim: Fixed initialization of min/max bug for PlotFiles
240 * ezplot: Cleaned up y-tick label placement
242 * sgp: Added better support for projection/reconstruction animation
244 3.0.0alpha3 - Released 1/02/01
246 * ctsim: Added plotting of histograms
248 * imagefile.cpp: fixed bug in generation of 16-bit PNG images
250 * ezplot.cpp: adjusted xtick label displays for better placement
252 3.0alpha2 - Released 1/02/01
254 * ctsim: All functions of command-line tools are now in graphical ctsim
256 * ctsim: added generation of filter images
258 * ctsim: Added 2-image math functions (mul, add, div, sub)
260 * ctsim: Added export of imagefiles to graphic file formats
262 * ctsim: Added support for scaling imagefiles in new sizes
264 * ctsim: Added ability to save standard phantom definitions as
265 text files suitable for reading.
267 * ctsim: Add labels for image transformations and display of labels
268 when performing properties of images.
270 * processsignal.cpp: Fixed "off by one" bug in
271 shuffleNaturalToFourierOrder when n is even. Moved functions to
274 * imagefile.cpp: Added FFTW library to imagefile processing. Converted
275 image math functions to complex-valued math.
277 * phantom.cpp: Added ability to save phantom files as ASCII text.
279 3.0alpha1 - Released 12/29/00
281 * Added PlotFile class to system, used by if2 and ctsim for row
282 and column plots and comparison plots
284 * ctsim: Added image comparison statistics and image subtraction
286 * ctsim: Added plotting of rows & columns with y-axis scaling
288 * ctsim: Added row and column plot comparisons between two image
291 * ctsim: Added "Process" menu to image file display with math
292 functions. Added 2-dimensional inverse Fourier to math
293 functions. Added support for complex (real/imaginary) images.
295 * mathfuncs.cpp: Reworked statistics algorithm to share between
296 imagefile and plotfile classes.
298 * imagefile.cpp: Fixed scaling bug when rasterizing Phantom with
299 nsamples > 2. Added generic mage math functions, moved from
300 if1.cpp and if2.cpp to imagefile.cpp. Added support complex
303 * array2dfile.cpp: Added code to support complex (real/imaginary)
306 * if1: Updated to handle error conditions, such as sqrt of a
307 negative number. Converted to use new ImageFile math functions.
309 * if2: Updated to output plot files and use new ImageFile class
312 * if1: Updated to use new ImageFile class math functions
314 * ezplot: Reworked to better store colors/linestyles/symbols with
315 individual curves. Improved display of labels and ticks. Updated
316 to use POL class member variable. Updated to more C++ conventions.
318 * pol: converted to C++ class. Extracted HashTable to separate
321 * sgp: Added linestyle settings
324 First Microsoft Windows GUI version
325 Modifications for Microsoft Visual C++ compilation.
326 Improved pjinfo to output binary headers and view data, useful
327 when manually compiling phantoms that vary during projection
328 process. Thanks to Ian Kay for idea and code submission.
329 Improved sorting to find median in ImageFile::statistics
330 Fixed core-dump bug in Array2dFile::labelsCopy() function (Ian Kay)
331 Changed reconstruction dialog to fix onto smaller screens
332 Fixed display of plotting in Projection views
333 Improved animation displays for Projections and Reconstructions
334 Changed code to explicitly use std:: namespace rather than
335 "namespace using std" statements
336 Fixed reconstruction scaling bug introduced in 2.0.6
337 Renamed if2img to ifexport, if-1 to if1, if-2 to if2
340 Fixed minor compilation problem with procsignal.h
342 Fixed bug when simulating projections and Trace == CONSOLE
343 Fixed scaling bug when performing redundant rotations around object
346 Improved compilation on RedHat 7
347 Changed some of ANSI C header files to C++ header files
348 Removed README.RedHat7
351 Added documentation for --geometry setting
352 Added README.RedHat7 document
355 Fixed bug in generation of binary PGM files
356 Fixed MPI compilation bug in phm2pj.cpp
357 Inverted y-axis output for pj2if (bug alert from Ian Kay)
360 Additions to man pages (Ian Kay)
361 Fix problem with reading of ASCII phantom files (Ian Kay)
364 Fixed syntax error in fftw configuration
365 Slight modifications to support gcc v2.9.6
368 Version 2.0.0 released!
369 ctsim: Added Window menu to Main frame
370 ctsim: Disabled not support reconstruction method
371 Fixed obscure bug in sys_error
372 Fixed compilation in mingw environment not present
373 Fixed compilation in non-graphical environments
376 ctsim: Added animation of reconstruction
377 ctsim: Added saving of dialog parameters for Projection & Reconstruction
378 ctsim: Added progress dialog for rasterization of phantom
379 ctsim: used setpriority to set lower priority
380 ctsim: fixed pReconstruct not being deleted causing scaling problem
381 ctsim: fixed projection animation dialog buttons
384 ctsim: Added projection graph to animation of projection collection
385 ctsim: Added single stepping to projection collection animation
386 ctsim: improved File/Properties display for projection files
387 ctsim: Added progress dialog for reconstructions
388 ctsim: Added file labels for projection and reconstruction images
389 ctsim: Made File/Properties bring up modal dialogs
390 Added reconstruction for Equilinear and Equiangular geometries
391 Changed theta to be -PI/2 to make compliant with Kak-Slaney formulas
392 Separated reconstruction into Reconstructor class
393 Fixed center of detector adjustment for even number of detectors
394 Added --enable-static to generate statically linked programs
397 ctsim: Added animation of projection collection processs
398 ctsim: Added Auto Scaling for image windows
399 ctsim: Change menus from "windowing" to "display scaling"
400 Added FieldOfView and FocalLength ratio parameters to projection collection
401 Added FocalLength & FieldOfView fields to projection data files
402 Added Projection collection for Equilinear and Equiangular geometries
403 Changed name of Rowland Phantom to correct name of Shepp-Logan
404 Fixed bug in backprojection selection
407 Added RCS Id strings to executable files
408 Added RPM Spec file for RPM package creation
409 Added loading of ASCII phanthom definitions from files
410 Fixed compilation for non-SGP architectures
411 Decomposed SignalFilter class into ProcessSignal and SignalFilter classes
412 Added Filter-Generation option to reconstruction to allow direct or
413 inverse_fourier construction of filters
414 Added median to statistics and to auto-windowing
417 Added line color support to SGP
421 Finished support for dmallocxx library
422 Fixed bug in SignalFilter::convertFilterMethodNameToID()
423 Rewrote SGP & EZPlot to use C++ object-oriented. SGP can now write to
424 G2 windows and well as WXWindows.
425 ctsim program: "Create Phantom" now shows phantom object
426 Fixed row-plot bug in if-2
427 Reworked EZPlot's multiple plot operation
430 ctsim program: improved initial size and scroll area for image
432 ctsim program: added rasterization parameters, projections parameters,
433 and reconstruction parameters dialogs
434 Moved char[] static definition from header files to c++ files
435 Completely reorganized option processing in classes to improve
436 expandability and to assist ctsim graphical user interface.
439 ctsim program: Added dialog to set minimum/maximum display levels
440 Started ctsim.tex document file
443 Fixed compiler warnings at -Wall level
444 Began work on CTSim program to be graphical front-end of all functions
445 Moved current src/*.cpp to tools/*.cpp
446 Made CTSim graphical front-end's home to be src/
449 Added highly optimized backprojection method idiff3
450 Moved comparative stats to if-2 program from ifinfo
451 Fixed image display in if2img using G2 library
452 Added column-plot and row-plot options to if-2
453 Added autoselection of analytic/calculated spatial responses to SignalFilter
454 Added frequency-based preinterpolation to SignalFilter and idiff3
455 backprojection method. Currently, this technique is still under
456 development and debugging
457 Moved graphic file writing to ImageFile class from if2img program
460 Cleaned up SignalFilter class
461 Added zeropad option to pjrec
462 Added zeropad options to html and cgi files
463 Added fourier_table and rfttw filter methods
464 Added FFTW routines to use real/half-complex transformations
467 Updated trace level processing
468 Added trace level to SignalFilter
469 Fixed magnitude vs. real output bug in FFT/Fourier filter
472 Fixed const issue with ImageFileArray
473 Fixed Array2dFile::labelsCopy()
474 Added copy constructor and assignment for Array2dFileLabel class
475 Added Timer to if-2.cpp and ifinfo.cpp
476 Added beginning of frequency-based (DFT & FFT) filter to SignalFilter
477 Added option processing for filter-method for pjrec to choose
478 between convolution, dft, & fft filtering
479 Fixed format string for EZPlot so axis labels now print
480 Added support for FFTW library
483 Rewrote Array2dFile class to be non-templated
484 Rewrote Array2dFile class to make reads and writes atomic. No disk files are kept open.
485 Rewrote Array2dFileLabel class to make members private, added access routines
486 Removed timedate.cpp in favor of standard C library time/date functions
487 Renamed ctrec to pjrec, sample-ctrec.sh to sample-ctsim
488 Added signature tag and creation date/time to projection files
491 Standardized string option processing by classes. All classes use character strings
492 to select options rather than numeric constants. Added fail() and failMessage()
493 methods to verify that objects are created correctly by character strings.
494 Hid C++ assignment and copy constructors in classes that should not have assignment/copy
495 Rewrote ImageFile class
496 Started support for dmallocxx library, not finished
497 Added G.T. Herman image comparision statistics to ifinfo (see imagefile.cpp)
498 Updated ifinfo to show comparative statistics
499 Added printLabels() to Array2dFile class
500 Added printStatistics() to ImageFile class
503 Moved conversion filter name/id to Filter class
504 Moved conversion backprojection name/id to Backproj class
505 Added MPI broadcasting of strings
508 Merged proj_reconstr into class Projections
509 Used auto_ptr in Projections::reconstruct to make sure destructor is always called
510 Code cleanup in projections.cpp
511 Moved conversion of phantom names/id to Phantom class
514 Converted projection files to C++ library with frnetorderstream
515 Converted image files to C++ library with frnetorderstream
516 Converted filter and convolution to object-oriented code
517 Changed default image file to float from double -- Changable in imagefile.h
518 Optimized image file writing on little-endian architectures
519 Updated README and INSTALL
522 Reorganized source files
523 MPI bug fixed to phm2pj.cpp
526 Reorganized include files
527 Fixed const pointers in strfuncs
530 Renamed directories, moved source files, combined source files
531 to change from 6 libraries to 3 libraries (libctsim, libctsupport,
535 Skip versions to make version 2.0 the first fully C++ version
536 Renamed Raysums to Projections throughout files
537 Renamed Detector to Scanner
538 Converted Scanner and Projecions to full object-oriented
541 Converted Phantom and PhantomElements to Object-Oriented
542 Converted Detector to Object-Oriented
545 Improved Integer backprojection method
546 Fixed nearest neighbor to be truly nearest neighbor
547 Made linear interpolation more integer arithmetic -> speed improvement
548 Finished converting all C files to C++
549 Converted all use of malloc/free to C++ new/delete
550 Began object-oriented conversion of Phantom and Projection structures
553 Converted MPI data structures to C++ object
554 Made ImageFile directly inherit from Array2dFile
557 First C++ conversions
558 Portable IF (image file) format implemented with objects (SDF removed)
559 - Now all data files are cross-platform compatible
560 Converted from MPI to MPI++
561 Converted backprojection to object-oriented
562 Removed MTX from libkmath as no longer need -- replaced with C++ matrices
565 Simpilifed endian handling
568 Added support for 64-bit (IA64) CPU
569 Removed broken B-spline interpolation
570 Added support for cygwin platform under Windows 2000
571 Added support for 16-bit PNG graphics
574 Added compile-time configuration of endian order
577 Modified the raysum file format to be platform independent
580 Added Microsoft VC compatibility
581 Cleaned up compilation warnings in libgraph
584 Continued conversion to ANSI C
585 Removed old CRT routines
588 Renamed pictures to phantoms, objects to phantom elements
589 Continued code cleanup
592 More code cleanup with reorganizing libraries
593 Added --log and --exp to sdf-1
594 Allowed negative numbers for window levels in CGI interface
597 Continued code cleanup
601 Better documented, coded raysum in-memory on on-disk options
604 Cleaned out library that wasn't being used by CTSim
605 Modified ctsim.cgi to read in configuration file ctsim.conf
608 First open source distribution for GNU/Linux
611 Converted to GNU/Linux
612 added MPI support via LAM library
615 Developed under MS-DOS and IBM EGA graphics