OTB  7.3.0
Orfeo Toolbox
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members

#include <otbOverlapSaveConvolutionImageFilter.h>

+ Inheritance diagram for otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >:
+ Collaboration diagram for otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >:

Public Types

typedef itk::Array< InputRealTypeArrayType
 
typedef TBoundaryCondition BoundaryConditionType
 
typedef itk::SmartPointer< const SelfConstPointer
 
typedef InputImageType::RegionType InputImageRegionType
 
typedef TInputImage InputImageType
 
typedef InputImageType::PixelType InputPixelType
 
typedef itk::NumericTraits< InputPixelType >::RealType InputRealType
 
typedef InputImageType::SizeType InputSizeType
 
typedef OutputImageType::RegionType OutputImageRegionType
 
typedef TOutputImage OutputImageType
 
typedef OutputImageType::PixelType OutputPixelType
 
typedef itk::SmartPointer< SelfPointer
 
typedef OverlapSaveConvolutionImageFilter Self
 
typedef itk::ImageToImageFilter< InputImageType, OutputImageTypeSuperclass
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
 
void GenerateInputRequestedRegion () override
 
virtual const ArrayTypeGetFilter () const
 
virtual const char * GetNameOfClass () const
 
virtual const InputSizeTypeGetRadius () const
 
void SetFilter (ArrayType filter)
 
 typedef (itk::Concept::HasNumericTraits< InputPixelType >) InputHasNumericTraitsCheck
 
virtual void SetRadius (const InputSizeType rad)
 
virtual void SetNormalizeFilter (bool _arg)
 
virtual bool GetNormalizeFilter ()
 
virtual void NormalizeFilterOn ()
 
virtual void NormalizeFilterOff ()
 

Static Public Member Functions

static Pointer New ()
 

Static Public Attributes

static const unsigned int InputImageDimension = TInputImage::ImageDimension
 
static const unsigned int OutputImageDimension = TOutputImage::ImageDimension
 

Protected Member Functions

void GenerateData () override
 
 OverlapSaveConvolutionImageFilter ()
 
 ~OverlapSaveConvolutionImageFilter () override
 
void PrintSelf (std::ostream &os, itk::Indent indent) const override
 

Private Member Functions

void operator= (const Self &)=delete
 
 OverlapSaveConvolutionImageFilter (const Self &)=delete
 

Private Attributes

ArrayType m_Filter
 
bool m_NormalizeFilter
 
InputSizeType m_Radius
 

Detailed Description

template<class TInputImage, class TOutputImage, class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
class otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >

