OTB  6.1.0
Orfeo Toolbox
otbSinclairImageFilter.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2017 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 otbSinclairImageFilter_h
22 #define otbSinclairImageFilter_h
23 
26 #include <complex>
27 
28 namespace otb
29 {
30 
60 template <class TInputImageHH, class TInputImageHV,
61  class TInputImageVH, class TInputImageVV, class TOutputImage,
62  class TFunction = Functor::SinclairToCovarianceMatrixFunctor<
63  typename TInputImageHH::PixelType,
64  typename TInputImageHV::PixelType,
65  typename TInputImageVH::PixelType,
66  typename TInputImageVV::PixelType,
67  typename TOutputImage::PixelType> >
68 class ITK_EXPORT SinclairImageFilter : public otb::QuaternaryFunctorImageFilter<TInputImageHH,
69  TInputImageHV, TInputImageVH,
70  TInputImageVV, TOutputImage,
71  TFunction>
72 {
73 public:
74 
77  typedef otb::QuaternaryFunctorImageFilter<TInputImageHH, TInputImageHV,
78  TInputImageVH, TInputImageVV, TOutputImage, TFunction> Superclass;
81 
83  itkNewMacro(Self);
84 
87 
89  typedef typename Superclass::Input1ImageType HHInputImageType;
90  typedef typename Superclass::Input1ImagePointer HHInputImagePointer;
91  typedef typename Superclass::Input2ImageType HVInputImageType;
92  typedef typename Superclass::Input2ImagePointer HVInputImagePointer;
93  typedef typename Superclass::Input3ImageType VHInputImageType;
94  typedef typename Superclass::Input3ImagePointer VHInputImagePointer;
95  typedef typename Superclass::Input4ImageType VVInputImageType;
96  typedef typename Superclass::Input4ImagePointer VVInputImagePointer;
97  typedef typename Superclass::OutputImageType OutputImageType;
98  typedef typename OutputImageType::Pointer OutputImagePointer;
99  typedef typename OutputImageType::RegionType OutputImageRegionType;
100  typedef typename Superclass::FunctorType FunctorType;
101 
102  void SetInputHH(const TInputImageHH * image);
103  void SetInputHV(const TInputImageHV * image);
104  void SetInputVH(const TInputImageVH * image);
105  void SetInputVV(const TInputImageVV * image);
106 
107 
108 protected:
111 
113  ~SinclairImageFilter() ITK_OVERRIDE {}
114 
115  void GenerateOutputInformation() ITK_OVERRIDE;
116 
117  void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
118 
119 private:
120 
121  SinclairImageFilter(const Self &); //purposely not implemented
122  void operator =(const Self&); //purposely not implemented
123 
124 };
125 
126 
127 } // end namespace otb
128 
129 #ifndef OTB_MANUAL_INSTANTIATION
131 #endif
132 
133 #endif
OutputImageType::Pointer OutputImagePointer
Superclass::Input1ImagePointer HHInputImagePointer
Superclass::Input2ImagePointer HVInputImagePointer
otb::QuaternaryFunctorImageFilter< TInputImageHH, TInputImageHV, TInputImageVH, TInputImageVV, TOutputImage, TFunction > Superclass
Implements pixel-wise generic operation of four images.
Superclass::Input4ImageType VVInputImageType
Computes the Covariance matrix for the sinclair one.
Superclass::Input3ImageType VHInputImageType
Superclass::Input3ImagePointer VHInputImagePointer
Superclass::OutputImageType OutputImageType
itk::SmartPointer< Self > Pointer
Superclass::Input4ImagePointer VVInputImagePointer
Superclass::FunctorType FunctorType
Superclass::Input2ImageType HVInputImageType
OutputImageType::RegionType OutputImageRegionType
Superclass::Input1ImageType HHInputImageType
itk::SmartPointer< const Self > ConstPointer