STIR
6.2.0
|
Class for Serial FORE Reconstruction. More...
#include "stir/recon_buildblock/FourierRebinning.h"
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_input_proj_data_sptr (const shared_ptr< ProjData > &) |
set projection data that will be rebinned More... | |
shared_ptr< ProjData > | get_proj_data_sptr () |
virtual Succeeded | set_up () |
operations prior to the rebinning | |
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 |
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 More... | |
void | start_timers (bool do_reset=false) const |
start all timers kept by this object More... | |
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 &) | |
ParsingObject & | operator= (const ParsingObject &) |
void | ask_parameters () |
bool | parse (std::istream &f) |
bool | parse (const char *const filename) |
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. More... | |
void | initialise_keymap () override |
Initialise all keywords. | |
Protected Member Functions inherited from stir::ProjDataRebinning | |
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. | |
Protected Member Functions inherited from stir::ParsingObject | |
virtual void | set_key_values () |
This will be called before parsing or parameter_info is called. More... | |
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 | |
Protected Attributes inherited from stir::ProjDataRebinning | |
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 More... | |
shared_ptr< ProjData > | proj_data_sptr |
Protected Attributes inherited from stir::ParsingObject | |
KeyParser | parser |
Additional Inherited Members | |
Static Public Member Functions inherited from stir::RegisteredParsingObject< FourierRebinning, ProjDataRebinning, ProjDataRebinning > | |
static ProjDataRebinning * | read_from_stream (std::istream *) |
Construct a new object (of type Derived) by parsing the istream. More... | |
Static Public Member Functions inherited from stir::RegisteredObject< ProjDataRebinning > | |
static ProjDataRebinning * | read_registered_object (std::istream *in, const std::string ®istered_name) |
Construct a new object (of a type derived from Root, its actual type determined by the registered_name parameter) by parsing the istream. More... | |
static ProjDataRebinning * | ask_type_and_parameters () |
ask the user for the type, and then calls read_registered_object(0, type) More... | |
static void | list_registered_names (std::ostream &stream) |
List all possible registered names to the stream. More... | |
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_less > | RegistryType |
The type of the registry. | |
Static Protected Member Functions inherited from stir::RegisteredObject< ProjDataRebinning > | |
static RegistryType & | registry () |
Static function returning the registry. More... | |
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:
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.
|
overrideprotectedvirtual |
This will be called at the end of the parsing.
Reimplemented from stir::ParsingObject.