ParameterizedKernel.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * @file ParameterizedKernel.h
  3. * @brief Interface for parameterized kernel functions
  4. * @author Erik Rodner
  5. * @date 12/04/2009
  6. */
  7. #ifndef PARAMETERIZEDKERNELINCLUDE
  8. #define PARAMETERIZEDKERNELINCLUDE
  9. #include "Kernel.h"
  10. #include "KernelData.h"
  11. namespace OBJREC {
  12. /** Interface for parameterized kernel functions */
  13. class ParameterizedKernel : public Kernel
  14. {
  15. protected:
  16. public:
  17. /** simple constructor */
  18. ParameterizedKernel();
  19. /** simple destructor */
  20. virtual ~ParameterizedKernel();
  21. /**
  22. * update kernelMatrix (and maybe other caching stuff) in kernelData using new parameters
  23. * of the kernel function
  24. */
  25. virtual void updateKernelData ( KernelData *kernelData ) const = 0;
  26. /** get the size of the parameter vector */
  27. virtual size_t getParameterSize () const = 0;
  28. /** compute the jacobi matrix of the parameter with index \c parameter by using \c parameters as an argument and the matrix \c kernelMatrix
  29. * as the pre-computed kernel values */
  30. virtual void getKernelJacobi ( size_t parameter, const NICE::Vector & parameters, const KernelData *kernelData, NICE::Matrix & jacobiMatrix ) const = 0;
  31. virtual void setParameters( const NICE::Vector & newParameters ) = 0;
  32. virtual void getParameters( NICE::Vector & newParameters ) const = 0;
  33. };
  34. }
  35. #endif