Skip to content

Commit fa460b8

Browse files
authored
Merge pull request #989 from sovrasov:tracking_cleanup_vec_fix
MedianFlow: fix status not erased in filterPointsInVectors, update thresholds in tests
2 parents 3cdc0e4 + 8016ed2 commit fa460b8

File tree

2 files changed

+18
-39
lines changed

2 files changed

+18
-39
lines changed

modules/tracking/src/trackerMedianFlow.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ size_t filterPointsInVectors(std::vector<T>& status, std::vector<Point2f>& vec1,
192192
}
193193
vec1.erase(vec1.begin() + first_bad_idx, vec1.end());
194194
vec2.erase(vec2.begin() + first_bad_idx, vec2.end());
195+
status.erase(status.begin() + first_bad_idx, status.end());
195196

196197
return first_bad_idx;
197198
}

modules/tracking/test/test_trackers.cpp

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ class TrackerTest
8383
{
8484
public:
8585

86-
TrackerTest(Ptr<Tracker> _tracker, string _video, float _overlapThreshold,
87-
float _distanceThreshold, int _shift = NoTransform, int _segmentIdx = 1, int _numSegments = 10 );
86+
TrackerTest(Ptr<Tracker> _tracker, string _video, float _distanceThreshold,
87+
float _overlapThreshold, int _shift = NoTransform, int _segmentIdx = 1, int _numSegments = 10 );
8888
virtual ~TrackerTest();
8989
virtual void run();
9090

@@ -117,12 +117,12 @@ class TrackerTest
117117

118118
};
119119

120-
TrackerTest::TrackerTest(Ptr<Tracker> _tracker, string _video, float _overlapThreshold,
121-
float _distanceThreshold, int _shift, int _segmentIdx, int _numSegments ) :
120+
TrackerTest::TrackerTest(Ptr<Tracker> _tracker, string _video, float _distanceThreshold,
121+
float _overlapThreshold, int _shift, int _segmentIdx, int _numSegments ) :
122122
tracker( _tracker ),
123123
video( _video ),
124-
overlapThreshold( _distanceThreshold ),
125-
distanceThreshold( _overlapThreshold ),
124+
overlapThreshold( _overlapThreshold ),
125+
distanceThreshold( _distanceThreshold ),
126126
segmentIdx(_segmentIdx),
127127
shift(_shift),
128128
numSegments(_numSegments)
@@ -156,30 +156,8 @@ float TrackerTest::calcDistance( Rect a, Rect b )
156156

157157
float TrackerTest::calcOverlap( Rect a, Rect b )
158158
{
159-
float aArea = (float)(a.width * a.height);
160-
float bArea = (float)(b.width * b.height);
161-
162-
if( aArea < bArea )
163-
{
164-
a.x -= ( b.width - a.width ) / 2;
165-
a.y -= ( b.height - a.height ) / 2;
166-
a.width = b.width;
167-
a.height = b.height;
168-
}
169-
else
170-
{
171-
b.x -= ( a.width - b.width ) / 2;
172-
b.y -= ( a.height - b.height ) / 2;
173-
b.width = a.width;
174-
b.height = a.height;
175-
}
176-
177-
Rect rectIntersection = a & b;
178-
Rect rectUnion = a | b;
179-
float iArea = (float)(rectIntersection.width * rectIntersection.height);
180-
float uArea = (float)(rectUnion.width * rectUnion.height);
181-
float overlap = iArea / uArea;
182-
return overlap;
159+
float rectIntersectionArea = (float)(a & b).area();
160+
return rectIntersectionArea / (a.area() + b.area() - rectIntersectionArea);
183161
}
184162

185163
Rect TrackerTest::applyShift(Rect bb)
@@ -461,19 +439,19 @@ PARAM_TEST_CASE(DistanceAndOverlap, string)
461439

462440
TEST_P(DistanceAndOverlap, MedianFlow)
463441
{
464-
TrackerTest test( Tracker::create( "MEDIANFLOW" ), dataset, 120, .2f, NoTransform, 1, 1);
442+
TrackerTest test( Tracker::create( "MEDIANFLOW" ), dataset, 35, .5f, NoTransform, 1, 1);
465443
test.run();
466444
}
467445

468446
TEST_P(DistanceAndOverlap, MIL)
469447
{
470-
TrackerTest test( Tracker::create( "MIL" ), dataset, 30, 0.65f, NoTransform);
448+
TrackerTest test( Tracker::create( "MIL" ), dataset, 30, .65f, NoTransform);
471449
test.run();
472450
}
473451

474452
TEST_P(DistanceAndOverlap, Boosting)
475453
{
476-
TrackerTest test( Tracker::create( "BOOSTING" ), dataset, 70, .65f, NoTransform);
454+
TrackerTest test( Tracker::create( "BOOSTING" ), dataset, 70, .7f, NoTransform);
477455
test.run();
478456
}
479457

@@ -486,13 +464,13 @@ TEST_P(DistanceAndOverlap, TLD)
486464
//Tests with shifted initial window
487465
TEST_P(DistanceAndOverlap, Shifted_Data_MedianFlow)
488466
{
489-
TrackerTest test( Tracker::create( "MEDIANFLOW" ), dataset, 120, .2f, CenterShiftLeft, 1, 1);
467+
TrackerTest test( Tracker::create( "MEDIANFLOW" ), dataset, 80, .2f, CenterShiftLeft, 1, 1);
490468
test.run();
491469
}
492470

493471
TEST_P(DistanceAndOverlap, Shifted_Data_MIL)
494472
{
495-
TrackerTest test( Tracker::create( "MIL" ), dataset, 30, 0.65f, CenterShiftLeft);
473+
TrackerTest test( Tracker::create( "MIL" ), dataset, 30, .6f, CenterShiftLeft);
496474
test.run();
497475
}
498476

@@ -511,25 +489,25 @@ TEST_P(DistanceAndOverlap, Shifted_Data_TLD)
511489
//Tests with scaled initial window
512490
TEST_P(DistanceAndOverlap, Scaled_Data_MedianFlow)
513491
{
514-
TrackerTest test( Tracker::create( "MEDIANFLOW" ), dataset, 120, .2f, Scale_1_1, 1, 1);
492+
TrackerTest test( Tracker::create( "MEDIANFLOW" ), dataset, 25, .5f, Scale_1_1, 1, 1);
515493
test.run();
516494
}
517495

518496
TEST_P(DistanceAndOverlap, Scaled_Data_MIL)
519497
{
520-
TrackerTest test( Tracker::create( "MIL" ), dataset, 30, 0.65f, Scale_1_1);
498+
TrackerTest test( Tracker::create( "MIL" ), dataset, 30, .7f, Scale_1_1);
521499
test.run();
522500
}
523501

524502
TEST_P(DistanceAndOverlap, Scaled_Data_Boosting)
525503
{
526-
TrackerTest test( Tracker::create( "BOOSTING" ), dataset, 80, .65f, Scale_1_1);
504+
TrackerTest test( Tracker::create( "BOOSTING" ), dataset, 80, .7f, Scale_1_1);
527505
test.run();
528506
}
529507

530508
TEST_P(DistanceAndOverlap, Scaled_Data_TLD)
531509
{
532-
TrackerTest test( Tracker::create( "TLD" ), dataset, 120, .4f, Scale_1_1);
510+
TrackerTest test( Tracker::create( "TLD" ), dataset, 120, .45f, Scale_1_1);
533511
test.run();
534512
}
535513

0 commit comments

Comments
 (0)