18#ifndef itkRecursiveSeparableImageFilter_h
19#define itkRecursiveSeparableImageFilter_h
51template <
typename TInputImage,
typename TOutputImage = TInputImage>
88 itkGetConstMacro(Direction,
unsigned int);
91 itkSetMacro(Direction,
unsigned int);
177 template <
typename T1,
typename T2>
189 out = a1 * b1 + a2 * b2 + a3 * b3 + a4 * b4;
193 template <
typename T1,
typename T2>
205 const unsigned int sz = a1.GetSize();
206 if (sz != out.GetSize())
210 for (
unsigned int i = 0; i < sz; ++i)
212 out[i] = a1[i] * b1 + a2[i] * b2 + a3[i] * b3 + a4[i] * b4;
216 template <
typename T1,
typename T2>
228 out -= a1 * b1 + a2 * b2 + a3 * b3 + a4 * b4;
231 template <
typename T1,
typename T2>
243 const unsigned int sz = a1.GetSize();
244 if (sz != out.GetSize())
248 for (
unsigned int i = 0; i < sz; ++i)
250 out[i] -= a1[i] * b1 + a2[i] * b2 + a3[i] * b3 + a4[i] * b4;
257 unsigned int m_Direction{ 0 };
261#ifndef ITK_MANUAL_INSTANTIATION
262# include "itkRecursiveSeparableImageFilter.hxx"
Base class for all data objects in ITK.
Base class for filters that take an image as input and overwrite that image as the output.
Control indentation during Print() invocation.
Light weight base class for most itk classes.
Define additional traits for native types such as int or float.
Base class for recursive convolution with a kernel.
typename NumericTraits< InputPixelType >::ScalarRealType ScalarRealType
typename TInputImage::ConstPointer InputImageConstPointer
void EnlargeOutputRequestedRegion(DataObject *output) override
void BeforeThreadedGenerateData() override
void DynamicThreadedGenerateData(const OutputImageRegionType &) override
TOutputImage OutputImageType
RecursiveSeparableImageFilter()
static void MathEMAMAMAM(VariableLengthVector< T1 > &out, const VariableLengthVector< T1 > &a1, const T2 &b1, const VariableLengthVector< T1 > &a2, const T2 &b2, const VariableLengthVector< T1 > &a3, const T2 &b3, const VariableLengthVector< T1 > &a4, const T2 &b4)
void GenerateData() override
void SetInputImage(const TInputImage *)
static void MathEMAMAMAM(T1 &out, const T1 &a1, const T2 &b1, const T1 &a2, const T2 &b2, const T1 &a3, const T2 &b3, const T1 &a4, const T2 &b4)
virtual void SetUp(ScalarRealType spacing)=0
typename TInputImage::Pointer InputImagePointer
TInputImage InputImageType
typename NumericTraits< InputPixelType >::RealType RealType
static void MathSMAMAMAM(T1 &out, const T1 &a1, const T2 &b1, const T1 &a2, const T2 &b2, const T1 &a3, const T2 &b3, const T1 &a4, const T2 &b4)
void FilterDataArray(RealType *outs, const RealType *data, RealType *scratch, SizeValueType ln) const
typename TOutputImage::RegionType OutputImageRegionType
void PrintSelf(std::ostream &os, Indent indent) const override
~RecursiveSeparableImageFilter() override=default
const TInputImage * GetInputImage()
static void MathSMAMAMAM(VariableLengthVector< T1 > &out, const VariableLengthVector< T1 > &a1, const T2 &b1, const VariableLengthVector< T1 > &a2, const T2 &b2, const VariableLengthVector< T1 > &a3, const T2 &b3, const VariableLengthVector< T1 > &a4, const T2 &b4)
typename TInputImage::PixelType InputPixelType
SmartPointer< const Self > ConstPointer
SmartPointer< Self > Pointer
ImageBaseType::RegionType RegionType
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned long SizeValueType