BasicVectorTransformations.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /**
  2. * @file LabeledSet.h
  3. * @brief Transformation of vectors
  4. * @author MiKe
  5. * @date 20.01.2010
  6. */
  7. #ifndef BASICVECTORTRANSFORMATIONSINCLUDE
  8. #define BASICVECTORTRANSFORMATIONSINCLUDE
  9. #include <vislearning/nice_nonvis.h>
  10. #include "core/vector/VVector.h"
  11. #include <vector>
  12. #include "vislearning/cbaselib/VectorTransform.h"
  13. namespace OBJREC {
  14. ///do nothing
  15. class IdentityTransform : public VectorTransform{
  16. public:
  17. IdentityTransform (){};
  18. ~IdentityTransform (){};
  19. NICE::Vector transform( const NICE::Vector& vec);
  20. NICE::Vector transform( const NICE::Vector& vec, const std::vector<NICE::Vector>& params);
  21. };
  22. ///vec = vec/||vec||_2, where vec~vector
  23. class UnitLengthTransform : public VectorTransform{
  24. public:
  25. UnitLengthTransform(){};
  26. ~UnitLengthTransform(){};
  27. NICE::Vector transform( const NICE::Vector& vec);
  28. NICE::Vector transform( const NICE::Vector& vec, const std::vector<NICE::Vector>& params);
  29. };
  30. ///vec = vec + params[0][0], where vec~vector, params[0][0]~scalar
  31. class ConstantShiftingTransform : public VectorTransform{
  32. public:
  33. ConstantShiftingTransform(){};
  34. ~ConstantShiftingTransform(){};
  35. NICE::Vector transform( const NICE::Vector& vec);
  36. NICE::Vector transform( const NICE::Vector& vec, const std::vector<NICE::Vector>& params);
  37. };
  38. ///vec = vec * params[0][0], where vec~vector, params[0][0]~scalar
  39. class ConstantScalingTransform : public VectorTransform{
  40. public:
  41. ConstantScalingTransform(){};
  42. ~ConstantScalingTransform(){};
  43. NICE::Vector transform( const NICE::Vector& vec);
  44. NICE::Vector transform( const NICE::Vector& vec, const std::vector<NICE::Vector>& params);
  45. };
  46. ///vec = vec .+ params[0], where vec~vector, params[0]~vector (dimensionwise addition, vectors must have same length)
  47. class VectorShiftingTransform : public VectorTransform{
  48. public:
  49. VectorShiftingTransform(){};
  50. ~VectorShiftingTransform(){};
  51. NICE::Vector transform( const NICE::Vector& vec);
  52. NICE::Vector transform( const NICE::Vector& vec, const std::vector<NICE::Vector>& params);
  53. };
  54. ///vec = vec .* params[0], where vec~vector, params[0]~vector (dimensionwise scaling, vectors must have same length)
  55. class VectorScalingTransform : public VectorTransform{
  56. public:
  57. VectorScalingTransform(){};
  58. ~VectorScalingTransform(){};
  59. NICE::Vector transform( const NICE::Vector& vec);
  60. NICE::Vector transform( const NICE::Vector& vec, const std::vector<NICE::Vector>& params);
  61. };
  62. /// Running Median wrt vec of width params[0][0] (if not specified, default width=3), vec filled with zeros at boundaries
  63. class RunningMedianTransform : public VectorTransform{
  64. public:
  65. RunningMedianTransform(){};
  66. ~RunningMedianTransform(){};
  67. NICE::Vector transform( const NICE::Vector& vec);
  68. NICE::Vector transform( const NICE::Vector& vec, const std::vector<NICE::Vector>& params);
  69. };
  70. /// Running Mean wrt vec of width params[0][0] (if not specified, default width=3), vec mirrored at boundaries
  71. class RunningMeanTransform : public VectorTransform{
  72. private:
  73. uint get_index( int index, int vec_size);
  74. public:
  75. RunningMeanTransform(){};
  76. ~RunningMeanTransform(){};
  77. NICE::Vector transform( const NICE::Vector& vec);
  78. NICE::Vector transform( const NICE::Vector& vec, const std::vector<NICE::Vector>& params);
  79. };
  80. } // namespace
  81. #endif