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.
|
// @param Length-N list of keypoints, for N images/cameras.
|
||||||
std::vector<SfmTrack2d> generate_tracks_from_pairwise_matches(
|
std::vector<SfmTrack2d> generate_tracks_from_pairwise_matches(
|
||||||
const MatchIndicesMap& matches_dict,
|
const MatchIndicesMap& matches_dict,
|
||||||
const KeypointsVector& keypoints_list) {
|
const KeypointsVector& keypoints_list,
|
||||||
|
bool verbose = false) {
|
||||||
std::vector<SfmTrack2d> track_2d_list;
|
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.
|
// Generate the DSF to form tracks.
|
||||||
DSFMapIndexPair dsf;
|
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();
|
const std::map<IndexPair, std::set<IndexPair> > key_sets = dsf.sets();
|
||||||
|
|
||||||
// Return immediately if no sets were found.
|
// Return immediately if no sets were found.
|
||||||
|
@ -202,12 +203,14 @@ class DsfTrackGenerator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double erroneous_track_pct = static_cast<float>(erroneous_track_count)
|
if (verbose) {
|
||||||
/ static_cast<float>(key_sets.size()) * 100;
|
double erroneous_track_pct = static_cast<float>(erroneous_track_count)
|
||||||
// TODO(johnwlambert): restrict decimal places to 2 decimals.
|
/ static_cast<float>(key_sets.size()) * 100;
|
||||||
std::cout << "DSF Union-Find: " << erroneous_track_pct;
|
|
||||||
std::cout << "% of tracks discarded from multiple obs. in a single image." << std::endl;
|
|
||||||
|
|
||||||
|
// 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.
|
// TODO(johnwlambert): return the Transitivity failure percentage here.
|
||||||
return track_2d_list;
|
return track_2d_list;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,8 @@ class DsfTrackGenerator {
|
||||||
DsfTrackGenerator();
|
DsfTrackGenerator();
|
||||||
const gtsam::SfmTrack2dVector generate_tracks_from_pairwise_matches(
|
const gtsam::SfmTrack2dVector generate_tracks_from_pairwise_matches(
|
||||||
const gtsam::MatchIndicesMap& matches_dict,
|
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(0, 1)] = np.array([[0, 0], [1, 1]])
|
||||||
matches_dict[IndexPair(1, 2)] = np.array([[2, 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
|
assert len(tracks) == 3
|
||||||
|
|
||||||
# Verify track 0.
|
# Verify track 0.
|
||||||
|
|
Loading…
Reference in New Issue