OTB  5.0.0
Orfeo Toolbox
otbSinclairImageFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ORFEO Toolbox
4  Language: C++
5  Date: $Date$
6  Version: $Revision$
7 
8 
9  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
10  See OTBCopyright.txt for details.
11 
12 
13  This software is distributed WITHOUT ANY WARRANTY; without even
14  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  PURPOSE. See the above copyright notices for more information.
16 
17 =========================================================================*/
18 #ifndef __otbSinclairImageFilter_h
19 #define __otbSinclairImageFilter_h
20 
23 #include <complex>
24 
25 namespace otb
26 {
27 
57 template <class TInputImageHH, class TInputImageHV,
58  class TInputImageVH, class TInputImageVV, class TOutputImage,
59  class TFunction = Functor::SinclairToCovarianceMatrixFunctor<
60  typename TInputImageHH::PixelType,
61  typename TInputImageHV::PixelType,
62  typename TInputImageVH::PixelType,
63  typename TInputImageVV::PixelType,
64  typename TOutputImage::PixelType> >
65 class ITK_EXPORT SinclairImageFilter : public otb::QuaternaryFunctorImageFilter<TInputImageHH,
66  TInputImageHV, TInputImageVH,
67  TInputImageVV, TOutputImage,
68  TFunction>
69 {
70 public:
71 
74  typedef otb::QuaternaryFunctorImageFilter<TInputImageHH, TInputImageHV,
75  TInputImageVH, TInputImageVV, TOutputImage, TFunction> Superclass;
78 
80  itkNewMacro(Self);
81 
84 
86  typedef typename Superclass::Input1ImageType HHInputImageType;
87  typedef typename Superclass::Input1ImagePointer HHInputImagePointer;
88  typedef typename Superclass::Input2ImageType HVInputImageType;
89  typedef typename Superclass::Input2ImagePointer HVInputImagePointer;
90  typedef typename Superclass::Input3ImageType VHInputImageType;
91  typedef typename Superclass::Input3ImagePointer VHInputImagePointer;
92  typedef typename Superclass::Input4ImageType VVInputImageType;
93  typedef typename Superclass::Input4ImagePointer VVInputImagePointer;
94  typedef typename Superclass::OutputImageType OutputImageType;
95  typedef typename OutputImageType::Pointer OutputImagePointer;
96  typedef typename OutputImageType::RegionType OutputImageRegionType;
97  typedef typename Superclass::FunctorType FunctorType;
98 
99  void SetInputHH(const TInputImageHH * image);
100  void SetInputHV(const TInputImageHV * image);
101  void SetInputVH(const TInputImageVH * image);
102  void SetInputVV(const TInputImageVV * image);
103 
104 
105 protected:
108 
110  virtual ~SinclairImageFilter() {}
111 
112  virtual void GenerateOutputInformation();
113 
114  void PrintSelf(std::ostream& os, itk::Indent indent) const;
115 
116 private:
117 
118  SinclairImageFilter(const Self &); //purposely not implemented
119  void operator =(const Self&); //purposely not implemented
120 
121 };
122 
123 
124 } // end namespace otb
125 
126 #ifndef OTB_MANUAL_INSTANTIATION
128 #endif
129 
130 #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