Skip to content
Snippets Groups Projects
Commit 1b479aba authored by Joan Solà Ortega's avatar Joan Solà Ortega
Browse files

Remove all traces of tracks_kf_

parent e6ee6974
No related branches found
No related tags found
1 merge request!287Redesign track kf
Pipeline #3645 passed
......@@ -99,10 +99,10 @@ class TrackMatrix
CaptureBasePtr firstCapture(size_t _track_id);
// tracks across captures that belong to keyframe
SizeStd numKeyframeTracks();
// SizeStd numKeyframeTracks();
Track trackAtKeyframes(size_t _track_id);
bool markKeyframe(CaptureBasePtr _capture);
bool unmarkKeyframe(CaptureBasePtr _capture);
// bool markKeyframe(CaptureBasePtr _capture);
// bool unmarkKeyframe(CaptureBasePtr _capture);
private:
......@@ -111,8 +111,8 @@ class TrackMatrix
// Along track: maps of Feature pointers indexed by time stamp.
// tracks across all Captures
map<size_t, Track > tracks_; // map indexed by track_Id of ( maps indexed by TimeStamp of ( features ) )
// tracks across captures that belong to keyframe
map<size_t, Track > tracks_kf_; // map indexed by track_Id of ( maps indexed by TimeStamp of ( features ) )
// // tracks across captures that belong to keyframe
// map<size_t, Track > tracks_kf_; // map indexed by track_Id of ( maps indexed by TimeStamp of ( features ) )
// Across track: maps of Feature pointers indexed by track_Id.
map<CaptureBasePtr, Snapshot > snapshots_; // map indexed by capture_ptr of ( maps indexed by track_Id of ( features ) )
......
......@@ -53,8 +53,6 @@ void TrackMatrix::add(size_t _track_id, CaptureBasePtr _cap, FeatureBasePtr _ftr
_ftr->setCapture(_cap);
tracks_[_track_id].emplace(_cap->getTimeStamp(), _ftr);
snapshots_[_cap].emplace(_track_id, _ftr); // will create new snapshot if _cap_id is not present
if (_cap->getFrame() && _cap->getFrame()->isKey())
tracks_kf_[_track_id].emplace(_cap->getTimeStamp(), _ftr);
}
void TrackMatrix::remove(size_t _track_id)
......@@ -74,9 +72,6 @@ void TrackMatrix::remove(size_t _track_id)
// Remove track
tracks_.erase(_track_id);
}
if (tracks_kf_.count(_track_id))
// Remove track
tracks_kf_.erase(_track_id);
}
void TrackMatrix::remove(CaptureBasePtr _cap)
......@@ -91,12 +86,6 @@ void TrackMatrix::remove(CaptureBasePtr _cap)
tracks_.at(trk_id).erase(ts);
if (tracks_.at(trk_id).empty())
tracks_.erase(trk_id);
if (_cap->getFrame() && _cap->getFrame()->isKey())
{
tracks_kf_.at(trk_id).erase(ts);
if (tracks_kf_.at(trk_id).empty())
tracks_kf_.erase(trk_id);
}
}
// remove snapshot
......@@ -115,13 +104,6 @@ void TrackMatrix::remove(FeatureBasePtr _ftr)
if (tracks_.at(_ftr->trackId()).empty())
tracks_.erase(_ftr->trackId());
if (cap->getFrame() && cap->getFrame()->isKey())
{
tracks_kf_ .at(_ftr->trackId()).erase(cap->getTimeStamp());
if (tracks_kf_.at(_ftr->trackId()).empty())
tracks_kf_.erase(_ftr->trackId());
}
snapshots_.at(cap) .erase(_ftr->trackId());
if (snapshots_.at(cap).empty())
snapshots_.erase(cap);
......@@ -134,11 +116,6 @@ size_t TrackMatrix::numTracks()
return tracks_.size();
}
size_t TrackMatrix::numKeyframeTracks()
{
return tracks_kf_.size();
}
size_t TrackMatrix::trackSize(size_t _track_id)
{
return track(_track_id).size();
......@@ -220,14 +197,7 @@ CaptureBasePtr TrackMatrix::firstCapture(size_t _track_id)
Track TrackMatrix::trackAtKeyframes(size_t _track_id)
{
// // This requires tracks_kf_
// if (tracks_kf_.count(_track_id) > 0)
// return tracks_kf_.at(_track_id);
// else
// return Track();
// This does not require any tracks_kf_; it assembles a track_kf on the fly by checking each capture's frame.
// We assemble a track_kf on the fly by checking each capture's frame.
if (tracks_.count(_track_id))
{
Track track_kf;
......@@ -244,49 +214,4 @@ Track TrackMatrix::trackAtKeyframes(size_t _track_id)
return Track();
}
bool TrackMatrix::markKeyframe(CaptureBasePtr _capture)
{
if (_capture->getFrame() && _capture->getFrame()->isKey())
{
auto snap = snapshot(_capture);
if (snap.empty())
return false;
for (auto pair_trkid_ftr : snap)
{
auto track_id = pair_trkid_ftr.first;
auto ftr = pair_trkid_ftr.second;
auto ts = _capture->getFrame()->getTimeStamp();
tracks_kf_[track_id][ts] = ftr;
}
return true;
}
return false;
}
bool TrackMatrix::unmarkKeyframe(CaptureBasePtr _capture)
{
bool removed = false;
if (_capture)
{
auto ts = _capture->getTimeStamp();
for (auto& pair_id_trk : tracks_kf_)
{
if (pair_id_trk.second.erase(ts)) // remove feature from track
{
if (pair_id_trk.second.empty()) // remove empty tracks
{
tracks_kf_.erase(pair_id_trk.first);
if (tracks_kf_.empty())
break;
}
removed = true;
}
}
}
return removed;
}
}
......@@ -60,26 +60,21 @@ TEST_F(TrackMatrixTest, newTrack)
{
track_matrix.newTrack(C0, f0);
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
track_matrix.newTrack(C0, f1);
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 2);
track_matrix.newTrack(C1, f2);
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 3);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 2);
track_matrix.newTrack(C1, f3);
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 4);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 2);
}
TEST_F(TrackMatrixTest, add)
{
track_matrix.newTrack(C0, f0);
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
track_matrix.add(f0->trackId(), C1, f1);
/* KC0 C1 C2 snapshots
......@@ -89,7 +84,6 @@ TEST_F(TrackMatrixTest, add)
ASSERT_EQ(track_matrix.trackSize(f1->trackId()), (unsigned int) 2);
ASSERT_EQ(f1->trackId(), f0->trackId());
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
track_matrix.add(f0->trackId(), C2, f2);
/* KC0 C1 C2 snapshots
......@@ -99,7 +93,6 @@ TEST_F(TrackMatrixTest, add)
ASSERT_EQ(track_matrix.trackSize(f2->trackId()), (unsigned int) 3);
ASSERT_EQ(f2->trackId(), f0->trackId());
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
track_matrix.add(f0->trackId(), C2, f2);
/* KC0 C1 C2 snapshots
......@@ -111,7 +104,6 @@ TEST_F(TrackMatrixTest, add)
ASSERT_EQ(track_matrix.trackSize(f3->trackId()), (unsigned int) 1);
ASSERT_NE(f3->trackId(), f0->trackId());
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
}
TEST_F(TrackMatrixTest, numTracks)
......@@ -182,7 +174,6 @@ TEST_F(TrackMatrixTest, remove_ftr)
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 2);
track_matrix.remove(f0);
/* C0 C1 C2 snapshots
......@@ -198,7 +189,6 @@ TEST_F(TrackMatrixTest, remove_ftr)
ASSERT_EQ(track_matrix.snapshot(C0).at(f2->trackId()), f2);
ASSERT_EQ(track_matrix.snapshot(C1).size(), (unsigned int) 1);
ASSERT_EQ(track_matrix.snapshot(C1).at(f0->trackId()), f1);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
track_matrix.remove(f1);
/* C0 C1 C2 snapshots
......@@ -207,14 +197,12 @@ TEST_F(TrackMatrixTest, remove_ftr)
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
ASSERT_EQ(track_matrix.firstFeature(f2->trackId()), f2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
track_matrix.remove(f2);
/* C0 C1 C2 snapshots
*
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 0);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 0);
}
TEST_F(TrackMatrixTest, remove_trk)
......@@ -231,16 +219,13 @@ TEST_F(TrackMatrixTest, remove_trk)
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 2);
track_matrix.remove(f0->trackId());
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
ASSERT_EQ(track_matrix.firstFeature(f2->trackId()), f2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
track_matrix.remove(f2->trackId());
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 0);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 0);
}
TEST_F(TrackMatrixTest, remove_snapshot)
......@@ -257,7 +242,6 @@ TEST_F(TrackMatrixTest, remove_snapshot)
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 2);
track_matrix.remove(C0);
/* C1 C2 snapshots
......@@ -266,11 +250,9 @@ TEST_F(TrackMatrixTest, remove_snapshot)
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 1);
ASSERT_EQ(track_matrix.firstFeature(f1->trackId()), f1);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 0);
track_matrix.remove(C1);
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 0);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 0);
}
TEST_F(TrackMatrixTest, track)
......@@ -410,66 +392,6 @@ TEST_F(TrackMatrixTest, trackAtKeyframes)
ASSERT_EQ(trk_kf_1.size(), 0);
}
TEST_F(TrackMatrixTest, markKeyframe)
{
track_matrix.newTrack(C0, f0);
track_matrix.add(f0->trackId(), C1, f1);
track_matrix.add(f0->trackId(), C2, f2);
track_matrix.add(1, C1, f3);
/* KC0 C1 C2 C3 snapshots
*
* f0---f1---f2 trk 0
* |
* f3 trk 1
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
C1->getFrame()->setKey();
track_matrix.markKeyframe(C1);
/* KC0 KC1 C2 C3 snapshots
*
* f0---f1---f2 trk 0
* |
* f3 trk 1
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 2);
}
TEST_F(TrackMatrixTest, unmarkKeyframe)
{
track_matrix.newTrack(C0, f0);
track_matrix.add(f0->trackId(), C1, f1);
track_matrix.add(f0->trackId(), C2, f2);
track_matrix.add(1, C1, f3);
/* KC0 C1 C2 C3 snapshots
*
* f0---f1---f2 trk 0
* |
* f3 trk 1
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 1);
F0->setNonEstimated();
track_matrix.unmarkKeyframe(C0);
/* C0 C1 C2 C3 snapshots
*
* f0---f1---f2 trk 0
* |
* f3 trk 1
*/
ASSERT_EQ(track_matrix.numTracks(), (unsigned int) 2);
ASSERT_EQ(track_matrix.numKeyframeTracks(), (unsigned int) 0);
}
int main(int argc, char **argv)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment