Summary of changes in STIR release 1.1 (dated 26/06/2003)
Nearly all work on this update was by Kris Thielemans and
Sanida Mustafovic. Thanks to Sakari Alenius, Dylan Togane and Frédéric
Schoenahl, for helping to fix some bugs.
Summary for endusers (also to be read by developers)
Bugs removed that affect users
- Errors in parameters for some scanners such as the ECAT ART
and HR+ have been corrected (HRRT has been added provisionally).
- Removed some errors in
ifheaders_for_ecat7
- FilterRootPrior (i.e. the
generalisation of MRP) now has explicit checking for division by 0. This solves
a problem with NaNs occurring on Suns (and apparently very occasionally on
Intel processors as well).
- inter-iteration and inter-update filters are no longer
constructed twice by OSMAPOSL.
- Corrected a bug when parsing parameters from stdin. In
certain cases the default values were not taken into account when just pressing
Return.
- Changed max in the header of PGM files (output by
display) from 256 to 255 for GIMP compatibility [S Alenius]
What’s new for users:
- IO
- user-selectable output
formats for images (Interfile with floats or shorts, ECAT6 and ECAT7, but all
with only basic header info)
- better support for reading
ECAT6 and ECAT7 data, although still only single frame/gate/bed data.
- more extensive support for
converting to ECAT6 data, and new conversion utility to ECAT7.
- a new utility to perform
‘corner-swapping’ of ECAT6 or ECAT7 sinogram data.
- Interfile reading of .hv file
now interprets the 'quantification units' keyword. Interfile writing of .ahv
now uses 'short float' for 4 byte floats, which is according to the Interfile
3.3 standard.
- Extra/changed features relating to reconstructions
- a new filter class that takes an arbitrary separable
kernel in its parameter file
- the median filter should now filter edges as well
- the projection matrix ‘ray tracing’ has more options,
for example to use more than 1 LOR. It also has a slightly different treatment
of the voxels at the edge of the FOV. There will be slightly more voxels at the
edge now. The determination of the edge is now much less prone to numerical
errors.
WARNING This means that your reconstructions will not be
identical to the previous release if you use this projection matrix (although
of course any differences observed just show the need for regularisation).
- a new BinNormalisation class (keyword ‘chained’) that
allows passing both normalisation factors and attenuation correction factors.
- utilities
- new utilities: SSRB, poisson_noise, list_projdata_info,
stir_math (a command line utility for performing arithmetic on images or
sinograms).
- compare_projdata now has a check if data sizes and
other characteristics are identical
- manip_image can now display images in coronal and
sagital views as well
- other
- support for 24-bit display on X windows (and other X
visuals), although some work is needed there (see User’s Guide)
- documentation is updated and expanded. A glossary is
added.
What’s new for developers (aside from what should be obvious
from the above):
- documentation is updated and considerably expanded. The doxygen
documentation is much more structured. The developer’s overview has new
sections to make it easier to start using STIR as a library for your own work.
- a new hierarchy OutputFileFormat, and a new sub-library IO
(which includes now all Interfile, ECAT6 and ECAT7 routines). ECAT6 and ECAT7
have now their own nested namespaces.
- ImageProcessor and ProjMatrixByBin hierarchies have been
slightly changed such that there is a ParsingObject at the start of the
hierarchy. This means that derived classes need to use the 3 parameter version
of RegisteredParsingObject, and that they have to call the set_defaults() et al
functions from the root of the hierarchy.
- a new include file stir/ByteOrderDefine.h that defines
preprocessor symbols when you need to know native byte order at compile time.
- modifications to ProjDataInfoCylindricalNoArccorr to speed up
some functions by caching. Added functions that to convert between Bins and a
new class DetectionPositionPair which in the future will replace explicit
ring,det_num pairs.
- more automatic tests
- changes to a lot of files to avoid warnings by gcc 3.1 or
later about the use of 'typename'. We should be conforming to ANSI C++ in that
respect now.
- Makefiles have been improved to sort out dependencies on .h
and .inl files.
- Upgraded boost files to version 1.30.0