RTK  2.5.0
Reconstruction Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
rtk::Reg23ProjectionGeometry Class Reference

#include <rtkReg23ProjectionGeometry.h>

+ Inheritance diagram for rtk::Reg23ProjectionGeometry:
+ Collaboration diagram for rtk::Reg23ProjectionGeometry:

Public Types

using ConstPointer = itk::SmartPointer< const Self >
 
using Pointer = itk::SmartPointer< Self >
 
using Self = Reg23ProjectionGeometry
 
using Superclass = rtk::ThreeDCircularProjectionGeometry
 
- Public Types inherited from rtk::ThreeDCircularProjectionGeometry
using ConstPointer = itk::SmartPointer< const Self >
 
using HomogeneousProjectionMatrixType = Superclass::MatrixType
 
using HomogeneousVectorType = itk::Vector< double, 4 >
 
using Matrix3x3Type = itk::Matrix< double, 3, 3 >
 
using Pointer = itk::SmartPointer< Self >
 
using PointType = itk::Point< double, 3 >
 
using Self = ThreeDCircularProjectionGeometry
 
using Superclass = ProjectionGeometry< 3 >
 
using ThreeDHomogeneousMatrixType = itk::Matrix< double, 4, 4 >
 
using TwoDHomogeneousMatrixType = itk::Matrix< double, 3, 3 >
 
using VectorType = itk::Vector< double, 3 >
 
- Public Types inherited from rtk::ProjectionGeometry< 3 >
using ConstPointer = itk::SmartPointer< const Self >
 
using MatrixType = typename itk::Matrix< double, TDimension, TDimension+1 >
 
using Pointer = itk::SmartPointer< Self >
 
using PointType = typename itk::ImageBase< TDimension >::PointType
 
using Self = ProjectionGeometry< TDimension >
 
using SizeType = typename itk::ImageBase< TDimension >::SizeType
 
using SpacingType = typename itk::ImageBase< TDimension >::SpacingType
 
using Superclass = itk::DataObject
 

Public Member Functions

bool AddReg23Projection (const PointType &sourcePosition, const PointType &detectorPosition, const VectorType &detectorRowVector, const VectorType &detectorColumnVector)
 
virtual ::itk::LightObject::Pointer CreateAnother () const
 
- Public Member Functions inherited from rtk::ThreeDCircularProjectionGeometry
void AddProjection (const double sid, const double sdd, const double gantryAngle, const double projOffsetX=0., const double projOffsetY=0., const double outOfPlaneAngle=0., const double inPlaneAngle=0., const double sourceOffsetX=0., const double sourceOffsetY=0.)
 
bool AddProjection (const PointType &sourcePosition, const PointType &detectorPosition, const VectorType &detectorRowVector, const VectorType &detectorColumnVector)
 
bool AddProjection (const HomogeneousProjectionMatrixType &pMat)
 
virtual void AddProjectionInRadians (const double sid, const double sdd, const double gantryAngle, const double projOffsetX=0., const double projOffsetY=0., const double outOfPlaneAngle=0., const double inPlaneAngle=0., const double sourceOffsetX=0., const double sourceOffsetY=0.)
 
void Clear () override
 
virtual ::itk::LightObject::Pointer CreateAnother () const
 
const std::vector< double > GetAngularGaps (const std::vector< double > &angles)
 
const std::vector< double > GetAngularGapsWithNext (const std::vector< double > &angles) const
 
virtual double GetFixAnglesTolerance () const
 
const std::vector< Superclass::MatrixType > & GetMagnificationMatrices () const
 
Superclass::MatrixType GetMagnificationMatrices (const unsigned int i) const
 
const ThreeDHomogeneousMatrixType GetProjectionCoordinatesToDetectorSystemMatrix (const unsigned int i) const
 
const ThreeDHomogeneousMatrixType GetProjectionCoordinatesToFixedSystemMatrix (const unsigned int i) const
 
const std::vector< ThreeDHomogeneousMatrixType > & GetRotationMatrices () const
 
ThreeDHomogeneousMatrixType GetRotationMatrix (const unsigned int i) const
 
const std::multimap< double, unsigned int > GetSortedAngles (const std::vector< double > &angles) const
 
const std::vector< double > & GetSourceAngles () const
 
const HomogeneousVectorType GetSourcePosition (const unsigned int i) const
 
const std::vector< ThreeDHomogeneousMatrixType > & GetSourceTranslationMatrices () const
 
