add verbose flag for logging messages during DSF track generation
parent
4f406650f7
commit
7dee1af5b4
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue