NeRF는 Ray위 모든 점들의 색상을 더하되, 벽처럼 밀한 것은 많이 반영하고 물과 공기처럼 소한 것은 조금만 고려해 특정 픽셀의 색상을 정의한다. 이 방식을 이해하기 위해서는 NeRF에서 3D 공간과 2D 평면의 관계를 정의하는 방식의 핵심인 Ray에 대해서 살펴보아야 한다.

Ray는 NeRF에서 사용되는 개념들 중 가장 중요한 컨셉이다. ‘광선’이라는 뜻을 가진 ray 라는 단어 의미 그대로, ray는 이미지 평면 위의 픽셀 하나에 영향을 주는 모든 파티클들이 존재하는 3D 공간상의 직선이다(ref1). 영상의 픽셀 1개마다 1개의 ray가 만들어진다. Ray 위에는 공기나 미세먼지같이 투명한 입자들이 놓여 있을수도 있고, 나뭇잎같이 불투명한 입자들이 있을 수도 있고, 보는 방향에 따라 동일한 물리공간의 색상이 변하는 거울 표면이나 유리판이 놓여 있을수도 있다. 이 덕분에 RGB 평면상의 하나의 픽셀마다 단 하나의 점을 선택했다고 여기는 방식에 비해서 월등한 성능을 보여준다(ref4).

그림(ref1)

751061CC-C269-43AF-A490-99FA8B3370B2.jpeg

NeRF에서 3D 공간 위의 대상을 2D 이미지 평면에 투영하는 방식을 다음과 같이 정리할 수 있다.

  1. Ray 위의 모든 무한한 점들에는 $(c, {\sigma})$ (color, density) 가 존재한다(ref3).
  2. 2D 영상의 모든 픽셀들에 대해 고유한 Ray 를 만들고, 2D 영상에 맺히는 (r,g,b) 값은 ray 위의 모든 점들에 대한 가중합(weighted sum)이다(ref3).
  3. Ray 위의 특정 지점을 가로막고 있는 점들의 density 의 합이 작을수록 가중합을 산출하는 데 사용되는 가중치(weight)가 크다. 즉, 더 많이 고려한다(ref2).

특히 3번이 잘 이해되지 않을 수 있지만, 예를 들어 생각해보면 쉽다. 카메라 $A$가 있고, 사람 $C$가 있고, $A$ 와 $C$ 사이에 벽 $B$가 놓여 있다고 생각해 보자. 카메라 $A$의 이미지 평면의 특정 픽셀 $p$ 에 대한 Ray 는 $r$ 이라고 한다. $r$ 위에는 $p$($A$ 위의 점), $b$($B$ 위의 점), $c$($C$ 위의 점) 가 있다. $p$ 에서는 $c$ 를 볼 수 없다. 그 이유가 무엇일까?

점 $p$ 와 $c$ 사이 $b$ 를 포함한 모든 점들의 density 합이 크기 때문이다. 따라서 이런 정리가 따라올 수 있는 것이다. 점 $c$ 를 가로막고 있는 점들의 density 합이 작다면, 점 $c$ 의 RGB값이 영상에 많이 반영이 되어야 하고, 점 $c$ 를 가로막고 있는 점들의 density 합이 크다면, 점 $c$ 의 RGB값이 영상에 적게 반영이 되어야 한다. 따라서, 점 $c$ 를 가로막고 있는 점들의 density 합이 작다면, 점 $c$ 의 RGB 값에 곱해지는 weight 는 커야 하고, 점 $c$ 를 가로막고 있는 점들의 density 합이 크다면, 점 $c$ 의 RGB 값에 곱해지는 weight 는 작아야 한다.

density 에 대한 컨셉

density 에 대한 컨셉

NeRF의 입출력을 텐서로 표현한다면

NeRF의 입출력을 텐서로 표현한다면


parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료을 보관해 두는 영역입니다.

  1. None

from : 과거의 어떤 원자적 생각이 이 생각을 만들었는지 연결하고 설명합니다.

  1. a9.3_1. [entry] title: NeRF