From 7dee1af5b4dec1ef1a558669e18e39d7ed638f5a Mon Sep 17 00:00:00 2001 From: senselessdev1 Date: Wed, 12 Oct 2022 23:31:45 -0400 Subject: [PATCH] add verbose flag for logging messages during DSF track generation --- gtsam/sfm/DsfTrackGenerator.h | 19 +++++++++++-------- gtsam/sfm/sfm.i | 3 ++- python/gtsam/tests/test_DsfTrackGenerator.py | 4 +++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gtsam/sfm/DsfTrackGenerator.h b/gtsam/sfm/DsfTrackGenerator.h index a16ed3522..960f1622c 100644 --- a/gtsam/sfm/DsfTrackGenerator.h +++ b/gtsam/sfm/DsfTrackGenerator.h @@ -143,10 +143,11 @@ class DsfTrackGenerator { // @param Length-N list of keypoints, for N images/cameras. std::vector generate_tracks_from_pairwise_matches( const MatchIndicesMap& matches_dict, - const KeypointsVector& keypoints_list) { + const KeypointsVector& keypoints_list, + bool verbose = false) { std::vector 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 > key_sets = dsf.sets(); // Return immediately if no sets were found. @@ -202,12 +203,14 @@ class DsfTrackGenerator { } } - double erroneous_track_pct = static_cast(erroneous_track_count) - / static_cast(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(erroneous_track_count) + / static_cast(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; } diff --git a/gtsam/sfm/sfm.i b/gtsam/sfm/sfm.i index 9613410a7..ce840a1a9 100644 --- a/gtsam/sfm/sfm.i +++ b/gtsam/sfm/sfm.i @@ -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); }; diff --git a/python/gtsam/tests/test_DsfTrackGenerator.py b/python/gtsam/tests/test_DsfTrackGenerator.py index 563a01165..721584cff 100644 --- a/python/gtsam/tests/test_DsfTrackGenerator.py +++ b/python/gtsam/tests/test_DsfTrackGenerator.py @@ -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.