RTK  2.0.1
Reconstruction Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
rtk::ThreeDCircularProjectionGeometry Class Reference

#include <rtkThreeDCircularProjectionGeometry.h>

+ Inheritance diagram for rtk::ThreeDCircularProjectionGeometry:
+ Collaboration diagram for rtk::ThreeDCircularProjectionGeometry:

Public Types

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

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

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)
 

Protected Attributes

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

Detailed Description

Projection geometry for a source and a 2-D flat panel.

The source and the detector rotate around a circle paremeterized with the SourceToDetectorDistance and the SourceToIsocenterDistance. The position of each projection along this circle is parameterized by the GantryAngle. The detector can be shifted in plane with the ProjectionOffsetsX and the ProjectionOffsetsY. It can be also rotated with InPlaneAngles and OutOfPlaneAngles. All angles are in radians except for the function AddProjection that takes angles in degrees. The source can be shifted in plane with the SourceOffsetsX and the SourceOffsetsY.

If SDD equals 0., then one is dealing with a parallel geometry.

More information is provided in RTK 3D circular projection geometry.

Author
Simon Rit

Definition at line 50 of file rtkThreeDCircularProjectionGeometry.h.

Member Typedef Documentation

Definition at line 58 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 66 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 61 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 65 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 57 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 64 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 55 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 56 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 63 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 62 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 60 of file rtkThreeDCircularProjectionGeometry.h.

Constructor & Destructor Documentation

rtk::ThreeDCircularProjectionGeometry::ThreeDCircularProjectionGeometry ( )
protected
rtk::ThreeDCircularProjectionGeometry::~ThreeDCircularProjectionGeometry ( )
overrideprotecteddefault

Member Function Documentation

virtual void rtk::ThreeDCircularProjectionGeometry::AddMagnificationMatrix ( const Superclass::MatrixType m)
inlineprotectedvirtual

Definition at line 299 of file rtkThreeDCircularProjectionGeometry.h.

void rtk::ThreeDCircularProjectionGeometry::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. 
)

Add projection to geometry. One projection is defined with the rotation angle in degrees and the in-plane translation of the detector in physical units (e.g. mm). The rotation axis is assumed to be (0,1,0).

bool rtk::ThreeDCircularProjectionGeometry::AddProjection ( 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
bool rtk::ThreeDCircularProjectionGeometry::AddProjection ( const HomogeneousProjectionMatrixType pMat)

Add projection from a projection matrix. A projection matrix is defined up to a scaling factor. The function here Assumes that the input matrix pMat is normalized such that pMat*(x,y,z,1)'=(u,v,1)'. This code assumes that the SourceToDetectorDistance is positive.

virtual void rtk::ThreeDCircularProjectionGeometry::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. 
)
virtual

Idem with angles in radians.

virtual void rtk::ThreeDCircularProjectionGeometry::AddProjectionTranslationMatrix ( const TwoDHomogeneousMatrixType m)
inlineprotectedvirtual

Definition at line 287 of file rtkThreeDCircularProjectionGeometry.h.

virtual void rtk::ThreeDCircularProjectionGeometry::AddRotationMatrix ( const ThreeDHomogeneousMatrixType m)
inlineprotectedvirtual

Definition at line 291 of file rtkThreeDCircularProjectionGeometry.h.

virtual void rtk::ThreeDCircularProjectionGeometry::AddSourceTranslationMatrix ( const ThreeDHomogeneousMatrixType m)
inlineprotectedvirtual

Definition at line 295 of file rtkThreeDCircularProjectionGeometry.h.

void rtk::ThreeDCircularProjectionGeometry::Clear ( )
overridevirtual

Empty the geometry object.

Reimplemented from rtk::ProjectionGeometry< 3 >.

static Superclass::MatrixType rtk::ThreeDCircularProjectionGeometry::ComputeProjectionMagnificationMatrix ( double  sdd,
double  sid 
)
static

Compute the magnification matrix from 3D to 2D given a source to detector and to isocenter distance.

static ThreeDHomogeneousMatrixType rtk::ThreeDCircularProjectionGeometry::ComputeRotationHomogeneousMatrix ( double  angleX,
double  angleY,
double  angleZ 
)
static

