18 #ifndef __otbTerraSarBrightnessFunctor_txx
19 #define __otbTerraSarBrightnessFunctor_txx
23 #include "itkNumericTraits.h"
30 template <
class TInput,
class TOutput>
34 m_CalibrationFactor = itk::NumericTraits<double>::Zero;
35 m_ResultsInDecibels =
false;
36 m_DefaultValue = 0.00001;
39 template <
class TInput,
class TOutput>
47 double squareInPix = vcl_pow(static_cast<double>(inPix), 2.);
50 double beta = m_CalibrationFactor * squareInPix;
52 if (beta <= 0) beta = m_DefaultValue;
55 if (m_ResultsInDecibels)
57 beta = 10 * vcl_log10(beta);
60 return static_cast<TOutput
>(beta);
63 template <
class TInput,
class TOutput>
69 double modulus = vcl_sqrt(inPix.real() * inPix.real() + inPix.imag() * inPix.imag());
70 double phase = vcl_atan2(inPix.imag(), inPix.real());
73 double beta = this->operator() (modulus);
76 std::complex<TOutput> out(std::polar(beta, phase));