바닥면을 검출하는 방법에는 어떤 것이 있을까요?

SJ·2025년 1월 31일
0

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


SLAM을 할 때 바닥을 추출하면 많은 것이 편해집니다.
Coordinate의 한 축이 고정이 되면 자연스럽게 자유도가 줄어 matching이 간편해지기도 하고
바닥과의 관계를 통해 물체를 판별할 수도 있습니다.
카이스트에서 바닥을 추출하는 알고리즘인 Patch work도 있어서 활용할 수 있습니다.
근데 이건 실제로 사용했을 때 벽도 추출되어서 못 썼던 기억이 있네요.. 제가 잘못한 것일 수도 있습니다.

Point Cloud 기반의 바닥 검출

  • RANSAC을 이용한 바닥면 추출
  1. RANSAC을 이용하게 되면 point cloud 중 임의의 점 3개를 골라 평면 방정식을 추정하고, 이 평면에 잘 부합하는 점들의 개수를 확인

  2. 여러번 반복하여 가장 많은 inlier를 가진 평면 모델을 찾음

  3. 계산 속도와 구현 난이도가 적절하여 실시간 처리가 가능

  • Hough Transfrom 기반
  1. 2D 영상 선분 검출에 쓰이는 허프 변환의 개념을 3D에 확장한 방식

  2. 공간에서 평면 방정식의 파라미터를 누적하여 가장 많은 포인트가 일치하는 평면을 검출

  3. 많은 누적 정보를 필요로 하기 때문에 메모리가 많이 들고, 파라미터 양이 많아 연산량이 큼


  • PatchWork
  1. 여러 점을 샘플링하여 바닥의 normal vector를 구합니다.

  2. 각 point의 normal vector와 내적을 통해 일정 threshold이하의 값을 도출하는 point를 바닥 point로 설정

  3. 내적 후 비교하는 간단한 알고리즘이기 때문에 실시간성 보장

RGB 영상 기반 바닥 검출

  • 이미지 feature 기반

    카메라 내부 파라미터와 바닥면에서의 특징점을 알고 있으면 homography 변환을 통해 바닥면의 위치나 기울기를 추정 가능 => 카메라와 바닥면 사이의 기하학적 관계를 모델링하여 추정

  • 영상 내 특징 기반 분류

    바닥면이 다른 객체와 색상이나 텍스처가 다르다면, 2D 이미지 상에서 바닥 영역을 분류

  • PlaneNet, PlaneRCNN 등 네트워크 사용

    이미지를 입력으로 받아 장면 내 여러 평면들을 동시에 검출하고, 각 평면의 방정식을 추정하는 모델을 사용


카메라를 사용한다면 network 사용하는게 제일 효율적일 것 같긴 합니다.
point cloud에서는 RANSAC도 효율적이지만 반복적인 sampling을 해야하기 때문에 속도 문제가 조금 있고
Patchwork는 논문을 읽어 봤을 때 매우 효율적이고 직관적인 아이디어를 가지고 있었습니다.
아직 더 많은 기법이 있을텐데 제가 알고 있는 것은 여기까지입니다.

profile
student

0개의 댓글