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
00071 protected:
00072 MultipleValuedNonLinearVnlOptimizer();
00073 virtual ~MultipleValuedNonLinearVnlOptimizer();
00074
00075 typedef
MultipleValuedVnlCostFunctionAdaptor CostFunctionAdaptorType;
00076
00077
void SetCostFunctionAdaptor( CostFunctionAdaptorType * adaptor );
00078 const CostFunctionAdaptorType * GetCostFunctionAdaptor(
void ) const;
00079
00080 private:
00081 MultipleValuedNonLinearVnlOptimizer(const
Self&);
00082
void operator=(const Self&);
00083
00084 CostFunctionAdaptorType * m_CostFunctionAdaptor;
00085
00086 };
00087
00088 }
00089
00090
00091
00092
00093 #endif
00094
00095
00096