STIR  6.2.0
Files | Classes | Functions
Items relating to motion and motion correction
Collaboration diagram for Items relating to motion and motion correction:

Files

file  AbsTimeIntervalFromECAT7ACF.cxx
 Declaration of class stir::AbsTimeIntervalFromECAT7ACF.
 
file  local_motion_registries.cxx
 registration of parsing objects related to motion
 
file  MatchTrackerAndScanner.cxx
 Implementation of class stir::MatchTrackerAndScanner.
 
file  NonRigidObjectTransformationUsingBSplines.cxx
 Implementation of class stir::NonRigidObjectTransformationUsingBSplines.
 
file  Polaris_MT_File.cxx
 Implementation of class stir::Polaris_MT_File.
 
file  RigidObject3DMotion.cxx
 Declaration of class stir::RigidObject3DMotion.
 
file  RigidObject3DMotionFromPolaris.cxx
 Implementation of class stir::RigidObject3DMotionFromPolaris.
 
file  RigidObject3DTransformation.cxx
 implementation of class RigidObject3DTransformation
 
file  TimeFrameMotion.cxx
 stir::TimeFrameMotion
 
file  transform_3d_object.cxx
 Functions to re-interpolate an image or projection data to a new coordinate system.
 
file  list_polaris_info.cxx
 Utility to list information from a Polaris file.
 
file  bin_interpolate.h
 Functions to interpolate sinograms.
 
file  MatchTrackerAndScanner.h
 Definition of class stir::MatchTrackerAndScanner.
 
file  NonRigidObjectTransformationUsingBSplines.h
 Declaration of class stir::NonRigidObjectTransformationUsingBSplines.
 
file  ObjectTransformation.h
 Declaration of class stir::ObjectTransformation.
 
file  Polaris_MT_File.h
 Declaration of class stir::Polaris_MT_File.
 
file  RigidObject3DMotion.h
 Declaration of class stir::RigidObject3DMotion.
 
file  RigidObject3DMotionFromPolaris.h
 Declaration of class stir::RigidObject3DMotionFromPolaris.
 
file  RigidObject3DTransformation.h
 Declaration of class stir::RigidObject3DTransformation.
 
file  TimeFrameMotion.h
 stir::TimeFrameMotion
 
file  Transform3DObjectImageProcessor.h
 Declaration of class stir::Transform3DObjectImageProcessor.
 
file  transform_3d_object.h
 Declaration of functions to re-interpolate an image or projection data to a new coordinate system.
 
file  transform_3d_object.inl
 Functions to re-interpolate an image.
 

Classes

class  stir::FindMCNormFactors
 Class to compute 'time-efficiency' factors for motino corrected projection data. More...
 
class  stir::MyApp
 A class for moving an image according to average motion in the frame. More...
 
class  stir::MoveImage
 A class for moving an image according to average motion in the frame. More...
 
class  stir::MoveProjData
 A class for moving projection data according to average motion in the frame. More...
 
class  stir::ReportMovement
 A class for reporting the movement within the frame w.r.t. to the reference position. More...
 
class  stir::MatchTrackerAndScanner
 A class for finding the coordinate transformation between tracker and scanner coordinate systems. More...
 
class  stir::NonRigidObjectTransformationUsingBSplines< num_dimensions, elemT >
 Class to perform non-rigid object transformations in arbitrary dimensions. More...
 
class  stir::ObjectTransformation< num_dimensions, elemT >
 Base-class for performing (potentially non-rigid) object transformations. More...
 
class  stir::Polaris_MT_File
 a class for parsing .mt files output by the Polaris software More...
 
class  stir::RigidObject3DMotion
 Base class for 3D rigid motion. More...
 
class  stir::RigidObject3DMotionFromPolaris
 A class for handling motion information from the Polaris tracker. More...
 
class  stir::RigidObject3DTransformation
 Class to perform rigid object transformations in 3 dimensions. More...
 
