18 #ifndef itkRecursiveSeparableImageFilter_h
19 #define itkRecursiveSeparableImageFilter_h
50 template<
typename TInputImage,
typename TOutputImage = TInputImage >
88 itkGetConstMacro(Direction,
unsigned int);
91 itkSetMacro(Direction,
unsigned int);
94 void SetInputImage(
const TInputImage *);
97 const TInputImage * GetInputImage();
102 void PrintSelf(std::ostream & os,
Indent indent)
const override;
104 void BeforeThreadedGenerateData()
override;
106 void GenerateData()
override;
118 void EnlargeOutputRequestedRegion(
DataObject *output)
override;
169 template <
typename T1,
typename T2>
171 const T1 &a1,
const T2 &b1,
172 const T1 &a2,
const T2 &b2,
173 const T1 &a3,
const T2 &b3,
174 const T1 &a4,
const T2 &b4 )
176 out = a1*b1 + a2*b2 + a3*b3 + a4*b4;
180 template <
typename T1,
typename T2>
187 const unsigned int sz = a1.
GetSize();
192 for (
unsigned int i = 0; i < sz; ++i)
194 out[i] = a1[i]*b1 + a2[i]*b2 + a3[i]*b3 + a4[i]*b4;
198 template <
typename T1,
typename T2>
200 const T1 &a1,
const T2 &b1,
201 const T1 &a2,
const T2 &b2,
202 const T1 &a3,
const T2 &b3,
203 const T1 &a4,
const T2 &b4 )
205 out -= a1*b1 + a2*b2 + a3*b3 + a4*b4;
208 template <
typename T1,
typename T2>
215 const unsigned int sz = a1.
GetSize();
220 for (
unsigned int i = 0; i < sz; ++i)
222 out[i] -= a1[i]*b1 + a2[i]*b2 + a3[i]*b3 + a4[i]*b4;
229 unsigned int m_Direction{ 0 };
233 #ifndef ITK_MANUAL_INSTANTIATION
234 #include "itkRecursiveSeparableImageFilter.hxx"
Base class for recursive convolution with a kernel.
Define numeric traits for std::vector.
unsigned long SizeValueType
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)
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
Base class for all process objects that output image data.
TInputImage InputImageType
unsigned int GetSize() const
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)
typename InputImageType::Pointer InputImagePointer
Represents an array whose length can be defined at run-time.
typename OutputImageType::RegionType OutputImageRegionType
typename NumericTraits< InputPixelType >::RealType RealType
TOutputImage OutputImageType
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)
Control indentation during Print() invocation.
typename NumericTraits< InputPixelType >::ScalarRealType ScalarRealType
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)
void SetSize(unsigned int sz, TReallocatePolicy reallocatePolicy, TKeepValuesPolicy keepValues)
Base class for filters that take an image as input and overwrite that image as the output...
ImageBaseType::RegionType RegionType
typename InputImageType::ConstPointer InputImageConstPointer
Base class for all data objects in ITK.
typename TInputImage::PixelType InputPixelType