naver / dust3r

DUSt3R: Geometric 3D Vision Made Easy
https://dust3r.europe.naverlabs.com/
Other
4.63k stars 515 forks source link

Bundle Adjustment Optimization Details #89

Open Davidyao99 opened 2 months ago

Davidyao99 commented 2 months ago

I am looking over the optimization implementation and have some confusion over the PointCloudOptimizer implementation.

For poses, there seems to be a self.im_poses parameter and a self.pw_poses parameter. self.im_poses seems to be the world to cam transformation for each camera. self.pw_poses seems to be the world to cam transformation for each pair of images (which I assume is the same as the world to cam transformation for image1 in each pair since both images are in coordinates of image1?)

If so, why are there 2 sets of camera poses used during the optimization?

Any help in understanding is appreciated! Thanks!

ljjTYJR commented 2 months ago

I think self.im_poses is just as the name points, the estimated camera poses for each image in the global coordinate. The self.pw_poses is the estimated transformation of each prediction pair to align with the global estimated point cloud.

Davidyao99 commented 2 months ago

If that is the case, wouldnt the estimated camera pose and estimated transformation be related? If self.pw_poses is the transformation of points in cam1 coordinates of each pair to global coordinates, that means it is the same as the camera pose of cam1?

ljjTYJR commented 2 months ago

If that is the case, wouldnt the estimated camera pose and estimated transformation be related? If self.pw_poses is the transformation of points in cam1 coordinates of each pair to global coordinates, that means it is the same as the camera pose of cam1?

Sorry, I did not get what you meant. Pair-wise transformation and image poses are two different things