Commit a0544461 authored by Alexander Alekhin's avatar Alexander Alekhin

test: tvl1 test check update

parent 3d8395ca
...@@ -115,35 +115,39 @@ namespace ...@@ -115,35 +115,39 @@ namespace
return !cvIsNaN(u.x) && !cvIsNaN(u.y) && (fabs(u.x) < 1e9) && (fabs(u.y) < 1e9); return !cvIsNaN(u.x) && !cvIsNaN(u.y) && (fabs(u.x) < 1e9) && (fabs(u.y) < 1e9);
} }
double calcRMSE(const Mat_<Point2f>& flow1, const Mat_<Point2f>& flow2) void check(const Mat_<Point2f>& gold, const Mat_<Point2f>& flow, double threshold = 0.1, double expectedAccuracy = 0.95)
{ {
double sum = 0.0; threshold = threshold*threshold;
int counter = 0;
for (int i = 0; i < flow1.rows; ++i) size_t gold_counter = 0;
size_t valid_counter = 0;
for (int i = 0; i < gold.rows; ++i)
{ {
for (int j = 0; j < flow1.cols; ++j) for (int j = 0; j < gold.cols; ++j)
{ {
const Point2f u1 = flow1(i, j); const Point2f u1 = gold(i, j);
const Point2f u2 = flow2(i, j); const Point2f u2 = flow(i, j);
if (isFlowCorrect(u1) && isFlowCorrect(u2)) if (isFlowCorrect(u1))
{ {
const Point2f diff = u1 - u2; gold_counter++;
sum += diff.ddot(diff); if (isFlowCorrect(u2))
++counter; {
const Point2f diff = u1 - u2;
double err = diff.ddot(diff);
if (err <= threshold)
valid_counter++;
}
} }
} }
} }
EXPECT_GE(valid_counter, expectedAccuracy * gold_counter);
return sqrt(sum / (1e-9 + counter));
} }
} }
TEST(Video_calcOpticalFlowDual_TVL1, Regression) TEST(Video_calcOpticalFlowDual_TVL1, Regression)
{ {
const double MAX_RMSE = 0.02;
const string frame1_path = TS::ptr()->get_data_path() + "optflow/RubberWhale1.png"; const string frame1_path = TS::ptr()->get_data_path() + "optflow/RubberWhale1.png";
const string frame2_path = TS::ptr()->get_data_path() + "optflow/RubberWhale2.png"; const string frame2_path = TS::ptr()->get_data_path() + "optflow/RubberWhale2.png";
const string gold_flow_path = TS::ptr()->get_data_path() + "optflow/tvl1_flow.flo"; const string gold_flow_path = TS::ptr()->get_data_path() + "optflow/tvl1_flow.flo";
...@@ -167,7 +171,6 @@ TEST(Video_calcOpticalFlowDual_TVL1, Regression) ...@@ -167,7 +171,6 @@ TEST(Video_calcOpticalFlowDual_TVL1, Regression)
ASSERT_EQ(gold.rows, flow.rows); ASSERT_EQ(gold.rows, flow.rows);
ASSERT_EQ(gold.cols, flow.cols); ASSERT_EQ(gold.cols, flow.cols);
const double err = calcRMSE(gold, flow); check(gold, flow);
EXPECT_LE(err, MAX_RMSE);
#endif #endif
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment