21 #ifndef otbSinclairToMuellerMatrixImageFilter_h
22 #define otbSinclairToMuellerMatrixImageFilter_h
85 template <
class TInput1,
class TInput2,
class TInput3,
class TInput4,
class TOutput>
94 inline void operator()(TOutput& result,
const TInput1& Shh,
const TInput2& Shv,
const TInput3& Svh,
const TInput4& Svv)
const
106 result[0] =
static_cast<OutputValueType>(0.5 * (std::norm(Txx) + std::norm(Txy) + std::norm(Tyx) + std::norm(Tyy)));
107 result[1] =
static_cast<OutputValueType>(0.5 * (std::norm(Txx) - std::norm(Txy) + std::norm(Tyx) - std::norm(Tyy)));
108 result[2] =
static_cast<OutputValueType>((Txx * conjTxy + Tyx * conjTyy).real());
109 result[3] =
static_cast<OutputValueType>((Txx * conjTxy + Tyx * conjTyy).imag());
110 result[4] =
static_cast<OutputValueType>(0.5 * (std::norm(Txx) + std::norm(Txy) - std::norm(Tyx) - std::norm(Tyy)));
111 result[5] =
static_cast<OutputValueType>(0.5 * (std::norm(Txx) - std::norm(Txy) - std::norm(Tyx) + std::norm(Tyy)));
112 result[6] =
static_cast<OutputValueType>((Txx * conjTxy - Tyx * conjTyy).real());
113 result[7] =
static_cast<OutputValueType>((Txx * conjTxy - Tyx * conjTyy).imag());
114 result[8] =
static_cast<OutputValueType>((Txx * conjTyx + Txy * conjTyy).real());
115 result[9] =
static_cast<OutputValueType>((Txx * conjTyx - Txy * conjTyy).real());
116 result[10] =
static_cast<OutputValueType>((Txx * conjTyy + Txy * conjTyx).real());
117 result[11] =
static_cast<OutputValueType>((Txx * conjTyy - Txy * conjTyx).imag());
118 result[12] =
static_cast<OutputValueType>((conjTxx * Tyx + conjTxy * Tyy).imag());
119 result[13] =
static_cast<OutputValueType>((conjTxx * Tyx - conjTxy * Tyy).imag());
120 result[14] =
static_cast<OutputValueType>((conjTxx * Tyy + conjTxy * Tyx).imag());
121 result[15] =
static_cast<OutputValueType>((Txx * conjTyy - Txy * conjTyx).real());
160 template <
typename TInputImage,
typename TOutputImage>
162 Functor::SinclairToMuellerMatrixFunctor<
typename TInputImage::PixelType,
typename TInputImage::PixelType,
typename TInputImage::PixelType,
163 typename TInputImage::PixelType,
typename TOutputImage::PixelType>,
164 std::tuple<polarimetry_tags::hh, polarimetry_tags::hv, polarimetry_tags::vh, polarimetry_tags::vv>>;