ThreeDHomogeneousMatrixType GetSourceTranslationMatrices (const unsigned int i) const
 
const std::vector< double > GetTiltAngles () const
 
const std::map< double, unsigned int > GetUniqueSortedAngles (const std::vector< double > &angles) const
 
void SetCollimationOfLastProjection (const double uinf, const double usup, const double vinf, const double vsup)
 
virtual void SetFixAnglesTolerance (double _arg)
 
double ToUntiltedCoordinateAtIsocenter (const unsigned int noProj, const double tiltedCoord) const
 
const std::vector< double > & GetGantryAngles () const
 
const std::vector< double > & GetOutOfPlaneAngles () const
 
const std::vector< double > & GetInPlaneAngles () const
 
const std::vector< double > & GetSourceToIsocenterDistances () const
 
const std::vector< double > & GetSourceOffsetsX () const
 
const std::vector< double > & GetSourceOffsetsY () const
 
const std::vector< double > & GetSourceToDetectorDistances () const
 
const std::vector< double > & GetProjectionOffsetsX () const
 
const std::vector< double > & GetProjectionOffsetsY () const
 
const std::vector< TwoDHomogeneousMatrixType > & GetProjectionTranslationMatrices () const
 
TwoDHomogeneousMatrixType GetProjectionTranslationMatrix (const unsigned int i) const
 
const std::vector< double > & GetCollimationUInf () const
 
const std::vector< double > & GetCollimationUSup () const
 
const std::vector< double > & GetCollimationVInf () const
 
const std::vector< double > & GetCollimationVSup () const
 
virtual double GetRadiusCylindricalDetector () const
 
virtual void SetRadiusCylindricalDetector (double _arg)
 
virtual double GetVerifyAnglesTolerance () const
 
virtual void SetVerifyAnglesTolerance (double _arg)
 
- Public Member Functions inherited from rtk::ProjectionGeometry< 3 >
virtual ::itk::LightObject::Pointer CreateAnother () const
 
const std::vector< MatrixType > & GetMatrices () const
 
MatrixType GetMatrix (const unsigned int i) const
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from rtk::ThreeDCircularProjectionGeometry
static Superclass::MatrixType ComputeProjectionMagnificationMatrix (double sdd, double sid)
 
static ThreeDHomogeneousMatrixType ComputeRotationHomogeneousMatrix (double angleX, double angleY, double angleZ)
 
static double ConvertAngleBetween0And2PIRadians (const double a)
 
static double ConvertAngleBetween0And360Degrees (const double a)
 
static double ConvertAngleBetweenMinusAndPlusPIRadians (const double a)
 
static Pointer New ()
 
static TwoDHomogeneousMatrixType ComputeTranslationHomogeneousMatrix (double transX, double transY)
 
static ThreeDHomogeneousMatrixType ComputeTranslationHomogeneousMatrix (double transX, double transY, double transZ)
 
- Static Public Member Functions inherited from rtk::ProjectionGeometry< 3 >
static Pointer New ()
 

Protected Member Functions

 Reg23ProjectionGeometry ()
 
 ~Reg23ProjectionGeometry () override
 
- Protected Member Functions inherited from rtk::ThreeDCircularProjectionGeometry
virtual void AddMagnificationMatrix (const Superclass::MatrixType &m)
 
virtual void AddProjectionTranslationMatrix (const TwoDHomogeneousMatrixType &m)
 
virtual void AddRotationMatrix (const ThreeDHomogeneousMatrixType &m)
 
virtual void AddSourceTranslationMatrix (const ThreeDHomogeneousMatrixType &m)
 
itk::LightObject::Pointer InternalClone () const override
 
 ThreeDCircularProjectionGeometry ()
 
 ~ThreeDCircularProjectionGeometry () override=default
 
bool VerifyAngles (const double outOfPlaneAngleRAD, const double gantryAngleRAD, const double inPlaneAngleRAD, const Matrix3x3Type &referenceMatrix) const
 
bool FixAngles (double &outOfPlaneAngleRAD, double &gantryAngleRAD, double &inPlaneAngleRAD, const Matrix3x3Type &referenceMatrix) const
 
- Protected Member Functions inherited from rtk::ProjectionGeometry< 3 >
void PrintSelf (std::ostream &os, itk::Indent indent) const override
 
 ProjectionGeometry ()=default
 
 ~ProjectionGeometry () override=default
 
