view include/Motion.hpp @ 138:c1b260b48d2a

corrected initialization bugs and feature shortening before saving
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 19 Aug 2011 12:15:23 -0400
parents 0f790de9437e
children 47329bd16cc0
line wrap: on
line source

#ifndef FEATURE_HPP
#define FEATURE_HPP

#include "src/Trajectory.h"

#include <boost/shared_ptr.hpp>

template<typename T> class TrajectoryDBAccess;

/** Class for feature data
    positions, velocities and other statistics to evaluate their quality
    before saving. */
class FeatureTrajectory {
public:
  FeatureTrajectory(const int& frameNum, const cv::Point2f& p);

  unsigned int length(void) const { return positions.size();}

  void setId(const unsigned int& id) { positions.setId(id);velocities.setId(id);}

  /// indicates whether the sum of the last nDisplacements displacements has been inferior to minFeatureDisplacement
  bool smallDisplacement(const unsigned int& nDisplacements, const float& minTotalFeatureDisplacement) const;

  void addPoint(const int& frameNum, const cv::Point2f& p);

  void shorten(void);

  void write(TrajectoryDBAccess<cv::Point2f>& trajectoryDB) const;

#ifdef USE_OPENCV
  void draw(cv::Mat& img, const cv::Scalar& color) const;
#endif

protected:
  Trajectory<cv::Point2f> positions;
  Trajectory<cv::Point2f> velocities;
  
  std::vector<float> displacementDistances;

  void computeMotionData(const int& frameNum);

};

typedef boost::shared_ptr<FeatureTrajectory> FeatureTrajectoryPtr;

// class MovingObject {}
// roadUserType, group of features

#endif