diff --git a/include/core/processor/track_matrix.h b/include/core/processor/track_matrix.h index 0be506eaac14fec3bb469e725982ae8100400636..edc6f9092f96fe7835d80658b975eb127552a00c 100644 --- a/include/core/processor/track_matrix.h +++ b/include/core/processor/track_matrix.h @@ -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 ) ) diff --git a/src/processor/track_matrix.cpp b/src/processor/track_matrix.cpp index b6af398c7270b4881553eeb5fad941601138e480..394fa88964d46e1a0d0e1632a058a124cb4ecfdc 100644 --- a/src/processor/track_matrix.cpp +++ b/src/processor/track_matrix.cpp @@ -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; -} - - } diff --git a/test/gtest_track_matrix.cpp b/test/gtest_track_matrix.cpp index a11537156af399c2b6018c643f51c9fef78cd9aa..f2f08e8c2241624b8914fd0eb6dc2ebbf93bab2d 100644 --- a/test/gtest_track_matrix.cpp +++ b/test/gtest_track_matrix.cpp @@ -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) {