gaussian-splatting icon indicating copy to clipboard operation
gaussian-splatting copied to clipboard

Question about the orientation of each Gaussian

Open sunshineatnoon opened this issue 1 year ago • 8 comments

Hi, I have maybe a naive question about the orientations of the Gaussians. If my understanding is correct, the _rotation matrix is represented as quaternion, is it possible to get the actually orientation of each Gaussian from this quaternion? I assume there's an oracle orientation?

sunshineatnoon avatar Oct 20 '23 21:10 sunshineatnoon

Hi,

I am not sure I understand. Both a quaternion and a matrix are representations of a rotation, just expressed differently. If you need e.g. the rotation matrix, the Python code base includes a function to turn it into a matrix!

Snosixtyboo avatar Oct 21 '23 14:10 Snosixtyboo

https://github.com/graphdeco-inria/gaussian-splatting/blob/414b553ef1d3032ea634b7b7a1d121173f36592c/utils/general_utils.py#L78

and here it is

On Sat, Oct 21, 2023 at 4:35 PM Snosixtyboo @.***> wrote:

Hi,

I am not sure I understand. Both a quaternion and a matrix are representations of a rotation, just expressed differently. If you need e.g. the rotation matrix, the Python code base includes a function to turn it into a matrix!

— Reply to this email directly, view it on GitHub https://github.com/graphdeco-inria/gaussian-splatting/issues/352#issuecomment-1773811609, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACGXXYLCN742SSMFLU223QTYAPMTHAVCNFSM6AAAAAA6JSKPSCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZTHAYTCNRQHE . You are receiving this because you are subscribed to this thread.Message ID: @.***>

grgkopanas avatar Oct 21 '23 14:10 grgkopanas

@sunshineatnoon

  1. Q includs R and t, this is for camera pose. #CAMERA-POSE
  2. maybe, the orientation you said is normal? need not in this algorithm, paper said. #POINT-ATTRIBUTE

these infomation used in the GaussSplat render: render1: xyz & opacity #shape render-2: get_covariance | scaling, rotation #pose get_features/shs | colors_precomp(feature, xyz, now_sh_degree) #color

yuedajiong avatar Oct 21 '23 14:10 yuedajiong

Hi, @grgkopanas and @Snosixtyboo Thanks for the quick response. Right, I understand the quaternion represents a rotation matrix. I'm looking for the absolute orientation here. My goal is to extract the normals from the gaussians. So in point cloud, you would compute normal using nearby points, but the Gaussians they already have orientation, so I'm wondering why not just use that as the normals?

sunshineatnoon avatar Oct 23 '23 20:10 sunshineatnoon

If you look closely at effect of work from datatset all surfaces look like this ex_03_chaos

3D chaotic cloud ;) You probably will get normals from every splat but what algorithm you will use to 'average' normals from this? It can be less chaotic when you get splats from existing 3D objects, but still.

jaco001 avatar Oct 26 '23 06:10 jaco001

The rotation is not relevant to the normal, is it? Imagine a very thin gaussian, you would image the "orientation" is pointing along the long axis, but that is obviously not the normal

kwea123 avatar Oct 26 '23 15:10 kwea123

You might want to look into https://slothfulxtx.github.io/TexGS/. They have estimated the normal. It is basically one of the eigenvectors of the covariance matrix.

cs-mshah avatar Apr 15 '24 15:04 cs-mshah

The rotation is independent of the normal, but the eigenvector corresponding to the smallest scaling can serve as the normal direction. @kwea123

nnop avatar Aug 10 '24 09:08 nnop