# HG changeset patch # User Nicolas Saunier # Date 1313720721 14400 # Node ID 0f790de9437eb6f6aa2927bad73116df2cb9d952 # Parent 32d2722d40282be159bf5ab2490f7eb9c3fa6357 renamed Feature to Motion files and added code to test blob db diff -r 32d2722d4028 -r 0f790de9437e c/Feature.cpp --- a/c/Feature.cpp Thu Aug 18 01:03:38 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -#include "Feature.hpp" - -#include "opencv2/core/core.hpp" -#include "opencv2/highgui/highgui.hpp" - -#include "src/TrajectoryDBAccessList.h" - -using namespace std; -using namespace cv; - -FeatureTrajectory::FeatureTrajectory(const int& frameNum, const cv::Point2f& p) { - addPoint(frameNum, p); -} - -bool FeatureTrajectory::largeDisplacement(const int& nDisplacements, const float& minTotalFeatureDisplacement) const { - bool result = true; - unsigned int nPositions = positions.size(); - if (nPositions > nDisplacements) { - float disp = 0; - for (int i=0; i minTotalFeatureDisplacement; - } - return result; -} - -void FeatureTrajectory::addPoint(const int& frameNum, const Point2f& p) { - positions.add(frameNum, p); - computeMotionData(frameNum); -} - -void FeatureTrajectory::write(TrajectoryDBAccess& trajectoryDB) const { - /// \todo save velocities - trajectoryDB.write(positions); -} - -#ifdef USE_OPENCV -/// \todo add option for anti-aliased drawing, thickness -void FeatureTrajectory::draw(Mat& img, const Scalar& color) const { - Point2f p1 = positions[0]; - for (unsigned int i=1; i= 3) { - Point2f displacement = positions[nPositions-1] - positions[nPositions-2]; - if (nPositions == 2) // duplicate first displacement so that positions and velocities have the same length - velocities.add(frameNum-1, displacement); - velocities.add(frameNum, displacement); - float dist = norm(displacement); - displacementDistances.push_back(dist); - } -} diff -r 32d2722d4028 -r 0f790de9437e c/Makefile --- a/c/Makefile Thu Aug 18 01:03:38 2011 -0400 +++ b/c/Makefile Thu Aug 18 22:25:21 2011 -0400 @@ -64,7 +64,7 @@ test: echo "coucou $(HOME)" -feature-based-tracking: feature-based-tracking.o cvutils.o Feature.o +feature-based-tracking: feature-based-tracking.o cvutils.o Motion.o $(CXX) $(CFLAGS) $(LIBS) $^ -o $(BUILD_DIR)/$@ $(LDFLAGS) track-features.o: track-features.cpp diff -r 32d2722d4028 -r 0f790de9437e c/Motion.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c/Motion.cpp Thu Aug 18 22:25:21 2011 -0400 @@ -0,0 +1,61 @@ +#include "Motion.hpp" + +#include "opencv2/core/core.hpp" +#include "opencv2/highgui/highgui.hpp" + +#include "src/TrajectoryDBAccessList.h" + +using namespace std; +using namespace cv; + +FeatureTrajectory::FeatureTrajectory(const int& frameNum, const cv::Point2f& p) { + addPoint(frameNum, p); +} + +bool FeatureTrajectory::largeDisplacement(const unsigned int& nDisplacements, const float& minTotalFeatureDisplacement) const { + bool result = true; + unsigned int nPositions = positions.size(); + if (nPositions > nDisplacements) { + float disp = 0; + for (int i=0; i minTotalFeatureDisplacement; + } + return result; +} + +void FeatureTrajectory::addPoint(const int& frameNum, const Point2f& p) { + positions.add(frameNum, p); + computeMotionData(frameNum); +} + +void FeatureTrajectory::write(TrajectoryDBAccess& trajectoryDB) const { + /// \todo save velocities + trajectoryDB.write(positions); +} + +#ifdef USE_OPENCV +/// \todo add option for anti-aliased drawing, thickness +void FeatureTrajectory::draw(Mat& img, const Scalar& color) const { + Point2f p1 = positions[0]; + for (unsigned int i=1; i= 3) { + Point2f displacement = positions[nPositions-1] - positions[nPositions-2]; + if (nPositions == 2) // duplicate first displacement so that positions and velocities have the same length + velocities.add(frameNum-1, displacement); + velocities.add(frameNum, displacement); + float dist = norm(displacement); + displacementDistances.push_back(dist); + } +} diff -r 32d2722d4028 -r 0f790de9437e c/feature-based-tracking.cpp --- a/c/feature-based-tracking.cpp Thu Aug 18 01:03:38 2011 -0400 +++ b/c/feature-based-tracking.cpp Thu Aug 18 22:25:21 2011 -0400 @@ -1,10 +1,11 @@ -#include "Feature.hpp" +#include "Motion.hpp" #include "Parameters.hpp" #include "cvutils.hpp" #include "utils.hpp" #include "src/Trajectory.h" #include "src/TrajectoryDBAccessList.h" +#include "src/TrajectoryDBAccessBlob.h" #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" @@ -117,9 +118,10 @@ } // database - TrajectoryDBAccessList trajectoryDB; - trajectoryDB.connect("test.sqlite"); - trajectoryDB.createTable(); + TrajectoryDBAccess* trajectoryDB = new TrajectoryDBAccessList(); + //TrajectoryDBAccess* trajectoryDB = new TrajectoryDBAccessBlob(); + trajectoryDB->connect("test.sqlite"); + trajectoryDB->createTable(); vector prevKpts, currKpts; vector prevPts, currPts, newPts; @@ -167,7 +169,7 @@ if (iter->feature->length() >= params.minFeatureTime) { iter->feature->setId(savedFeatureId); savedFeatureId++; - iter->feature->write(trajectoryDB); + iter->feature->write(*trajectoryDB); } iter = featurePointMatches.erase(iter); } else @@ -216,7 +218,7 @@ //currDesc.copyTo(prevDesc); } - trajectoryDB.disconnect(); + trajectoryDB->disconnect(); return 0; } diff -r 32d2722d4028 -r 0f790de9437e include/Feature.hpp --- a/include/Feature.hpp Thu Aug 18 01:03:38 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -#ifndef FEATURE_HPP -#define FEATURE_HPP - -#include "src/Trajectory.h" - -#include - -template 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 have been superior to minFeatureDisplacement - bool largeDisplacement(const int& nDisplacements, const float& minTotalFeatureDisplacement) const; - - //void shorten(void); - - void addPoint(const int& frameNum, const cv::Point2f& p); - - void write(TrajectoryDBAccess& trajectoryDB) const; - -#ifdef USE_OPENCV - void draw(cv::Mat& img, const cv::Scalar& color) const; -#endif - -protected: - Trajectory positions; - Trajectory velocities; - - std::vector displacementDistances; - - void computeMotionData(const int& frameNum); - -}; - -typedef boost::shared_ptr FeatureTrajectoryPtr; - -// class MovingObject {} -// roadUserType, group of features - -#endif diff -r 32d2722d4028 -r 0f790de9437e include/Motion.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/Motion.hpp Thu Aug 18 22:25:21 2011 -0400 @@ -0,0 +1,49 @@ +#ifndef FEATURE_HPP +#define FEATURE_HPP + +#include "src/Trajectory.h" + +#include + +template 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 have been superior to minFeatureDisplacement + bool largeDisplacement(const unsigned int& nDisplacements, const float& minTotalFeatureDisplacement) const; + + //void shorten(void); + + void addPoint(const int& frameNum, const cv::Point2f& p); + + void write(TrajectoryDBAccess& trajectoryDB) const; + +#ifdef USE_OPENCV + void draw(cv::Mat& img, const cv::Scalar& color) const; +#endif + +protected: + Trajectory positions; + Trajectory velocities; + + std::vector displacementDistances; + + void computeMotionData(const int& frameNum); + +}; + +typedef boost::shared_ptr FeatureTrajectoryPtr; + +// class MovingObject {} +// roadUserType, group of features + +#endif diff -r 32d2722d4028 -r 0f790de9437e include/Parameters.hpp --- a/include/Parameters.hpp Thu Aug 18 01:03:38 2011 -0400 +++ b/include/Parameters.hpp Thu Aug 18 22:25:21 2011 -0400 @@ -23,7 +23,7 @@ bool useHarrisDetector; float k; int pyramidLevel; - int nDisplacements; + unsigned int nDisplacements; float minFeatureDisplacement; float accelerationBound; float deviationBound;