Compute rotation matrix in homogeneous coordinates from 3 angles in degrees. The convention is the default in itk, i.e. ZXY of Euler angles.

static TwoDHomogeneousMatrixType rtk::ThreeDCircularProjectionGeometry::ComputeTranslationHomogeneousMatrix ( double  transX,
double  transY 
)
static

Compute translation matrix in homogeneous coordinates from translation parameters.

static ThreeDHomogeneousMatrixType rtk::ThreeDCircularProjectionGeometry::ComputeTranslationHomogeneousMatrix ( double  transX,
double  transY,
double  transZ 
)
static

Compute translation matrix in homogeneous coordinates from translation parameters.

static double rtk::ThreeDCircularProjectionGeometry::ConvertAngleBetween0And2PIRadians ( const double  a)
static

This function wraps an angle value between 0 and 2*PI radians.

Referenced by CheckGeometries().

static double rtk::ThreeDCircularProjectionGeometry::ConvertAngleBetween0And360Degrees ( const double  a)
static

This function wraps an angle value between 0 and 360 degrees.

static double rtk::ThreeDCircularProjectionGeometry::ConvertAngleBetweenMinusAndPlusPIRadians ( const double  a)
static

This function wraps an angle value between -PI and PI radians.

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

Reimplemented from itk::Object.

bool rtk::ThreeDCircularProjectionGeometry::FixAngles ( double &  outOfPlaneAngleRAD,
double &  gantryAngleRAD,
double &  inPlaneAngleRAD,
const Matrix3x3Type referenceMatrix 
) const
protected

Try to fix Euler angles, which were found incorrect, to match the specified reference matrix.

Parameters
[out]outOfPlaneAngleRADout-of-plane angle of the detector in radians; if this method returns TRUE, this angle can be safely considered
[out]gantryAngleRADgantry angle of the detector in radians; if this method returns TRUE, this angle can be safely considered
[out]inPlaneAngleRADin-plane angle of the detector in radians; if this method returns TRUE, this angle can be safely considered
referenceMatrixreference matrix which reflects detector orientation in WCS
Returns
TRUE if the angles were fixed and can be safely considered; if FALSE is returned, the method could not find angles which generate the desired matrix with respect to ZXY Euler order and the internal tolerance level
See also
VerifyAngles()
Warning
{Internally, the matrix check is performed with a tolerance level of 1e-6!}
const std::vector<double> rtk::ThreeDCircularProjectionGeometry::GetAngularGaps ( const std::vector< double > &  angles)

Get for each projection half the angular distance between the previous and the next projection in radians.

const std::vector<double> rtk::ThreeDCircularProjectionGeometry::GetAngularGapsWithNext ( const std::vector< double > &  angles) const

Get for each projection the angular gaps with next projection in radians.

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetCollimationUInf ( ) const
inline

Get the vector containing the collimation jaw parameters.

Definition at line 223 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetCollimationUSup ( ) const
inline

Get the vector containing the collimation jaw parameters.

Definition at line 226 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetCollimationVInf ( ) const
inline

Get the vector containing the collimation jaw parameters.

Definition at line 229 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetCollimationVSup ( ) const
inline

Get the vector containing the collimation jaw parameters.

Definition at line 232 of file rtkThreeDCircularProjectionGeometry.h.

References itkSetMacro.

Referenced by CheckGeometries().

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetGantryAngles ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 113 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetInPlaneAngles ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 119 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<Superclass::MatrixType>& rtk::ThreeDCircularProjectionGeometry::GetMagnificationMatrices ( ) const
inline

Definition at line 214 of file rtkThreeDCircularProjectionGeometry.h.

Superclass::MatrixType rtk::ThreeDCircularProjectionGeometry::GetMagnificationMatrices ( const unsigned int  i) const
inline

Definition at line 217 of file rtkThreeDCircularProjectionGeometry.h.

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetOutOfPlaneAngles ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 116 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const ThreeDHomogeneousMatrixType rtk::ThreeDCircularProjectionGeometry::GetProjectionCoordinatesToDetectorSystemMatrix ( const unsigned int  i) const

Compute the ith matrix to convert projection coordinates to coordinates in the detector coordinate system (u,v,u^v). Note that the matrix is square but the third element of the projection coordinates is ignored because projection coordinates are 2D. This is meant to manipulate more easily stack of projection images.

const ThreeDHomogeneousMatrixType rtk::ThreeDCircularProjectionGeometry::GetProjectionCoordinatesToFixedSystemMatrix ( const unsigned int  i) const

Compute the ith matrix to convert projection coordinates to coordinates in the fixed coordinate system. Note that the matrix is square but the third element of the projection coordinates is ignored because projection coordinates are 2D. This is meant to manipulate more easily stack of projection images.

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetProjectionOffsetsX ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 134 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetProjectionOffsetsY ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 137 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<TwoDHomogeneousMatrixType>& rtk::ThreeDCircularProjectionGeometry::GetProjectionTranslationMatrices ( ) const
inline

Get the vector containing the sub matrices used to compute the main projection matrix.

Definition at line 192 of file rtkThreeDCircularProjectionGeometry.h.

TwoDHomogeneousMatrixType rtk::ThreeDCircularProjectionGeometry::GetProjectionTranslationMatrix ( const unsigned int  i) const
inline

Get the vector containing the sub matrices used to compute the main projection matrix.

Definition at line 195 of file rtkThreeDCircularProjectionGeometry.h.

virtual double rtk::ThreeDCircularProjectionGeometry::GetRadiusCylindricalDetector ( ) const
virtual

Accessor for the radius of curved detector. The default is 0 and it means a flat detector.

Referenced by CheckGeometries().

const std::vector<ThreeDHomogeneousMatrixType>& rtk::ThreeDCircularProjectionGeometry::GetRotationMatrices ( ) const
inline

Definition at line 200 of file rtkThreeDCircularProjectionGeometry.h.

ThreeDHomogeneousMatrixType rtk::ThreeDCircularProjectionGeometry::GetRotationMatrix ( const unsigned int  i) const
inline

Definition at line 203 of file rtkThreeDCircularProjectionGeometry.h.

const std::multimap<double,unsigned int> rtk::ThreeDCircularProjectionGeometry::GetSortedAngles ( const std::vector< double > &  angles) const

Get a multimap containing all sorted angles in radians and corresponding index.

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetSourceAngles ( ) const
inline

Get a vector containing the source angles in radians. The source angle is defined as the angle between the z-axis and the isocenter-source line projected on the central plane.

Definition at line 145 of file rtkThreeDCircularProjectionGeometry.h.

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetSourceOffsetsX ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 125 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetSourceOffsetsY ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 128 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const HomogeneousVectorType rtk::ThreeDCircularProjectionGeometry::GetSourcePosition ( const unsigned int  i) const

Get the source position for the ith projection in the fixed reference system and in homogeneous coordinates.

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetSourceToDetectorDistances ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 131 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<double>& rtk::ThreeDCircularProjectionGeometry::GetSourceToIsocenterDistances ( ) const
inline

Get the vector of geometry parameters (one per projection). Angles are in radians.

Definition at line 122 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

const std::vector<ThreeDHomogeneousMatrixType>& rtk::ThreeDCircularProjectionGeometry::GetSourceTranslationMatrices ( ) const
inline

Definition at line 207 of file rtkThreeDCircularProjectionGeometry.h.

ThreeDHomogeneousMatrixType rtk::ThreeDCircularProjectionGeometry::GetSourceTranslationMatrices ( const unsigned int  i) const
inline

Definition at line 210 of file rtkThreeDCircularProjectionGeometry.h.

const std::vector<double> rtk::ThreeDCircularProjectionGeometry::GetTiltAngles ( )

Get a vector containing the tilt angles in radians. The tilt angle is defined as the difference between -GantryAngle and the SourceAngle.

const std::map<double,unsigned int> rtk::ThreeDCircularProjectionGeometry::GetUniqueSortedAngles ( const std::vector< double > &  angles) const

Get a map containing unique sorted angles in radians and corresponding index.

itk::LightObject::Pointer rtk::ThreeDCircularProjectionGeometry::InternalClone ( ) const
overrideprotectedvirtual

Clone the geometry object in a new one.

Reimplemented from itk::LightObject.

static Pointer rtk::ThreeDCircularProjectionGeometry::New ( )
static

Method for creation through the object factory.

void rtk::ThreeDCircularProjectionGeometry::SetCollimationOfLastProjection ( const double  uinf,
const double  usup,
const double  vinf,
const double  vsup 
)

Set the collimation of the latest added projection (to be called after AddProjection).

virtual void rtk::ThreeDCircularProjectionGeometry::SetRadiusCylindricalDetector ( double  _arg)
virtual
double rtk::ThreeDCircularProjectionGeometry::ToUntiltedCoordinateAtIsocenter ( const unsigned int  noProj,
const double  tiltedCoord 
) const

Changes the coordinate on the projection image to the coordinate on a virtual detector that is perpendicular to the source to isocenter line and positioned at the isocenter. It is assumed that OutOfPlaneAngle=0 and InPlaneAngle=0.

bool rtk::ThreeDCircularProjectionGeometry::VerifyAngles ( const double  outOfPlaneAngleRAD,
const double  gantryAngleRAD,
const double  inPlaneAngleRAD,
const Matrix3x3Type referenceMatrix 
) const
protected

Verify that the specified Euler angles in ZXY result in a rotation matrix which corresponds to the specified detector orientation. Rationale for this utility method is that in some situations numerical instabilities (e.g. if gantry=+90deg,in-plane=-90deg or vice versa, "invalid" angles may be computed using the standard ITK Euler transform) may occur.

Parameters
outOfPlaneAngleRADout-of-plane angle of the detector in radians
gantryAngleRADgantry angle of the detector in radians
inPlaneAngleRADin-plane angle of the detector in radians
referenceMatrixreference matrix which reflects detector orientation in WCS
Returns
TRUE if the angles correspond the implicitly specified final rotation matrix; if FALSE is returned, the angles should be fixed (
See also
FixAngles())
Warning
{Internally, the matrix check is performed with a tolerance level of 1e-6!}

Member Data Documentation

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_CollimationUInf
protected

Parameters of the collimation jaws. The collimation position is with respect to the distance of the m_RotationCenter along

  • the m_RotationAxis for the m_CollimationVInf and m_CollimationVSup,
  • the m_SourceCenter ^ m_RotationAxis for the m_CollimationUInf and m_CollimationUSup. The default is +infinity (itk::NumericTraits<double>::max) is completely opened, negative values are allowed if the collimation travels beyond the m_RotationCenter.

Definition at line 374 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_CollimationUSup
protected

Definition at line 375 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_CollimationVInf
protected

Definition at line 376 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_CollimationVSup
protected

Definition at line 377 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_GantryAngles
protected

Circular geometry parameters per projection (angles in degrees between 0 and 360).

Definition at line 353 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_InPlaneAngles
protected

Definition at line 355 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<Superclass::MatrixType> rtk::ThreeDCircularProjectionGeometry::m_MagnificationMatrices
protected

Definition at line 381 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_OutOfPlaneAngles
protected

Definition at line 354 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_ProjectionOffsetsX
protected

Definition at line 361 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_ProjectionOffsetsY
protected

Definition at line 362 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<TwoDHomogeneousMatrixType> rtk::ThreeDCircularProjectionGeometry::m_ProjectionTranslationMatrices
protected

Matrices to change coordiate systems.

Definition at line 380 of file rtkThreeDCircularProjectionGeometry.h.

double rtk::ThreeDCircularProjectionGeometry::m_RadiusCylindricalDetector {0.}
protected

Radius of curved detector. The default is 0 and it means a flat detector.

Definition at line 365 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<ThreeDHomogeneousMatrixType> rtk::ThreeDCircularProjectionGeometry::m_RotationMatrices
protected

Definition at line 382 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_SourceAngles
protected

Definition at line 356 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_SourceOffsetsX
protected

Definition at line 358 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_SourceOffsetsY
protected

Definition at line 359 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_SourceToDetectorDistances
protected

Definition at line 360 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<double> rtk::ThreeDCircularProjectionGeometry::m_SourceToIsocenterDistances
protected

Definition at line 357 of file rtkThreeDCircularProjectionGeometry.h.

std::vector<ThreeDHomogeneousMatrixType> rtk::ThreeDCircularProjectionGeometry::m_SourceTranslationMatrices
protected

Definition at line 383 of file rtkThreeDCircularProjectionGeometry.h.


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