21 #ifndef otbMDMDNMFImageFilter_h
22 #define otbMDMDNMFImageFilter_h
24 #include "itkImageToImageFilter.h"
27 #include "vnl/vnl_matrix.h"
28 #include "vnl/vnl_vector.h"
127 template <
class TInputImage,
class TOutputImage>
133 typedef itk::ImageToImageFilter<TInputImage, TOutputImage>
Superclass;
177 itkSetMacro(MaxIter,
unsigned int);
178 itkGetMacro(MaxIter,
unsigned int);
181 itkSetMacro(CritStopValue,
double);
182 itkGetMacro(CritStopValue,
double);
184 itkSetMacro(Delt,
double);
185 itkGetMacro(Delt,
double);
187 itkSetMacro(LambdD,
double);
188 itkGetMacro(LambdD,
double);
190 itkSetMacro(LambdS,
double);
191 itkGetMacro(LambdS,
double);
198 void PrintSelf(std::ostream& os, itk::Indent indent)
const override;
200 void GenerateInputRequestedRegion()
override;
205 void GenerateOutputInformation()
override;
208 void GenerateData()
override;
217 static double Criterion(
const MatrixType& X,
const MatrixType& A,
const MatrixType& S,
const double& delt,
const double& lambdS,
const double& lambdD);
223 static double Call(
const MatrixType& variMat,
const MatrixType& fixedMat,
const MatrixType& X,
const double& delt,
const double& lambdS,
const double& lambdD,
224 const bool isDirectEvalDirection);
226 static void ProjGradOneStep(
const MatrixType& X,
const MatrixType& fixedMat,
const MatrixType& gradVariMat,
const double& sig,
const double& betinit,
227 const double& delt,
const double& lambdS,
const double& lambdD,
MatrixType& variMat,
double& alpha,
228 const bool isDirectEvalDirection);
230 static void SetNegativeCoefficientsToZero(
MatrixType& M);
234 static double SumMatrixElements(
const MatrixType& M);
236 static bool ArmijoTest(
const double& sig,
const MatrixType variMat,
const MatrixType& newVariMat,
const double& evalf,
const double& newEvalf,
237 const MatrixType& gradVariMat,
const double& alpha);
252 #ifndef OTB_MANUAL_INSTANTIATION
itk::ImageToImageFilter< TInputImage, TOutputImage > Superclass
TInputImage InputImageType
OutputImageType::RegionType OutputImageRegionType
itk::SmartPointer< Self > Pointer
void SetEndmembersMatrix(const MatrixType &m)
otb::VectorImageToMatrixImageFilter< InputImageType > VectorImageToMatrixImageFilterType
TOutputImage OutputImageType
MatrixType GetEndmembersMatrix() const
OutputImageType::SizeType OutputSizeType
OutputImageType::IndexType OutputIndexType
InputImageType::Pointer InputPointerType
void operator=(const Self &)=delete
OutputImageType::PixelType OutputPixelType
OutputImageType::Pointer OutputPointerType
~MDMDNMFImageFilter() override
InputImageType::IndexType InputIndexType
vnl_vector< double > VectorType
itk::SmartPointer< const Self > ConstPointer
vnl_matrix< PrecisionType > MatrixType
InputImageType::SizeType InputSizeType
MDMDNMFImageFilter(const Self &)=delete
OutputImageType::OffsetType OutputOffsetType
InputImageType::PixelType InputPixelType
InputImageType::ConstPointer InputConstPointerType
This class streams the whole input image through the PersistentStatisticsImageFilter.
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.