OTB  9.0.0
Orfeo Toolbox
otbMeanRatio.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2022 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 otbMeanRatio_h
22 #define otbMeanRatio_h
23 
25 
26 namespace otb
27 {
28 
41 namespace Functor
42 {
43 
44 template <class TInput1, class TInput2, class TOutput>
45 class MeanRatio
46 {
47 public:
49  {
50  }
51  virtual ~MeanRatio()
52  {
53  }
54  inline TOutput operator()(const TInput1& itA, const TInput2& itB)
55  {
56 
57  TOutput meanA = 0.0;
58  TOutput meanB = 0.0;
59 
60  for (unsigned long pos = 0; pos < itA.Size(); ++pos)
61  {
62 
63  meanA += static_cast<TOutput>(itA.GetPixel(pos));
64  meanB += static_cast<TOutput>(itB.GetPixel(pos));
65  }
66 
67  meanA /= itA.Size();
68  meanB /= itB.Size();
69 
70  // std::cout<<"meanA= "<<meanA<<", meanB= "<<meanB<<std::endl;
71 
72  TOutput ratio;
73 
74  if (meanA == meanB)
75  ratio = 0.;
76  else if (meanA > meanB)
77  ratio = static_cast<TOutput>(1.0 - meanB / meanA);
78  else
79  ratio = static_cast<TOutput>(1.0 - meanA / meanB);
80 
81  return ratio;
82  }
83 };
84 }
85 } // end namespace otb
86 
87 #endif
otb::Functor::MeanRatio::MeanRatio
MeanRatio()
Definition: otbMeanRatio.h:48
otb::Functor::MeanRatio
Definition: otbMeanRatio.h:45
otb
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
Definition: otbJoinContainer.h:32
otbBinaryFunctorNeighborhoodImageFilter.h
otb::Functor::MeanRatio::~MeanRatio
virtual ~MeanRatio()
Definition: otbMeanRatio.h:51
otb::Functor::MeanRatio::operator()
TOutput operator()(const TInput1 &itA, const TInput2 &itB)
Definition: otbMeanRatio.h:54