STIR  6.2.0
Functions
remove_corrupted_sinograms.cxx File Reference

A utility that removes corrupted sinograms in the LMC method. More...

#include "stir/ProjData.h"
#include "stir/ProjDataInfo.h"
#include "stir/ProjDataInterfile.h"
#include "stir/Succeeded.h"
#include "stir/Sinogram.h"
#include "stir/SegmentBySinogram.h"
#include "stir/VectorWithOffset.h"
#include "stir/Bin.h"
#include "stir/warning.h"
#include "stir/error.h"
#include <vector>
#include <algorithm>
#include <iostream>

Functions

void check_for_corrupted_sinograms (int &axial_pos_to_remove_min, int &axial_pos_to_remove_max, const ProjData &proj_data, const int segment_num, const float tolerance_of_corruption)
 
int main (int argc, char *argv[])
 

Detailed Description

A utility that removes corrupted sinograms in the LMC method.

See general MC doc for how the LMC method works.

This is a program that takes corrupted sinograms (normally after motion correction is applied) and cuts away planes that have too much missing data. The amount that is cut is determined by the user in percentage of a total amount of bins in each efficiency sinogram.

Because of restrictions in stir::ProjDataInfoCylindrical, we have to cut the same number of sinograms in each segment. This is because get_m() et al rely on the centre of the scanner to correspond to the middle sinogram. Unfortunately, this results in potentially cutting valid data in the oblique segments...

It would not be too difficult to change ProjDataInfoCylindrical to allow different offsets, but then we need to write those into the Interfile headers etc.

Author
Sanida Mustafovic
Kris Thielemans