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