18 #ifndef itkRecursiveSeparableImageFilter_h
19 #define itkRecursiveSeparableImageFilter_h
51 template<
typename TInputImage,
typename TOutputImage = TInputImage >
87 itkGetConstMacro(Direction,
unsigned int);
90 itkSetMacro(Direction,
unsigned int);
170 template <typename T1, typename T2>
172 const T1 &a1, const T2 &b1,
173 const T1 &a2, const T2 &b2,
174 const T1 &a3, const T2 &b3,
175 const T1 &a4, const T2 &b4 )
177 out = a1*b1 + a2*b2 + a3*b3 + a4*b4;
181 template <
typename T1,
typename T2>
188 const unsigned int sz = a1.
GetSize();
193 for (
unsigned int i = 0; i < sz; ++i)
195 out[i] = a1[i]*b1 + a2[i]*b2 + a3[i]*b3 + a4[i]*b4;
199 template <
typename T1,
typename T2>
201 const T1 &a1,
const T2 &b1,
202 const T1 &a2,
const T2 &b2,
203 const T1 &a3,
const T2 &b3,
204 const T1 &a4,
const T2 &b4 )
206 out -= a1*b1 + a2*b2 + a3*b3 + a4*b4;
209 template <
typename T1,
typename T2>
216 const unsigned int sz = a1.
GetSize();
221 for (
unsigned int i = 0; i < sz; ++i)
223 out[i] -= a1[i]*b1 + a2[i]*b2 + a3[i]*b3 + a4[i]*b4;
239 #ifndef ITK_MANUAL_INSTANTIATION
240 #include "itkRecursiveSeparableImageFilter.hxx"
TOutputImage OutputImageType
Base class for recursive convolution with a kernel.
void ThreadedGenerateData(const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) override
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)
NumericTraits< InputPixelType >::RealType RealType
SmartPointer< const Self > ConstPointer
RecursiveSeparableImageFilter Self
TInputImage::ConstPointer InputImageConstPointer
virtual ~RecursiveSeparableImageFilter()
void EnlargeOutputRequestedRegion(DataObject *output) override
void FilterDataArray(RealType *outs, const RealType *data, RealType *scratch, SizeValueType ln)
NumericTraits< InputPixelType >::ScalarRealType ScalarRealType
void BeforeThreadedGenerateData() override
SmartPointer< Self > Pointer
void SetInputImage(const TInputImage *)
unsigned long SizeValueType
unsigned int GetSize(void) 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)
Represents an array whose length can be defined at run-time.
virtual void SetUp(ScalarRealType spacing)=0
TInputImage InputImageType
Divide an image region into several pieces.
InPlaceImageFilter< TInputImage, TOutputImage > Superclass
TInputImage::PixelType InputPixelType
unsigned int ThreadIdType
ImageRegionSplitterDirection::Pointer m_ImageRegionSplitter
void PrintSelf(std::ostream &os, Indent indent) const override
const TInputImage * GetInputImage()
void operator=(const Self &)
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)
TInputImage::Pointer InputImagePointer
void SetSize(unsigned int sz, bool destroyExistingData=true)
Control indentation during Print() invocation.
RecursiveSeparableImageFilter()
Define additional traits for native types such as int or float.
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)
Base class for filters that take an image as input and overwrite that image as the output...
virtual const ImageRegionSplitterBase * GetImageRegionSplitter(void) const override
Get the image splitter to split the image for multi-threading.
Base class for all data objects in ITK.
TOutputImage::RegionType OutputImageRegionType