DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
itk::L1RegularizedLeastSquaresFISTASolver< TPrecision > Class Template Reference

#include <itkL1RegularizedLeastSquaresFISTASolver.h>

+ Inheritance diagram for itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >:
+ Collaboration diagram for itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >:

Detailed Description

template<class TPrecision>
class itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >

solve least square problem with L1 regularization using FISTA

The least square with L2 regularization is

\[ \min_{x} \|Ax-b\|^2 + |w x| \]

where A is a matrix, w is a diagonal matrix (vnl_vector) b, x are vectors.

reference: Fast Iterative Shrinkage-Thresholding Algorithm (FISTA), SIAM J. Imaging Sciences 2009

Author
Jian Cheng (JC), jian..nosp@m.chen.nosp@m.g.198.nosp@m.3@gm.nosp@m.ail.c.nosp@m.om

Definition at line 44 of file itkL1RegularizedLeastSquaresFISTASolver.h.

Public Types

typedef L2RegularizedLeastSquaresSolver< TPrecision > L2SolverType
 
typedef Superclass::MatrixPointer MatrixPointer
 
typedef Superclass::MatrixType MatrixType
 
typedef SmartPointer< SelfPointer
 
typedef L1RegularizedLeastSquaresFISTASolver Self
 
typedef IterativeSolverBase< TPrecision > Superclass
 
typedef Superclass::UpdateInfomationType UpdateInfomationType
 
typedef Superclass::ValueContainerType ValueContainerType
 
typedef Superclass::ValueType ValueType
 
typedef Superclass::VectorPointer VectorPointer
 
typedef Superclass::VectorType VectorType
 
- Public Types inherited from itk::IterativeSolverBase< TPrecision >
typedef Superclass::MatrixType MatrixType
 
typedef SmartPointer< SelfPointer
 
typedef IterativeSolverBase Self
 
typedef SolverBase< TPrecision > Superclass
 
enum  UpdateInfomationType {
  NONE =0,
  STOP_MIN_CHANGE,
  STOP_MAX_NUM_ITERATION,
  CONTINUE,
  RESTART
}
 
typedef std::vector< ValueTypeValueContainerType
 
typedef TPrecision ValueType
 
typedef Superclass::VectorType VectorType
 
- Public Types inherited from itk::SolverBase< TPrecision >
typedef utl_shared_ptr< MatrixTypeMatrixPointer
 
typedef utl::NDArray< ValueType, 2 > MatrixType
 
typedef SmartPointer< SelfPointer
 
typedef SolverBase Self
 
typedef Object Superclass
 
typedef utl_shared_ptr< std::vector< ValueType > > ValueContainerPointer
 
typedef std::vector< ValueTypeValueContainerType
 
typedef TPrecision ValueType
 
typedef utl_shared_ptr< VectorTypeVectorPointer
 
typedef utl::NDArray< ValueType, 1 > VectorType
 

Public Member Functions

void Clear () ITK_OVERRIDE
 
void ClearA ()
 
void Clearb ()
 
void Clearw ()
 
virtual ::itk::LightObject::Pointer CreateAnother (void) const
 
ValueType EvaluateCostFunction (const VectorType &x=VectorType()) const ITK_OVERRIDE
 
virtual MatrixPointer GetA ()
 
virtual VectorPointer Getb ()
 
virtual const char * GetNameOfClass () const
 
virtual bool GetUseL2SolverForInitialization ()
 
virtual VectorPointer Getw ()
 
int GetXDimension () const ITK_OVERRIDE
 
void HistoryUpdateAndConvergenceCheck () ITK_OVERRIDE
 
void Initialize (const VectorType &xInitial=VectorType()) ITK_OVERRIDE
 
void Iterate () ITK_OVERRIDE
 
void SetA (const MatrixPointer &mat)
 
void Setb (const VectorPointer &b)
 
virtual void SetUseL2SolverForInitialization (bool _arg)
 
void Setw (const VectorPointer &w)
 
void SetwForInitialization (const VectorPointer &w)
 
void Solve (const VectorType &xInitial=VectorType()) ITK_OVERRIDE
 
virtual void UseL2SolverForInitializationOff ()
 
virtual void UseL2SolverForInitializationOn ()
 
void VerifyInputs () const ITK_OVERRIDE
 
- Public Member Functions inherited from itk::IterativeSolverBase< TPrecision >
virtual ::itk::LightObject::Pointer CreateAnother (void) const
 
virtual const ValueContainerTypeGetCostFunction ()
 
virtual const ValueContainerTypeGetDifferenceNormOfDualResidual ()
 
virtual const ValueContainerTypeGetDifferenceNormOfPrimalResidual ()
 
virtual const ValueContainerTypeGetEPSOfDualResidual ()
 
virtual const ValueContainerTypeGetEPSOfPrimalResidual ()
 
virtual const ValueTypeGetEPSOfVaribles ()
 
virtual const int & GetMaxNumberOfIterations ()
 
