검색결과 리스트
글
LSD-SLAM에서 Semi-Dense의 의미
최근 자동차의 자율주행에 대한 연구가 지속됨으로 인해 자율주행과 관련된 분야들에서 각종 기술들일 발전하고 있는 오늘날입니다. 자동 제어와 자동차 역학을 기본으로 주행중 다양한 위험물들을 감지해 낼 수 있는 센서들을 사용함으로서 자율주행 기술은 한 걸음씩 나아가고 있습니다.
특히 기존 로봇공학에서 연구되어온 SLAM(Simultaneous Localization and Mapping)으로 지도를 만드는 기술을 사용하여 자율주행중인 자동차가 위험물을 감지해내 회피하는 알고리즘 또한 연구가 진행되고 있습니다. 특히 카메라의 경우 Rader나 Lidar 센서에 비해 가격이 압도적으로 저렴하고 상대적으로 많은 동영상 정보를 수집할 수 있으나 이를 처리하기에는 상당히 많은 변수가 존재하기 때문에 이와 관련된 연구 또한 다양하게 진행되고 있습니다. 이러한 카메라를 사용하여 Visual SLAM또한 자율주행의 연구 대상이기도 합니다.
이번 포스팅에서는 카메라로 SLAM을 사용하는 알고리즘 중 하나인 LSD-SLAM(Large-Scale Direct SLAM)에서 Semi-Dense의 의미에 대해 파악해보고자 합니다.
1. LSD-SLAM이란?
LSD-SLAM은 카메라로 들어오는 이미지에서 Feature point를 검출하는 과정을 거치지 않고 바로 사진 자체에서 Semi-Dense를 사용하여 카메라에 감지된 물체의 거리를 가늠하여 이를 SLAM에 적용하는 과정입니다.
사진 출저 : https://medium.com/@j.zijlmans/lsd-slam-vs-orb-slam2-a-literature-based-comparison-20732df431d
쉽게 설명드리기 위하여 보조자료를 가져와 보았습니다. 위에서 보시는 바와 같이 Feature-Based 방식을 사용하면 카메라로 들어오는 이미지에서 Feature를 추출하는 과정이 추가로 존자하여 LSD-SLAM보다 느릴 수 있다는 단점을 가지고 있습니다.
물론 ORB-SLAM는 Feature-Based 방식으로 ORB 방식으로 Feature point를 추출하는 과정이 존재하지만 빠른 속도록 Feature를 감지할 수 있어 최근 각광받는 기술이 존재하기도 합니다.
2. Semi-Dense의 의미
그렇다면 LSD-SLAM의 핵심 기술인 Semi-dense는 어떤 의미일까요? 밀도를 의미하는 dense와 semi의 접두어가 붙었을 때의 의미가 이해되기 쉽지 않으시리라 생각됩니다. 아래 예제를 통해 말씀드리도록 하겠습니다.
만약 다음과 같은 이미지가 있다고 가정합니다. 위 사진을 통해 Dense를 추측하면 아래와 같이 나타낼 수 있습니다.
위 사진에서 파란색의 경우 화면에서 상대적으로 가깝다는 의미이고 빨간색의 경우 화면에서 상대적으로 멀다는 의미로 생각하시면 됩니다. 이를 통해 사진에서 보이는 물체들의 거리를 짐작할 수 있습니다. 이 결과물을 dense depth map이라 하겠습니다.
하지만 SLAM에서 dense depth를 모두 사용하기에는 상당히 많은 시간이 걸리는 데다가 결정적으로 모든 dense depth가 사용되지 않기 때문에 이를 SLAM에 사용하기엔 매우 부적절하다고 할 수 있습니다.
그렇다면 이를 좀 더 가볍게 사용할 수 있는 방법은 없을까요? 이 때 semi-depth 라는 개념을 적용해봅니다.
위 그림은 dense depth map에서 필요하지 않은 부분을 Gaussian 확률 분포를 사용하여 처리하고 남은 부분들을 나타낸 것입니다. Feature-based 방식에서 Feature를 검출하였을 때와 유사한 부분들이 남아있는 것을 볼 수 있습니다.
즉 모든 dense depth map을 사용하지 않고 일부분만을 사용하기 때문에 (full) dense depth map의 방식에서 일부분만 사용한다는 의미로 semi-dense depth map으로 이름을 붙인 것이지요.
이러한 특성을 가지고 있는 LSD-SLAM을 사용한다면 좀 더 빠른 방법으로 SLAM을 사용할 수 있을 것으로 기대할 수 있겠습니다.
- Reference -
'공대생의 팁' 카테고리의 다른 글
C++에서 Graphviz로 그래프 이미지 그리기 (0) | 2019.07.04 |
---|---|
Extreme Learning Machine(극학습기계) (0) | 2019.05.15 |
C++ 클래스 객체를 stream으로 통신 및 전달방법 - Boost Serialization(2) [Class를 TCP 소켓 통신으로 전송] (0) | 2019.03.08 |
C++에서 Boost ASIO를 사용하여 TCP 비동기(Unblocked) 통신 프로그래밍 (10) | 2019.03.07 |
https 차단을 우회하는 방법 - GoodbyeDPI [2019.02.13] (3) | 2019.02.13 |