00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkMultipleValuedCostFunction_h
00018 #define __itkMultipleValuedCostFunction_h
00019
00020 #include "itkCostFunction.h"
00021 #include "itkArray.h"
00022 #include "itkArray2D.h"
00023 #include "itkObjectFactory.h"
00024 #include "itkNumericTraits.h"
00025
00026
00027 namespace itk
00028 {
00029
00036 class ITK_EXPORT MultipleValuedCostFunction :
00037 public CostFunction
00038 {
00039 public:
00041 typedef MultipleValuedCostFunction Self;
00042 typedef CostFunction Superclass;
00043 typedef SmartPointer<Self> Pointer;
00044 typedef SmartPointer<const Self> ConstPointer;
00045
00046
00048 itkTypeMacro( MultipleValuedCostFunction, CostFunction );
00049
00050
00053 typedef Superclass::ParametersType ParametersType;
00054
00055
00058 typedef Array<double> MeasureType;
00059
00062 typedef Array2D<double> DerivativeType;
00063
00064
00065
00069 virtual MeasureType GetValue( const ParametersType & parameters ) const = 0;
00070
00074 virtual unsigned int GetNumberOfValues(void) const = 0;
00075
00076
00080 virtual void GetDerivative( const ParametersType & parameters,
00081 DerivativeType & derivative ) const = 0;
00082
00083
00084
00085 protected:
00086 MultipleValuedCostFunction() {};
00087 virtual ~MultipleValuedCostFunction() {};
00088
00089
00090 private:
00091 MultipleValuedCostFunction(const Self&);
00092 void operator=(const Self&);
00093
00094
00095 };
00096
00097
00098
00099
00100
00101
00102 }
00103
00104
00105 #endif
00106
00107
00108