virtual const ValueTypeGetMinRelativeChangeOfCostFunction ()
 
virtual const ValueTypeGetMinRelativeChangeOfDualResidual ()
 
virtual const ValueTypeGetMinRelativeChangeOfPrimalResidual ()
 
virtual const int & GetNumberOfChangeLessThanThreshold ()
 
virtual const int & GetNumberOfIterations ()
 
virtual void SetEPSOfVaribles (ValueType _arg)
 
virtual void SetMaxNumberOfIterations (int _arg)
 
virtual void SetMinRelativeChangeOfCostFunction (ValueType _arg)
 
virtual void SetMinRelativeChangeOfDualResidual (ValueType _arg)
 
virtual void SetMinRelativeChangeOfPrimalResidual (ValueType _arg)
 
virtual void SetNumberOfChangeLessThanThreshold (int _arg)
 
- Public Member Functions inherited from itk::SolverBase< TPrecision >
virtual ::itk::LightObject::Pointer CreateAnother (void) const
 
virtual void EndSolve ()
 
virtual ValueType EvaluateCostFunction (const MatrixType &x=MatrixType()) const
 
virtual VectorType EvaluateGradientOfCostFunction (const VectorType &x) const
 
virtual const VectorTypeGetx ()
 
virtual void Solve (const MatrixType &xInitial=MatrixType())
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::IterativeSolverBase< TPrecision >
static Pointer New ()
 
- Static Public Member Functions inherited from itk::SolverBase< TPrecision >
static Pointer New ()
 

Protected Member Functions

virtual LightObject::Pointer InternalClone () const ITK_OVERRIDE
 
 L1RegularizedLeastSquaresFISTASolver ()
 
void PrintSelf (std::ostream &os, Indent indent) const ITK_OVERRIDE
 
virtual ~L1RegularizedLeastSquaresFISTASolver ()
 
- Protected Member Functions inherited from itk::IterativeSolverBase< TPrecision >
 IterativeSolverBase ()
 
void PrintSelf (std::ostream &os, Indent indent) const ITK_OVERRIDE
 
virtual ~IterativeSolverBase ()
 
- Protected Member Functions inherited from itk::SolverBase< TPrecision >
void PrintSelf (std::ostream &os, Indent indent) const ITK_OVERRIDE
 
 SolverBase ()
 
virtual ~SolverBase ()
 

Protected Attributes

MatrixPointer m_A
 
VectorPointer m_b
 
bool m_UseL2SolverForInitialization
 
VectorPointer m_w
 
- Protected Attributes inherited from itk::IterativeSolverBase< TPrecision >
ValueContainerType m_CostFunction
 
ValueContainerType m_DifferenceNormOfDualResidual
 
ValueContainerType m_DifferenceNormOfPrimalResidual
 
ValueContainerType m_EPSOfDualResidual
 
ValueContainerType m_EPSOfPrimalResidual
 
ValueType m_EPSOfVaribles
 
int m_MaxNumberOfIterations
 
ValueType m_MinRelativeChangeOfCostFunction
 
ValueType m_MinRelativeChangeOfDualResidual
 
ValueType m_MinRelativeChangeOfPrimalResidual
 
int m_NumberOfChangeLessThanThreshold
 
int m_NumberOfIterations
 
UpdateInfomationType m_UpdateInformation
 
- Protected Attributes inherited from itk::SolverBase< TPrecision >
VectorType m_x
 

Private Member Functions

 L1RegularizedLeastSquaresFISTASolver (const Self &)
 
void operator= (const Self &)
 

Private Attributes

MatrixPointer m_At
 
MatrixPointer m_AtA
 
VectorPointer m_Atb
 
L2SolverType::Pointer m_L2Solver
 
double m_Step
 
VectorPointer m_xOld
 

Member Typedef Documentation

template<class TPrecision>
typedef L2RegularizedLeastSquaresSolver<TPrecision> itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::L2SolverType

Definition at line 67 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef Superclass::MatrixPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::MatrixPointer

Definition at line 62 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef Superclass::MatrixType itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::MatrixType

Definition at line 60 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef SmartPointer<Self> itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Pointer

Definition at line 51 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef L1RegularizedLeastSquaresFISTASolver itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Self

Standard class typedefs.

Definition at line 49 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef IterativeSolverBase<TPrecision> itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Superclass

Definition at line 50 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef Superclass::UpdateInfomationType itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::UpdateInfomationType

Definition at line 66 of file itkL1RegularizedLeastSquaresFISTASolver.h.

Definition at line 65 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef Superclass::ValueType itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::ValueType

Definition at line 57 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef Superclass::VectorPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::VectorPointer

Definition at line 63 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
typedef Superclass::VectorType itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::VectorType

Definition at line 61 of file itkL1RegularizedLeastSquaresFISTASolver.h.

Constructor & Destructor Documentation

template<class TPrecision >
itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::L1RegularizedLeastSquaresFISTASolver ( )
protected

Definition at line 30 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::SetA().

+ Here is the call graph for this function:

