add verbose flag for logging messages during DSF track generation

release/4.3a0
senselessdev1 2022-10-12 23:31:45 -04:00
parent 4f406650f7
commit 7dee1af5b4
3 changed files with 16 additions and 10 deletions

View File

@ -143,10 +143,11 @@ class DsfTrackGenerator {
// @param Length-N list of keypoints, for N images/cameras.
std::vector<SfmTrack2d> generate_tracks_from_pairwise_matches(
const MatchIndicesMap& matches_dict,
const KeypointsVector& keypoints_list) {
const KeypointsVector& keypoints_list,
bool verbose = false) {
std::vector<SfmTrack2d> track_2d_list;
std::cout << "[SfmTrack2d] Starting Union-Find..." << std::endl;
if (verbose) std::cout << "[SfmTrack2d] Starting Union-Find..." << std::endl;
// Generate the DSF to form tracks.
DSFMapIndexPair dsf;
@ -167,7 +168,7 @@ class DsfTrackGenerator {
}
}
std::cout << "[SfmTrack2d] Union-Find Complete" << std::endl;
if (verbose) std::cout << "[SfmTrack2d] Union-Find Complete" << std::endl;
const std::map<IndexPair, std::set<IndexPair> > key_sets = dsf.sets();
// Return immediately if no sets were found.
@ -202,12 +203,14 @@ class DsfTrackGenerator {
}
}
double erroneous_track_pct = static_cast<float>(erroneous_track_count)
/ static_cast<float>(key_sets.size()) * 100;
// TODO(johnwlambert): restrict decimal places to 2 decimals.
std::cout << "DSF Union-Find: " << erroneous_track_pct;
std::cout << "% of tracks discarded from multiple obs. in a single image." << std::endl;
if (verbose) {
double erroneous_track_pct = static_cast<float>(erroneous_track_count)
/ static_cast<float>(key_sets.size()) * 100;
// TODO(johnwlambert): restrict decimal places to 2 decimals.
std::cout << "DSF Union-Find: " << erroneous_track_pct;
std::cout << "% of tracks discarded from multiple obs. in a single image." << std::endl;
}
// TODO(johnwlambert): return the Transitivity failure percentage here.
return track_2d_list;
}

View File

@ -78,7 +78,8 @@ class DsfTrackGenerator {
DsfTrackGenerator();
const gtsam::SfmTrack2dVector generate_tracks_from_pairwise_matches(
const gtsam::MatchIndicesMap& matches_dict,
const gtsam::KeypointsVector& keypoints_list);
const gtsam::KeypointsVector& keypoints_list,
bool verbose = false);
};

View File

@ -40,7 +40,9 @@ class TestDsfTrackGenerator(GtsamTestCase):
matches_dict[IndexPair(0, 1)] = np.array([[0, 0], [1, 1]])
matches_dict[IndexPair(1, 2)] = np.array([[2, 0], [1, 1]])
tracks = DsfTrackGenerator().generate_tracks_from_pairwise_matches(matches_dict, keypoints_list)
tracks = DsfTrackGenerator().generate_tracks_from_pairwise_matches(matches_dict,
keypoints_list,
verbose=True)
assert len(tracks) == 3
# Verify track 0.