22 #ifndef otbStreamingInnerProductVectorImageFilter_h
23 #define otbStreamingInnerProductVectorImageFilter_h
27 #include "itkSimpleDataObjectDecorator.h"
28 #include "itkImageRegionSplitter.h"
29 #include "itkVariableSizeMatrix.h"
30 #include "itkVariableLengthVector.h"
31 #include "vnl/vnl_matrix.h"
54 template <
class TInputImage>
76 itkStaticConstMacro(InputImageDimension,
unsigned int, TInputImage::ImageDimension);
79 itkStaticConstMacro(ImageDimension,
unsigned int, TInputImage::ImageDimension);
96 return this->GetInnerProductOutput()->Get();
98 MatrixObjectType* GetInnerProductOutput();
99 const MatrixObjectType* GetInnerProductOutput()
const;
104 DataObjectPointer MakeOutput(DataObjectPointerArraySizeType idx)
override;
105 using Superclass::MakeOutput;
110 void AllocateOutputs()
override;
111 void GenerateOutputInformation()
override;
112 void Synthetize(
void)
override;
113 void Reset(
void)
override;
117 itkSetMacro(CenterData,
bool);
118 itkGetMacro(CenterData,
bool);
119 itkBooleanMacro(CenterData);
127 void PrintSelf(std::ostream& os, itk::Indent indent)
const override;
129 void ThreadedGenerateData(
const RegionType& outputRegionForThread, itk::ThreadIdType threadId)
override;
164 template <
class TInputImage>
187 using Superclass::SetInput;
190 this->GetFilter()->SetInput(input);
194 return this->GetFilter()->GetInput();
200 return this->GetFilter()->GetInnerProductOutput()->Get();
204 return this->GetFilter()->GetInnerProductOutput();
208 return this->GetFilter()->GetInnerProductOutput();
215 this->GetFilter()->SetCenterData(centerdata);
234 #ifndef OTB_MANUAL_INSTANTIATION
This filter link a persistent filter with a StreamingImageVirtualWriter.
This filter is the base class for all filter persisting data through multiple update....
Compute the inner product of a large image using streaming.
std::vector< MatrixType > ArrayMatrixType
itk::SimpleDataObjectDecorator< MatrixType > MatrixObjectType
PersistentInnerProductVectorImageFilter(const Self &)=delete
PersistentInnerProductVectorImageFilter Self
itk::ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
itk::DataObject::Pointer DataObjectPointer
MatrixType GetInnerProduct() const
itk::SmartPointer< const Self > ConstPointer
vnl_matrix< double > MatrixType
TInputImage::RegionType RegionType
~PersistentInnerProductVectorImageFilter() override
void operator=(const Self &)=delete
itk::SmartPointer< Self > Pointer
PersistentImageFilter< TInputImage, TInputImage > Superclass
TInputImage::PixelType PixelType
TInputImage::Pointer InputImagePointer
ArrayMatrixType m_ThreadInnerProduct
This class streams the whole input image through the PersistentStatisticsImageFilter.
StatFilterType::MatrixObjectType MatrixObjectType
Superclass::FilterType StatFilterType
MatrixObjectType * GetInnerProductOutput()
PersistentFilterStreamingDecorator< PersistentInnerProductVectorImageFilter< TInputImage > > Superclass
StatFilterType::MatrixType MatrixType
StreamingInnerProductVectorImageFilter Self
MatrixType GetInnerProduct() const
StreamingInnerProductVectorImageFilter(const Self &)=delete
const MatrixObjectType * GetInnerProductOutput() const
void operator=(const Self &)=delete
TInputImage InputImageType
void SetInput(TInputImage *input)
void SetCenterData(bool centerdata)
StreamingInnerProductVectorImageFilter()
~StreamingInnerProductVectorImageFilter() override
itk::SmartPointer< Self > Pointer
itk::SmartPointer< const Self > ConstPointer
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.