BasicVectorTransformations.h 3.3 KB

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