Video Stabilization

The video stabilization module contains a set of functions and classes that can be used to solve the problem of video stabilization. There are a few methods implemented, most of them are described in the papers [56] and [34]. However, there are some extensions and deviations from the original paper methods.

References

  1. “Full-Frame Video Stabilization with Motion Inpainting” Yasuyuki Matsushita, Eyal Ofek, Weina Ge, Xiaoou Tang, Senior Member, and Heung-Yeung Shum
  2. “Auto-Directed Video Stabilization with Robust L1 Optimal Camera Paths” Matthias Grundmann, Vivek Kwatra, Irfan Essa
// classes

class cv::videostab::ColorAverageInpainter;
class cv::videostab::ColorInpainter;
class cv::videostab::ConsistentMosaicInpainter;
class cv::videostab::DeblurerBase;
class cv::videostab::IDenseOptFlowEstimator;
class cv::videostab::IFrameSource;
class cv::videostab::ILog;
class cv::videostab::IOutlierRejector;
class cv::videostab::ISparseOptFlowEstimator;
class cv::videostab::InpainterBase;
class cv::videostab::InpaintingPipeline;
class cv::videostab::LogToStdout;
class cv::videostab::MoreAccurateMotionWobbleSuppressor;
class cv::videostab::MoreAccurateMotionWobbleSuppressorBase;
class cv::videostab::MotionInpainter;
class cv::videostab::NullDeblurer;
class cv::videostab::NullFrameSource;
class cv::videostab::NullInpainter;
class cv::videostab::NullLog;
class cv::videostab::NullOutlierRejector;
class cv::videostab::NullWobbleSuppressor;
class cv::videostab::OnePassStabilizer;
class cv::videostab::PyrLkOptFlowEstimatorBase;
class cv::videostab::SparsePyrLkOptFlowEstimator;
class cv::videostab::StabilizerBase;
class cv::videostab::TranslationBasedLocalOutlierRejector;
class cv::videostab::TwoPassStabilizer;
class cv::videostab::VideoFileSource;
class cv::videostab::WeightingDeblurer;
class cv::videostab::WobbleSuppressorBase;

// global functions

template <typename T>
T&
cv::videostab::at(
    int idx,
    std::vector<T>& items
    );

template <typename T>
const T&
cv::videostab::at(
    int idx,
    const std::vector<T>& items
    );

float
cv::videostab::calcBlurriness(const Mat& frame);

void
cv::videostab::calcFlowMask(
    const Mat& flowX,
    const Mat& flowY,
    const Mat& errors,
    float maxError,
    const Mat& mask0,
    const Mat& mask1,
    Mat& flowMask
    );

void
cv::videostab::completeFrameAccordingToFlow(
    const Mat& flowMask,
    const Mat& flowX,
    const Mat& flowY,
    const Mat& frame1,
    const Mat& mask1,
    float distThresh,
    Mat& frame0,
    Mat& mask0
    );