18 #ifndef rtkFourDROOSTERConeBeamReconstructionFilter_h 19 #define rtkFourDROOSTERConeBeamReconstructionFilter_h 206 template <
typename VolumeSeriesType,
typename ProjectionStackType>
228 typename std::conditional<std::is_same<VolumeSeriesType, CPUVolumeSeriesType>::value,
230 itk::CudaImage<CovariantVectorForSpatialGradient, VolumeSeriesType::ImageDimension>>::type
232 typedef typename std::conditional<std::is_same<VolumeSeriesType, CPUVolumeSeriesType>::value,
236 typedef typename std::conditional<std::is_same<VolumeSeriesType, CPUVolumeSeriesType>::value,
238 itk::CudaImage<DVFVectorType, VolumeSeriesType::ImageDimension>>::type
241 typename std::conditional<std::is_same<VolumeSeriesType, CPUVolumeSeriesType>::value,
244 typedef typename std::conditional<std::is_same<VolumeSeriesType, CPUVolumeSeriesType>::value,
247 typedef typename std::conditional<std::is_same<VolumeSeriesType, CPUVolumeSeriesType>::value,
268 SetInputVolumeSeries(
const VolumeSeriesType * VolumeSeries);
269 typename VolumeSeriesType::ConstPointer
270 GetInputVolumeSeries();
275 SetInputProjectionStack(
const ProjectionStackType * Projection);
276 typename ProjectionStackType::Pointer
277 GetInputProjectionStack();
283 typename VolumeType::Pointer
293 GetDisplacementField();
295 GetInverseDisplacementField();
309 using AddFilterType = itk::AddImageFilter<VolumeSeriesType, VolumeSeriesType>;
323 itkGetMacro(DisableDisplacedDetectorFilter,
bool);
328 itkGetMacro(PerformPositivity,
bool);
330 itkGetMacro(PerformMotionMask,
bool);
332 itkGetMacro(PerformTVSpatialDenoising,
bool);
333 itkSetMacro(PerformWaveletsSpatialDenoising,
bool);
334 itkGetMacro(PerformWaveletsSpatialDenoising,
bool);
336 itkGetMacro(PerformWarping,
bool);
338 itkGetMacro(PerformTVTemporalDenoising,
bool);
340 itkGetMacro(PerformL0TemporalDenoising,
bool);
342 itkGetMacro(PerformTNVDenoising,
bool);
343 itkSetMacro(ComputeInverseWarpingByConjugateGradient,
bool);
344 itkGetMacro(ComputeInverseWarpingByConjugateGradient,
bool);
345 itkSetMacro(UseNearestNeighborInterpolationInWarping,
bool);
346 itkGetMacro(UseNearestNeighborInterpolationInWarping,
bool);
347 itkGetMacro(CudaConjugateGradient,
bool);
352 itkGetMacro(UseCudaCyclicDeformation,
bool);
357 itkGetMacro(GammaTVSpace,
float);
359 itkGetMacro(GammaTVTime,
float);
361 itkGetMacro(GammaTNV,
float);
363 itkGetMacro(LambdaL0Time,
float);
365 itkGetMacro(SoftThresholdWavelets,
float);
367 itkGetMacro(PhaseShift,
float);
370 itkGetMacro(NumberOfLevels,
unsigned int);
375 itkGetMacro(Order,
unsigned int);
381 itkGetMacro(MainLoop_iterations,
int);
383 itkGetMacro(CG_iterations,
int);
385 itkGetMacro(TV_iterations,
int);
387 itkGetMacro(L0_iterations,
int);
395 SetSignal(
const std::vector<double> signal);
403 VerifyPreconditions()
const override;
407 GenerateData()
override;
410 GenerateOutputInformation()
override;
413 GenerateInputRequestedRegion()
override;
462 bool m_DimensionsProcessedForTVSpace[VolumeSeriesType::ImageDimension];
463 bool m_DimensionsProcessedForTVTime[VolumeSeriesType::ImageDimension];
486 #ifndef ITK_MANUAL_INSTANTIATION 487 # include "rtkFourDROOSTERConeBeamReconstructionFilter.hxx"
Performs total nuclear variation denoising.
void VerifyInputInformation() const override
rtk::ThreeDCircularProjectionGeometry::ConstPointer m_Geometry
ThresholdFilterType::Pointer m_PositivityFilter
int m_MainLoop_iterations
Denoises along the last dimension, reducing the L0 norm of the gradient.
TemporalL0DenoisingFilterType::Pointer m_L0DenoisingTime
bool m_UseNearestNeighborInterpolationInWarping
typename Superclass::ForwardProjectionType ForwardProjectionType
typename Superclass::BackProjectionType BackProjectionType
typename itk::Image< typename VolumeSeriesType::PixelType, VolumeSeriesType::ImageDimension > CPUVolumeSeriesType
Applies an N-D + time Motion Vector Field to an N-D + time sequence of images.
TNVDenoisingFilterType::Pointer m_TNVDenoising
ResampleFilterType::Pointer m_ResampleFilter
Finds the image sequence that, once warped, equals the input image sequence.
Applies 3D total variation denoising to a 3D + time sequence of images.
Applies a total variation denoising, only alm_SingularValueThresholdFilterong the dimensions specifie...
bool m_PerformTNVDenoising
TemporalTVDenoisingFilterType::Pointer m_TVDenoisingTime
Implements 4D RecOnstructiOn using Spatial and TEmporal Regularization (short 4D ROOSTER) ...
Projection geometry for a source and a 2-D flat panel.
itk::AddImageFilter< VolumeSeriesType, VolumeSeriesType > AddFilterType
SpatialTVDenoisingFilterType::Pointer m_TVDenoisingSpace
FourDCGFilterType::Pointer m_FourDCGFilter
#define itkSetMacro(name, type)
UnwarpSequenceFilterType::Pointer m_Unwarp
bool m_CudaConjugateGradient
bool m_PerformL0TemporalDenoising
bool m_PerformTVTemporalDenoising
WarpSequenceFilterType::Pointer m_Warp
bool m_DisableDisplacedDetectorFilter
Applies 3D Daubechies wavelets denoising to a 3D + time sequence of images.
std::vector< double > m_Signal
bool m_UseCudaCyclicDeformation
ProjectionStackType VolumeType
SpatialWaveletsDenoisingFilterType::Pointer m_WaveletsDenoisingSpace
unsigned int m_NumberOfLevels
bool m_PerformTVSpatialDenoising
SubtractFilterType::Pointer m_SubtractFilter
AddFilterType::Pointer m_AddFilter
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...
WarpSequenceFilterType::Pointer m_InverseWarp
itk::ImageToImageFilter< VolumeSeriesType, VolumeSeriesType >::Pointer m_DownstreamFilter
AverageOutOfROIFilterType::Pointer m_AverageOutOfROIFilter
Implements part of the 4D reconstruction by conjugate gradient.
bool m_ComputeInverseWarpingByConjugateGradient
float m_SoftThresholdWavelets
Averages along the last dimension if the pixel is outside ROI.
bool m_PerformWaveletsSpatialDenoising