turandai / gaussian_surfels

Implementation of the SIGGRAPH 2024 conference paper "High-quality Surface Reconstruction using Gaussian Surfels".
501 stars 24 forks source link

Differences and connections with 2DGS algorithm #27

Closed CanCanZeng closed 3 months ago

CanCanZeng commented 3 months ago

I have recently been reading about the Gaussian surfel splatting (GSS) algorithm and the 2DGS algorithm, and found that the ideas of the two are very similar, and both are excellent algorithms. I have summarized the differences and connections between the two, which may not be correct, and I hope to hear the author's opinion. Common points:

  1. The main idea of ​​both is to flatten the 3DGS and make it into a surface element to achieve accurate reconstruction of the surface of the object
  2. Both use the depth-normal consistent constraint, so that the depth map is smoother

Differences:

  1. GSS is based on 3DGS, and the z-axis is compressed to zero to achieve the surfel. The intersection depth of the ray-splat is approximated by Taylor expansion. 2DGS directly models the surfel and uses the accurate ray-splat method to calculate the intersection of the surfel and the light.
  2. The calculation method of the normal vector map is different. The GSS algorithm obtains the normal vector of each pixel by weighting. 2DGS uses the normal vector of the surfel when the cumulative opacity reaches 0.5 as the normal vector of the pixel. However, looking at the code to implement 2DGS, it seems that the normal vector also uses weighted average.
  3. The depth map of GSS uses weighted average depth, while the depth of 2DGS uses median depth.
  4. GSS supports the normal vector estimated by monocular as a priori constraint
  5. GSS also has opacity loss and mask loss. The former has a relatively small impact, and the latter is generally not available in data, so it has no impact.
  6. 2DGS proposes depth distortion loss, which helps to compress all surfels together instead of forming a thick layer of point cloud on the surface of the object

I did an experiment on the Waymo scene: Segment-102751 data(_from GaussianPro by kcheng1021 https://drive.google.com/file/d/1DXQRBcUIrnIC33WNq8pVLKZ_W1VwON3k/view?usp=sharing_). GSS has a good result after turning on the monocular normal prior constraint. The result will be worse after turning it off, but the result of 2DGS is much worse. Other custom datasets show similar result. 2DGS uses a more accurate projection model, and the projection code is more concise, so I think theoretically transplanting the innovation of GSS to 2DGS can get better results. I wonder what the author thinks?

turandai commented 3 months ago

Hi, thanks for you summary that makes good sence. I think the "perspective accurate splatting" applied in 2DGS would also improve the results of our algorithm. For the waymo scene, I checked your uploaded images, one possible reason for the bad results might be the weak multiview constraints. Both of the algorithms are tested on densly-sampled object-centric scenes, and the waymo only provides views along a single-direction route, which might be ok for only rendering but not enough to obtain good geometry.

yifanlu0227 commented 3 months ago

Hi @CanCanZeng , I am also interested in those surfel-based representations in driving scenes. How is the rendering quality (PSNR) of these two methods?

I would appreciate if you could share some results or saved ply files.

CanCanZeng commented 3 months ago

the PSNR is 31.698 by gaussian_surfel @yifanlu0227 , the reult of 2DGS is lost, but I rember that it is silightly lower than gaussian_sufel.