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

#include <rtkThreeDCircularProjectionGeometry.h>

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

Public Types

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

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

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

Private Member Functions

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

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 56 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 64 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 59 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 63 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 55 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 62 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 53 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 54 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 61 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 60 of file rtkThreeDCircularProjectionGeometry.h.

Definition at line 58 of file rtkThreeDCircularProjectionGeometry.h.

Constructor & Destructor Documentation

rtk::ThreeDCircularProjectionGeometry::ThreeDCircularProjectionGeometry ( )
protected
virtual rtk::ThreeDCircularProjectionGeometry::~ThreeDCircularProjectionGeometry ( )
inlineoverrideprotectedvirtual

Definition at line 283 of file rtkThreeDCircularProjectionGeometry.h.

rtk::ThreeDCircularProjectionGeometry::ThreeDCircularProjectionGeometry ( const Self )
private

Member Function Documentation

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

Definition at line 297 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 285 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 289 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 293 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
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 221 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 224 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 227 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 230 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 111 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 117 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

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

Definition at line 212 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 215 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 114 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 132 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 135 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 190 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 193 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 198 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 201 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 143 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 123 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 126 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 129 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 120 of file rtkThreeDCircularProjectionGeometry.h.

Referenced by CheckGeometries().

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

Definition at line 205 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 208 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
overrideprotected

Clone the geometry object in a new one.

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

Method for creation through the object factory.

void rtk::ThreeDCircularProjectionGeometry::operator= ( const Self )
private
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 372 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 373 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 374 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 375 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 351 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 353 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 379 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 352 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 359 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 360 of file rtkThreeDCircularProjectionGeometry.h.

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

Matrices to change coordiate systems.

Definition at line 378 of file rtkThreeDCircularProjectionGeometry.h.

double rtk::ThreeDCircularProjectionGeometry::m_RadiusCylindricalDetector
protected

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

Definition at line 363 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 380 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 354 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 356 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 357 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 358 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 355 of file rtkThreeDCircularProjectionGeometry.h.

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

Definition at line 381 of file rtkThreeDCircularProjectionGeometry.h.


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