KernelHIK.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /**
  2. * @file KernelHIK.cpp
  3. * @brief Interface for the (parameterized) histogram intersection kernel (HIK)
  4. * @author Paul Bodesheim
  5. * @date 02/07/2013
  6. */
  7. #include <iostream>
  8. #include <math.h>
  9. #include "KernelHIK.h"
  10. using namespace OBJREC;
  11. using namespace std;
  12. using namespace NICE;
  13. KernelHIK::KernelHIK( double _alpha, double _beta )
  14. {
  15. alpha = _alpha;
  16. beta = _beta;
  17. }
  18. KernelHIK::KernelHIK ( const KernelHIK & src )
  19. {
  20. alpha = src.alpha;
  21. beta = src.beta;
  22. }
  23. KernelHIK::~KernelHIK()
  24. {
  25. }
  26. KernelHIK *KernelHIK::clone(void) const
  27. {
  28. return new KernelHIK ( *this );
  29. }
  30. double KernelHIK::K (const NICE::Vector & x, const NICE::Vector & y) const
  31. {
  32. if ( x.size() != y.size() ) {
  33. cerr << "KernelHIK: dimensions: " << x.size() << " vs " << y.size() << endl;
  34. fthrow(Exception, "Vector dimensions do not match!");
  35. }
  36. double sim = 0.0;
  37. for ( size_t i = 0 ; i < x.size() ; i++ )
  38. {
  39. double d = alpha*pow(min(x[i], y[i]), beta);
  40. sim += d;
  41. }
  42. return sim;
  43. }
  44. void KernelHIK::updateKernelData ( KernelData *kernelData ) const
  45. {
  46. NICE::Matrix & kernelMatrix = kernelData->getKernelMatrix();
  47. fthrow(Exception, "Not yet implemented!");
  48. }
  49. void KernelHIK::getKernelJacobi ( size_t parameter, const NICE::Vector & parameters, const KernelData *kernelData, NICE::Matrix & jacobiMatrix ) const
  50. {
  51. fthrow(Exception, "Not yet implemented!");
  52. }
  53. void KernelHIK::setParameters( const NICE::Vector & newParameters )
  54. {
  55. alpha = newParameters[0];
  56. beta = newParameters[1];
  57. }
  58. void KernelHIK::getParameters( NICE::Vector & newParameters ) const
  59. {
  60. newParameters.resize(2);
  61. newParameters[0] = alpha;
  62. newParameters[1] = beta;
  63. }