OTB  10.0.0
Orfeo Toolbox
otbSparseWvltToAngleMapperListFilter.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2024 Centre National d'Etudes Spatiales (CNES)
3  *
4  * This file is part of Orfeo Toolbox
5  *
6  * https://www.orfeo-toolbox.org/
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #ifndef otbSparseWvltToAngleMapperListFilter_h
22 #define otbSparseWvltToAngleMapperListFilter_h
23 
24 #include "otbMath.h"
25 #include "otbImageList.h"
26 
27 #include "itkProcessObject.h"
28 #include "itkDataObjectDecorator.h"
29 #include "itkImageRegionConstIterator.h"
30 
31 namespace otb
32 {
33 
34 
46 template <class TInputImageList, class TOutputSampleList, unsigned int VNbInputImages>
47 class SparseWvltToAngleMapperListFilter : public ITK_EXPORT itk::ProcessObject
48 {
49 public:
52  typedef itk::ProcessObject Superclass;
53  typedef itk::SmartPointer<Self> Pointer;
54  typedef itk::SmartPointer<const Self> ConstPointer;
55 
57  itkNewMacro(Self);
58 
60  itkTypeMacro(SparseWvltToAngleMapperListFilter, ProcessObject);
61 
63  itkStaticConstMacro(NumberOfInputImages, unsigned int, VNbInputImages);
64 
66  typedef TInputImageList InputImageListType;
67  typedef typename InputImageListType::Pointer InputImageListPointerType;
68  typedef typename InputImageListType::ConstIterator InputImageListConstIteratorType;
69  typedef typename InputImageListType::ImageType InputImageType;
70  typedef typename InputImageType::Pointer InputImagePointerType;
71  typedef typename InputImageType::RegionType InputImageRegionType;
72  typedef typename InputImageType::PixelType InputImagePixelType;
73  typedef typename InputImageType::SizeType SizeType;
74  typedef typename InputImageType::ValueType ValueType;
75 
77  typedef TOutputSampleList OutputSampleListType;
78  typedef typename OutputSampleListType::Pointer OutputSampleListPointer;
79  typedef typename OutputSampleListType::ConstPointer OutputSampleListConstPointer;
80  typedef typename OutputSampleListType::MeasurementVectorType OutputMeasurementVectorType;
81  typedef typename OutputMeasurementVectorType::ValueType OutputValueType;
82 
84  typedef itk::ImageRegionConstIterator<InputImageType> ImageConstIteratorType;
85  typedef std::vector<ImageConstIteratorType> ImageConstIteratorVectorType;
86  typedef std::vector<InputImageListConstIteratorType> InputImageListConstIteratorVectorType;
87 
88  void SetInput(unsigned int i, const InputImageListType*);
89  using Superclass::SetInput;
90 
91  const InputImageListType* GetInput(unsigned int i) const;
92 
95  typedef itk::DataObject::Pointer DataObjectPointer;
96  typedef itk::DataObjectDecorator<OutputSampleListType> OutputSampleListObjectType;
97  typedef itk::ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType;
98 
101 
104 
106  itkGetMacro(ThresholdValue, ValueType);
107  itkSetMacro(ThresholdValue, ValueType);
109 
110 protected:
113  {
114  }
115 
118  using Superclass::MakeOutput;
119 
120  void PrintSelf(std::ostream& os, itk::Indent indent) const override;
121 
123  void GenerateData() override;
124 
125  /* Internal functions */
126  virtual bool IsToGenerate(const ImageConstIteratorVectorType&) const;
129 
130 private:
131  SparseWvltToAngleMapperListFilter(const Self&); // not implemented
132  void operator=(const Self&);
133 
135 
136 }; // end of class
137 
138 } // end of namespace otb
139 
140 #ifndef OTB_MANUAL_INSTANTIATION
142 #endif
143 
144 #endif
This class select N-uple join-wvlt coeff for sparse unmixing.
std::vector< InputImageListConstIteratorType > InputImageListConstIteratorVectorType
virtual OutputMeasurementVectorType FromEuclideanToSphericalSpace(const ImageConstIteratorVectorType &) const
InputImageListType::ConstIterator InputImageListConstIteratorType
OutputSampleListType::MeasurementVectorType OutputMeasurementVectorType
OutputMeasurementVectorType::ValueType OutputValueType
OutputSampleListType::ConstPointer OutputSampleListConstPointer
void SetInput(unsigned int i, const InputImageListType *)
const InputImageListType * GetInput(unsigned int i) const
virtual bool IsToGenerate(const ImageConstIteratorVectorType &) const
itk::ImageRegionConstIterator< InputImageType > ImageConstIteratorType
itk::DataObjectDecorator< OutputSampleListType > OutputSampleListObjectType
void PrintSelf(std::ostream &os, itk::Indent indent) const override
DataObjectPointer MakeOutput(DataObjectPointerArraySizeType idx) override
itk::ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
std::vector< ImageConstIteratorType > ImageConstIteratorVectorType
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.