template<class TPrecision>
virtual itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::~L1RegularizedLeastSquaresFISTASolver ( )
inlineprotectedvirtual

Definition at line 131 of file itkL1RegularizedLeastSquaresFISTASolver.h.

References ITK_OVERRIDE.

template<class TPrecision>
itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::L1RegularizedLeastSquaresFISTASolver ( const Self )
private

Member Function Documentation

template<class TPrecision>
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Clear ( )
inlinevirtual
template<class TPrecision>
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::ClearA ( )
inline

Definition at line 98 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Clearb ( )
inline

Definition at line 110 of file itkL1RegularizedLeastSquaresFISTASolver.h.

References ITK_OVERRIDE.

template<class TPrecision>
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Clearw ( )
inline

Definition at line 105 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
virtual::itk::LightObject::Pointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::CreateAnother ( void  ) const
template<class TPrecision >
L1RegularizedLeastSquaresFISTASolver< TPrecision >::ValueType itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::EvaluateCostFunction ( const VectorType x = VectorType()) const
virtual
template<class TPrecision>
virtual MatrixPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::GetA ( )
virtual
template<class TPrecision>
virtual VectorPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Getb ( )
virtual
template<class TPrecision>
virtual const char* itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from itk::IterativeSolverBase< TPrecision >.

template<class TPrecision>
virtual bool itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::GetUseL2SolverForInitialization ( )
virtual
template<class TPrecision>
virtual VectorPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Getw ( )
virtual
template<class TPrecision>
int itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::GetXDimension ( ) const
inlinevirtual

Reimplemented from itk::SolverBase< TPrecision >.

Definition at line 81 of file itkL1RegularizedLeastSquaresFISTASolver.h.

References utlException.

template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::HistoryUpdateAndConvergenceCheck ( )
virtual

Update history information and monitor stop conditions

Reimplemented from itk::IterativeSolverBase< TPrecision >.

Definition at line 210 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References utl::cblas_nrm2(), itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Iterate(), and utl::vSub().

Referenced by itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::EvaluateCostFunction().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Initialize ( const VectorType xInitial = VectorType())
virtual
template<class TPrecision >
LightObject::Pointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::InternalClone ( ) const
protectedvirtual

Reimplemented from itk::IterativeSolverBase< TPrecision >.

Definition at line 137 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Initialize().

Referenced by itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::VerifyInputs().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Iterate ( )
virtual
template<class TPrecision>
static Pointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::New ( )
static

Method for creation through the object factory.

template<class TPrecision>
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::operator= ( const Self )
private
template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
protected

Definition at line 313 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References utl::PrintUtlMatrix(), utl::PrintUtlVector(), and PrintVar2.

Referenced by itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Iterate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::SetA ( const MatrixPointer mat)
template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Setb ( const VectorPointer b)

Definition at line 76 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References utl::ProductUtlMv(), itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Setw(), and utlException.

Referenced by itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::SetA().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
virtual void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::SetUseL2SolverForInitialization ( bool  _arg)
virtual
template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Setw ( const VectorPointer w)

Definition at line 98 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::SetwForInitialization().

Referenced by itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Setb().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::SetwForInitialization ( const VectorPointer w)

Definition at line 111 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References utlException, and itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::VerifyInputs().

Referenced by itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Setw().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Solve ( const VectorType xInitial = VectorType())
virtual

Reimplemented from itk::IterativeSolverBase< TPrecision >.

Definition at line 180 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::EvaluateCostFunction(), and utlShowPosition.

Referenced by itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::Initialize().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class TPrecision>
virtual void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::UseL2SolverForInitializationOff ( )
virtual
template<class TPrecision>
virtual void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::UseL2SolverForInitializationOn ( )
virtual
template<class TPrecision >
void itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::VerifyInputs ( ) const
virtual

Reimplemented from itk::SolverBase< TPrecision >.

Definition at line 125 of file itkL1RegularizedLeastSquaresFISTASolver.hxx.

References itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::InternalClone(), and utlException.

Referenced by itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::SetwForInitialization().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

template<class TPrecision>
MatrixPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_A
protected

MxN matrix

Definition at line 138 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
MatrixPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_At
private

Definition at line 151 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
MatrixPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_AtA
private

Definition at line 152 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
VectorPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_Atb
private

Definition at line 153 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
VectorPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_b
protected

Mx1 vector

Definition at line 140 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
L2SolverType::Pointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_L2Solver
private

Definition at line 159 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
double itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_Step
private

Definition at line 154 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
bool itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_UseL2SolverForInitialization
protected

Definition at line 145 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
VectorPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_w
protected

N dimensional vector for L1 regularization.

Definition at line 143 of file itkL1RegularizedLeastSquaresFISTASolver.h.

template<class TPrecision>
VectorPointer itk::L1RegularizedLeastSquaresFISTASolver< TPrecision >::m_xOld
private

Definition at line 157 of file itkL1RegularizedLeastSquaresFISTASolver.h.


The documentation for this class was generated from the following files: