/** * @file KernelHIK.h * @brief Interface for the (generalized) histogram intersection kernel (HIK) * @author Paul Bodesheim * @date 02/07/2013 */ #ifndef KERNELHIKINCLUDE #define KERNELHIKINCLUDE #include "Kernel.h" #include "ParameterizedKernel.h" namespace OBJREC { /** Interface for the popular exponential mercer kernel / rbf kernel */ class KernelHIK : public ParameterizedKernel { protected: double alpha; double beta; public: /** simple constructor */ KernelHIK( double alpha = 1.0, double beta = 1.0 ); /** copy constructor */ KernelHIK ( const KernelHIK & src ); /** simple destructor */ virtual ~KernelHIK(); /** clone this object */ KernelHIK *clone(void) const; /** compute the kernel value */ double K (const NICE::Vector & x, const NICE::Vector & y) const; size_t getParameterSize () const { return 2; }; void updateKernelData ( KernelData *kernelData ) const; void getKernelJacobi ( size_t parameter, const NICE::Vector & parameters, const KernelData *kernelData, NICE::Matrix & jacobiMatrix ) const; void setParameters( const NICE::Vector & newParameters ); void getParameters( NICE::Vector & newParameters ) const; }; } // namespace #endif