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,
264 #ifdef itkOverrideGetNameOfClassMacro 273 SetInputVolumeSeries(
const VolumeSeriesType * VolumeSeries);
274 typename VolumeSeriesType::ConstPointer
275 GetInputVolumeSeries();
280 SetInputProjectionStack(
const ProjectionStackType * Projection);
281 typename ProjectionStackType::Pointer
282 GetInputProjectionStack();
288 typename VolumeType::Pointer
298 GetDisplacementField();
300 GetInverseDisplacementField();
314 using AddFilterType = itk::AddImageFilter<VolumeSeriesType, VolumeSeriesType>;
328 itkGetMacro(DisableDisplacedDetectorFilter,
bool);
333 itkGetMacro(PerformPositivity,
bool);
335 itkGetMacro(PerformMotionMask,
bool);
337 itkGetMacro(PerformTVSpatialDenoising,
bool);
338 itkSetMacro(PerformWaveletsSpatialDenoising,
bool);
339 itkGetMacro(PerformWaveletsSpatialDenoising,
bool);
341 itkGetMacro(PerformWarping,
bool);
343 itkGetMacro(PerformTVTemporalDenoising,
bool);
345 itkGetMacro(PerformL0TemporalDenoising,
bool);
347 itkGetMacro(PerformTNVDenoising,
bool);
348 itkSetMacro(ComputeInverseWarpingByConjugateGradient,
bool);
349 itkGetMacro(ComputeInverseWarpingByConjugateGradient,
bool);
350 itkSetMacro(UseNearestNeighborInterpolationInWarping,
bool);
351 itkGetMacro(UseNearestNeighborInterpolationInWarping,
bool);
352 itkGetMacro(CudaConjugateGradient,
bool);
357 itkGetMacro(UseCudaCyclicDeformation,
bool);
362 itkGetMacro(GammaTVSpace,
float);
364 itkGetMacro(GammaTVTime,
float);
366 itkGetMacro(GammaTNV,
float);
368 itkGetMacro(LambdaL0Time,
float);
370 itkGetMacro(SoftThresholdWavelets,
float);
372 itkGetMacro(PhaseShift,
float);
375 itkGetMacro(NumberOfLevels,
unsigned int);
380 itkGetMacro(Order,
unsigned int);
386 itkGetMacro(MainLoop_iterations,
int);
388 itkGetMacro(CG_iterations,
int);
390 itkGetMacro(TV_iterations,
int);
392 itkGetMacro(L0_iterations,
int);
400 SetSignal(
const std::vector<double> signal);
408 VerifyPreconditions()
const override;
412 GenerateData()
override;
415 GenerateOutputInformation()
override;
418 GenerateInputRequestedRegion()
override;
467 bool m_DimensionsProcessedForTVSpace[VolumeSeriesType::ImageDimension];
468 bool m_DimensionsProcessedForTVTime[VolumeSeriesType::ImageDimension];
491 #ifndef ITK_MANUAL_INSTANTIATION 492 # 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