-
Notifications
You must be signed in to change notification settings - Fork 25
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
get_minimum_axis
seems wrong?
#19
Comments
Fix `get_minimum_axis` in `general_utils.py` Asparagus15#19
I find this part weird too. It sorts the columns yet takes the row as the normal. But I still can't understand your modification. I think you should sort the columns instead of sorting the rows. According to linear algebra, the columns are the eigenvectors, which represent the direction after the rotation transformation. So
Is there something wrong with my understanding? |
@nyy618 I had a case where I had to warp these R matrices by motion. And I came to the conclusion that these R matrices are My case is like this:
I tried selecting columns, and couldn't make it work. |
@initialneil Thank you for your inspiring clarification. I think the key point is the difference between rotation of world coordinates and rotation of the Gaussian in the world coordinates. The inverse of R is equal to the transpose of R since it is orthogonal. R is the rotation in world coordinates. The columns of R means how to represent the axis of Gaussian ellipsoid in world coordinates. However, if you want to transform from world coordinates to the Gaussian's local coordinates, you have to apply the inverse of R, namely the transpose of R. In theory, transition matrix from world coordinates basis to Gaussian coordinates basis is R, which means how to represent basis of Gaussian coordinates with the basis of world coordinates. Let the basis of world be e and the basis of Gaussian be e': If you want to represent the basis of world with basis of Gaussian, you have to apply the inverse of R. BTW, the
Still I am not sure with my conclusion, I will refer to others for help. Hope you can point out my misunderstanding. |
@nyy618 In the definition of camera projection, the
For the R of gauss, it seems that it's stored directly in |
@initialneil Thank you for your correction. I made a wrong example. Let the problem reduced to 2D Gauss. According to the paper, the covariance of the matrix is equal to RSS(T)R(T). For a particular problem: |
@nyy618 I finally got some time to settle this question. |
Hi, I also agree with @initialneil . When I read this line, from my understanding,
I also did an experiment on the horse_blender. The PSNR doesnot change much, so I assume the normal and normal_2 take the major effect in regressing the correct normal.
|
@yinyunie Agree. For static scene here, the R is like a black box of parameters anyway. But it gets important when extending to dynamic scenarios. So better be fixed. |
I've got an example here:
R_sorted[:,0,:]
selects the first rowSo
R_sorted[:,0,:]
should be changed toR_sorted[:,:,0]
?Why sorting the columns of R instead of rows?
After playing with the math, I believe that gather should work on rows instead of columns.After the discussion below, we(@nyy618 and me) think that the normal is got by selecting the column.
Pull request updated accordingly.
The text was updated successfully, but these errors were encountered: