Updated videostab module

This commit is contained in:
Alexey Spizhevoy
2012-04-02 12:26:05 +00:00
parent abbfa848ba
commit 56b5e6d8a8
6 changed files with 19 additions and 39 deletions

View File

@@ -76,7 +76,9 @@ public:
virtual void reset();
virtual Mat nextFrame();
int frameCount() { return static_cast<int>(reader_.get(CV_CAP_PROP_FRAME_COUNT)); }
int width() { return static_cast<int>(reader_.get(CV_CAP_PROP_FRAME_WIDTH)); }
int height() { return static_cast<int>(reader_.get(CV_CAP_PROP_FRAME_HEIGHT)); }
int count() { return static_cast<int>(reader_.get(CV_CAP_PROP_FRAME_COUNT)); }
double fps() { return reader_.get(CV_CAP_PROP_FPS); }
private:

View File

@@ -54,46 +54,31 @@ namespace videostab
class CV_EXPORTS IMotionStabilizer
{
public:
virtual ~IMotionStabilizer() {}
virtual void stabilize(const Mat *motions, int size, Mat *stabilizationMotions) const = 0;
};
class CV_EXPORTS MotionFilterBase : public IMotionStabilizer
{
public:
MotionFilterBase() : radius_(0) {}
virtual ~MotionFilterBase() {}
virtual void setRadius(int val) { radius_ = val; }
virtual int radius() const { return radius_; }
virtual void update() {}
virtual Mat stabilize(int index, const Mat *motions, int size) const = 0;
virtual void stabilize(const Mat *motions, int size, Mat *stabilizationMotions) const;
protected:
int radius_;
};
class CV_EXPORTS GaussianMotionFilter : public MotionFilterBase
{
public:
GaussianMotionFilter() : stdev_(-1.f) {}
GaussianMotionFilter(int radius, float stdev = -1.f)
{
setRadius(radius);
setStdev(stdev);
update();
}
GaussianMotionFilter(int radius = 15, float stdev = -1.f) { setParams(radius, stdev); }
void setStdev(float val) { stdev_ = val; }
void setParams(int radius, float stdev = -1.f);
int radius() const { return radius_; }
float stdev() const { return stdev_; }
virtual void update();
virtual Mat stabilize(int index, const Mat *motions, int size) const;
private:
int radius_;
float stdev_;
std::vector<float> weight_;
};

View File

@@ -136,12 +136,10 @@ public:
void setMotionFilter(Ptr<MotionFilterBase> val) { motionFilter_ = val; }
Ptr<MotionFilterBase> motionFilter() const { return motionFilter_; }
virtual void reset() { resetImpl(); }
virtual void reset();
virtual Mat nextFrame() { return nextStabilizedFrame(); }
private:
void resetImpl();
virtual void setUp(Mat &firstFrame);
virtual void estimateMotion();
virtual void stabilizeFrame();