OTB  9.0.0
Orfeo Toolbox
otbVegetationIndicesFunctor.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 otbVegetationIndicesFunctor_h
22 #define otbVegetationIndicesFunctor_h
23 
24 #include "otbMath.h"
25 #include "otbRadiometricIndex.h"
26 
27 namespace otb
28 {
29 
30 namespace Functor
31 {
42 template <class TInput, class TOutput>
43 class NDVI : public RadiometricIndex<TInput, TOutput>
44 {
45 public:
46  NDVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
47  {
48  }
49 
50  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
51  {
52  auto red = this->Value(CommonBandNames::RED, input);
53  auto nir = this->Value(CommonBandNames::NIR, input);
54 
55  return static_cast<TOutput>(Compute(red, nir));
56  }
57 
58  // This static compute will be used in indices derived from NDVI
59  static double Compute(const double& red, const double& nir)
60  {
61  if (std::abs(nir + red) < RadiometricIndex<TInput, TOutput>::Epsilon)
62  {
63  return 0.;
64  }
65 
66  return (nir - red) / (nir + red);
67  }
68 };
69 
80 template <class TInput, class TOutput>
81 class RVI : public RadiometricIndex<TInput, TOutput>
82 {
83 public:
84  RVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
85  {
86  }
87 
88  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
89  {
90  auto red = this->Value(CommonBandNames::RED, input);
91  auto nir = this->Value(CommonBandNames::NIR, input);
92 
94  {
95  return static_cast<TOutput>(0.);
96  }
97  return (static_cast<TOutput>(nir / red));
98  }
99 };
100 
115 template <class TInput, class TOutput>
116 class PVI : public RadiometricIndex<TInput, TOutput>
117 {
118 public:
119  PVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
120  {
121  }
122 
123  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
124  {
125  auto red = this->Value(CommonBandNames::RED, input);
126  auto nir = this->Value(CommonBandNames::NIR, input);
127 
128  return (static_cast<TOutput>((nir - A * red - B) * C));
129  }
130 
132  static constexpr double A = 0.90893;
133  static constexpr double B = 7.46216;
134  static constexpr double C = 9.74;
135 };
136 
147 template <class TInput, class TOutput>
148 class SAVI : public RadiometricIndex<TInput, TOutput>
149 {
150 public:
151  SAVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
152  {
153  }
154 
155  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
156  {
157  auto red = this->Value(CommonBandNames::RED, input);
158  auto nir = this->Value(CommonBandNames::NIR, input);
159 
160  if (std::abs(nir + red + L) < RadiometricIndex<TInput, TOutput>::Epsilon)
161  {
162  return static_cast<TOutput>(0.);
163  }
164  return (static_cast<TOutput>(((nir - red) * (1 + L)) / (nir + red + L)));
165  }
166 
168  static constexpr double L = 0.5;
169 };
170 
181 template <class TInput, class TOutput>
182 class TSAVI : public RadiometricIndex<TInput, TOutput>
183 {
184 public:
185  TSAVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
186  {
187  }
188 
189  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
190  {
191  auto red = this->Value(CommonBandNames::RED, input);
192  auto nir = this->Value(CommonBandNames::NIR, input);
193 
194  double denominator = A * nir + red + X * (1. + A * A);
195 
196  if (std::abs(denominator) < RadiometricIndex<TInput, TOutput>::Epsilon)
197  {
198  return static_cast<TOutput>(0.);
199  }
200  return (static_cast<TOutput>((A * (nir - A * red - S)) / denominator));
201  }
202 
204  static constexpr double A = 0.7;
205  static constexpr double S = 0.9;
206 
208  static constexpr double X = 0.08;
209 };
210 
221 template <class TInput, class TOutput>
222 class WDVI : public RadiometricIndex<TInput, TOutput>
223 {
224 public:
226  WDVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
227  {
228  }
229 
230  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
231  {
232  auto red = this->Value(CommonBandNames::RED, input);
233  auto nir = this->Value(CommonBandNames::NIR, input);
234 
235  return static_cast<TOutput>(Compute(red, nir));
236  }
237 
238  static double Compute(const double& red, const double& nir)
239  {
240  return (nir - S * red);
241  }
242 
244  static constexpr double S = 0.4;
245 };
246 
258 template <class TInput, class TOutput>
259 class MSAVI : public RadiometricIndex<TInput, TOutput>
260 {
261 public:
262  MSAVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
263  {
264  }
265 
266  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
267  {
268  auto red = this->Value(CommonBandNames::RED, input);
269  auto nir = this->Value(CommonBandNames::NIR, input);
270 
271  double ndvi = NDVI<TInput, TOutput>::Compute(red, nir);
272  double wdvi = WDVI<TInput, TOutput>::Compute(red, nir);
273 
274  double L = 1 - 2 * S * ndvi * wdvi;
275 
276  double denominator = nir + red + L;
277 
278  if (std::abs(denominator) < RadiometricIndex<TInput, TOutput>::Epsilon)
279  {
280  return static_cast<TOutput>(0.);
281  }
282 
283  return (static_cast<TOutput>(((nir - red) * (1 + L)) / denominator));
284  }
285 
286 private:
288  static constexpr double S = 0.4;
289 };
290 
301 template <class TInput, class TOutput>
302 class MSAVI2 : public RadiometricIndex<TInput, TOutput>
303 {
304 public:
305  MSAVI2() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
306  {
307  }
308 
309  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
310  {
311  auto red = this->Value(CommonBandNames::RED, input);
312  auto nir = this->Value(CommonBandNames::NIR, input);
313 
314  double sqrt_value = (2 * nir + 1) * (2 * nir + 1) - 8 * (nir - red);
315  if (sqrt_value < 0.)
316  {
317  return static_cast<TOutput>(0.);
318  }
319  return (static_cast<TOutput>((2 * nir + 1 - std::sqrt(sqrt_value)) / 2.));
320  }
321 };
322 
333 template <class TInput, class TOutput>
334 class GEMI : public RadiometricIndex<TInput, TOutput>
335 {
336 public:
337  GEMI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
338  {
339  }
340 
341  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
342  {
343  auto red = this->Value(CommonBandNames::RED, input);
344  auto nir = this->Value(CommonBandNames::NIR, input);
345 
346  double nu;
347  double num_nu;
348  double denom_nu = nir + red + 0.5;
349 
350  if (std::abs(denom_nu) < RadiometricIndex<TInput, TOutput>::Epsilon)
351  {
352  nu = 0;
353  }
354  else
355  {
356  num_nu = 2 * (nir * nir - red * red) + 1.5 * nir + 0.5 * red;
357  nu = num_nu / denom_nu;
358  }
359 
360  double denom_GEMI = 1 - red;
361  if (std::abs(denom_GEMI) < RadiometricIndex<TInput, TOutput>::Epsilon)
362  {
363  return static_cast<TOutput>(0.);
364  }
365  return (static_cast<TOutput>((nu * (1 - 0.25 * nu) - (red - 0.125)) / denom_GEMI));
366  }
367 };
368 
381 template <class TInput, class TOutput>
382 class AVI : public RadiometricIndex<TInput, TOutput>
383 {
384 public:
385  AVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::GREEN, CommonBandNames::RED, CommonBandNames::NIR})
386  {
387  }
388 
389  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
390  {
391  auto green = this->Value(CommonBandNames::GREEN, input);
392  auto red = this->Value(CommonBandNames::RED, input);
393  auto nir = this->Value(CommonBandNames::NIR, input);
394 
395  constexpr double dfact1 = (LambdaNir - LambdaR) / LambdaR;
396  constexpr double dfact2 = (LambdaR - LambdaG) / LambdaR;
397  double dterm1;
398  double dterm2;
399  if (std::abs(nir - red) < RadiometricIndex<TInput, TOutput>::Epsilon)
400  {
401  dterm1 = 0;
402  }
403  else
404  {
405  dterm1 = std::atan(dfact1 / (nir - red));
406  }
407 
408  if (std::abs(green - red) < RadiometricIndex<TInput, TOutput>::Epsilon)
409  {
410  dterm2 = 0;
411  }
412  else
413  {
414  dterm2 = std::atan(dfact2 / (green - red));
415  }
416 
417  return static_cast<TOutput>(dterm1 + dterm2);
418  }
419 
421  static constexpr double LambdaG = 560;
422 
424  static constexpr double LambdaR = 660;
425 
427  static constexpr double LambdaNir = 830;
428 };
429 
442 template <class TInput, class TOutput>
443 class ARVI : public RadiometricIndex<TInput, TOutput>
444 {
445 public:
446  ARVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::BLUE, CommonBandNames::RED, CommonBandNames::NIR})
447  {
448  }
449 
450  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
451  {
452  auto blue = this->Value(CommonBandNames::BLUE, input);
453  auto red = this->Value(CommonBandNames::RED, input);
454  auto nir = this->Value(CommonBandNames::NIR, input);
455 
456  double RHOrb = red - Gamma * (blue - red);
457  double denominator = nir + RHOrb;
458  if (std::abs(denominator) < RadiometricIndex<TInput, TOutput>::Epsilon)
459  {
460  return static_cast<TOutput>(0.);
461  }
462  return (static_cast<TOutput>((nir - RHOrb) / denominator));
463  }
464 
466  static constexpr double Gamma = 0.5;
467 };
468 
481 template <class TInput, class TOutput>
482 class EVI : public RadiometricIndex<TInput, TOutput>
483 {
484 public:
485  EVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::BLUE, CommonBandNames::RED, CommonBandNames::NIR})
486  {
487  }
488 
489  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
490  {
491  auto blue = this->Value(CommonBandNames::BLUE, input);
492  auto red = this->Value(CommonBandNames::RED, input);
493  auto nir = this->Value(CommonBandNames::NIR, input);
494 
495  double denominator = nir + C1 * red - C2 * blue + L;
496  if (std::abs(denominator) < RadiometricIndex<TInput, TOutput>::Epsilon)
497  {
498  return (static_cast<TOutput>(0.));
499  }
500  return (static_cast<TOutput>(G * (nir - red) / denominator));
501  }
502 
504  static constexpr double G = 2.5;
505 
507  static constexpr double C1 = 6.0;
508 
510  static constexpr double C2 = 7.5;
511 
513  static constexpr double L = 1.0;
514 };
515 
526 template <class TInput, class TOutput>
527 class IPVI : public RadiometricIndex<TInput, TOutput>
528 {
529 public:
530  IPVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
531  {
532  }
533 
534  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
535  {
536  auto red = this->Value(CommonBandNames::RED, input);
537  auto nir = this->Value(CommonBandNames::NIR, input);
538 
539  if (std::abs(nir + red) < RadiometricIndex<TInput, TOutput>::Epsilon)
540  {
541  return static_cast<TOutput>(0.);
542  }
543  else
544  {
545  return (static_cast<TOutput>(nir / (nir + red)));
546  }
547  }
548 };
549 
560 template <class TInput, class TOutput>
561 class TNDVI : public RadiometricIndex<TInput, TOutput>
562 {
563 public:
564  TNDVI() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
565  {
566  }
567 
568  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
569  {
570  auto red = this->Value(CommonBandNames::RED, input);
571  auto nir = this->Value(CommonBandNames::NIR, input);
572 
573  double val = NDVI<TInput, TOutput>::Compute(red, nir) + 0.5;
574 
575  if (val < 0)
576  {
577  return (static_cast<TOutput>(0));
578  }
579  else
580  {
581  return (static_cast<TOutput>(std::sqrt(val)));
582  }
583  }
584 };
585 
602 template <class TInput, class TOutput>
603 class LAIFromNDVILogarithmic : public RadiometricIndex<TInput, TOutput>
604 {
605 public:
607  : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR}), m_NdviSoil(0.1), m_NdviInf(0.89), m_ExtinctionCoefficient(0.71)
608  {
609  }
610 
611  void SetNdviSoil(const double& val)
612  {
613  m_NdviSoil = val;
614  }
615 
616  const double& GetNdviSoil() const
617  {
618  return m_NdviSoil;
619  }
620 
621  void SetNdviInf(const double& val)
622  {
623  m_NdviInf = val;
624  }
625 
626  const double& GetNdviInf() const
627  {
628  return m_NdviInf;
629  }
630 
631  void SetExtinctionCoefficient(const double& val)
632  {
634  }
635 
636  const double& GetExtionctionCoefficient() const
637  {
639  }
640 
641  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
642  {
643  auto red = this->Value(CommonBandNames::RED, input);
644  auto nir = this->Value(CommonBandNames::NIR, input);
645 
646  double val = NDVI<TInput, TOutput>::Compute(red, nir);
647 
648  if (val < 0)
649  {
650  return (static_cast<TOutput>(0));
651  }
652  else
653  {
654  return static_cast<TOutput>(-(1.0 / m_ExtinctionCoefficient) * std::log((val - m_NdviInf) / (m_NdviSoil - m_NdviInf)));
655  }
656  }
657 
658  double m_NdviSoil;
659  double m_NdviInf;
661 };
662 
663 
681 template <class TInput, class TOutput>
682 class LAIFromReflectancesLinear : public RadiometricIndex<TInput, TOutput>
683 {
684 public:
685  LAIFromReflectancesLinear() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR}), m_RedCoef(-17.91), m_NirCoef(12.26)
686  {
687  }
688 
689  void SetRedCoef(const double& val)
690  {
691  m_RedCoef = val;
692  }
693 
694  const double& GetRedCoef() const
695  {
696  return m_RedCoef;
697  }
698 
699  void SetNirCoef(const double& val)
700  {
701  m_NirCoef = val;
702  }
703 
704  const double& GetNirCoef() const
705  {
706  return m_NirCoef;
707  }
708 
709  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
710  {
711  auto red = this->Value(CommonBandNames::RED, input);
712  auto nir = this->Value(CommonBandNames::NIR, input);
713 
714  return (static_cast<TOutput>(m_RedCoef * red + m_NirCoef * nir));
715  }
716 
717  double m_RedCoef;
718  double m_NirCoef;
719 };
720 
721 
741 template <class TInput, class TOutput>
742 class LAIFromNDVIFormosat2Functor : public RadiometricIndex<TInput, TOutput>
743 {
744 public:
745  LAIFromNDVIFormosat2Functor() : RadiometricIndex<TInput, TOutput>({CommonBandNames::RED, CommonBandNames::NIR})
746  {
747  }
748 
749  TOutput operator()(const itk::VariableLengthVector<TInput>& input) const override
750  {
751  auto red = this->Value(CommonBandNames::RED, input);
752  auto nir = this->Value(CommonBandNames::NIR, input);
753 
754  if (std::abs(nir + red) < RadiometricIndex<TInput, TOutput>::Epsilon)
755  {
756  return static_cast<TOutput>(0.);
757  }
758  return static_cast<TOutput>(A * (std::exp((nir - red) / (red + nir) * B) - std::exp(C * B)));
759  }
760 
761  static constexpr double A = 0.1519;
762  static constexpr double B = 3.9443;
763  static constexpr double C = 0.13;
764 };
765 
766 
767 } // namespace Functor
768 } // namespace otb
769 
770 #endif
otb::Functor::TSAVI
This functor computes the Transformed Soil Adjusted Vegetation Index (TSAVI)
Definition: otbVegetationIndicesFunctor.h:182
otb::Functor::EVI::EVI
EVI()
Definition: otbVegetationIndicesFunctor.h:485
otb::Functor::LAIFromNDVIFormosat2Functor::B
static constexpr double B
Definition: otbVegetationIndicesFunctor.h:762
otb::Functor::EVI::C1
static constexpr double C1
Definition: otbVegetationIndicesFunctor.h:507
otb::Functor::LAIFromReflectancesLinear::LAIFromReflectancesLinear
LAIFromReflectancesLinear()
Definition: otbVegetationIndicesFunctor.h:685
otb::Functor::MSAVI2::MSAVI2
MSAVI2()
Definition: otbVegetationIndicesFunctor.h:305
otb::Functor::PVI::B
static constexpr double B
Definition: otbVegetationIndicesFunctor.h:133
otb::Functor::LAIFromReflectancesLinear::SetNirCoef
void SetNirCoef(const double &val)
Definition: otbVegetationIndicesFunctor.h:699
otb::Functor::LAIFromReflectancesLinear::GetNirCoef
const double & GetNirCoef() const
Definition: otbVegetationIndicesFunctor.h:704
otb::Functor::ARVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:450
otb::Functor::LAIFromReflectancesLinear::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:709
otb::Functor::EVI::G
static constexpr double G
Definition: otbVegetationIndicesFunctor.h:504
otb::Functor::AVI::LambdaNir
static constexpr double LambdaNir
Definition: otbVegetationIndicesFunctor.h:427
otb::Functor::MSAVI2
This functor computes the Modified Soil Adjusted Vegetation Index (MSAVI2)
Definition: otbVegetationIndicesFunctor.h:302
otb::Functor::SAVI::L
static constexpr double L
Definition: otbVegetationIndicesFunctor.h:168
otb::Functor::MSAVI2::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:309
otb::Functor::TNDVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:568
otb::Functor::RadiometricIndex::Value
double Value(BandNameType band, const itk::VariableLengthVector< TInput > &input) const
Definition: otbRadiometricIndex.h:204
otb::Functor::WDVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:230
otb::Functor::LAIFromNDVILogarithmic::GetNdviSoil
const double & GetNdviSoil() const
Definition: otbVegetationIndicesFunctor.h:616
otb::Functor::LAIFromNDVIFormosat2Functor
use red and nir image band to compute LAI image using formula a*(exp(nir-red)/((red+nir)*b)-exp(c*b))...
Definition: otbVegetationIndicesFunctor.h:742
otb::Functor::IPVI::IPVI
IPVI()
Definition: otbVegetationIndicesFunctor.h:530
otb::Functor::LAIFromReflectancesLinear::m_NirCoef
double m_NirCoef
Definition: otbVegetationIndicesFunctor.h:718
otb::Functor::LAIFromNDVILogarithmic::SetNdviInf
void SetNdviInf(const double &val)
Definition: otbVegetationIndicesFunctor.h:621
otbMath.h
otb
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
Definition: otbJoinContainer.h:32
otb::Functor::EVI::C2
static constexpr double C2
Definition: otbVegetationIndicesFunctor.h:510
otb::Functor::AVI::LambdaG
static constexpr double LambdaG
Definition: otbVegetationIndicesFunctor.h:421
otb::Functor::LAIFromNDVIFormosat2Functor::A
static constexpr double A
Definition: otbVegetationIndicesFunctor.h:761
otb::Functor::NDVI
This functor computes the Normalized Difference Vegetation Index (NDVI)
Definition: otbVegetationIndicesFunctor.h:43
otb::Functor::WDVI
This functor computes the Weighted Difference Vegetation Index (WDVI)
Definition: otbVegetationIndicesFunctor.h:222
otb::Functor::PVI
This functor computes the Perpendicular Vegetation Index (PVI)
Definition: otbVegetationIndicesFunctor.h:116
otb::Functor::AVI::AVI
AVI()
Definition: otbVegetationIndicesFunctor.h:385
otb::Functor::RVI
This functor computes the Ratio Vegetation Index (RVI)
Definition: otbVegetationIndicesFunctor.h:81
otb::Functor::MSAVI::S
static constexpr double S
Definition: otbVegetationIndicesFunctor.h:288
otb::Functor::LAIFromNDVILogarithmic::m_NdviSoil
double m_NdviSoil
Definition: otbVegetationIndicesFunctor.h:658
otb::Functor::AVI
This functor computes the Angular Vegetation Index (AVI)
Definition: otbVegetationIndicesFunctor.h:382
otb::Functor::EVI
This functor computes the Enhanced Vegetation Index (EVI)
Definition: otbVegetationIndicesFunctor.h:482
otb::Functor::WDVI::Compute
static double Compute(const double &red, const double &nir)
Definition: otbVegetationIndicesFunctor.h:238
otb::Functor::GEMI
This functor computes the Global Environment Monitoring Index (GEMI)
Definition: otbVegetationIndicesFunctor.h:334
otb::Functor::TSAVI::S
static constexpr double S
Definition: otbVegetationIndicesFunctor.h:205
otb::Functor::LAIFromNDVIFormosat2Functor::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:749
otb::Functor::MSAVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:266
otb::Functor::AVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:389
otb::Functor::LAIFromNDVILogarithmic::m_ExtinctionCoefficient
double m_ExtinctionCoefficient
Definition: otbVegetationIndicesFunctor.h:660
otb::Functor::MSAVI
This functor computes the Modified Soil Adjusted Vegetation Index (MSAVI)
Definition: otbVegetationIndicesFunctor.h:259
otb::Functor::LAIFromNDVILogarithmic::GetNdviInf
const double & GetNdviInf() const
Definition: otbVegetationIndicesFunctor.h:626
otb::Functor::TNDVI::TNDVI
TNDVI()
Definition: otbVegetationIndicesFunctor.h:564
otb::Functor::LAIFromNDVILogarithmic::SetExtinctionCoefficient
void SetExtinctionCoefficient(const double &val)
Definition: otbVegetationIndicesFunctor.h:631
otb::Functor::LAIFromNDVIFormosat2Functor::C
static constexpr double C
Definition: otbVegetationIndicesFunctor.h:763
otb::Functor::SAVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:155
otb::Functor::NDVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:50
otb::Functor::TSAVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:189
otb::Functor::WDVI::S
static constexpr double S
Definition: otbVegetationIndicesFunctor.h:244
otb::Functor::LAIFromReflectancesLinear::GetRedCoef
const double & GetRedCoef() const
Definition: otbVegetationIndicesFunctor.h:694
otbRadiometricIndex.h
otb::Functor::LAIFromNDVILogarithmic::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:641
otb::Functor::NDVI::NDVI
NDVI()
Definition: otbVegetationIndicesFunctor.h:46
otb::Functor::PVI::A
static constexpr double A
Definition: otbVegetationIndicesFunctor.h:132
otb::Functor::LAIFromNDVILogarithmic::m_NdviInf
double m_NdviInf
Definition: otbVegetationIndicesFunctor.h:659
otb::ndvi
Definition: otbParserXPlugins.h:219
otb::Functor::LAIFromReflectancesLinear
computes the LAI from reflectances
Definition: otbVegetationIndicesFunctor.h:682
otb::Functor::PVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:123
otb::Functor::IPVI
This functor computes the Infrared Percentage Vegetation Index (IPVI)
Definition: otbVegetationIndicesFunctor.h:527
otb::Functor::SAVI
This functor computes the Soil Adjusted Vegetation Index (SAVI)
Definition: otbVegetationIndicesFunctor.h:148
otb::Functor::ARVI::ARVI
ARVI()
Definition: otbVegetationIndicesFunctor.h:446
otb::Functor::GEMI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:341
otb::Functor::MSAVI::MSAVI
MSAVI()
Definition: otbVegetationIndicesFunctor.h:262
otb::Functor::EVI::L
static constexpr double L
Definition: otbVegetationIndicesFunctor.h:513
otb::Functor::RVI::RVI
RVI()
Definition: otbVegetationIndicesFunctor.h:84
otb::Functor::TSAVI::X
static constexpr double X
Definition: otbVegetationIndicesFunctor.h:208
otb::Functor::RVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:88
otb::Functor::PVI::PVI
PVI()
Definition: otbVegetationIndicesFunctor.h:119
otb::Functor::PVI::C
static constexpr double C
Definition: otbVegetationIndicesFunctor.h:134
otb::Functor::LAIFromReflectancesLinear::SetRedCoef
void SetRedCoef(const double &val)
Definition: otbVegetationIndicesFunctor.h:689
otb::Functor::GEMI::GEMI
GEMI()
Definition: otbVegetationIndicesFunctor.h:337
otb::Functor::AVI::LambdaR
static constexpr double LambdaR
Definition: otbVegetationIndicesFunctor.h:424
otb::Functor::LAIFromNDVILogarithmic::GetExtionctionCoefficient
const double & GetExtionctionCoefficient() const
Definition: otbVegetationIndicesFunctor.h:636
otb::Functor::SAVI::SAVI
SAVI()
Definition: otbVegetationIndicesFunctor.h:151
otb::Functor::ARVI
This functor computes the Atmospherically Resistant Vegetation Index (ARVI)
Definition: otbVegetationIndicesFunctor.h:443
otb::Functor::LAIFromReflectancesLinear::m_RedCoef
double m_RedCoef
Definition: otbVegetationIndicesFunctor.h:717
otb::Functor::LAIFromNDVILogarithmic
computes the LAI from NDVI
Definition: otbVegetationIndicesFunctor.h:603
otb::Functor::RadiometricIndex
Base class for all radiometric indices.
Definition: otbRadiometricIndex.h:57
otb::Functor::LAIFromNDVIFormosat2Functor::LAIFromNDVIFormosat2Functor
LAIFromNDVIFormosat2Functor()
Definition: otbVegetationIndicesFunctor.h:745
otb::Functor::NDVI::Compute
static double Compute(const double &red, const double &nir)
Definition: otbVegetationIndicesFunctor.h:59
otb::Functor::LAIFromNDVILogarithmic::LAIFromNDVILogarithmic
LAIFromNDVILogarithmic()
Definition: otbVegetationIndicesFunctor.h:606
otb::Functor::WDVI::WDVI
WDVI()
Constructor.
Definition: otbVegetationIndicesFunctor.h:226
otb::Functor::LAIFromNDVILogarithmic::SetNdviSoil
void SetNdviSoil(const double &val)
Definition: otbVegetationIndicesFunctor.h:611
otb::Functor::TSAVI::TSAVI
TSAVI()
Definition: otbVegetationIndicesFunctor.h:185
otb::Functor::TNDVI
This functor computes the Transformed NDVI (TNDVI)
Definition: otbVegetationIndicesFunctor.h:561
otb::Functor::IPVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:534
otb::Functor::ARVI::Gamma
static constexpr double Gamma
Definition: otbVegetationIndicesFunctor.h:466
otb::Functor::EVI::operator()
TOutput operator()(const itk::VariableLengthVector< TInput > &input) const override
Definition: otbVegetationIndicesFunctor.h:489
otb::Functor::TSAVI::A
static constexpr double A
Definition: otbVegetationIndicesFunctor.h:204