300x250

목차

     

    SDF(Signed Distance Function, or Signed Distance Field)는 Graphics 분야에서 렌더링 시 외곽선이 깔끔하게 나오지 않는 문제를 해결하기 위해 사용되는 개념이다.

    동시에 3D Vision 분야에서 scene reconstruction, surface generation 등의 task를 진행할 때 3D geometry를 나타내는 데 활용되는 기초 개념이어서 따로 공부하고 정리해두려 한다.

     

     

     

     

     

    What is SDF?

     

     

     

    Signed Distance Function in Mathematics

     

    Signed distance function의 수학적인 정의는 metric space에 포함된 set \(\omega\)(어떤 구역)에 대한 주어진 point \(x\)의 (부호가 있는) orthogonal distance이다.

    \( f(x) = \begin{cases} d(x, \partial \Omega) & \quad \text{if } x \in \Omega \\ -d(x, \partial \Omega) & \quad \text{if } x \in \Omega^c \end{cases} \)
    • \(\partial \Omega\) : 공간 상의 구역 \(\Omega\)의 boundary
    • \( d(x, \partial \Omega) := \underset{y \in \partial \Omega}{\operatorname{inf}} d(x,y) \)
    • \(\text{inf} \) : infimum(하한)

     

    Fig 1. Set \(\Omega\) and the graph of its Signed Distance Function

     

    즉, 어떤 점이 정해진 구역 안(+) 또는 밖(-)으로 얼마나 떨어져있는지를 나타내는 함수이다. 

    \(Omega\)가 Euclidean space \(\mathbb{R}^n\)내의 구역이라면, SDF는 거의 모든 곳에서 미분이 가능하고, gradient는 다음 eikonal equation을 만족한다.

    \( \lvert \nabla f \rvert = 1 \)

    또한, boundary 상에서 Signed distance function \(f\)의 gradient는 (inward) normal vector를 나타낸다. (따라서 SDF는 미분 가능한 normal vector field라고 볼 수 있다.)

    \( \nabla f(x) = N(x) \)
    • \(N\) : inward normal vector field

     

    이전까지는 2차원 기준으로 x좌표값과 y좌표값을 통해 도형을 정의했다면, SDF를 활용할 때에는 한 점과 도형(boundary) 사이의 거리로 도형을 정의할 수 있게된다.

     

     

     

     

    Signed Distance Function in Graphics and Computer Vision

     

    Computer vision 분야에서 shape modeling에 SDF를 활용할 때에는 반대로 안쪽을 -, 바깥쪽을 +로 사용한다. 이유가 궁금해서 논문에서 살펴보았는데, 3D geometry에 적용할 때 'SDF의 gradient 방향을 surface 바깥방향의 normal vector가 되도록 하기 위해'라고 이해하면 되겠다.

    (사실 전문 분야가 아니라서, 논문을 꼼꼼히 읽어보진 못했다. 이를 위해서 sign의 정의를 반대로 한건지, 정의를 반대로 했더니 normal vector가 우연히 바깥쪽이 된건지는 정확하지 않다.)

     

    다음 영상은 3D geometry에 사용되는 SDF를 잘 설명해준다.

     

    Fig 2. SDF in CV & Graphics

    (영상 출처 : 링크)

     

    따라서 3D geometry의 절단면의 boundary는 SDF \(f(x) = 0\)인 점들의 집합으로볼 수 있고, 확장하면 모든 surface도 \(f(x)=0\)인 점의 집합일 것이다.

    또한 아래와 같은 등고선(contour) 형태로 geometry를 나타낼 수 있다. 이렇게 surface(shape)를 등고선 형태로 나타내는 방법을 level-set method라 한다.

     

    Fig 3. Contour of 3D geometry

     

    Fig 2와 3을 종합적으로 고려해보면, SDF의 1차 미분(gradient)은 surface의 normal vector, 2차 미분은 surface의 곡률을 나타낸다.

     

     

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기