Codebook.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * @file Codebook.cpp
  3. * @brief feature codebook
  4. * @author Erik Rodner
  5. * @date 02/15/2008
  6. */
  7. #include <iostream>
  8. #include "vislearning/features/simplefeatures/Codebook.h"
  9. using namespace OBJREC;
  10. using namespace std;
  11. using namespace NICE;
  12. void Codebook::vote ( const NICE::Vector & feature,
  13. NICE::Vector & histogram,
  14. int & codebookEntry,
  15. double & weight,
  16. double & distance ) const
  17. {
  18. vote ( feature, codebookEntry, weight, distance );
  19. histogram[codebookEntry] += weight;
  20. }
  21. void Codebook::vote ( const NICE::Vector & feature, SparseVector & votes ) const
  22. {
  23. int codebookEntry;
  24. double weight;
  25. double distance;
  26. vote ( feature, codebookEntry, weight, distance );
  27. votes.insert ( votes.begin(), pair<int, double> ( codebookEntry, weight ) );
  28. }
  29. void Codebook::reinit ( int numCodebookEntries )
  30. {
  31. thresholds.resize ( numCodebookEntries );
  32. thresholds.set(0.0);
  33. informativeMeasure.resize ( numCodebookEntries );
  34. informativeMeasure.set(0.0);
  35. classnos.resize ( numCodebookEntries );
  36. classnos.resize(0);
  37. }
  38. void Codebook::clear ()
  39. {
  40. thresholds.clear();
  41. informativeMeasure.clear();
  42. classnos.clear();
  43. }
  44. void Codebook::restore ( istream & is, int format )
  45. {
  46. is >> thresholds;
  47. is >> informativeMeasure;
  48. is >> classnos;
  49. }
  50. void Codebook::store ( ostream & os, int format ) const
  51. {
  52. os << thresholds << endl;
  53. os << informativeMeasure << endl;
  54. os << classnos << endl;
  55. }
  56. void Codebook::copy ( const Codebook *codebook )
  57. {
  58. reinit ( codebook->thresholds.size() );
  59. thresholds = codebook->thresholds;
  60. informativeMeasure = codebook->informativeMeasure;
  61. classnos = codebook->classnos;
  62. }