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