This filter implements the convolution operation between a kernel and an image using the overlap save algorithm (http://wikipedia.org/wiki/Overlap-save_method).

This method takes advantages of the FFTW implementation of Fast Fourrier Transform to exchange an intensive convolution product in the space domain for a simple term by term product in the Fourrier domain. This result in tremendous speed gain when using large kernel with exactly the same result as the classical convolution filter.

Note
This filter could be threaded but requires additional design due to limited thread-safety of the FFTW library.
For the moment only constant zero boundary conditions are used in this filter. This could produce very different results from the classical convolution filter with zero flux neumann boundary condition, especially with large kernels.
ITK must be set to use FFTW (double implementation) for this filter to work properly. If not, exception will be raised at filter creation. Install fftw and set the cmake variable ITK_USE_FFTWD to ON.
See also
ConvolutionImageFilter

Definition at line 62 of file otbOverlapSaveConvolutionImageFilter.h.

Member Typedef Documentation

◆ ArrayType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef itk::Array<InputRealType> otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::ArrayType

Definition at line 93 of file otbOverlapSaveConvolutionImageFilter.h.

◆ BoundaryConditionType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef TBoundaryCondition otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::BoundaryConditionType

Definition at line 94 of file otbOverlapSaveConvolutionImageFilter.h.

◆ ConstPointer

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef itk::SmartPointer<const Self> otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::ConstPointer

Definition at line 78 of file otbOverlapSaveConvolutionImageFilter.h.

◆ InputImageRegionType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef InputImageType::RegionType otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::InputImageRegionType

Definition at line 90 of file otbOverlapSaveConvolutionImageFilter.h.

◆ InputImageType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef TInputImage otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::InputImageType

Convenient typedefs for simplifying declarations.

Definition at line 71 of file otbOverlapSaveConvolutionImageFilter.h.

◆ InputPixelType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef InputImageType::PixelType otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::InputPixelType

Image typedef support.

Definition at line 84 of file otbOverlapSaveConvolutionImageFilter.h.

◆ InputRealType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef itk::NumericTraits<InputPixelType>::RealType otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::InputRealType

Definition at line 89 of file otbOverlapSaveConvolutionImageFilter.h.

◆ InputSizeType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef InputImageType::SizeType otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::InputSizeType

Definition at line 92 of file otbOverlapSaveConvolutionImageFilter.h.

◆ OutputImageRegionType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef OutputImageType::RegionType otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::OutputImageRegionType

Definition at line 91 of file otbOverlapSaveConvolutionImageFilter.h.

◆ OutputImageType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef TOutputImage otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::OutputImageType

Definition at line 72 of file otbOverlapSaveConvolutionImageFilter.h.

◆ OutputPixelType

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef OutputImageType::PixelType otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::OutputPixelType

Definition at line 88 of file otbOverlapSaveConvolutionImageFilter.h.

◆ Pointer

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef itk::SmartPointer<Self> otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::Pointer

Definition at line 77 of file otbOverlapSaveConvolutionImageFilter.h.

◆ Self

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef OverlapSaveConvolutionImageFilter otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::Self

Standard class typedefs.

Definition at line 75 of file otbOverlapSaveConvolutionImageFilter.h.

◆ Superclass

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
typedef itk::ImageToImageFilter<InputImageType, OutputImageType> otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::Superclass

Definition at line 76 of file otbOverlapSaveConvolutionImageFilter.h.

Constructor & Destructor Documentation

◆ OverlapSaveConvolutionImageFilter() [1/2]

template<class TInputImage , class TOutputImage , class TBoundaryCondition >
otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::OverlapSaveConvolutionImageFilter ( )
protected

End concept checking Constructor

Definition at line 46 of file otbOverlapSaveConvolutionImageFilter.hxx.

◆ ~OverlapSaveConvolutionImageFilter()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::~OverlapSaveConvolutionImageFilter ( )
inlineoverrideprotected

destructor

Definition at line 158 of file otbOverlapSaveConvolutionImageFilter.h.

◆ OverlapSaveConvolutionImageFilter() [2/2]

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::OverlapSaveConvolutionImageFilter ( const Self )
privatedelete

Member Function Documentation

◆ CreateAnother()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual::itk::LightObject::Pointer otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::CreateAnother ( void  ) const

◆ GenerateData()

template<class TInputImage , class TOutputImage , class TBoundaryCondition >
void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::GenerateData ( void  )
overrideprotected

Definition at line 109 of file otbOverlapSaveConvolutionImageFilter.hxx.

◆ GenerateInputRequestedRegion()

template<class TInputImage , class TOutputImage , class TBoundaryCondition >
void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::GenerateInputRequestedRegion ( void  )
override

Since this filter implements a neighborhood operation, it requests a largest input region than the output region.

Definition at line 55 of file otbOverlapSaveConvolutionImageFilter.hxx.

◆ GetFilter()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual const ArrayType& otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::GetFilter ( ) const
virtual

Get the filter

◆ GetNameOfClass()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual const char* otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

◆ GetNormalizeFilter()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual bool otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::GetNormalizeFilter ( )
virtual

Set/Get methods for the normalization of the filter

◆ GetRadius()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual const InputSizeType& otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::GetRadius ( ) const
virtual

Get the radius of the neighborhood used to compute the mean

◆ New()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
static Pointer otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::New ( )
static

Method for creation through the object factory.

◆ NormalizeFilterOff()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::NormalizeFilterOff ( )
virtual

Set/Get methods for the normalization of the filter

◆ NormalizeFilterOn()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::NormalizeFilterOn ( )
virtual

Set/Get methods for the normalization of the filter

◆ operator=()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::operator= ( const Self )
privatedelete

◆ PrintSelf()

template<class TInputImage , class TOutput , class TBoundaryCondition >
void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutput, TBoundaryCondition >::PrintSelf ( std::ostream &  os,
itk::Indent  indent 
) const
overrideprotected

Standard "PrintSelf" method

Definition at line 290 of file otbOverlapSaveConvolutionImageFilter.hxx.

◆ SetFilter()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::SetFilter ( ArrayType  filter)
inline

Set the input filter

Definition at line 119 of file otbOverlapSaveConvolutionImageFilter.h.

References otb::Wrapper::Tags::Filter.

◆ SetNormalizeFilter()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::SetNormalizeFilter ( bool  _arg)
virtual

Set/Get methods for the normalization of the filter

◆ SetRadius()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
virtual void otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::SetRadius ( const InputSizeType  rad)
inlinevirtual

Set the radius of the neighborhood used to compute the mean.

Definition at line 97 of file otbOverlapSaveConvolutionImageFilter.h.

◆ typedef()

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::typedef ( itk::Concept::HasNumericTraits< InputPixelType )

Begin concept checking This class requires InputHasNumericTraitsCheck in the form of (itk::Concept::HasNumericTraits<InputPixelType>)

Member Data Documentation

◆ InputImageDimension

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
const unsigned int otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::InputImageDimension = TInputImage::ImageDimension
static

Extract dimension from input and output image.

Definition at line 66 of file otbOverlapSaveConvolutionImageFilter.h.

◆ m_Filter

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
ArrayType otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::m_Filter
private

Filter array

Definition at line 177 of file otbOverlapSaveConvolutionImageFilter.h.

◆ m_NormalizeFilter

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
bool otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::m_NormalizeFilter
private

Flag for filter normalization

Definition at line 180 of file otbOverlapSaveConvolutionImageFilter.h.

◆ m_Radius

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
InputSizeType otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::m_Radius
private

Radius of the filter

Definition at line 174 of file otbOverlapSaveConvolutionImageFilter.h.

◆ OutputImageDimension

template<class TInputImage , class TOutputImage , class TBoundaryCondition = itk::ZeroFluxNeumannBoundaryCondition<TInputImage>>
const unsigned int otb::OverlapSaveConvolutionImageFilter< TInputImage, TOutputImage, TBoundaryCondition >::OutputImageDimension = TOutputImage::ImageDimension
static

Extract dimension from input and output image.

Definition at line 67 of file otbOverlapSaveConvolutionImageFilter.h.


The documentation for this class was generated from the following files: