Skip to content
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

Better camera alignment to 3DGS #6

Merged
merged 4 commits into from
May 13, 2024
Merged

Better camera alignment to 3DGS #6

merged 4 commits into from
May 13, 2024

Conversation

hbb1
Copy link
Owner

@hbb1 hbb1 commented May 12, 2024

Motivation

There is feedback (issue1, issue2) that 2DGS doesn't works for non-ideal pinhole camera, while 3DGS works by modifying the projmat. For better alignment, I change the code accordingly. I keep minimal changes to the original code and validate it through some experiments.

Method

  1. 3DGS uses ndc projection matrix while 2DGS uses intrinsic matrix. For better alignment, I change the intrinsic to a projection matrix and simplify the projection process. Now it should work for non-ideal pinhole cameras by modifying the projmat.

  2. I also implemented and tested trans_precomp so people can use pytorch for pre-compute transformation matrix.
    Disadvantage: not well aligned to cov3D_precomp, where only scaling and rotations are involved.
    Advantage: trans_precomp involves the camera outside the render, so it natively supports gradient flow to the camera using Pytorch. This would be useful for projects that require camera pose optimization.

Experiments

test on the data nerf-synthetic chair, without regularizations, using an RTX 3090.

EXP PSNR Time
previous 35.29 12 min
new 35.35 12 min
new (pre_comp) 35.35 21 min

Conclusion

  • The projection alignment is good. It produces identical results to the previous, and the code is more readable.
  • The trans_precomp does not support normal rendering currently. One possible minimal change is to rewrite the trans_precomp to a3x4 matrix and do so to transMat. But this requires refactoring the geometry buffer for clarity. Leave to future works.

Future works

Improve trans_precomp to support normal rendering.

@hbb1 hbb1 merged commit 362a17a into main May 13, 2024
@hbb1 hbb1 deleted the align branch May 13, 2024 10:02
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.

None yet

1 participant