class  stir::TimeFrameMotion
 A class for encoding average motion in the frames. More...
 

Functions

std::ostream & stir::operator<< (std::ostream &out, const RigidObject3DTransformation &rigid_object_transformation)
 Output to (text) stream. More...
 
std::istream & stir::operator>> (std::istream &, RigidObject3DTransformation &rigid_object_transformation)
 Input from (text) stream. More...
 
RigidObject3DTransformation stir::compose (const RigidObject3DTransformation &apply_last, const RigidObject3DTransformation &apply_first)
 Composition of 2 transformations. More...
 
template<class ObjectTransformationT , class PushInterpolatorT >
Succeeded stir::transform_3d_object_push_interpolation (DiscretisedDensity< 3, float > &out_density, const DiscretisedDensity< 3, float > &in_density, const ObjectTransformationT &transformation_in_to_out, const PushInterpolatorT &interpolator, const bool do_jacobian)
 transform image data More...
 
template<class ObjectTransformationT , class PullInterpolatorT >
Succeeded stir::transform_3d_object_pull_interpolation (DiscretisedDensity< 3, float > &out_density, const DiscretisedDensity< 3, float > &in_density, const ObjectTransformationT &transformation_out_to_in, const PullInterpolatorT &interpolator, const bool do_jacobian)
 transform image data More...
 
Succeeded stir::transform_3d_object (DiscretisedDensity< 3, float > &out_density, const DiscretisedDensity< 3, float > &in_density, const RigidObject3DTransformation &transformation_in_to_out)
 transform image data More...
 
Succeeded stir::transform_3d_object (ProjData &out_proj_data, const ProjData &in_proj_data, const RigidObject3DTransformation &object_transformation)
 transform projection data More...
 
Succeeded stir::transpose_of_transform_3d_object (DiscretisedDensity< 3, float > &out_density, const DiscretisedDensity< 3, float > &in_density, const RigidObject3DTransformation &transformation_in_to_out)
 transform image data using transposed matrix More...
 
Succeeded stir::transform_3d_object (ProjData &out_proj_data, const ProjData &in_proj_data, const RigidObject3DTransformation &rigid_object_transformation, const int min_in_segment_num_to_process, const int max_in_segment_num_to_process)
 transform projection data More...
 

Detailed Description

Function Documentation

◆ operator<<()

std::ostream & stir::operator<< ( std::ostream &  out,
const RigidObject3DTransformation rigid_object_transformation 
)

Output to (text) stream.

Will be written as

{ quaternion, translation } 

References stir::RigidObject3DTransformation::get_quaternion(), and stir::RigidObject3DTransformation::get_translation().

◆ operator>>()

std::istream & stir::operator>> ( std::istream &  ,
RigidObject3DTransformation rigid_object_transformation 
)

Input from (text) stream.

Should have format

{ quaternion, translation } 

◆ compose()

RigidObject3DTransformation stir::compose ( const RigidObject3DTransformation apply_last,
const RigidObject3DTransformation apply_first 
)

Composition of 2 transformations.

This provides a way to perform 2 transformations after eachother. The following code will work

RigidObject3DTransformation tf_1,tf_2; // initialise somehow
const RigidObject3DTransformation tf_2_1 = compose(tf_2,tf_1));
const CartesianCoordinate3D<float> point(1.F,-5.F,2.F);
assert(norm(tf_2.transform_point(tf_1.transform_point(point)) -
tf_2_ 1.transform_point(point))
< .01);

References stir::RigidObject3DTransformation::get_quaternion(), and stir::RigidObject3DTransformation::get_translation().

Referenced by stir::RigidObject3DMotion::get_motion_in_scanner_coords_rel_time(), stir::RigidObject3DTransformation::jacobian(), stir::RigidObject3DMotion::post_processing(), stir::LmToProjDataWithMC::process_new_time_event(), and stir::RigidObject3DTransformationTests::run_tests().

