BIM 칼럼니스트 강태욱의 이슈 & 토크
이번 호에서는 드론, 로버 등에서 촬영한 2차원 사진에서 3차원 모델인 포인트 클라우드(Point Cloud)를 생성하는 SFM 도구인 OpenMVG의 사용 방법을 소개한다. 이 기술은 이미 Pix4D, ContextCapture 등 상업용 프로그램에서 널리 사용되고 있다. 이 프로그램들은 촬영된 2차원 이미지들에서 3차원 포인트 클라우드(점군)을 자동 생성한다.
■ 강태욱 | 건설환경 공학을 전공하였고 소프트웨어 공학을 융합하여 세상이 돌아가는 원리를 분석하거나 성찰하기를 좋아한다. 건설과 소프트웨어 공학의 조화로운 융합을 추구하고 있다. 팟캐스트 방송을 통해 Engineering digest와 관련된 작은 메시지를 만들어 나가고 있다. 현재 한국건설기술연구원에서 BIM/GIS/FM/BEMS/역설계 등과 관련해 연구를 하고 있으며, 연구위원으로 근무하고 있다.
이메일 | laputa99999@gmail.com
페이스북 | www.facebook.com/laputa999
홈페이지 | https://sites.google.com/site/bimprinciple
팟캐스트 | http://www.facebook.com/groups/digestpodcast
그림 1. SFM 기반 3차원 모델 생성(OpenMVG)
SFM은 Structure From Motion의 약자로, 2차원으로 촬영한 이미지의 모션정보를 이용해 촬영된 이미지의 카메라 위치와 방향을 역추적한 후 이미지들과 카메라들의 관계를 구조화하는 알고리즘이다. SFM을 이용해, 각 촬영 이미지의 고유한 특징점(Feature Point)을 얻고 각 촬영 장면마다 특징점들과 관계를 서로 매칭하고 계산해 카메라의 위치를 얻을 수 있다.
SFM을 사용하는 무료 프로그램 중 하나는 VisualSFM이며, 앞서 언급한 기능을 지원한다. 이번 호에서는 직접 API(Application Program Interface) 수준에서 프로그램을 만들고, 알고리즘을 리비전할 수 있는 OpenMVG를 사용해 본다.
OpenMVG 빌드 및 테스트를 위해 다음 링크를 방문해 관련 명령을 그대로 따라한다. 참고로 개발 환경은 우분투 18.04에서 진행하였다.
■ OpenMVG github: https://github.com/openMVG/openMVG/blob/master/BUILD.md
깃허브(github)에서 다음과 같이 소스코드를 다운로드 받고 패키지를 설치한 후 빌드한다.
git clone --recursive https://github.com/openMVG/openMVG.git
sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev
sudo apt-get install graphviz
mkdir openMVG_Build && cd openMVG_Build
cmake -DCMAKE_BUILD_TYPE=RELEASE -DOpenMVG_BUILD_TESTS=ON ../openMVG/src/
cmake --build . --target install
make test