STIR 6.4.0
stir::FourierRebinning Class Reference

Class for Serial FORE Reconstruction. More...

#include "stir/recon_buildblock/FourierRebinning.h"

Inheritance diagram for stir::FourierRebinning:

Public Member Functions

void set_defaults () override
 Set defaults before parsing.
 
 FourierRebinning ()
 default constructor calls set_defaults();
 
std::string method_info () const override
 This method returns the type of the algorithm for the rebinning.
 
Succeeded rebin () override
 This method creates a stack of 2D rebinned sinograms from the whole 3D data set (i.e. the ProjData data) and saves it.
 
void set_kmin (int km)
 A set of get and set utility functions to access the rebinning parameters.
 
void set_wmin (int wm)
 
void set_deltamin (int dm)
 
void set_kc (int kcc)
 
void set_fore_debug_level (int fdebug)
 
int get_kmin ()
 
int get_wmin ()
 
int get_deltamin ()
 
int get_kc ()
 
int get_fore_debug_level ()
 
- Public Member Functions inherited from stir::RegisteredParsingObject< FourierRebinning, ProjDataRebinning, ProjDataRebinning >
std::string get_registered_name () const override
 Returns Derived::registered_name.
 
std::string parameter_info () override
 Returns a string with all parameters and their values, in a form suitable for parsing again.
 
- Public Member Functions inherited from stir::ProjDataRebinning
 ~ProjDataRebinning () override
 virtual destructor
 
void set_max_segment_num_to_process (int ns)
 
int get_max_segment_num_to_process () const
 
void set_output_filename_prefix (const std::string &s)
 
std::string get_output_filename_prefix () const
 
void set_input_proj_data_sptr (const shared_ptr< ProjData > &)
 set projection data that will be rebinned
 
shared_ptr< ProjDataget_proj_data_sptr ()
 
virtual Succeeded set_up ()
 operations prior to the rebinning
 
- Public Member Functions inherited from stir::TimedObject
void reset_timers ()
 reset all timers kept by this object
 
void stop_timers () const
 stop all timers kept by this object
 
void start_timers (bool do_reset=false) const
 start all timers kept by this object
 
double get_CPU_timer_value () const
 get current value of the CPU timer (since first use or last reset)
 
double get_wall_clock_timer_value () const
 get current value of the wall-clock timer (since first use or last reset)
 
- Public Member Functions inherited from stir::ParsingObject
 ParsingObject (const ParsingObject &)
 
ParsingObjectoperator= (const ParsingObject &)
 
bool parse (std::istream &f)
 
bool parse (const char *const filename)
 
void ask_parameters ()
 

Static Public Attributes

static const char *const registered_name = "FORE"
 Name which will be used when parsing a ProjDataRebinning object.
 

Protected Member Functions

bool post_processing () override
 This will be called at the end of the parsing.
 
void initialise_keymap () override
 Initialise all keywords.
 
bool post_processing () override
 used to check acceptable parameter ranges, etc...
 
void set_defaults () override
 Set defaults before parsing.
 
void initialise_keymap () override
 Initialise all keywords.
 
virtual void set_key_values ()
 This will be called before parsing or parameter_info is called.
 

Protected Attributes

int kmin
 Smallest angular freq. index minimum 2 ( 1 is zero frequency)
 
int wmin
 Smallest transax. freq. index minimum 2 ( 1 is zero frequency)
 
int deltamin
 Delta max for small omega limiting delta for SSRB for small freq.
 
int kc
 kc index for consistency
 
int fore_debug_level
 fore_debug_level. Setting it to >0 will produce some debug information
 
std::string output_filename_prefix
 file name for output projdata (should be without extension)
 
std::string input_filename
 file name for input projdata
 
int max_segment_num_to_process
 the maximum absolute segment number to use in the reconstruction
 
shared_ptr< ProjDataproj_data_sptr
 
KeyParser parser
 

Additional Inherited Members

- Static Public Member Functions inherited from stir::RegisteredParsingObject< FourierRebinning, ProjDataRebinning, ProjDataRebinning >
static ProjDataRebinningread_from_stream (std::istream *)
 Construct a new object (of type Derived) by parsing the istream.
 
