Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Use colmap ObservationManager for track filtering in glomap.#3871

Merged
B1ueber2y merged 15 commits into
colmap:maincolmap/colmap:mainfrom
B1ueber2y:fix/glomap_track_filterB1ueber2y/colmap:fix/glomap_track_filterCopy head branch name to clipboard
Dec 27, 2025
Merged

Use colmap ObservationManager for track filtering in glomap.#3871
B1ueber2y merged 15 commits into
colmap:maincolmap/colmap:mainfrom
B1ueber2y:fix/glomap_track_filterB1ueber2y/colmap:fix/glomap_track_filterCopy head branch name to clipboard

Conversation

@B1ueber2y

Copy link
Copy Markdown
Contributor

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.

Comment thread src/colmap/sfm/observation_manager.h

@ahojnnes ahojnnes left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! Ideally, we cover the new filtering functionality with minimal tests in the observation manager.

@B1ueber2y

Copy link
Copy Markdown
Contributor Author

Realizing that this is not the only place where glomap does not respect observation handling. For example, SetElements without setting Point3D for 2d points is also the case in TrackEstablishment. This is probably due to the previous usage of scattered variables, and let s fix it in the follow-ups.

view_graph,
reconstruction,
scaling * options_.inlier_thresholds.max_reprojection_error);
filtered_num += obs_manager.FilterPoints3DWithLargeReprojectionError(

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread src/colmap/sfm/observation_manager.h Outdated

@ahojnnes ahojnnes left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, you can probably avoid sqrt'ing and the acos by only computing it when not filtering. Otherwise LGTM.

@B1ueber2y
B1ueber2y requested a review from ahojnnes December 27, 2025 16:18
Comment thread src/colmap/sfm/observation_manager.cc
@B1ueber2y
B1ueber2y merged commit 2d05963 into colmap:main Dec 27, 2025
14 checks passed
@B1ueber2y
B1ueber2y deleted the fix/glomap_track_filter branch December 27, 2025 21:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.