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

Merge branch...

Merge branch '224-index-snapshots-by-capture-pointer-instead-of-time-stamp-in-trackmatrix' into 'devel'

Resolve "Index snapshots by capture pointer instead of capture ID in TrackMatrix"

Closes #224

See merge request !284
parents fd3027e5 04cbd050
No related branches found
No related tags found
1 merge request!284Resolve "Index snapshots by capture pointer instead of capture ID in TrackMatrix"
Pipeline #3598 passed
......@@ -63,12 +63,12 @@ typedef map<size_t, pair<FeatureBasePtr, FeatureBasePtr> > TrackMatches; // mat
*
* these fields of FeatureBase are initialized each time a feature is added to the track matrix:
*
* add(Cap, track_id, f) will set f.capture_ptr = C and f.traci_id = traci_id.
* add(Cap, track_id, f) will set f.capture_ptr = C and f.track_id = track_id.
*
* so e.g. given a feature f,
*
* getTrack (f->trackId()) ; // returns all the track where feature f is.
* getSnapshot(f->getCapture()) ; // returns all the features in the same capture of f.
* getSnapshot(f->getCapture()) ; // returns all the features in the same capture of f.
*
*/
......@@ -83,8 +83,8 @@ class TrackMatrix
void remove (FeatureBasePtr _ftr);
void remove (size_t _track_id);
void remove (CaptureBasePtr _cap);
SizeStd numTracks ();
SizeStd trackSize (size_t _track_id);
SizeStd numTracks ();
SizeStd trackSize (size_t _track_id);
Track track (size_t _track_id);
Snapshot snapshot (CaptureBasePtr _capture);
vector<FeatureBasePtr>
......@@ -105,7 +105,8 @@ class TrackMatrix
map<size_t, Track > tracks_; // map indexed by track_Id of ( maps indexed by TimeStamp of ( features ) )
// Across track: maps of Feature pointers indexed by track_Id.
map<size_t, Snapshot > snapshots_; // map indexed by capture_Id of ( maps indexed by track_Id of ( features ) )
// map<size_t, Snapshot > snapshots_; // map indexed by capture_Id of ( maps indexed by track_Id of ( features ) )
map<CaptureBasePtr, Snapshot > snapshots_; // map indexed by capture_ptr of ( maps indexed by track_Id of ( features ) )
};
} /* namespace wolf */
......
......@@ -32,8 +32,8 @@ Track TrackMatrix::track(size_t _track_id)
Snapshot TrackMatrix::snapshot(CaptureBasePtr _capture)
{
if (_capture && snapshots_.count(_capture->id()) > 0)
return snapshots_.at(_capture->id());
if (_capture && snapshots_.count(_capture) > 0)
return snapshots_.at(_capture);
else
return Snapshot();
}
......@@ -52,7 +52,7 @@ void TrackMatrix::add(size_t _track_id, CaptureBasePtr _cap, FeatureBasePtr _ftr
if (_cap != _ftr->getCapture())
_ftr->setCapture(_cap);
tracks_[_track_id].emplace(_cap->getTimeStamp(), _ftr);
snapshots_[_cap->id()].emplace(_track_id, _ftr); // will create new snapshot if _cap_id is not present
snapshots_[_cap].emplace(_track_id, _ftr); // will create new snapshot if _cap_id is not present
}
void TrackMatrix::remove(size_t _track_id)
......@@ -62,10 +62,18 @@ void TrackMatrix::remove(size_t _track_id)
{
for (auto const& pair_time_ftr : tracks_.at(_track_id))
{
SizeStd cap_id = pair_time_ftr.second->getCapture()->id();
snapshots_.at(cap_id).erase(_track_id);
if (snapshots_.at(cap_id).empty())
snapshots_.erase(cap_id);
// SizeStd cap_id = pair_time_ftr.second->getCapture()->id();
// snapshots_.at(cap_id).erase(_track_id);
// if (snapshots_.at(cap_id).empty())
// snapshots_.erase(cap_id);
CaptureBasePtr cap = pair_time_ftr.second->getCapture();
snapshots_.at(cap).erase(_track_id);
if (snapshots_.at(cap).empty())
snapshots_.erase(cap);
}
// Remove track
......@@ -76,10 +84,10 @@ void TrackMatrix::remove(size_t _track_id)
void TrackMatrix::remove(CaptureBasePtr _cap)
{
// remove snapshot features from all tracks
if (snapshots_.count(_cap->id()))
if (snapshots_.count(_cap))
{
TimeStamp ts = _cap->getTimeStamp();
for (auto const& pair_trkid_ftr : snapshots_.at(_cap->id()))
for (auto const& pair_trkid_ftr : snapshots_.at(_cap))
{
SizeStd trk_id = pair_trkid_ftr.first;
tracks_.at(trk_id).erase(ts);
......@@ -88,7 +96,7 @@ void TrackMatrix::remove(CaptureBasePtr _cap)
}
// remove snapshot
snapshots_.erase(_cap->id());
snapshots_.erase(_cap);
}
}
......@@ -103,9 +111,9 @@ void TrackMatrix::remove(FeatureBasePtr _ftr)
if (tracks_.at(_ftr->trackId()).empty())
tracks_.erase(_ftr->trackId());
snapshots_.at(cap->id()) .erase(_ftr->trackId());
if (snapshots_.at(cap->id()).empty())
snapshots_.erase(cap->id());
snapshots_.at(cap) .erase(_ftr->trackId());
if (snapshots_.at(cap).empty())
snapshots_.erase(cap);
}
}
}
......@@ -151,8 +159,8 @@ vector<FeatureBasePtr> TrackMatrix::trackAsVector(size_t _track_id)
std::list<FeatureBasePtr> TrackMatrix::snapshotAsList(CaptureBasePtr _cap)
{
std::list<FeatureBasePtr> lst;
if (snapshots_.count(_cap->id()))
for (auto const& pair_trkid_ftr : snapshots_.at(_cap->id()))
if (snapshots_.count(_cap))
for (auto const& pair_trkid_ftr : snapshots_.at(_cap))
lst.push_back(pair_trkid_ftr.second);
return lst;
}
......
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