Skip to content

Commit de378a7

Browse files
committed
Merge pull request #729 from vbystricky:dis_flow
2 parents 986a283 + 5a1fd4c commit de378a7

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

modules/optflow/include/opencv2/optflow.hpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,25 @@ class CV_EXPORTS_W DISOpticalFlow : public DenseOpticalFlow
302302
/** @copybrief getGradientDescentIterations @see getGradientDescentIterations */
303303
CV_WRAP virtual void setVariationalRefinementIterations(int val) = 0;
304304

305+
/** @brief Weight of the smoothness term
306+
@see setVariationalRefinementAlpha */
307+
CV_WRAP virtual float getVariationalRefinementAlpha() const = 0;
308+
/** @copybrief getVariationalRefinementAlpha @see getVariationalRefinementAlpha */
309+
CV_WRAP virtual void setVariationalRefinementAlpha(float val) = 0;
310+
311+
/** @brief Weight of the color constancy term
312+
@see setVariationalRefinementDelta */
313+
CV_WRAP virtual float getVariationalRefinementDelta() const = 0;
314+
/** @copybrief getVariationalRefinementDelta @see getVariationalRefinementDelta */
315+
CV_WRAP virtual void setVariationalRefinementDelta(float val) = 0;
316+
317+
/** @brief Weight of the gradient constancy term
318+
@see setVariationalRefinementGamma */
319+
CV_WRAP virtual float getVariationalRefinementGamma() const = 0;
320+
/** @copybrief getVariationalRefinementGamma @see getVariationalRefinementGamma */
321+
CV_WRAP virtual void setVariationalRefinementGamma(float val) = 0;
322+
323+
305324
/** @brief Whether to use mean-normalization of patches when computing patch distance. It is turned on
306325
by default as it typically provides a noticeable quality boost because of increased robustness to
307326
illumanition variations. Turn it off if you are certain that your sequence does't contain any changes

modules/optflow/src/dis_flow.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ class DISOpticalFlowImpl : public DISOpticalFlow
6565
int patch_stride;
6666
int grad_descent_iter;
6767
int variational_refinement_iter;
68+
float variational_refinement_alpha;
69+
float variational_refinement_gamma;
70+
float variational_refinement_delta;
6871
bool use_mean_normalization;
6972
bool use_spatial_propagation;
7073

@@ -84,6 +87,13 @@ class DISOpticalFlowImpl : public DISOpticalFlow
8487
void setGradientDescentIterations(int val) { grad_descent_iter = val; }
8588
int getVariationalRefinementIterations() const { return variational_refinement_iter; }
8689
void setVariationalRefinementIterations(int val) { variational_refinement_iter = val; }
90+
float getVariationalRefinementAlpha() const { return variational_refinement_alpha; }
91+
void setVariationalRefinementAlpha(float val) { variational_refinement_alpha = val; }
92+
float getVariationalRefinementDelta() const { return variational_refinement_delta; }
93+
void setVariationalRefinementDelta(float val) { variational_refinement_delta = val; }
94+
float getVariationalRefinementGamma() const { return variational_refinement_gamma; }
95+
void setVariationalRefinementGamma(float val) { variational_refinement_gamma = val; }
96+
8797
bool getUseMeanNormalization() const { return use_mean_normalization; }
8898
void setUseMeanNormalization(bool val) { use_mean_normalization = val; }
8999
bool getUseSpatialPropagation() const { return use_spatial_propagation; }
@@ -161,6 +171,10 @@ DISOpticalFlowImpl::DISOpticalFlowImpl()
161171
patch_stride = 4;
162172
grad_descent_iter = 16;
163173
variational_refinement_iter = 5;
174+
variational_refinement_alpha = 20.f;
175+
variational_refinement_gamma = 10.f;
176+
variational_refinement_delta = 5.f;
177+
164178
border_size = 16;
165179
use_mean_normalization = true;
166180
use_spatial_propagation = true;
@@ -234,9 +248,9 @@ void DISOpticalFlowImpl::prepareBuffers(Mat &I0, Mat &I1)
234248
spatialGradient(I0s[i], I0xs[i], I0ys[i]);
235249
Ux[i].create(cur_rows, cur_cols);
236250
Uy[i].create(cur_rows, cur_cols);
237-
variational_refinement_processors[i]->setAlpha(20.0f);
238-
variational_refinement_processors[i]->setDelta(5.0f);
239-
variational_refinement_processors[i]->setGamma(10.0f);
251+
variational_refinement_processors[i]->setAlpha(variational_refinement_alpha);
252+
variational_refinement_processors[i]->setDelta(variational_refinement_delta);
253+
variational_refinement_processors[i]->setGamma(variational_refinement_gamma);
240254
variational_refinement_processors[i]->setSorIterations(5);
241255
variational_refinement_processors[i]->setFixedPointIterations(variational_refinement_iter);
242256
}

0 commit comments

Comments
 (0)