Inverse depth parameterization이 무엇인가요?

SJ·2024년 12월 26일

이 게시글은 장형기님의 기술면접 질문 100선에 대한 제 임의의 답을 기록한 것입니다.


개념

Inverse Depth Parameterization은 깊이를 표현하는 방식을 새롭게 만든 것입니다.
일반적인 depth 표현은 zz로 나타내는데 Inverse Depth Parameterization은 깊이를 1/z로 나타냅니다.

사용 목적

  • 수치적 안정성
    그냥 상수로 표현하게 되면 depth zz 값이 매우 크거나 작을 때, 계산 과정에서 불안정하거나, 오차 전파가 커질 수도 있습니다. 또 Inverse Depth는 원거리 물체에서의 작은 변화도 더 잘 포착합니다.

    일반적으로 depth를 나타내었을 때와 inverse depth로 나타냈을 때의 변화율을 비교해보겠습니다.

    depth zz가 1000에서 1001으로 변한 상황

    zz = 1000 \rightarrow zz = 1001: Δz=1\Delta z = 1

    1z=110001z:Δz=1100011001=11001000\frac{1}{z}=\frac{1}{1000} \rightarrow \frac{1}{z}: \Delta z = \frac{1}{1000}-\frac{1}{1001} = \frac{1}{1001000}

    비교적 멀어서 중요하지 않은 큰 단위의 계산에서 변화량의 절대값을 굉장히 줄여서 수치 안정성을 높일 수 있습니다.

  • 가까운 물체 반영

    우리의 알고리즘은 멀어서 depth 값이 큰 물체보다는 가까운 물체를 더 확실히 반영하고 싶어합니다. 이를 위해서는 가까운 값을 크게 만들어야 하는데 inverse depth는 이것을 완벽하게 할 수 있게 해줍니다.

  • 선형화

    depth가 z=1dz= \frac{1}{d}로 표현 될 경우 변화시 depth는 1d+Δd\frac{1}{d+\Delta d} 가 됩니다 이것을 taylor 급수로 근사 시키게 되면 Δz=Δdd2\Delta z = -\frac{\Delta d}{d^2}이 되고 ΔzΔd\Delta z가 \Delta d에 선형적으로 변화한다고 볼 수 있습니다.


    depth를 역수로 나타내는 이유는 이렇게 다양하다는 것을 알 수 있었습니다.

    오늘의 설명은 여기서 마치겠습니다. 감사합니다.

profile
student

0개의 댓글