◆ transform_3d_object_push_interpolation()

template<class ObjectTransformationT , class PushInterpolatorT >
Succeeded stir::transform_3d_object_push_interpolation ( DiscretisedDensity< 3, float > &  out_density,
const DiscretisedDensity< 3, float > &  in_density,
const ObjectTransformationT &  transformation_in_to_out,
const PushInterpolatorT &  interpolator,
const bool  do_jacobian 
)
inline

transform image data

the interpolator has to push values from the input into the output image

Warning
transformation_in_to_out has to transform from in to out
See also
PushTransposeLinearInterpolator for an example interpolator.
Developer's note
This function is inline to avoid template instantiation problems.

References stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >::get_max_index(), stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >::get_min_index(), stir::DiscretisedDensity< num_dimensions, elemT >::get_origin(), and stir::VoxelsOnCartesianGrid< elemT >::get_voxel_size().

Referenced by stir::transpose_of_transform_3d_object().

◆ transform_3d_object_pull_interpolation()

template<class ObjectTransformationT , class PullInterpolatorT >
Succeeded stir::transform_3d_object_pull_interpolation ( DiscretisedDensity< 3, float > &  out_density,
const DiscretisedDensity< 3, float > &  in_density,
const ObjectTransformationT &  transformation_out_to_in,
const PullInterpolatorT &  interpolator,
const bool  do_jacobian 
)
inline

transform image data

the interpolator has to pull values from the input into the output image

Warning
transformation_out_to_in has to transform from out to in
See also
PullLinearInterpolator for an example interpolator.
Developer's note
This function is inline to avoid template instantiation problems.

References stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >::get_max_index(), stir::VectorWithOffset< Array< num_dimensions - 1, elemT > >::get_min_index(), stir::DiscretisedDensity< num_dimensions, elemT >::get_origin(), and stir::VoxelsOnCartesianGrid< elemT >::get_voxel_size().

Referenced by stir::transform_3d_object().

◆ transform_3d_object() [1/3]

Succeeded stir::transform_3d_object ( DiscretisedDensity< 3, float > &  out_density,
const DiscretisedDensity< 3, float > &  in_density,
const RigidObject3DTransformation transformation_in_to_out 
)

transform image data

Currently only supports VoxelOnCartesianGrid image. Uses (tri)linear interpolation.

Todo:
cannot use ObjectTransformation yet as it needs the inverse transformation

References stir::RigidObject3DTransformation::inverse(), and stir::transform_3d_object_pull_interpolation().

◆ transform_3d_object() [2/3]

Succeeded stir::transform_3d_object ( ProjData out_proj_data,
const ProjData in_proj_data,
const RigidObject3DTransformation object_transformation 
)

transform projection data

Currently only supports non-arccorrected data.

Uses all available input segments

References stir::ProjData::get_max_segment_num(), stir::ProjData::get_min_segment_num(), and stir::transform_3d_object().

◆ transpose_of_transform_3d_object()

Succeeded stir::transpose_of_transform_3d_object ( DiscretisedDensity< 3, float > &  out_density,
const DiscretisedDensity< 3, float > &  in_density,
const RigidObject3DTransformation transformation_in_to_out 
)

transform image data using transposed matrix

Implements the transpose (not the inverse) of transform_3d_object(DiscretisedDensity<3,float>&, const DiscretisedDensity<3,float>&,const RigidObject3DTransformation&)

Todo:
cannot use ObjectTransformation yet as it needs the inverse transformation

References stir::RigidObject3DTransformation::inverse(), and stir::transform_3d_object_push_interpolation().

◆ transform_3d_object() [3/3]

Succeeded stir::transform_3d_object ( ProjData out_proj_data,
const ProjData in_proj_data,
const RigidObject3DTransformation rigid_object_transformation,
const int  min_in_segment_num_to_process,
const int  max_in_segment_num_to_process 
)