# 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