1
/*M///////////////////////////////////////////////////////////////////////////////////////
3
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
5
// By downloading, copying, installing or using the software you agree to this license.
6
// If you do not agree to this license, do not download, install,
7
// copy or use the software.
11
// For Open Source Computer Vision Library
13
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
14
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
15
// Third party copyrights are property of their respective owners.
17
// Redistribution and use in source and binary forms, with or without modification,
18
// are permitted provided that the following conditions are met:
20
// * Redistribution's of source code must retain the above copyright notice,
21
// this list of conditions and the following disclaimer.
23
// * Redistribution's in binary form must reproduce the above copyright notice,
24
// this list of conditions and the following disclaimer in the documentation
25
// and/or other materials provided with the distribution.
27
// * The name of the copyright holders may not be used to endorse or promote products
28
// derived from this software without specific prior written permission.
30
// This software is provided by the copyright holders and contributors "as is" and
31
// any express or implied warranties, including, but not limited to, the implied
32
// warranties of merchantability and fitness for a particular purpose are disclaimed.
33
// In no event shall the Intel Corporation or contributors be liable for any direct,
34
// indirect, incidental, special, exemplary, or consequential damages
35
// (including, but not limited to, procurement of substitute goods or services;
36
// loss of use, data, or profits; or business interruption) however caused
37
// and on any theory of liability, whether in contract, strict liability,
38
// or tort (including negligence or otherwise) arising in any way out of
39
// the use of this software, even if advised of the possibility of such damage.
43
#ifndef __OPENCV_SUPERRES_OPTICAL_FLOW_HPP__
44
#define __OPENCV_SUPERRES_OPTICAL_FLOW_HPP__
46
#include "opencv2/core.hpp"
53
//! @addtogroup superres
56
class CV_EXPORTS DenseOpticalFlowExt : public cv::Algorithm
59
virtual void calc(InputArray frame0, InputArray frame1, OutputArray flow1, OutputArray flow2 = noArray()) = 0;
60
virtual void collectGarbage() = 0;
64
class CV_EXPORTS FarnebackOpticalFlow : public virtual DenseOpticalFlowExt
67
/** @see setPyrScale */
68
virtual double getPyrScale() const = 0;
69
/** @copybrief getPyrScale @see getPyrScale */
70
virtual void setPyrScale(double val) = 0;
71
/** @see setLevelsNumber */
72
virtual int getLevelsNumber() const = 0;
73
/** @copybrief getLevelsNumber @see getLevelsNumber */
74
virtual void setLevelsNumber(int val) = 0;
75
/** @see setWindowSize */
76
virtual int getWindowSize() const = 0;
77
/** @copybrief getWindowSize @see getWindowSize */
78
virtual void setWindowSize(int val) = 0;
79
/** @see setIterations */
80
virtual int getIterations() const = 0;
81
/** @copybrief getIterations @see getIterations */
82
virtual void setIterations(int val) = 0;
84
virtual int getPolyN() const = 0;
85
/** @copybrief getPolyN @see getPolyN */
86
virtual void setPolyN(int val) = 0;
87
/** @see setPolySigma */
88
virtual double getPolySigma() const = 0;
89
/** @copybrief getPolySigma @see getPolySigma */
90
virtual void setPolySigma(double val) = 0;
92
virtual int getFlags() const = 0;
93
/** @copybrief getFlags @see getFlags */
94
virtual void setFlags(int val) = 0;
96
CV_EXPORTS Ptr<FarnebackOpticalFlow> createOptFlow_Farneback();
97
CV_EXPORTS Ptr<FarnebackOpticalFlow> createOptFlow_Farneback_CUDA();
100
// CV_EXPORTS Ptr<DenseOpticalFlowExt> createOptFlow_Simple();
103
class CV_EXPORTS DualTVL1OpticalFlow : public virtual DenseOpticalFlowExt
107
virtual double getTau() const = 0;
108
/** @copybrief getTau @see getTau */
109
virtual void setTau(double val) = 0;
110
/** @see setLambda */
111
virtual double getLambda() const = 0;
112
/** @copybrief getLambda @see getLambda */
113
virtual void setLambda(double val) = 0;
115
virtual double getTheta() const = 0;
116
/** @copybrief getTheta @see getTheta */
117
virtual void setTheta(double val) = 0;
118
/** @see setScalesNumber */
119
virtual int getScalesNumber() const = 0;
120
/** @copybrief getScalesNumber @see getScalesNumber */
121
virtual void setScalesNumber(int val) = 0;
122
/** @see setWarpingsNumber */
123
virtual int getWarpingsNumber() const = 0;
124
/** @copybrief getWarpingsNumber @see getWarpingsNumber */
125
virtual void setWarpingsNumber(int val) = 0;
126
/** @see setEpsilon */
127
virtual double getEpsilon() const = 0;
128
/** @copybrief getEpsilon @see getEpsilon */
129
virtual void setEpsilon(double val) = 0;
130
/** @see setIterations */
131
virtual int getIterations() const = 0;
132
/** @copybrief getIterations @see getIterations */
133
virtual void setIterations(int val) = 0;
134
/** @see setUseInitialFlow */
135
virtual bool getUseInitialFlow() const = 0;
136
/** @copybrief getUseInitialFlow @see getUseInitialFlow */
137
virtual void setUseInitialFlow(bool val) = 0;
139
CV_EXPORTS Ptr<DualTVL1OpticalFlow> createOptFlow_DualTVL1();
140
CV_EXPORTS Ptr<DualTVL1OpticalFlow> createOptFlow_DualTVL1_CUDA();
143
class CV_EXPORTS BroxOpticalFlow : public virtual DenseOpticalFlowExt
146
//! @brief Flow smoothness
148
virtual double getAlpha() const = 0;
149
/** @copybrief getAlpha @see getAlpha */
150
virtual void setAlpha(double val) = 0;
151
//! @brief Gradient constancy importance
153
virtual double getGamma() const = 0;
154
/** @copybrief getGamma @see getGamma */
155
virtual void setGamma(double val) = 0;
156
//! @brief Pyramid scale factor
157
/** @see setScaleFactor */
158
virtual double getScaleFactor() const = 0;
159
/** @copybrief getScaleFactor @see getScaleFactor */
160
virtual void setScaleFactor(double val) = 0;
161
//! @brief Number of lagged non-linearity iterations (inner loop)
162
/** @see setInnerIterations */
163
virtual int getInnerIterations() const = 0;
164
/** @copybrief getInnerIterations @see getInnerIterations */
165
virtual void setInnerIterations(int val) = 0;
166
//! @brief Number of warping iterations (number of pyramid levels)
167
/** @see setOuterIterations */
168
virtual int getOuterIterations() const = 0;
169
/** @copybrief getOuterIterations @see getOuterIterations */
170
virtual void setOuterIterations(int val) = 0;
171
//! @brief Number of linear system solver iterations
172
/** @see setSolverIterations */
173
virtual int getSolverIterations() const = 0;
174
/** @copybrief getSolverIterations @see getSolverIterations */
175
virtual void setSolverIterations(int val) = 0;
177
CV_EXPORTS Ptr<BroxOpticalFlow> createOptFlow_Brox_CUDA();
180
class PyrLKOpticalFlow : public virtual DenseOpticalFlowExt
183
/** @see setWindowSize */
184
virtual int getWindowSize() const = 0;
185
/** @copybrief getWindowSize @see getWindowSize */
186
virtual void setWindowSize(int val) = 0;
187
/** @see setMaxLevel */
188
virtual int getMaxLevel() const = 0;
189
/** @copybrief getMaxLevel @see getMaxLevel */
190
virtual void setMaxLevel(int val) = 0;
191
/** @see setIterations */
192
virtual int getIterations() const = 0;
193
/** @copybrief getIterations @see getIterations */
194
virtual void setIterations(int val) = 0;
196
CV_EXPORTS Ptr<PyrLKOpticalFlow> createOptFlow_PyrLK_CUDA();
203
#endif // __OPENCV_SUPERRES_OPTICAL_FLOW_HPP__