Advanced
Parallelization of Feature Detection and Panorama Image Generation using OpenCL and Embedded GPU
Parallelization of Feature Detection and Panorama Image Generation using OpenCL and Embedded GPU
Journal of Broadcast Engineering. 2014. May, 19(3): 316-328
Copyright © 2014, The Korean Society of Broadcast Engineers
  • Received : March 17, 2014
  • Accepted : May 08, 2014
  • Published : May 30, 2014
Download
PDF
e-PUB
PubReader
PPT
Export by style
Article
Author
Metrics
Cited by
TagCloud
About the Authors
승헌, 강
승재, 이
만희, 이
인규, 박
pik@inha.ac.kr

Abstract
본 논문에서는 최신 embedded GPU를 사용하여 영상의 특징 추출 알고리즘(SIFT, SURF)을 병렬화하고, 특징 추출 및 정합 결과를 이용하여 파노라마 영상을 GPU에서 고속으로 생성하는 방법을 제안한다. 병렬화 된 알고리즘의 GPGPU(general purpose computation on GPU) 구현은 최신 스마트폰의 embedded GPU에서 지원하기 시작한 OpenCL을 이용하였다. 본 논문에서는 GPU에서 OpenGL Shading Language(GLSL)를 이용한 기존의 병렬화와 OpenCL을 이용한 새로운 병렬화 구현 결과를 효과적인 코드 구현 방법과 수행 속도 관점에서 비교하였다. 실험결과, OpenCL은 GLSL과 유사한 수행 속도를 보였으며 embedded CPU와 비교하여 약 3~4배 빠른 수행속도를 보였다. 구현한 특징 추출 결과의 응용 사례로써, 특징 정합을 통한 영상 정합을 GPU상에서 병렬 수행하여 여러 장의 영상으로부터 파노라마 영상을 고속으로 생성하는 사례를 보인다.
Keywords
Ⅰ. 서 론
최근의 embedded GPU(graphic processing unit)는 컴퓨터 그래픽스 분야에서 기본적인 3차원 그래픽스 렌더링 뿐 아니라, 많은 부동 소수점 연산이 필요한 분야에 범용적으로 이용되고 있다. 이를 GPGPU(general purpose computation on GPU)라 통칭하며, 비디오 디코딩과 같은 스마트폰의 멀티미디어 응용 프로그램에서 사용되고 있다. Embedded GPU는 데스크탑 GPU처럼 수천 개의 병렬 코어로 구성되어 있는 것이 아니기 때문에 여전히 대 규모의 병렬화에서 쓰이지 못한다. 그러나 최근 Qualcomm, Imagination Technologies, ARM, NVIDIA 등의 업체에서 주도하는 embedded GPU의 발전을 통해 병렬 코어의 개수가 지속적으로 늘고 있고 (현재 4~16), 병렬 코어를 활용한 다중스레드 기능도 사용할 수 있게 되었다. 특히, GPGPU 기반의 병렬처리 구조가 SIMD (single instruction multiple data)의 구조를 갖는 영상처리나 컴퓨터 비전 알고리즘에 적합한 형태이기 때문에, 위와 같은 분야에 GPGPU가 활발히 이용되고 있다 [1] [2] [3] .
본 논문에서는, 우선 대표적인 영상 특징 추출 (feature extraction) 및 특징 기술자 (feature descriptor) 알고리즘인 SIFT(scale-invariant feature transform) [4] 와 SURF(speeded up robust features) [5] 의 두 알고리즘에 대하여 OpenCL을 이용하여 병렬화 하고 상용 스마트폰의 embedded GPU에서 구동하였다. 그 결과 embedded CPU에서의 구동 대비 수배의 속도 향상 결과를 얻을 수 있었다. 비교를 위해 기존의 OpenGL Shading Language (GLSL) [6] 을 이용하여 역시 GPU상에서 구현하였으며 OpenCL [7] 을 이용한 구현과 성능을 비교하였다. 또한 구현된 특징 추출 알고리즘의 응용 사례를 보이기 위해, 특징 기술자의 정합을 통한 영상 정합을 수행하여 파노라마 영상을 생성하는 과정을 병렬화하고 스마트폰의 embedded GPU상에서 구동한 결과를 보였다. 본 논문의 초기 결과는 [8] 에서 제시되었다.
OpenCL은 최초의 사양이 표준화 된 후 3년이 지났으나 주로 데스크탑 GPU에서 이용되어왔고, 데스크탑 GPU에서는 기존의 NVIDIA CUDA가 더 광범위하게 이용되고 있다. 그러나 OpenCL은 국제표준이므로 향후 보급 가능성이 더 크고, 특히 스마트폰의 embedded GPU에서의 병렬처리는 OpenCL이 주도할 것으로 예상된다. 스마트폰에 장착된 응용 프로세서의 embedded GPU에서의 OpenCL 구동은 최근에서야 시작되었다. Embedded GPU를 위한 드라이버가 최적화가 되어 있지 않고, 구동이 안정적이지 못한 단점은 아직 남아있으나 이는 시간이 지남에 따라 해결될 것으로 보인다. 본 논문에서 기술된 내용은 SIFT, SURF, 파노라마 영상 생성 등의 고수준 알고리즘을 embedded GPU에서 병렬화하고 OpenCL을 이용하여 구현하였으며 상용 embedded GPU에서 구동한 최초의 시도이다.
본 논문의 구성은 다음과 같다. 제2절에서는 GPGPU에서의 영상처리 프레임워크에 대해 기술한다. 제3절에서는 SIFT와 SURF 특징 추출 알고리즘의 병렬화 방법 및 최적화 방향에 대하여 설명한다. 제4절에서는 SIFT 특징점들의 정합을 통한 영상 정합을 수행하여 파노라마 영상을 취득하는 알고리즘의 병렬화 기법에 관해 설명한다. 그리고 제5절에서는 특징 추출 알고리즘과 파노라마 영상생성의 실험 결과를 제시한다. 마지막으로 제6절에서는 본 논문의 결론을 맺는다.
Ⅱ. GPGPU 영상처리 프레임 워크
OpenCL은 CPU, GPU, DSP 등의 이종 플랫폼에서도 공통적인 프로그래밍 인터페이스를 제공하는 순수한 병렬 연산 라이브러리의 국제 표준이다 [7] . 또한 OpenCL은 embedded GPU에서의 병렬 컴퓨팅을 위한 새로운 표준 GPGPU 인터페이스이다. 기존의 GLSL을 이용한 GPGPU는 컴퓨터 그래픽스의 파이프라인 내부의 연산을 쉐이더 프로그래밍을 통해 변경하는 방식이므로 결국 컴퓨터 그래픽스 이론 및 OpenGL을 이해하여야 GPGPU에 활용할 수 있는 근본적인 한계를 가지고 있다. 또한 병렬 스레드 간의 동기화와 스레드의 쓰기 공간이 단 한 개의 화소값으로 제한되는 한계로 인해 병렬화 할 수 있는 알고리즘이 제한적이며 또한 구현이 비효율적이 될 가능성이 증가한다.
OpenCL에서는 GPGPU 기반의 영상처리를 수행하기 위하여 image2d _ t 의 자료 구조를 사용하여 CPU측 메모리에 저장된 자료를 복사해온 후, 스레드 수준의 데이터 병렬화를 수행하게 된다. OpenCL 커널 함수는 대부분의 유효한 전역 메모리 공간의 쓰기를 수행하여 영상 형태의 결과 데이터를 생성하게 된다. 그리고 전역 메모리의 자료를 CPU측 메모리로 복사해주어 모든 수행을 마무리한다. OpenCL은 OpenGL보다 메모리 사용과 연산 수행에서 유연성이 개선되었다. 유연성이 개선된 부분은 병렬 스레드 동기화와 제한되지 않은 메모리 사용이다.
Ⅲ. Embedded GPU에서의 특징 추출 알고리즘
본 절에서는 SIFT와 SURF 특징추출 알고리즘을 병렬화하고, OpenCL과 OpenGL을 이용하여 embedded GPU에서 구현하기 위한 과정을 제시하며, 이와 관련된 GPGPU 최적화 기법을 설명한다.
- 1. SIFT 알고리즘
SIFT 알고리즘은 회전, 크기 변환과 조명변화 및 시점의 변화에 강인한 지역적 특징 추출 알고리즘으로서 컴퓨터비전의 여러 분야에 사용된다 [4] . SIFT 알고리즘은 그림 1 에 제시한 바와 같이 다음의 여섯 단계로 구성된다.
PPT Slide
Lager Image
SIFT 알고리즘의 구조 Fig 1. Structure of SIFT algorithm
1) RGB 컬러영상을 회색계조 영상으로 변환
2) 피라미드 영상 구성
3) Difference of Gaussian (DoG) 계산
4) 특징점 위치 판별 (keypoint localization)
5) 특징점 방향(orientation) 판별
6) 특징 기술자(descriptor) 생성
OpenCL을 사용하여 여섯 단계를 구현한 주요 내용은 다음과 같다. 입력받은 RGB 컬러영상을 회색계조 영상으로 변환한다. 모든 화소값들은 화소당(per-pixel) 스레드 연산을 통해 구현하게 되고, 한 채널 값에 그 화소값을 저장함으로 결과를 다음 단계로 전달한다. 두 번째 단계에서 생성하는 피라미드 영상은 네 단계의 옥타브(octave)로 구성한다. 저해상도 영상을 얻기 위한 저주파 필터링과 샘플링 과정에서는 지역 메모리(local memory)를 이용하여 스레드가 화소 데이터에 고속 접근이 가능하도록 한다. 또한 4단계의 저주파 필터링의 값을 각 채널에 넣음으로써 메모리 공간을 아끼고 다음 단계에서의 접근이 용이하도록 구현하였다. 세 번째 단계는 Difference of Gaussian 연산을 통해 특징점을 찾는 과정이다. 이 경우 CPU를 사용하여 순차적인 탐색을 할 경우 수많은 연산으로 인해 수행속도가 저하되므로 본 논문에서는 각각의 work-item에 적합한 연산량을 반복 실험에 의해 경험적으로 결정하였다. 또한, 화소당 스레드 연산을 통해 특징점의 위치를 판별하고 non-maximum suppression(NMS) 과정을 통해 불필요하거나 위치가 중복되는 특징점을 배제하도록 하였다. 네 번째 단계에서는 특징점의 개수만큼의 병렬 스레드를 발생하여 특징점의 방향과 중요도를 계산하고 각 옥타브 별로 해당 값을 축적한다. 또한, 특징점의 히스토그램을 사용하여 특징점의 방향과 크기 정보가 결정된다. 이 단계에서도 지역 메모리를 사용하여 병렬 스레드에서의 접근 속도를 줄였다.
SIFT 특징 추출 알고리즘의 OpenCL 구현 구조
PPT Slide
Lager Image
Table 1. OpenCL implementation structure of SIFT feature extraction algorithm
- 2. SURF 알고리즘
SURF는 SIFT와 유사한 구조 및 특징 추출 성능을 보이지만 정수 연산화를 통해 수행 속도를 개선한 특징 추출 알고리즘이다 [5] . SURF 알고리즘은 그림 2 에 제시한 바와 같이 다음의 여섯 단계로 구성된다.
PPT Slide
Lager Image
SURF 알고리즘의 구조 Fig 2. Structure of SURF algorithm
1) RGB 컬러영상을 회색계조 영상으로 변환
2) 적분 영상(integral image) 계산
3) 박스(box) 필터를 이용한 Hessian determinant 연산
4) Non-maximum suppression (NMS)을 이용한 특징점의 위치 판별
5) Harr response를 이용한 특징점 방향 계산
6) 특징 기술자 생성
OpenCL을 사용하여 여섯 단계를 구현한 주요 내용은 다음과 같다. 첫 번째에서는 앞서서 입력받은 RGB 컬러영상을 회색계조 영상으로 변환한다. 모든 화소값들은 화소당 연산을 통해 구현되고, 한 채널 값에 그 값을 저장함으로 결과를 다음 단계로 전달한다. 두 번째에서는 한 채널 값으로 저장된 회색계조 영상을 이용하여 적분영상을 생성하게 되는데, 이 때 각 화소에서는 지역 메모리의 활용과 workgroup당 최적의 work-item의 크기를 사용하여 일반적으로 알려진 감소(reduction) 알고리즘을 이용하였다. 이때, 속도를 최적화하기 위하여 work-item의 최대크기인 64×1로 가로방향에 대한 합을 구하고, 그 결과를 다시 세로방향에 대한 합을 구하였다. work-item의 최대 크기는 실험적으로 구하였다. 적분영상의 결과를 저장하는 방법은 GLSL의 경우 화소값에 저장할 수 있는 값이 최대 255이기 때문에 여러 채널에 나눠서 저장하는 방식을 사용한다. 반면에 OpenCL의 경우 image2d _ t 의 기본 자료형에 따라 저장할 수 있는 값의 최대치를 다르게 할 수 있다. 본 실험에서는 부동소수점을 기본 자료형으로 사용하여 한 채널 값에 모든 적분영상을 저장할 수 있다. 세 번째로 Hessian의 행렬식(determinant)을 구하기 위해서, 4개의 옥타브와 각 옥타브별로 4가지의 거리 값에 따른 Hessian의 행렬식을 구하므로 총 10종류의 값을 구하면 된다. 따라서 각 옥타브와 거리값에 따른 행렬식을 각각 적분영상의 박스 필터를 이용하여 구하게 되며, 각 옥타브별로 work-item의 개수가 정해지게 된다. Hessian의 행렬식은 화소별로 스레드를 발생시켜 계산하게 된다. 그 후 NMS 단계에서는 모든 추출된 특징점에 대한 NMS를 병렬처리하며 유효한 특징점을 결정한다. 이후 유효한 특징점의 위치정보를 CPU 메모리로 복사하여 정돈된 배열 자료 형태의 참조 테이블을 만들고 이 테이블 자료를 다시 GPU 메모리로 보내준다. 따라서 마지막 두 단계는 전체 work-item의 개수를 특징점의 개수로 하여 특징점 당 병렬 연산을 수행할 수 있도록 구현하였다.
GPU에서 적분영상을 계산할 때는 일반적으로 알려진 감소 알고리즘을 이용하였다. 이 때, OpenCL에서는 커널의 수행중 스레드간의 동기화가 가능하기 때문에 커널의 호출 회수가 GLSL 구현에 비해서 현저히 감소하게 된다(21번에서 2번으로 감소). 또한 지역 메모리를 가능한 모든 경우에 최대한 사용하여 전역 메모리를 사용할 경우에 비해 메모리 접근 시간을 감소시켰다. 이와 같이 GPU 내부에 존재하는 지역 메모리 사용은 데스크탑 GPU 뿐 아니라 embedded GPU에서의 GPGPU 구현에서 최적화의 가장 중요한 요소이다. 전체적으로 GLSL로 구현된 경우에 비해 OpenCL로 구현한 경우, 수행되는 커널의 수를 반 이하로 줄이게 되었다(51개 에서 23개). 이와 같이 OpenCL이 GLSL보다 GPGPU 응용 프로그램 개발에 효율적이라고 할 수 있다. 스레드 내부에서의 동기화 문제뿐 아니라, 병렬 스레드의 쓰기 공간이 모든 전역 메모리 영역에 가능하다는 것은 알고리즘의 구현 자유도를 획기적으로 높인 OpenCL의 주요한 특징이다.
SURF 특징 추출 알고리즘의 OpenCL 구현 구조
PPT Slide
Lager Image
Table 2. OpenCL implementation structure of SURF feature extraction algorithm
- 3. GPU에서의 구현 최적화
Embedded GPU에서의 GPGPU에 대해서는 최적화에 대한 기존의 연구 또는 기술적인 노하우가 많이 알려지지 않았다. 그러나 GPU의 일반적인 하드웨어 구조나 GPGPU의 프로그래밍 관점에서 보았을 때, 데스크탑 GPU에서의 최적화 기술이 embedded GPU에도 적용될 수 있으므로 본 논문에서는 일반적으로 알려진 GPGPU 최적화 기술들 [1] [2] 을 사용하여 최적화를 수행하였다. 이는 (1) 정수 연산을 피하고 부동 소수점 연산을 이용, (2) Loop unrolling기법을 사용하여 간단한 for 문 이용을 줄임, (3) 가능한 모든 경우에 대해 전역 메모리 사용보다는 지역 메모리를 최대한 사용, (4) Work-item의 연산 부담과 work-group내부의 work-item 수의 균형 찾기 등을 의미한다. 본 논문에서는 work-item의 개수와 work-group의 크기는 실험적으로 결정하였다. 또한, 전체 알고리즘은 데이터 병렬화가 최대한 가능하도록 세부 알고리즘으로 나누되, 커널 함수의 개수는 최소화하도록 구현하였다.
Ⅳ. 파노라마 영상 생성을 통한 SIFT 특징검출 성능 검증
파노라마 영상은 두 장 이상의 영상이 중첩되는 부분에서의 특징 정합을 통해 추정한 호모그래피(homography) 행렬을 이용하여 영상을 워핑(warping)한 후 이를 병합하여 한 장의 영상으로 표현하는 기법을 의미한다 [9] . 파노라마 영상 생성은 그림 3 에 제시한 바와 같이 다음의 여섯 단계로 구성된다.
PPT Slide
Lager Image
파노라마 영상 생성 과정의 블록다이어그램 Fig 3. Block diagram of panorama image generation
1) SIFT 특징점 추출 알고리즘을 이용하여 특징점 검출 및 기술자 생성
2) 모든 특징 기술자 쌍에서의 거리 측정을 통해 초기 특징 정합 수행
3) RANSAC 기법을 이용하여 무작위로 네 쌍의 정합된 특징점들을 선택하고 호모그래피 행렬 계산
4) 호모그래피 행렬을 이용하여 적합점(inlier)/이상점(outlier) 판별
5) 반복적으로 3), 4) 단계를 수행하여 최적의 호모그래피 취득
6) 호모그래피 행렬을 이용하여 영상 워핑 수행 및 병합
본 논문에서는 Embedded GPU에서의 병렬 처리를 위하여 파노라마 영상 생성의 각 단계별 OpenCL 커널 함수를 작성하였다. 첫 번째 단계에서는 Ⅲ절에서 기술한 SIFT 특징 추출 알고리즘을 이용하여 특징점을 검출한다. 두 번째 단계에서는 앞서 구한 SIFT 특징점의 기술자를 이용하여 두 입력 영상의 특징 기술자간 모든 거리를 계산한다. 이 커널 수행을 위한 전체 work-item의 개수는 전체 특징점 쌍의 개수와 동일하며, 각각의 스레드는 128차원 SIFT 기술자간의 거리를 구한다. 또한 여기서 구한 거리를 이용하여 모든 특징 기술자간 거리 중 최단거리의 정합을 찾는다. 세 번째 단계에서는 RANSAC (random sample consensus) [10] 기법을 이용하여 네 쌍의 정합된 특징점 집합을 무작위로 선택하고, 네 번째 단계에서는 이를 이용하여 호모그래피 행렬을 추정하고 한 영상의 특징점을 호모그래피 행렬을 이용해 다른 영상으로 투영한 뒤 대응점과의 거리를 비교하여 적합점과 이상점을 구분한다. 본 논문에서는 256회의 무작위 샘플링을 통해 이 과정을 반복 수행하며, 이 회수만큼 work-item의 개수를 설정한다. 최종적으로 적합점의 개수가 최대인 샘플을 통해 생성된 호모그래피 행렬을 최적의 호모그래피 행렬로 간주하며, 이를 이용하여 기준 영상에 대해 다른 영상을 워핑하여 영상 병합을 수행한다.
파노라마 영상 생성의 OpenCL 구현 구조
PPT Slide
Lager Image
Table 3. OpenCL implementation structure of panorama image generation
Ⅴ. 실험 결과
실험을 위하여 고성능 embedded GPU를 갖춘 최신 스마트폰을 사용하였다. 본 실험에서 사용한 스마트폰은 삼성 전자의 Galaxy S4 LTE-A이며, 이는 Qualcomm의 Snapdragon 800 응용 프로세서를 장착하였다. Snapdragon 800 응용프로세서는 Krait공정의 쿼드코어 2.3GHz CPU와 Adreno 330 쿼드코어 450MHz GPU를 탑재하고 있다. 스마트폰의 운영체제는 Android 4.2이고, 실험 영상의 해상도는 1280×720이다. 스마트폰에서의 인터페이스 프로그램을 이용하여 파일로 저장된 영상에 대한 처리와 카메라에서의 라이브 입력 비디오를 캡처한 영상에 대한 처리를 선택적으로 수행할 수 있다.
- 1. SIFT 알고리즘
그림 4 (a)의 실험 영상에 대하여 OpenCL을 이용하여 구현한 SIFT 알고리즘의 세부 단계 별 수행속도는 표 4 에 제시한 바와 같다. 본 실험 영상에 대하여 추출된 특징점의 개수는 354개이다. 피라미드 영상 생성은 지역메모리를 사용함으로 속도 개선을 기대할 수 있으나, 각 피라미드별 화소당 차이를 구하는 양이 많기 때문에 수행 시간이 길어질 수밖에 없다. 또한 특징점 방향계산과 특징점 특징기술자 생성에서는 특징점의 개수만큼의 병렬처리를 수행하기 때문에 영상의 복잡도와 특징 추출 문턱치 값에 따라 이 두 단계의 수행시간은 변경될 수 있다. 다양한 실험 영상에 대한 SIFT 특징점 추출 결과는 그림 5 (a)에 추가적으로 제시하였다. Embedded GPU 환경에서의 SIFT 알고리즘 구현은 두 언어 모두 병렬 알고리즘의 구조가 유사하기 때문에 GLSL(301.4ms/frame)과 OpenCL(331.5ms/frame)에서 평균적으로 대등한 성능을 보인다. 같은 알고리즘이 구현되어있는 Android용 OpenCV에서의 수행 결과는 1227ms/frame이다. 따라서 GPU에서의 SIFT 특징 추출 수행 속도는 CPU에서의 기존의 구현에 비해 약 3.7배 이상의 성능 향상을 보인다.
PPT Slide
Lager Image
수행시간 측정에 사용한 실험 영상과 SIFT, SURF 알고리즘 수행 결과 Fig 4. Test image used in execution time measurement and its SIFT, SURF results
그림 4의 실험 영상에 대한 OpenCL 기반 SIFT 알고리즘 단계별 수행 속도
PPT Slide
Lager Image
Table 4. Step-by-step execution time of SIFT implementation on OpenCL
PPT Slide
Lager Image
파노라마 영상 합성 중간 결과 Fig 5. Intermediate result of panorama image synthesis
- 2. SURF 알고리즘
그림 4 (a)의 실험 영상에 대하여 OpenCL을 이용한 SURF 알고리즘의 세부 스텝 별로 수행속도는 표 5 와 같다. 이 실험 영상의 경우 296개의 특징점이 검출되었다. 표 5 에 나타난 바와 같이 NMS 단계까지는 화소당 연산이 주이기 때문에 평균적인 속도는 크게 바뀌지 않는다. 하지만 그 이후 연산인 특징점 방향 계산과 특징점 특징기술자 검출의 경우 앞 절에서 설명한 바와 같이 특징점의 개수를 구하여 그 수만큼 병렬 연산을 수행하기 때문에, 주어지는 영상의 복잡도에 따라서 이후 단계의 속도는 차이가 나게 된다. 표 5 에 나타난 바와 같이 4개의 옥타브 별로 구해지는 Hessian의 행렬식 계산 과정이 많은 시간이 소요된다. 이 과정에서 8번의 커널 수행이 필요하고, 이 때 상호 의존성이 크기 때문이다. SURF 알고리즘을 embedded GPU에서의 수행한 결과, OpenGL과 OpenCL에서 각각 192.4ms/frame 및 272.1ms/frame가 측정되었다. 한편, OpenCV를 이용한 CPU에서의 SURF 수행결과는 981.3ms/frame로 측정되어 GPU가 CPU에 비해 역시 3.6배 이상 빠른 것을 확인할 수 있다. SIFT 알고리즘과 달리 SURF 알고리즘은 적분영상, Hessian 의 행렬식 등 단순 정수 연산이 많은 부분을 차지한다. Embedded GPU에서의 정수 연산은 부동 소수점 연산보다 느리기 때문에, SURF 알고리즘의 경우 OpenCL의 효율은 SIFT 알고리즘에 비해 다소 낮다.
그림 4의 실험 영상에 대한 OpenCL 기반 SURF 알고리즘 단계별 수행 속도
PPT Slide
Lager Image
Table 5. Step-by-step execution time of SURF implementation on OpenCL
- 3. 파노라마 영상 생성
파노라마 영상 생성은 SIFT 특징 추출 알고리즘의 특징 기술자 정합을 통한 호모그래피 행렬 생성을 기반으로 한다. 그림 5 (a)에 제시한 바와 같이 중첩되는 영역이 존재하는 두 장의 영상에 대해 SIFT 알고리즘을 적용하여 특징점을 추출하고 정합을 수행한다. 그림 5 (b)에 제시한 바와 같이 두 입력 영상의 특징 기술자간 모든 거리를 계산하고 최단 거리를 찾아내어 초기 특징점 정합을 수행한다. 그리고 그림 5 (c)에 제시한 바와 같이 RANSAC 기법을 이용하여 반복적으로 적합점과 이상점을 구분한 후 최적의 호모그래피를 취득 한다. 이를 이용하여 기준 영상에 대해 다른 영상을 워핑하여 그림 5 (d)에 제시한 바와 같이 병합된 파노라마 영상을 생성한다. 실험에서 사용한 각 영상의 특징점은 각각 157개, 127개이고, 이 때 SIFT 특징 추출 및 특징 기술자 생성을 제외하고 그 이후의 파노라마 영상 생성의 전체 수행시간은 약 81.5ms 이다. 각 단계별 수행시간은 표 6 에 제시하였다. 단계별 수행시간에서 두 영상의 모든 특징점 쌍에 대해 특징 기술자간 거리를 측정하므로 가장 많은 연산이 필요하여 가장 많은 수행 시간이 소요된다. 그리고 반복적으로 이상점을 제거하는 RANSAC 단계에서는 반복 횟수만큼 스레드가 생성됨으로 반복 횟수가 늘어나는 만큼 확률적으로 정확도가 높아질 수도 있으나 이에 따라 수행시간은 늘어나게 된다. 본 논문에서는 실험적으로 RANSAC의 반복 회수를 256회로 결정하였다. 또한 정합 성능 향상을 위하여 영상 간 중첩되는 영역은 좌우 50% 일 경우로 제한하여 실험을 진행하였다. 다양한 영상에 대한 파노라마 영상 생성 실험 결과를 그림 7 에 제시하였다.
그림 5의 실험 영상에 대한 파노라마 영상 생성의 단계별 수행속도
PPT Slide
Lager Image
Table 6. Execution time of panorama image generation step
PPT Slide
Lager Image
Embedded GPU(Adreno 330)및 OpenCL을 이용한 특징점 추출 결과 (a) SIFT, (b) SURF Fig 6. Feature extraction results using OpenCL on the embedded GPU (Adreno 330). They are captured on the smartphone’s screen. (a) SIFT. (b) SURF
PPT Slide
Lager Image
Embedded GPU(Adreno 330)및 OpenCL을 이용한 파노라마 영상 생성 결과 Fig 7. Result of panorama generation using OpenCL on the embedded GPU (Adreno 330)
Ⅵ. 결 론
본 논문에서는 최신 embedded GPU 및 OpenCL을 이용하여 SIFT 및 SURF 특징 추출 알고리즘을 병렬화 하였고, 이를 응용하여 파노라마 영상을 생성하였다. 알고리즘 수행 속도를 embedded CPU에서의 수행 및 GLSL을 이용한 병렬화 결과와 비교하였으며, CPU 대비 3.7배 이상의 수행 속도 향상을 보였으나 OpenCL과 GLSL간의 수행 속도 차이는 미미하였다. 알고리즘 병렬화의 과정에서는 OpenCL을 이용한 구현이 OpenGL에 비해 증가된 유연성을 가짐을 확인하였다. 따라서 향후 스마트폰에서 보다 많은 멀티미디어 응용 소프트웨어가 알고리즘의 고속 수행을 위해 embedded GPU를 활용할 것으로 기대된다.
BIO
강 승 헌
- 2012년 2월 : 인하대학교 정보통신공학과 학사
- 2012년 3월 ~ 현재 : 인하대학교 정보통신공학과 석사과정
- 주관심분야 : 모바일 영상처리, GPGPU
이 승 재
- 2013년 2월 : 인하대학교 정보통신공학과 학사
- 2013년 3월 ~ 현재 : 인하대학교 정보통신공학과 석사과정
- 주관심분야 : 영상 해상도 향상, GPGPU
이 만 희
- 2006년 2월 : 인하대학교 컴퓨터공학과 학사
- 2007년 3월 ~ 2008년 2월 : 한국전자통신연구원 (ETRI) 위촉연구원
- 2008년 8월 : 인하대학교 정보공학과 석사
- 2011년 1월 ~ 2011년 8월 : 미국 Harvard University 방문연구원
- 2008년 9월 ~ 현재 : 인하대학교 정보통신공학과 박사과정
- 주관심분야 : 특징 기술 및 정합, 영상기반 3차원 형상 모델링, GPGPU
박 인 규
- 1995년 2월 : 서울대학교 제어계측공학과 학사
- 1997년 2월 : 서울대학교 제어계측공학과 석사
- 2001년 8월 : 서울대학교 전기컴퓨터공학부 박사
- 2001년 9월 ~ 2004년 3월 : 삼성종합기술원 멀티미디어랩 전문연구원
- 2007년 1월 ~ 2008년 2월 : Mitsubishi Electric Research Laboratories (MERL) 방문연구원
- 2004년 3월 ~ 현재 : 인하대학교 정보통신공학부 부교수
- 주관심분야 : 컴퓨터 그래픽스 및 비젼 (영상기반 3차원 형상 복원, 3차원 카메라, computational photography), GPGPU
References
Park I. K. , Singhal N. , Lee M. H. , Cho S. , Kim C. 2011 “Design and performance evaluation of image processing algorithms on GPUs” IEEE Trans. on Parallel and Distributed Systems 22 (1) 91 - 104    DOI : 10.1109/TPDS.2010.115
Singhal N. , Yoo J. W. , Choi H. Y. , Park I. K. 2012 “Implementation and optimization of image processing algorithms on embedded GPU” IEICE Trans. on Information and Systems E95-D (5) 1475 - 1484    DOI : 10.1587/transinf.E95.D.1475
Lee J. , Kang S. H. , Lee M. H. , Li S. , Kim H. , Park I. K. 2014 “Real-time parallel image processing library using mobile GPU” Journal of KIISE: Computing Practices and Letters 20 (2) 96 - 100
Lowe D. 2004 “Distinctive image features from scale-invariant keypoints” International Journal of Computer Vision 60 (2) 91 - 110    DOI : 10.1023/B:VISI.0000029664.99615.94
Bay H. , Ess A. , Tuytelaars T. , Gool L. V. 2008 “Speeded-up robust features” Computer Vision and Image Understanding 110 (3) 346 - 359    DOI : 10.1016/j.cviu.2007.09.014
The Khronos Group OpenGL Shading Language https://www.opengl.org/ documentation/glsl/
The Khronos Group Open Computing Language (OpenCL) http://www.khronos.org/opencl/
Kang S. H. , Lee S.-J. , Park I. K. 2014 “Parallelization and optimization of feature dtection algorithms on embedded GPU” Proc. International Workshop on Advanced Image Technology 164 - 167
Hartley R. I. , Zisserman A. 2004 Multiple View Geometry in Computer Vision Second Edition Cambridge University Press
Fischler M. A. , Bolles R. C. 1981 “Random sample consensus: A paradigm for model fitting with applications to image analysis and automated cartography” Communications of the ACM 24 (6) 381 - 395    DOI : 10.1145/358669.358692