00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkMultipleValuedNonLinearVnlOptimizer_h
00018 #define __itkMultipleValuedNonLinearVnlOptimizer_h
00019
00020 #include "itkMultipleValuedNonLinearOptimizer.h"
00021 #include "itkMultipleValuedVnlCostFunctionAdaptor.h"
00022
00023
00024 namespace itk
00025 {
00026
00035 class ITK_EXPORT MultipleValuedNonLinearVnlOptimizer :
00036 public MultipleValuedNonLinearOptimizer
00037 {
00038 public:
00040 typedef MultipleValuedNonLinearVnlOptimizer Self;
00041 typedef MultipleValuedNonLinearOptimizer Superclass;
00042 typedef SmartPointer<Self> Pointer;
00043 typedef SmartPointer<const Self> ConstPointer;
00044
00046 itkTypeMacro( MultipleValuedNonLinearVnlOptimizer,
00047 MultipleValueNonLinearOptimizer );
00048
00049
00052 typedef Superclass::ParametersType ParametersType;
00053
00060 virtual void SetCostFunction( MultipleValuedCostFunction * costFunction ) = 0;
00061
00065 void SetUseCostFunctionGradient(bool);
00066 void UseCostFunctionGradientOn() { this->SetUseCostFunctionGradient( true ); }
00067 void UseCostFunctionGradientOff() { this->SetUseCostFunctionGradient( false ); };
00068 bool GetUseCostFunctionGradient() const;
00069
00070 protected:
00071 MultipleValuedNonLinearVnlOptimizer();
00072 virtual ~MultipleValuedNonLinearVnlOptimizer();
00073
00074 typedef MultipleValuedVnlCostFunctionAdaptor CostFunctionAdaptorType;
00075
00076 void SetCostFunctionAdaptor( CostFunctionAdaptorType * adaptor );
00077 const CostFunctionAdaptorType * GetCostFunctionAdaptor( void ) const;
00078
00079 private:
00080 MultipleValuedNonLinearVnlOptimizer(const Self&);
00081 void operator=(const Self&);
00082
00083 CostFunctionAdaptorType * m_CostFunctionAdaptor;
00084 bool m_UseGradient;
00085 };
00086
00087 }
00088
00089
00090
00091
00092 #endif
00093
00094
00095