Medical Imaging Interaction Toolkit  2016.11.0
Medical Imaging Interaction Toolkit
mitk::DicomSeriesReader::GantryTiltInformation Class Reference

Gantry tilt analysis result. More...

#include <mitkDicomSeriesReader.h>

Public Types

typedef itk::Point< double, 3 > Point3Dd
 
typedef itk::Vector< double, 3 > Vector3Dd
 

Public Member Functions

 GantryTiltInformation ()
 Just so we can create empty instances for assigning results later. More...
 
 GantryTiltInformation (const Point3D &origin1, const Point3D &origin2, const Vector3D &right, const Vector3D &up, unsigned int numberOfSlicesApart)
 THE constructor, which does all the calculations. More...
 
bool IsSheared () const
 Whether the slices were sheared. More...
 
bool IsRegularGantryTilt () const
 Whether the shearing is a gantry tilt or more complicated. More...
 
double GetMatrixCoefficientForCorrectionInWorldCoordinates () const
 The offset distance in Y direction for each slice in mm (describes the tilt result). More...
 
double GetRealZSpacing () const
 The z / inter-slice spacing. Needed to correct ImageSeriesReader's result. More...
 
double GetTiltCorrectedAdditionalSize () const
 The shift between first and last slice in mm. More...
 
double GetTiltAngleInDegrees () const
 Calculated tilt angle in degrees. More...
 

Protected Member Functions

Point3D projectPointOnLine (Point3Dd p, Point3Dd lineOrigin, Vector3Dd lineDirection)
 Projection of point p onto line through lineOrigin in direction of lineDirection. More...
 

Protected Attributes

double m_ShiftUp
 
double m_ShiftRight
 
double m_ShiftNormal
 
double m_ITKAssumedSliceSpacing
 
unsigned int m_NumberOfSlicesApart
 

Detailed Description

Gantry tilt analysis result.

Takes geometry information for two slices of a DICOM series and calculates whether these fit into an orthogonal block or not. If NOT, they can either be the result of an acquisition with gantry tilt OR completly broken by some shearing transformation.

Most calculations are done in the constructor, results can then be read via the remaining methods.

Definition at line 659 of file mitkDicomSeriesReader.h.

Member Typedef Documentation

Definition at line 663 of file mitkDicomSeriesReader.h.

Definition at line 664 of file mitkDicomSeriesReader.h.

Constructor & Destructor Documentation

mitk::DicomSeriesReader::GantryTiltInformation::GantryTiltInformation ( )

Just so we can create empty instances for assigning results later.

Definition at line 21 of file mitkDicomSR_GantryTiltInformation.cpp.

mitk::DicomSeriesReader::GantryTiltInformation::GantryTiltInformation ( const Point3D origin1,
const Point3D origin2,
const Vector3D right,
const Vector3D up,
unsigned int  numberOfSlicesApart 
)

THE constructor, which does all the calculations.

Determining the amount of tilt is done by checking the distances of origin1 from planes through origin2. Two planes are considered:

  • normal vector along normal of slices (right x up): gives the slice distance
  • normal vector along orientation vector "up": gives the shift parallel to the plane orientation

The tilt angle can then be calculated from these distances

Parameters
origin1origin of the first slice
origin2origin of the second slice
rightright/up describe the orientatation of borth slices
upright/up describe the orientatation of borth slices
numberOfSlicesAparthow many slices are the given origins apart (1 for neighboring slices)

Definition at line 38 of file mitkDicomSR_GantryTiltInformation.cpp.

References doublepoint, doublevector, m_ITKAssumedSliceSpacing, m_ShiftNormal, m_ShiftRight, m_ShiftUp, MITK_DEBUG, and projectPointOnLine().

Member Function Documentation

double mitk::DicomSeriesReader::GantryTiltInformation::GetMatrixCoefficientForCorrectionInWorldCoordinates ( ) const

The offset distance in Y direction for each slice in mm (describes the tilt result).

Definition at line 149 of file mitkDicomSR_GantryTiltInformation.cpp.

double mitk::DicomSeriesReader::GantryTiltInformation::GetRealZSpacing ( ) const

The z / inter-slice spacing. Needed to correct ImageSeriesReader's result.

Definition at line 155 of file mitkDicomSR_GantryTiltInformation.cpp.

double mitk::DicomSeriesReader::GantryTiltInformation::GetTiltAngleInDegrees ( ) const

Calculated tilt angle in degrees.

Definition at line 144 of file mitkDicomSR_GantryTiltInformation.cpp.

double mitk::DicomSeriesReader::GantryTiltInformation::GetTiltCorrectedAdditionalSize ( ) const

The shift between first and last slice in mm.

Needed to resize an orthogonal image volume.

Definition at line 143 of file mitkDicomSR_GantryTiltInformation.cpp.

bool mitk::DicomSeriesReader::GantryTiltInformation::IsRegularGantryTilt ( ) const

Whether the shearing is a gantry tilt or more complicated.

Gantry tilt will only produce shifts in ONE orientation, not in both.

Since the correction code currently only coveres one tilt direction AND we don't know of medical images with two tilt directions, the loading code wants to check if our assumptions are true.

Definition at line 165 of file mitkDicomSR_GantryTiltInformation.cpp.

Referenced by mitk::DicomSeriesReader::LoadDicom().

bool mitk::DicomSeriesReader::GantryTiltInformation::IsSheared ( ) const

Whether the slices were sheared.

True if any of the shifts along right or up vector are non-zero.

Definition at line 160 of file mitkDicomSR_GantryTiltInformation.cpp.

Referenced by mitk::DicomSeriesReader::LoadDicom().

Point3D mitk::DicomSeriesReader::GantryTiltInformation::projectPointOnLine ( Point3Dd  p,
Point3Dd  lineOrigin,
Vector3Dd  lineDirection 
)
protected

Projection of point p onto line through lineOrigin in direction of lineDirection.

See illustration at http://mo.mathematik.uni-stuttgart.de/inhalt/aussage/aussage472/

vector(lineOrigin,p) = normal * ( innerproduct((p - lineOrigin),normal) / squared-length(normal) )

Definition at line 124 of file mitkDicomSR_GantryTiltInformation.cpp.

Referenced by GantryTiltInformation().

Member Data Documentation

double mitk::DicomSeriesReader::GantryTiltInformation::m_ITKAssumedSliceSpacing
protected

Definition at line 742 of file mitkDicomSeriesReader.h.

Referenced by GantryTiltInformation().

unsigned int mitk::DicomSeriesReader::GantryTiltInformation::m_NumberOfSlicesApart
protected

Definition at line 743 of file mitkDicomSeriesReader.h.

double mitk::DicomSeriesReader::GantryTiltInformation::m_ShiftNormal
protected

Definition at line 741 of file mitkDicomSeriesReader.h.

Referenced by GantryTiltInformation().

double mitk::DicomSeriesReader::GantryTiltInformation::m_ShiftRight
protected

Definition at line 740 of file mitkDicomSeriesReader.h.

Referenced by GantryTiltInformation().

double mitk::DicomSeriesReader::GantryTiltInformation::m_ShiftUp
protected

Definition at line 739 of file mitkDicomSeriesReader.h.

Referenced by GantryTiltInformation().


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