18 #ifndef __otbMDMDNMFImageFilter_h
19 #define __otbMDMDNMFImageFilter_h
25 #include "vnl/vnl_matrix.h"
26 #include "vnl/vnl_vector.h"
123 template <
class TInputImage,
class TOutputImage>
173 itkSetMacro(MaxIter,
unsigned int);
174 itkGetMacro(MaxIter,
unsigned int);
176 itkSetMacro(CritStopValue,
double);
177 itkGetMacro(CritStopValue,
double);
179 itkSetMacro(Delt,
double);
180 itkGetMacro(Delt,
double);
182 itkSetMacro(LambdD,
double);
183 itkGetMacro(LambdD,
double);
185 itkSetMacro(LambdS,
double);
186 itkGetMacro(LambdS,
double);
191 void PrintSelf(std::ostream& os,
itk::Indent indent)
const;
193 virtual void GenerateInputRequestedRegion();
198 virtual void GenerateOutputInformation();
201 virtual void GenerateData();
206 void operator=(
const Self&);
214 const double &lambdS,
215 const double &lambdD);
221 const double &lambdS,
228 const double &lambdD,
231 static double Call(
const MatrixType & variMat,
235 const double & lambdS,
236 const double & lambdD,
const bool isDirectEvalDirection);
238 static void ProjGradOneStep(
243 const double & betinit,
245 const double & lambdS,
246 const double & lambdD,
248 double & alph,
const bool isDirectEvalDirection );
250 static void SetNegativeCoefficientsToZero(
MatrixType & M);
254 static double SumMatrixElements(
const MatrixType & M);
256 static bool ArmijoTest(
const double & sig,
259 const double & evalf,
260 const double & newEvalf,
262 const double & alph);
277 #ifndef OTB_MANUAL_INSTANTIATION