Codebook.cpp 1.7 KB

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