순차적으로 입력되는 UHD 이상의 크기를 가지는 대용량 비디오(최대 4096x4096 크기)를 CUDA 기반으로 영상 처리를 수행한 과제입니다. 매 프레임마다 8개의 영상처리 알고리즘을 순차적으로 수행하여야 하며, 앞 단 알고리즘의 결과 프레임이 다음 단 알고리즘의 입력이 되는 케스케이드 방식으로 진행되었습니다. 전체적인 처리 시간은 1초 미만으로 구현되어 요구 성능을 만족하였습니다. 유사한 개발 건이 있으면 약간의 수정으로 충분히 적용이 가능한 기술이라고 할 수 있습니다.
360도 VR 영상 생성을 위해 Full-HD 영상 여섯 장을 입력 받아 실시간으로 GPGPU 기술 기반의 스티칭을 구현하는 시스템의 개발을 진행하였습니다. 이 과제에서는 360도 VR에 대해 개발을 진행한 것이지만 결과물의 개발을 위해 사용된 기술은 대용량 처리가 요구되는 UWV(Ultra Wide Vision)나 다양한 크기의 파노라마 영상 처리 등에 충분히 적용이 가능할 것으로 판단하고 있습니다.
위 작업은 초당 60프레임으로 입력되는 6개의 Full-HD 영상 대해 실시간으로 스티칭 기능을 구현해야 하는데 기본적으로 영상의 전송량이 매우 큰 관계로 다중 쓰레드와 OpenGL PBO를 이용한 고속 전송을 기반으로 스티칭이 구현되었습니다.
아래는 Full-HD 영상 여섯 개의 입력을 처리하기 위한 360VR 영상 생성을 위한 스티칭 서버의 내부 프로세싱 블록도입니다.
라이다 센서로부터 데이터를 입력받아 전면 영상과 동기를 맞추어 재생을 하면서 계측된 데이터로 SLAM 맵을 구성하는 소프트웨어의 개발을 의뢰받아 제작하였습니다.
카메라 영상과 라이다 센싱 데이터를 실시간으로 받아 재생하는 방식과 사전에 수집된 영상 및 센싱 데이터를 오프라인으로 재생하는 방식 모두를 지원합니다. 아래의 화면은 수집된 데이터를 파일로부터 입력받아 SLAM 맵을 재구성하는 장면들을 캡처한 것입니다.
실내 측위 맵은 확대, 축소, 회전, 위치 이동 등이 용이하도록 3D 엔진인 OpenGL을 사용하여 구현되었습니다.