123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #ifndef OPENCV_VIDEOSTAB_DEBLURRING_HPP
- #define OPENCV_VIDEOSTAB_DEBLURRING_HPP
- #include <vector>
- #include "opencv2/core.hpp"
- namespace cv
- {
- namespace videostab
- {
- CV_EXPORTS float calcBlurriness(const Mat &frame);
- class CV_EXPORTS DeblurerBase
- {
- public:
- DeblurerBase() : radius_(0), frames_(0), motions_(0), blurrinessRates_(0) {}
- virtual ~DeblurerBase() {}
- virtual void setRadius(int val) { radius_ = val; }
- virtual int radius() const { return radius_; }
- virtual void deblur(int idx, Mat &frame) = 0;
-
- virtual void setFrames(const std::vector<Mat> &val) { frames_ = &val; }
- virtual const std::vector<Mat>& frames() const { return *frames_; }
- virtual void setMotions(const std::vector<Mat> &val) { motions_ = &val; }
- virtual const std::vector<Mat>& motions() const { return *motions_; }
- virtual void setBlurrinessRates(const std::vector<float> &val) { blurrinessRates_ = &val; }
- virtual const std::vector<float>& blurrinessRates() const { return *blurrinessRates_; }
- protected:
- int radius_;
- const std::vector<Mat> *frames_;
- const std::vector<Mat> *motions_;
- const std::vector<float> *blurrinessRates_;
- };
- class CV_EXPORTS NullDeblurer : public DeblurerBase
- {
- public:
- virtual void deblur(int , Mat &) CV_OVERRIDE {}
- };
- class CV_EXPORTS WeightingDeblurer : public DeblurerBase
- {
- public:
- WeightingDeblurer();
- void setSensitivity(float val) { sensitivity_ = val; }
- float sensitivity() const { return sensitivity_; }
- virtual void deblur(int idx, Mat &frame) CV_OVERRIDE;
- private:
- float sensitivity_;
- Mat_<float> bSum_, gSum_, rSum_, wSum_;
- };
- }
- }
- #endif
|