- Static Public Member Functions inherited from stir::RegisteredObject< ProjDataRebinning >
static ProjDataRebinningread_registered_object (std::istream *in, const std::string &registered_name)
 Construct a new object (of a type derived from Root, its actual type determined by the registered_name parameter) by parsing the istream.
 
static ProjDataRebinningask_type_and_parameters ()
 ask the user for the type, and then calls read_registered_object(0, type)
 
static void list_registered_names (std::ostream &stream)
 List all possible registered names to the stream.
 
- Protected Types inherited from stir::RegisteredObject< ProjDataRebinning >
typedef ProjDataRebinning *(* RootFactory) (std::istream *)
 The type of a root factory is a function, taking an istream* as argument, and returning a Root*.
 
typedef FactoryRegistry< std::string, RootFactory, interfile_lessRegistryType
 The type of the registry.
 
- Static Protected Member Functions inherited from stir::RegisteredObject< ProjDataRebinning >
static RegistryTyperegistry ()
 Static function returning the registry.
 

Detailed Description

Class for Serial FORE Reconstruction.

The digital implementation of the rebinning is done as follows:

a) Initialise the 2D Fourier transform of all rebinned sinograms Pr(w,k);
b) Process sequentially each pair of oblique sinograms pij and pji for i,j (= 0..2*num_rings-2) as:

  • merge pij and pji to get a sinogram sampled over 2p;
  • calculates the 2D FFT Pij(w,k) of the merged sinogram;
  • assign each frequency component (w,k) to the rebinned sinogram of the slice lying closest axially to z - (tk/w): Pr(w,k) = Pr(w,k) + Pij(w,k), where r is the nearest integer to (i+j) - k(i-j)/wR;
    c) Normalise Pr(w,k) for the variable number of contributions to each w, k, r ;
    d) Calculate the 2D inverse FFT of each Pr(w,k) to get the rebinned sinogram Pr(s,f);

As FORE is based on a high frequency approximation, it is necessary to handle separately low and high frequencies. This is done by subdividing the (w,k) plane into three sub regions defined by two parameters in Fourier space, w (the continuous frequency corresponding to the radial coordinates s) and k (the integer Fourier index corresponding to the azimuthal angle f), and by applying in each region a different method to estimated the rebinned sinogram.

The rebinned data are represented in spatial space with |s|<=R, 0<=f<p, |z|<=L/2, where L is the length of the axial FOV and R the ring radius. In the high frequencies (region 1), the rebinned data are estimated using Fourier rebinning. In the second high frequency region (region 2), the consistency condition is not satisfied and hence all the rebinned data are forced to 0: Pr(w,k, z) = 0, when |k/w|>=R; |w|>wlim or |k|>klim. Finally, in the low-frequency (region 3), Fourier rebinning is not applicable. Therefore the rebinned data are estimated using only the oblique sinograms with a small value of d : dlim. Owing to the small value of d, the axial shift can be neglected as in the SSRB approximation.

Member Function Documentation

◆ set_defaults()

void stir::FourierRebinning::set_defaults ( )
overridevirtual

Set defaults before parsing.

Reimplemented from stir::ParsingObject.

References deltamin, fore_debug_level, kc, kmin, set_defaults(), stir::ProjDataRebinning::set_defaults(), and wmin.

Referenced by FourierRebinning(), and set_defaults().

◆ method_info()

std::string stir::FourierRebinning::method_info ( ) const
inlineoverridevirtual

This method returns the type of the algorithm for the rebinning.

Implements stir::ProjDataRebinning.

◆ rebin()

◆ post_processing()

bool stir::FourierRebinning::post_processing ( )
overrideprotectedvirtual

This will be called at the end of the parsing.

Returns
false if everything OK, true if not

Reimplemented from stir::ParsingObject.

References post_processing(), and stir::ProjDataRebinning::post_processing().

Referenced by post_processing().

◆ initialise_keymap()

void stir::FourierRebinning::initialise_keymap ( )
overrideprotectedvirtual

Initialise all keywords.

Reimplemented from stir::ParsingObject.

References deltamin, fore_debug_level, initialise_keymap(), stir::ProjDataRebinning::initialise_keymap(), kc, kmin, and wmin.

Referenced by initialise_keymap().


The documentation for this class was generated from the following files: