Use colmap ObservationManager for track filtering in glomap.#3871
Use colmap ObservationManager for track filtering in glomap.#3871B1ueber2y merged 15 commits intocolmap:maincolmap/colmap:mainfrom B1ueber2y:fix/glomap_track_filterB1ueber2y/colmap:fix/glomap_track_filterCopy head branch name to clipboard
Conversation
ahojnnes
left a comment
There was a problem hiding this comment.
Thank you! Ideally, we cover the new filtering functionality with minimal tests in the observation manager.
|
Realizing that this is not the only place where glomap does not respect observation handling. For example, |
| view_graph, | ||
| reconstruction, | ||
| scaling * options_.inlier_thresholds.max_reprojection_error); | ||
| filtered_num += obs_manager.FilterPoints3DWithLargeReprojectionError( |
There was a problem hiding this comment.
There is a behavior change here. In glomap the function returns number of filtered points, while in colmap we return number of filtered observations. This only makes the stopping criteria tighter and should not an issue in practice.
ahojnnes
left a comment
There was a problem hiding this comment.
Thanks, you can probably avoid sqrt'ing and the acos by only computing it when not filtering. Otherwise LGTM.
The previous glomap logic only used
SetElements, which does not handle the cleanup of observations. Switching to the use of ObservationManager is smooth and naturally solves the issue. The track_filter.h/cc in glomap is removed after the switching. The logic except for the observation handling issue stays unchanged.