19 #ifndef rtkReconstructionConjugateGradientOperator_h 20 #define rtkReconstructionConjugateGradientOperator_h 117 template <
typename TOutputImage,
typename TSingleComponentImage = TOutputImage,
typename TWeightsImage = TOutputImage>
129 itk::CudaImage<itk::CovariantVector<typename TOutputImage::PixelType, TOutputImage::ImageDimension>,
130 TOutputImage::ImageDimension>;
134 TOutputImage::ImageDimension>;
142 SetInputVolume(
const TOutputImage * vol);
144 SetInputProjectionStack(
const TOutputImage * projs);
146 SetInputWeights(
const TWeightsImage * weights);
150 #ifdef itkOverrideGetNameOfClassMacro 172 typedef typename std::conditional<std::is_same<TSingleComponentImage, TOutputImage>::value,
188 SetSupportMask(
const TSingleComponentImage * SupportMask);
189 typename TSingleComponentImage::ConstPointer
197 SetLocalRegularizationWeights(
const TSingleComponentImage * localRegularizationWeights);
198 typename TSingleComponentImage::ConstPointer
199 GetLocalRegularizationWeights();
208 itkGetMacro(Gamma,
float);
210 itkGetMacro(Tikhonov,
float);
219 VerifyPreconditions()
const override;
223 GenerateData()
override;
225 template <
typename ImageType>
226 typename std::enable_if<std::is_same<TSingleComponentImage, ImageType>::value, ImageType>::type::Pointer
227 ConnectGradientRegularization();
229 template <
typename ImageType>
230 typename std::enable_if<!std::is_same<TSingleComponentImage, ImageType>::value, ImageType>::type::Pointer
231 ConnectGradientRegularization();
252 float m_Tikhonov{ 0 };
265 GenerateInputRequestedRegion()
override;
267 GenerateOutputInformation()
override;
271 typename TOutputImage::ConstPointer
273 typename TOutputImage::ConstPointer
274 GetInputProjectionStack();
275 typename TWeightsImage::ConstPointer
282 #ifndef ITK_MANUAL_INSTANTIATION 283 # include "rtkReconstructionConjugateGradientOperator.hxx" MultiplyFilterType::Pointer m_MultiplyLaplacianFilter
ConstantSourceType::Pointer m_ConstantVolumeSource
MultiplyFilterType::Pointer m_MultiplyOutputVolumeFilter
typename OutputImageType::Pointer OutputImagePointer
Implements the operator A used in conjugate gradient reconstruction.
MultiplyFilterType::Pointer m_MultiplyTikhonovWeightsFilter
Generate an n-dimensional image with constant pixel values.
std::conditional< std::is_same< TSingleComponentImage, TOutputImage >::value, PlainMultiplyFilterType, MatrixVectorMultiplyFilterType >::type MultiplyWithWeightsFilterType
MultiplyFilterType::Pointer m_MultiplyTikhonovFilter
Multiplies matrix by vector.
itk::AddImageFilter< TOutputImage > AddFilterType
AddFilterType::Pointer m_AddLaplacianFilter
ForwardProjectionFilterPointer m_ForwardProjectionFilter
typename BackProjectionFilterType::Pointer BackProjectionFilterPointer
TOutputImage::Pointer m_FloatingOutputPointer
Projection geometry for a source and a 2-D flat panel.
MultiplyWithWeightsFilterType::Pointer m_MultiplyWithWeightsFilter
#define itkSetMacro(name, type)
ConstantSourceType::Pointer m_ConstantProjectionsSource
void VerifyInputInformation() const override
typename ForwardProjectionFilterType::Pointer ForwardProjectionFilterPointer
MultiplyFilterType::Pointer m_MultiplyInputVolumeFilter
itk::ImageToImageFilter< TOutputImage, TOutputImage >::Pointer m_LaplacianFilter
AddFilterType::Pointer m_AddTikhonovFilter
BackProjectionFilterPointer m_BackProjectionFilter