virtual void AddMatrix (const MatrixType &m)
 

Additional Inherited Members

- Protected Attributes inherited from rtk::ThreeDCircularProjectionGeometry
std::vector< double > m_CollimationUInf
 
std::vector< double > m_CollimationUSup
 
std::vector< double > m_CollimationVInf
 
std::vector< double > m_CollimationVSup
 
double m_FixAnglesTolerance { 1e-6 }
 
std::vector< double > m_GantryAngles
 
std::vector< double > m_InPlaneAngles
 
std::vector< Superclass::MatrixTypem_MagnificationMatrices
 
std::vector< double > m_OutOfPlaneAngles
 
std::vector< double > m_ProjectionOffsetsX
 
std::vector< double > m_ProjectionOffsetsY
 
std::vector< TwoDHomogeneousMatrixTypem_ProjectionTranslationMatrices
 
double m_RadiusCylindricalDetector { 0. }
 
std::vector< ThreeDHomogeneousMatrixTypem_RotationMatrices
 
std::vector< double > m_SourceAngles
 
std::vector< double > m_SourceOffsetsX
 
std::vector< double > m_SourceOffsetsY
 
std::vector< double > m_SourceToDetectorDistances
 
std::vector< double > m_SourceToIsocenterDistances
 
std::vector< ThreeDHomogeneousMatrixTypem_SourceTranslationMatrices
 
double m_VerifyAnglesTolerance { 1e-4 }
 

Detailed Description

{A simple utility class which makes the REG23 projection geometry compatible with RTK's geometry.}

REG23 geometry (open-radART, plastimatch) is very simplicistic: a perspective projection is defined by a source position (S) in world coordinate system (WCS), a detector position (R) in WCS and the detector orientation in WCS by the detector row vector (r) and the detector column vector (c).

In order to make RTK aware of this geometry, the parameters mentioned above have to be brought into RTK's native geometry format. This is achieved by deriving from RTK's circular 3D projection geometry class and adding a new dedicated method for adding a REG23 projection. Internally, this method converts the S,R,r,c set into Euler angles and offsets as required by RTK's native projection geometry definition format.

Warning
{The detector offset and direction is fully modeled by the resultant RTK geometry entry. This means that the projection stack input into back- projection filters or forward-projectors is expected to have zero-origin and identity-direction!}
See also
rtk::ThreeDCircularProjectionGeometry
Test:
{TestReg23ProjectionGeometry.cxx}
Author
phil steininger
Version
1.0

Definition at line 63 of file rtkReg23ProjectionGeometry.h.

Member Typedef Documentation

◆ ConstPointer

Definition at line 72 of file rtkReg23ProjectionGeometry.h.

◆ Pointer

Definition at line 71 of file rtkReg23ProjectionGeometry.h.

◆ Self

General type alias

Definition at line 69 of file rtkReg23ProjectionGeometry.h.

◆ Superclass

Definition at line 70 of file rtkReg23ProjectionGeometry.h.

Constructor & Destructor Documentation

◆ Reg23ProjectionGeometry()

rtk::Reg23ProjectionGeometry::Reg23ProjectionGeometry ( )
protected

Standard constructor.

◆ ~Reg23ProjectionGeometry()

rtk::Reg23ProjectionGeometry::~Reg23ProjectionGeometry ( )
overrideprotected

Destructor.

Member Function Documentation

◆ AddReg23Projection()

bool rtk::Reg23ProjectionGeometry::AddReg23Projection ( const PointType sourcePosition,
const PointType detectorPosition,
const VectorType detectorRowVector,
const VectorType detectorColumnVector 
)

Add a REG23-based geometry set to the RTK projections list.

Parameters
sourcePositionabsolute position of the point source S in WCS
detectorPositionabsolute position of the detector origin R in WCS
detectorRowVectorabsolute direction vector indicating the orientation of the detector's rows r (sometimes referred to as v1)
detectorColumnVectorabsolute direction vector indicating the orientation of the detector's columns c (sometimes referred to as v2)
Returns
TRUE if the projection could be added to the RTK projections list

◆ CreateAnother()

virtual::itk::LightObject::Pointer rtk::Reg23ProjectionGeometry::CreateAnother ( ) const
virtual

Reimplemented from itk::Object.

◆ New()

static Pointer rtk::Reg23ProjectionGeometry::New ( )
static

Method for creation through the object factory.


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