RTK  1.4.0
Reconstruction Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private 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

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

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
 
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
 
virtual double GetRadiusCylindricalDetector () 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 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 SetRadiusCylindricalDetector (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
 
- 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 ()
 
virtual ~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 ()
 
virtual ~ThreeDCircularProjectionGeometry () override
 
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 ()
 
virtual ~ProjectionGeometry () override
 
virtual void AddMatrix (const MatrixType &m)
 

Private Member Functions

void operator= (const Self &)
 
 Reg23ProjectionGeometry (const Self &)
 

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
 
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
 
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
 

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

Definition at line 71 of file rtkReg23ProjectionGeometry.h.

Definition at line 70 of file rtkReg23ProjectionGeometry.h.

General typedefs

Definition at line 68 of file rtkReg23ProjectionGeometry.h.

Definition at line 69 of file rtkReg23ProjectionGeometry.h.

Constructor & Destructor Documentation

rtk::Reg23ProjectionGeometry::Reg23ProjectionGeometry ( )
protected

Standard constructor.

virtual rtk::Reg23ProjectionGeometry::~Reg23ProjectionGeometry ( )
overrideprotectedvirtual

Destructor.

rtk::Reg23ProjectionGeometry::Reg23ProjectionGeometry ( const Self )
private

Purposely not implemented.

Member Function Documentation

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
virtual::itk::LightObject::Pointer rtk::Reg23ProjectionGeometry::CreateAnother ( ) const
static Pointer rtk::Reg23ProjectionGeometry::New ( )
static

Method for creation through the object factory.

void rtk::Reg23ProjectionGeometry::operator= ( const Self )
private

Purposely not implemented.


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