18 #ifndef __otbConvolutionImageFilter_h
19 #define __otbConvolutionImageFilter_h
23 #include "itkNumericTraits.h"
61 template <
class TInputImage,
class TOutputImage,
class TBoundaryCondition =
63 class TFilterPrecision =
typename itk::NumericTraits<typename TInputImage::InternalPixelType>::RealType>
69 itkStaticConstMacro(InputImageDimension,
unsigned int,
70 TInputImage::ImageDimension);
71 itkStaticConstMacro(OutputImageDimension,
unsigned int,
72 TOutputImage::ImageDimension);
93 typedef typename itk::NumericTraits<InputPixelType>::RealType
InputRealType;
104 itkDebugMacro(
"setting radius to " << rad);
105 if (this->m_Radius != rad)
107 this->m_Radius = rad;
108 unsigned int arraySize = 1;
109 for (
unsigned int i = 0; i < m_Radius.GetSizeDimension(); ++i)
111 arraySize *= 2 * this->m_Radius[i] + 1;
113 this->m_Filter.SetSize(arraySize);
114 this->m_Filter.Fill(1);
120 itkGetConstReferenceMacro(Radius, InputSizeType);
125 if (filter.
Size() != m_Filter.Size())
128 "Error in SetFilter, invalid filter size:" << filter.
Size() <<
129 " instead of (2*m_Radius[0]+1)*(2*m_Radius[1]+1): " << m_Filter.Size());
137 itkGetConstReferenceMacro(
Filter, ArrayType);
142 itkSetMacro(NormalizeFilter,
bool);
143 itkGetMacro(NormalizeFilter,
bool);
144 itkBooleanMacro(NormalizeFilter);
146 #ifdef ITK_USE_CONCEPT_CHECKING
156 void PrintSelf(std::ostream& os,
itk::Indent indent)
const;
168 void ThreadedGenerateData(
const OutputImageRegionType& outputRegionForThread,
177 virtual void GenerateInputRequestedRegion()
178 throw(itk::InvalidRequestedRegionError);
182 void operator =(const Self&);
189 bool m_NormalizeFilter;
194 #ifndef OTB_MANUAL_INSTANTIATION