Image projection 과정에 대해서 설명해주세요.

SJ·2025년 6월 30일
0

이 게시글은 장형기님의 SLAM 기술 면접 질문 100선에 대한 제 나름대로의 답을 정리한 것입니다.


Image Projection 정의

Image Projection은 3D point Cloud data를 2D 이미지 평면에 옮겨 표현하는 과정

3차원 공간에 있는 물체를 카메라로 사진을 찍어 2차원 사진으로 만드는 것과 같은 원리인데 그것을 컴퓨터로 구현하여 3d 공간 정보와 2D 정보를 정렬시키는 방법입니다.


Image Projection 과정

  • 3D 포인트를 Spherical Coordinate System로 변환

    LiDAR 센서는 자기 자신을 중심으로 주변에 레이저를 쏘아 3차원 공간의 점들을 측정합니다.
    이 3차원 직교 좌표계 점들을 2D 이미지로 펼치기 위해, 먼저 각 점을 구면 좌표계로 변환합니다.

    구면 좌표계란?
    거리(range), 수평각(horizontal angle), 수직각(vertical angle) 세가지 요소로 3D 공간의 한 점을 표현한 것

    • 변환 과정

      • 거리(Range): 센서 원점으로부터 점 P까지의 거리를 계산.

        d=sqrt(x2+y2+z2)d = sqrt(x^2+y^2+z^2)

      • 수평각(Horizontal angle): 센서의 정면을 기준으로 점 P가 수평방향으로 얼마나 회전했는가

        ψ=atan2(y,x)\psi = atan2(y,x)

      • 수직각(Vertical angle): 센서의 수평면을 기준으로 점 P가 수직 방향으로 얼마나 기울어져 있는가

        ϕ=asin(z/range)\phi = asin(z/range)

  • 2D range image 생성

    구면 좌표계로 변환된 값들을 이용해 실제 2D 이미지를 만듭니다.
    이 이미지는 각 필셀이 색상이 아닌 거리 값을 가지고 있기 때문에 Range image 또는 Depth 이미지라고 부릅니다.

    • 이미지 크기 결정

      • 가로: LiDAR 센서의 수평 해상도와 시야각에 의해 결정됩니다.
        예를 들어, 360도 스캔에 1024개의 수평 해상도를 가진다면 이미지의 가로는 1024픽셀이 됩니다.
      • 세로: LiDAR 센서의 채널 수에 의해 결정. 64채널 LiDAR라면 이미지의 세로는 64픽셀

Image Projection의 장점

  1. 수십만개의 무질서한 3D 포인트를 정렬된 2D 그리드로 변환하여, 이웃점들을 매우 빠르게 찾을 수 있습니다.

  2. 이미지에서 코너나 엣지를 찾는 것처럼, 레인지 이미지 상에 바닥,모서리,평면 등의 기하학적 특징점을 효율적으로 추출할 수 있습니다.

  3. 3D 공간에서 직접 이웃을 탐색하는 것보다 2D 이미지에서 탐색하는 것이 훨씬 계산 비용이 저렴합니다.

  4. 카메라와 LiDAR를 같이 활용할 수 있는 방법이 됩니다.


    Intrinsic Matrix와 Extrinsic Matrix

    3차원 공간에 있는 한 점이 어떻게 2차원 이미지의 픽셀로 표현되는지를 설명하는 것이 바로 카메라 행렬이며, 이는 Extrinsic Matrix와 Intrinsic Matrix 두 가지의 곱으로 표현됩니다.

    • Extrinsic Matrix: 카메라의 위치와 방향

      • World 좌표계에 있는 점들을 카메라 좌표계로 변환하는 역할

    • Intrinsic Matrix: 카메라 자체의 성질

      • 카메라 렌즈와 이미지 센서의 고유한 광학적/기하학적 특성을 정의

      • 3D 카메라 좌표계에 있는 점을 2D 이미지 평면의 픽셀 좌표로 Projection하는 역할

      • 구성요소

        • Focal Length: 렌즈의 중심과 이미지 센서 사이의 거리
        • Principal Point: 렌즈의 중심에서 이미지 센서에 수직으로 내린 점의 픽셀 좌표

Single view 이미지에서 depth를 추정할 때 어떤 수식을 이용할까요?

이 질문에 제가 아는 지식 안에서 대답을 하자면 없다입니다.
Single View에서 depth를 추정하는 수식은 없고 수식으로 해결하기 위해서는 보통 disparity를 제공하는 stereo camera를 사용합니다. 수식을 꼭 구해야 하지 않는다면 요즘 monst3r 같은 deep learning 기반 depth 추정 모듈이 있기 때문에 그것을 사용하면 될 것 같습니다.

profile
student

0개의 댓글