-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Essential Matrix Optimization #816
base: master
Are you sure you want to change the base?
Conversation
Better results across the board |
among non-rc3 medium sized datasets, it seems clearly better for south building, but worse for gerrard hall and palace of fine arts. we should focus on these medium sized and other non-CI large datasets. |
# Create GTSAM objects. | ||
graph = gtsam.NonlinearFactorGraph() | ||
initial = gtsam.Values() | ||
noise_model=gtsam.noiseModel.Isotropic.Sigma(1, 1e-2) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
probably is too high, considering this is used on calibrated keypoints?
# pre_ba_i2Ui1, | ||
# i2Ti1_prior, | ||
# ) | ||
post_ba_i2Ri1, post_ba_i2Ui1 = optimize_essential_matrix( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe use an option to enable this? you could do:
if len(pre_ba_v_corr_idxs) >= self.processor._min_num_inliers_est_model:
if self._bundle_adjust:
...
elif self._optimize_essential_matrix:
...
initial.insert(0, gtsam.EssentialMatrix(i2Ri1, i2Ui1)) | ||
for kp1, kp2 in zip(mkps1, mkps2): | ||
graph.add( | ||
gtsam.EssentialMatrixFactor( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should probably use the newer implementations @dellaert added. I think some bugs with the essential matrix were fixed too?
Add essential matrix optimization similar to what's presented in this paper: https://openaccess.thecvf.com/content_iccv_2015/papers/Sweeney_Optimizing_the_Viewing_ICCV_2015_paper.pdf.
This is what's also used by GLOMAP. Some things to think about: