Range Image
- 다른 이름: range view, spherical range image
- 카테고리: Sensing › Perception outputs
- 태그: lidar, 3d-perception, semantic-segmentation, point-cloud, data-representation
3D 거리 스캔을 담은 2D 이미지로, 각 픽셀이 하나의 빔 방향을 따라 측정한 거리를 저장하여 스캔에 빠른 처리를 위한 이미지 격자를 부여한다.
정의
거리 이미지(range image)는 3D 스캔을 2D 배열로 저장하며, 각 픽셀은 하나의 시선 방향에 대응하고 그 방향을 따라 측정한 거리를 담는다. 회전식 다중 빔 LiDAR에서는 보통 행이 레이저 빔, 즉 고도각에 대응하고 열이 회전 방향의 방위각에 대응하므로, 각 점은 그 방향의 구면 투영으로 배치된다. 추가 채널에는 흔히 x, y, z 좌표, 반사 신호의 강도, 유효성 마스크가 담긴다.
이미지 배치 덕분에 이웃 관계를 저렴하게 다룰 수 있다. 이미지에서 가까운 점은 대개 공간에서도 가까우므로, 법선, 에지, 지면 분할, 클러스터링을 3D 최근접 이웃 탐색 대신 간단한 이미지 연산으로 계산할 수 있다. 또한 표준 2D 합성곱 신경망으로 LiDAR 데이터를 처리할 수 있다. SqueezeSeg와 RangeNet++ 같은 네트워크는 각 픽셀에 레이블을 붙이고, 그 레이블을 다시 3D 점으로 투영한다. SuMa와 SuMa++는 다른 이유로 거리 이미지를 사용한다. 서펠(surfel) 지도를 같은 이미지 배치로 렌더링하여, 새 스캔을 픽셀 위치로 지도와 연관시킬 수 있게 한다.
투영에는 대가가 따른다. 여러 점이 한 픽셀에 들어가면 하나, 보통 가장 가까운 점만 남으므로, 일부 점은 나중에 이웃으로부터 레이블을 받아야 한다. 하늘, 유리, 흡수성 표면 때문에 반사 신호가 없는 픽셀은 마스킹해야 한다. 물체 경계에서는 한 픽셀의 이웃이 깊이상 멀리 떨어진 표면에 있을 수 있어, 레이블이 전경과 배경 사이로 번진다. RangeNet++는 이를 줄이기 위해 3D에서 k-최근접 이웃 정리 단계를 추가한다. 거리 이미지는 투영 방식과 값에서 카메라 깊이 이미지(depth image)와 다르다. 깊이 카메라는 핀홀 투영을 사용하고 보통 광축을 따른 거리를 저장하는 반면, LiDAR 거리 이미지는 각도 좌표를 사용하고 각 빔을 따른 거리를 저장한다.
중요한 이유
거리 이미지는 희소하고 순서 없는 LiDAR 점군을, 빠른 이미지 알고리즘과 합성곱 신경망이 처리할 수 있는 조밀한 격자로 바꾼다. 많은 실시간 LiDAR 분할, 오도메트리, 압축 파이프라인이 이에 의존한다.
주요 응용
- 2D 네트워크를 이용한 LiDAR 스캔의 의미 분할
- LiDAR SLAM의 투영 기반 데이터 연관
- 지면 제거와 장애물 클러스터링
- LiDAR 오도메트리 특징을 위한 법선 및 에지 추정
- LiDAR 데이터의 압축과 저장
실제 사례
한 자율주행 팀은 각 LiDAR 점에 도로, 자동차, 보행자, 식생 중 하나의 레이블을 실시간으로 붙여야 한다. 이들은 모든 스캔을 레이저당 한 행, 고정된 수의 열을 가진 거리 이미지로 투영하고, 거리, x, y, z, 강도를 다섯 채널에 저장한다. 2D 분할 네트워크가 픽셀마다 클래스를 예측하고, 레이블을 점으로 다시 투영한 뒤, 3D 최근접 이웃 투표로 투영에서 누락되었거나 물체 가장자리에서 잘못 레이블된 점을 바로잡는다. 같은 거리 이미지는 후단에서 지면 제거와, 연결된 픽셀 영역에 따른 장애물 클러스터링에도 재사용된다.
흔한 오해
- 거리 이미지는 카메라 깊이 이미지와 같다 — 투영이 핀홀이 아니라 각도 기반이며, 픽셀은 광축이 아니라 빔을 따른 거리를 저장한다
- 투영은 모든 점을 보존한다 — 한 픽셀을 공유하는 점들은 버려지므로, 레이블을 그 점들에 다시 전파해야 한다
- 이웃한 픽셀은 언제나 이웃한 표면이다 — 깊이 불연속에서는 인접 픽셀이 멀리 떨어져 있을 수 있으며, 이 때문에 레이블 번짐이 생긴다
- 거리 이미지는 회전식 LiDAR에만 맞는다 — 일부 고체(solid-state) LiDAR를 포함해, 빔 방향이 규칙적인 격자를 이루는 센서라면 어떤 것이든 이렇게 저장할 수 있다
알아야 할 사람
- LiDAR 인식 엔지니어
- 자율주행 분할 팀
- SLAM 및 오도메트리 개발자
- 3D 데이터를 다루는 머신러닝 엔지니어
관련 기술
- RangeNet++
- SqueezeSeg
- 구면 투영(Spherical Projection)
- 조감도 투영(Bird's-Eye-View Projection)
- Semantic KITTI
관련 용어
관련 프로젝트
- Open3D: Modern library for 3D point cloud processing, mesh operations, and 3D machine learning
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- PCL: Industry-standard C++ library for point cloud processing in robotics perception
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
- OpenDroneMap: Open-source photogrammetry toolkit that turns drone images into maps and 3D models
- FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO