18#ifndef itkVectorExpandImageFilter_h
19#define itkVectorExpandImageFilter_h
24#if !defined(ITK_LEGACY_REMOVE)
73template <
typename TInputImage,
typename TOutputImage>
74class ITK_TEMPLATE_EXPORT VectorExpandImageFilter :
public ImageToImageFilter<TInputImage, TOutputImage>
77 ITK_DISALLOW_COPY_AND_MOVE(VectorExpandImageFilter);
80 using Self = VectorExpandImageFilter;
81 using Superclass = ImageToImageFilter<TInputImage, TOutputImage>;
82 using Pointer = SmartPointer<Self>;
89 using InputImagePointer =
typename TInputImage::Pointer;
90 using OutputImagePointer =
typename TOutputImage::Pointer;
91 using OutputImageRegionType =
typename TOutputImage::RegionType;
94 itkOverrideGetNameOfClassMacro(VectorExpandImageFilter);
97 static constexpr unsigned int ImageDimension = TInputImage::ImageDimension;
100 using typename Superclass::InputImageType;
101 using typename Superclass::OutputImageType;
104 using OutputPixelType =
typename OutputImageType::PixelType;
105 using OutputValueType =
typename OutputPixelType::ValueType;
106 using InputPixelType =
typename InputImageType::PixelType;
107 using InputValueType =
typename InputPixelType::ValueType;
112 VectorDimension = InputPixelType::Dimension
116 using ExpandFactorsType = float;
117 using ExpandFactorsArrayType = FixedArray<ExpandFactorsType, ImageDimension>;
120 using CoordinateType = double;
121# ifndef ITK_FUTURE_LEGACY_REMOVE
122 using CoordRepType ITK_FUTURE_DEPRECATED(
123 "ITK 6 discourages using `CoordRepType`. Please use `CoordinateType` instead!") = CoordinateType;
125 using InterpolatorType = VectorInterpolateImageFunction<InputImageType, CoordinateType>;
126 using InterpolatorPointer =
typename InterpolatorType::Pointer;
127 using DefaultInterpolatorType = VectorLinearInterpolateImageFunction<InputImageType, CoordinateType>;
130 itkSetObjectMacro(Interpolator, InterpolatorType);
131 itkGetModifiableObjectMacro(Interpolator, InterpolatorType);
136 itkSetMacro(ExpandFactors, ExpandFactorsArrayType);
138 SetExpandFactors(
const float factor);
139 itkSetVectorMacro(ExpandFactors,
const unsigned int, ImageDimension);
143 itkGetConstReferenceMacro(ExpandFactors, ExpandFactorsArrayType);
152 GenerateOutputInformation()
override;
160 GenerateInputRequestedRegion()
override;
162 itkConceptMacro(InputHasNumericTraitsCheck, (Concept::HasNumericTraits<InputValueType>));
163 itkConceptMacro(OutputHasNumericTraitsCheck, (Concept::HasNumericTraits<OutputValueType>));
166 VectorExpandImageFilter();
167 ~VectorExpandImageFilter()
override =
default;
169 PrintSelf(std::ostream & os, Indent indent)
const override;
180 DynamicThreadedGenerateData(
const OutputImageRegionType & outputRegionForThread)
override;
185 BeforeThreadedGenerateData()
override;
188 ExpandFactorsArrayType m_ExpandFactors{};
189 InterpolatorPointer m_Interpolator{};
193# ifndef ITK_MANUAL_INSTANTIATION
194# include "itkVectorExpandImageFilter.hxx"
Base class for filters that take an image as input and produce an image as output.
SmartPointer< const Self > ConstPointer
BinaryGeneratorImageFilter< TInputImage1, TInputImage2, TOutputImage > Superclass
SmartPointer< Self > Pointer
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....