15 #ifndef itkForwardAndBackwardProjectionMatrix_h
16 #define itkForwardAndBackwardProjectionMatrix_h
21 #include <vnl/vnl_math.h>
22 #include <vnl/vnl_vector.h>
23 #include <vnl/vnl_sparse_matrix.h>
36 template <
class TScalarType =
double,
class IntensityType =
float>
88 itkSetObjectMacro( AffineTransform, EulerAffineTransformType );
90 itkGetObjectMacro( AffineTransform, EulerAffineTransformType );
92 itkSetObjectMacro( PerspectiveTransform, PerspectiveProjectionTransformType );
94 itkGetObjectMacro( PerspectiveTransform, PerspectiveProjectionTransformType );
101 m_OutputImageSpacing = outImageSpacing;
102 this->GetOutput()->SetSpacing(m_OutputImageSpacing);
106 m_OutputImageOrigin = outImageOrigin;
107 this->GetOutput()->SetOrigin(m_OutputImageOrigin);
112 typedef vnl_sparse_matrix<TScalarType> SparseMatrixType;
117 void SetVolumeSize(
const VolumeSizeType &
r) {m_VolumeSize =
r; m_FlagInitialised =
false;}
120 void GetForwardProjectionSparseMatrix(SparseMatrixType &R, InputImageConstPointer inImage, OutputImagePointer outImage,
121 VolumeSizeType &inSize, OutputImageSizeType &outSize,
const unsigned int &projNum);
124 void GetForwardProjectionSparseMatrix(SparseMatrixType &R, InputImagePointer inImage, OutputImagePointer outImage,
125 VolumeSizeType &inSize, OutputImageSizeType &outSize,
const unsigned int &projNum);
128 void GetBackwardProjectionSparseMatrix(SparseMatrixType &R, SparseMatrixType &RTrans,
129 VolumeSizeType &inSize, OutputImageSizeType &outSize,
const unsigned int &projNum);
132 void CalculteMatrixVectorMultiplication(SparseMatrixType &R, VectorType
const &inputImageVector, VectorType &outputImageVector);
138 void PrintSelf(std::ostream& os, Indent indent)
const;
173 UNDEFINED_DIRECTION=0,
178 } TraversalDirection;
189 void operator=(
const Self&);
195 #ifndef ITK_MANUAL_INSTANTIATION
196 #include "itkForwardAndBackwardProjectionMatrix.txx"
void SetVolumeSize(const VolumeSizeType &r)
Set the volume size.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:117
InputImageType::PointType InputImagePointType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:62
void SetProjectedImageSize(OutputImageSizeType &outImageSize)
Set the size in pixels of the output projected image.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:98
OutputImageType::SizeType OutputImageSizeType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:70
SmartPointer< Self > Pointer
Definition: itkProjectionGeometry.h:36
OutputImageType::PointType OutputImagePointType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:72
void SetProjectedImageOrigin(OutputImagePointType &outImageOrigin)
Set the origin of the output projected image.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:105
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
double m_Threshold
The threshold above which voxels along the ray path are integrated.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:156
vnl_vector< TScalarType > VectorType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:114
OutputImageType::IndexType OutputImageIndexType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:73
void SetProjectedImageSpacing(OutputImageSpacingType &outImageSpacing)
Set the resolution in mm of the output projected image.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:100
Image< IntensityType, 3 > InputImageType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:55
itk::EulerAffineTransform< double, 3, 3 > EulerAffineTransformType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:78
Class to apply the affine transformation matrix to a 3D image.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:37
Image< IntensityType, 2 > OutputImageType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:65
Definition: niftkITKAffineResampleImage.cxx:74
ProjectionGeometryType::Pointer ProjectionGeometryPointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:76
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
ForwardAndBackwardProjectionMatrix Self
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:41
PerspectiveProjectionTransformType::Pointer m_PerspectiveTransform
The perspective transform.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:165
itk::Size< 3 > VolumeSizeType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:50
PerspectiveProjectionTransformType::Pointer PerspectiveProjectionTransformPointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:82
Abstract class to calculate the geometry of a CT or tomo machine.
Definition: itkProjectionGeometry.h:29
OutputImageSizeType m_OutputImageSize
The size of the output projected image.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:149
x
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:174
InputImageType::IndexType InputImageIndexType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:63
ProjectionGeometryPointer m_ProjectionGeometry
The specific projection geometry to be used.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:159
InputImageType::Pointer InputImagePointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:56
OutputImageType::PixelType OutputImagePixelType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:69
InputImageType::PixelType InputImagePixelType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:59
OutputImageType::SpacingType OutputImageSpacingType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:71
Object Superclass
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:42
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
EulerAffineTransformType::Pointer EulerAffineTransformPointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:79
z
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:176
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
InputImageType::SpacingType InputImageSpacingType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:61
itk::PerspectiveProjectionTransform< double > PerspectiveProjectionTransformType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:81
y
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:175
itk::ProjectionGeometry< IntensityType > ProjectionGeometryType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:75
unsigned long int m_input3DImageTotalSize
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:142
OutputImageSpacingType m_OutputImageSpacing
The resolution of the output projected image.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:151
VolumeSizeType m_VolumeSize
A pointer to the 3D volume size.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:141
GLdouble GLdouble GLdouble r
Definition: glew.h:1390
InputImageType::RegionType InputImageRegionType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:58
OutputImageType::ConstPointer OutputImageConstPointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:67
InputImageType::ConstPointer InputImageConstPointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:57
unsigned long int m_output2DImageTotalSize
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:143
OutputImageType::Pointer OutputImagePointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:66
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
EulerAffineTransformType::Pointer m_AffineTransform
The affine transform.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:162
InputImageType::SizeType InputImageSizeType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:60
SmartPointer< const Self > ConstPointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:44
SmartPointer< Self > Pointer
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:43
bool m_FlagInitialised
Flag indicating whether the object has been initialised.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:146
OutputImageType::RegionType OutputImageRegionType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:68
OutputImagePointType m_OutputImageOrigin
The origin of the output projected image.
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:153
vnl_matrix< TScalarType > FullMatrixType
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:113
virtual ~ForwardAndBackwardProjectionMatrix(void)
Definition: Projection/itkForwardAndBackwardProjectionMatrix.h:137