Knowledge/Vision

Spherical gaussian 직관적으로 이해하기

침닦는수건 2023. 12. 21. 20:21
반응형

논문을 읽다가 Spherical harmonic과 더불어 spherical gaussian이라는 개념이 있다는 것을 처음 알았다. 특히 specular light를 표현할 때 많이들 쓴다고 하는데 무슨 내용인지 간단히 나마 적어두고자 한다. 

 

Spherical gaussian이란?

한 마디로 표현하면 구면 좌표계에서 gaussian distribution을 표현하는 방법이다. 천천히 흔히 알고 있는 gaussian distribution에서부터 확장하면서 설명해보겠다. 

 

먼저 1D 2Dgaussian은 알다시피 엄청 쉽다. 아래 그림처럼 line 혹은 plane 위에 그려진다.

 
 

 

3차원도, 4차원도 시각화할 수 없을 뿐이지 위와 같이 간단히 정리할 수 있고 각각 volume, tensor 상에 그려질 것이다. 

 

여기서 하나 주목할 점은 그려지는 공간이 cartesian coordinate를 사용한다는 점이다. 즉 orthogonal axis로 구성된 공간에서 정의된다.

 

그렇다면 구 표면에서 gaussian distribution은 어떻게 그릴까?

 

 

위 그림처럼 구표면의 한점을 중심으로 주변으로 gaussian distribution 값을 갖도록 색칠한다고 상상해보면 쉽다. 

 

확실한 것은 위에서 정의한 f(x)로는 표현이 불가능하다. 위에 정의한 x는 cartesian coordinate 상에 정의된 값을 전제로 하기 때문이다. 

 

따라서 새로운 구 표면에서 gaussian distribution을 표현할 수 있는 새로운 함수가 필요했고 그 함수가 spherical gaussian이다. 

수식은 기존 gaussian function에서 x-mu에 해당하는 부분을 변경하면 된다. cartesian coordinate에서 중심과 떨어진 거리를 의미하는 저 부분은 이젠 spherical coordinate에서 기준 vector와 떨어진 "각도"로 변경해준 모양이다.

 

우측 수식에서 mu는 기준 벡터 (구 표면에 그릴 gaussian distribution의 중심 vector)이고 v가 임의의 점이 된다. 

 

lambda는 variance와 비슷한 기능을 하고 a는 sphere radius와 비슷한 기능을 한다. 

 

Spherical gaussian의 활용

spherical gaussian이 어떤 함수인지는 이제 알겠는데 어디다 쓰냐? 

 

보통 빛을 표현할 때 많이 쓴다. 

 

SG function을 2D로 그려보면 위와 같이 시각화할 수 있는데 어디서 많이 본 모양이지 않나.

 

빛을 다룰 때 보통 diffuse와 specular term을 나누어서 이야기하는데, 저 specular reflection의 모양과 매우 유사한 것을 볼 수 있다. 

 

따라서 직관적으로 볼 때, 어떤 물체의 표면 x에서 발생하는 specular reflection (light)를 표현할 때, SG function coefficient를 들고 있으면 끝난다는 소리다. 즉 specular reflected light를 모델링할 때 쓰이는 일종의 basis function이라고 볼 수 있다. 

 

spherical harmonic과 달리 SG function들은 미리 정해져 있지 않고 coefficient에 따라 바뀌는 값이기 때문에 basis function이라고 보기에 어색할 수 있고 orthogonality도 보장되지 않긴 하다. 하지만 specular reflection을 표현할 때 기본 단위가 되는 함수라는 점을 기억해주면 되겠다. 

 

 

Spherical gaussian의 장점 및 단점

장점

 

1) 곱할 경우 여전히 SG 형태를 유지한다.  

 

2) integral도 간단해서 normalization이 쉽다.

 

3) inner product 수식이 간단하다. 즉 SG 간 거리 계산이 간단하다.

 

단점

 

1) 더할 경우, 망가진다. 다른 말로 SG는 서로 orthogonality가 보장되지 않기 때문에 함부로 더할 수 없다.

그림으로 보면, 빨간색과 파란색을 더하여 검정색을 만들고 싶다면, 방법이 없다...오른쪽 그림처럼 하트 모양으로 만드는 것이 최선이다.

 

따라서 실제 상황에 대입해보면, reflection light 각각을 표현하는 것은 쉬운데 이를 다 종합해서 단 하나의 값으로 환산할 때 손실이 발생한다.

 

 

참고

https://therealmjp.github.io/posts/sg-series-part-1-a-brief-and-incomplete-history-of-baked-lighting-representations/

 

SG Series Part 1: A Brief (and Incomplete) History of Baked Lighting Representations

This is part 1 of a series on Spherical Gaussians and their applications for pre-computed lighting. You can find the other articles here: Part 1 - A Brief (and Incomplete) History of Baked Lighting Representations Part 2 - Spherical Gaussians 101 Part 3

therealmjp.github.io

https://puye.blog/posts/SG-Intro-EN/

 

Introduction to Spherical Gaussians

This article is still an informative introduction, presenting a new spherical basis function and its application in lighting description. Recommended prerequisite reading:

puye.blog

 

반응형

'Knowledge > Vision' 카테고리의 다른 글

3D transformation(R, t) matrix usage  (0) 2023.12.06
Spherical harmonic 직관적으로 이해하기  (0) 2023.11.23
Static library와 dynamic library 차이  (0) 2023.09.14
Positional embedding (직관적 이해)  (0) 2023.09.13
Image flickering  (0) 2023.08.17