@@ -219,42 +219,33 @@ class ITK_TEMPLATE_EXPORT FourDROOSTERConeBeamReconstructionFilter
219219 itk::CovariantVector<typename VolumeSeriesType::ValueType, VolumeSeriesType::ImageDimension - 1 >;
220220 using CovariantVectorForTemporalGradient = itk::CovariantVector<typename VolumeSeriesType::ValueType, 1 >;
221221 using DVFVectorType = CovariantVectorForSpatialGradient;
222-
223- /* * SFINAE type alias, depending on whether a CUDA image is used. */
224222 using CPUVolumeSeriesType =
225223 typename itk::Image<typename VolumeSeriesType::PixelType, VolumeSeriesType::ImageDimension>;
226- # ifdef RTK_USE_CUDA
224+
227225 using SpatialGradientImageType =
228- typename std::conditional_t <std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
229- itk::Image<CovariantVectorForSpatialGradient, VolumeSeriesType::ImageDimension>,
230- itk::CudaImage<CovariantVectorForSpatialGradient, VolumeSeriesType::ImageDimension>>;
226+ typename VolumeSeriesType::template RebindImageType<CovariantVectorForSpatialGradient,
227+ VolumeSeriesType::ImageDimension>;
231228 using TemporalGradientImageType =
232- typename std:: conditional_t <std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType> ,
233- itk::Image<CovariantVectorForTemporalGradient, VolumeSeriesType::ImageDimension>,
234- itk::CudaImage<CovariantVectorForTemporalGradient, VolumeSeriesType::ImageDimension>>;
229+ typename VolumeSeriesType:: template RebindImageType<CovariantVectorForTemporalGradient ,
230+ VolumeSeriesType::ImageDimension>;
231+
235232 using DVFSequenceImageType =
236- typename std::conditional_t <std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
237- itk::Image<DVFVectorType, VolumeSeriesType::ImageDimension>,
238- itk::CudaImage<DVFVectorType, VolumeSeriesType::ImageDimension>>;
239- using DVFImageType = typename std::conditional_t <std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
240- itk::Image<DVFVectorType, VolumeSeriesType::ImageDimension - 1 >,
241- itk::CudaImage<DVFVectorType, VolumeSeriesType::ImageDimension - 1 >>;
242- using AverageOutOfROIFilterType =
243- typename std::conditional_t <std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
244- AverageOutOfROIImageFilter<VolumeSeriesType, VolumeType>,
245- CudaAverageOutOfROIImageFilter>;
233+ typename VolumeSeriesType::template RebindImageType<DVFVectorType, VolumeSeriesType::ImageDimension>;
234+ using DVFImageType =
235+ typename VolumeSeriesType::template RebindImageType<DVFVectorType, VolumeSeriesType::ImageDimension - 1 >;
236+
237+ #ifdef RTK_USE_CUDA
238+ using AverageOutOfROIFilterType = std::conditional_t <std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
239+ AverageOutOfROIImageFilter<VolumeSeriesType, VolumeType>,
240+ CudaAverageOutOfROIImageFilter>;
246241 using TemporalTVDenoisingFilterType =
247- typename std::conditional_t <std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
248- TotalVariationDenoisingBPDQImageFilter<VolumeSeriesType, TemporalGradientImageType>,
249- CudaLastDimensionTVDenoisingImageFilter>;
242+ std::conditional_t <std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
243+ TotalVariationDenoisingBPDQImageFilter<VolumeSeriesType, TemporalGradientImageType>,
244+ CudaLastDimensionTVDenoisingImageFilter>;
250245#else
251- using SpatialGradientImageType = itk::Image<CovariantVectorForSpatialGradient, VolumeSeriesType::ImageDimension>;
252- using TemporalGradientImageType = itk::Image<CovariantVectorForTemporalGradient, VolumeSeriesType::ImageDimension>;
253- using DVFSequenceImageType = itk::Image<DVFVectorType, VolumeSeriesType::ImageDimension>;
254- using DVFImageType = itk::Image<DVFVectorType, VolumeSeriesType::ImageDimension - 1 >;
255- using AverageOutOfROIFilterType = AverageOutOfROIImageFilter<VolumeSeriesType, VolumeType>;
246+ using AverageOutOfROIFilterType = rtk::AverageOutOfROIImageFilter<VolumeSeriesType, VolumeType>;
256247 using TemporalTVDenoisingFilterType =
257- TotalVariationDenoisingBPDQImageFilter<VolumeSeriesType, TemporalGradientImageType>;
248+ rtk:: TotalVariationDenoisingBPDQImageFilter<VolumeSeriesType, TemporalGradientImageType>;
258249#endif
259250
260251 /* * Method for creation through the object factory. */
0 commit comments