5
96 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 20 권 제 2 (2014.2) 본 연구는 산업통상자원부 산업융합원천기술개발사업으로 지원된 연구결과 입니다.[10041664, 멀티 Shader GPU 통합형 멀티 코어 퓨전 프로세서 원천 기술 개발] 이 논문은 2013 한국컴퓨터종합학술대회에서 모바일 GPU에서의 병렬 영상처리 라이브러리 개발의 제목으로 발표된 논문을 확장한 것임 †† ††† 정 회 원 비 회 원 종신회원 논문접수 심사완료 : : : : : 인하대학교 정보통신공학과 [email protected] 인하대학교 정보통신공학과 [email protected] [email protected] [email protected] 인하대학교 정보통신공학과 교수 [email protected] (Corresponding author) [email protected] 2013942013115Copyright2014 한국정보과학회ː개인 목적이나 교육 목적인 경우, 이 저작 물의 전체 또는 일부에 대한 복사본 혹은 디지털 사본의 제작을 허가합니다. 이 때, 사본은 상업적 수단으로 사용할 수 없으며 첫 페이지에 본 문구와 출처 를 반드시 명시해야 합니다. 이 외의 목적으로 복제, 배포, 출판, 전송 등 모든 유형의 사용행위를 하는 경우에 대하여는 사전에 허가를 얻고 비용을 지불해야 합니다. 정보과학회논문지: 컴퓨팅의 실제 및 레터 제20권 제2(2014.2) 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리 (Real-Time Parallel Image Processing Library using Mobile GPU) 이종환 강승헌 †† (Jonghwan Lee) (Seung Heon Kang) 이만희 †† 이성철 †† (Man Hee Lee) (Shengzhe Li) 김학일 ††† 박인규 ††† (Hakil Kim) (In Kyu Park) 본 논문은 상용 스마트폰의 모바일 GPU를 사 용하여 실시간으로 영상처리를 수행하는 라이브러리 개발 및 효과적인 개발 방법을 제안한다. 제안하는 라이브러리는 Khronos 그룹의 단체표준인 OpenGL ES 2.0 기반의 Shading Language (GLSL)OpenCL 1.1을 이용하여 개발되었고 Android 운영체제를 기반으로 한 상용 모바일 플랫폼에서 구동하여 성능평가를 수행하였다. CPU 기반의 영상처리 라 이브러리인 OpenCV (open computer vision library) for Android의 함수들과의 비교를 통하여, 모바일 CPU 대비 모바일 GPU를 이용한 영상처리 속도가 평균 3배 이상 가 속되는 것을 확인하였고, 모바일 GPU의 이용에서는OpenGL ES 2.0OpenCL 1.1를 기반으로 한 두 영상처리 라이브 러리를 비교함으로써 효과적인 병렬영상처리 방법을 제시한다. 키워드: 모바일 GPU, GPGPU, OpenGL ES, OpenCL, 스마트폰, 병렬영상처리 Abstract This paper presents the development and optimization of image processing library running on mobile GPU. The library is developed using GLSL (OpenGL shading language) in OpenGL ES 2.0 and OpenCL 1.1 which are the open standards from Khronos group. The performance of developed library is compared to that of CPU-based OpenCV (open computer vision library) for Android library. It is shown that the functions in the developed GPU-based library run more than three times faster than CPU-based OpenCV on a most recent commercial mobile platform. Additionally, this paper proposes effective methods of the parallel image proces- sing application development on mobile GPU. Keywords: mobile GPU, GPGPU, OpenGL ES, OpenCL, smart phone, parallel image processing 1. 서 론 최근 모바일 장치의 사용이 보편화 됨에 따라 개인의 일상 및 다양한 정보를 기록하고 SNS (social network service)를 이용하여 정보를 공유하는 사용패턴이 형성 되었고 이러한 관심 속에서 모바일 기술은 비약적인 발전 을 이루고 있다. 그 중에서도 AP (application processor) 의 계산 능력이 급성장하며 모바일의 효용성이 커졌고 많은 계산 자원이 필요한 영상처리 및 컴퓨터 비전 기 술까지 사용할 수 있게 되었다. 그러나 모바일에 장착되 는 디스플레이 및 카메라 등이 발전하며 데이터 량이 기하급수적으로 증가하기 때문에 고해상도 영상에서 컴 퓨터 비전 알고리즘을 CPU만으로 처리하는 것은 불가 능하다. 따라서 모바일 GPUGPGPU (general purpose graphics processing unit)로 이용함으로써 영상처리를 병렬화, 고속화하여 실시간 영상처리가 가능하도록 하는 연구가 이루어지고 있다[1,2]. 따라서 본 논문에서는 모바일 GPU를 이용하여 실시 간으로 영상처리를 할 수 있는 라이브러리 개발에 대하 여 다룬다. 라이브러리 개발에는 카메라와 동영상 시퀀스 를 이용한 실시간 영상처리 프레임워크 구축과 OpenCV for Android의 대표 함수들을 벤치마크 하여 OpenGL ES 2.0[3,4]OpenCL 1.1[5]을 기반으로 병렬영상처리 라이브러리를 구현하고 이에 대한 성능 비교 및 분석 결과가 포함된다.

모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리image.inha.ac.kr/paper/KIISE04Lee.pdf · 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리

  • Upload
    ngodung

  • View
    265

  • Download
    8

Embed Size (px)

Citation preview

Page 1: 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리image.inha.ac.kr/paper/KIISE04Lee.pdf · 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리

96 정보과학회논문지 : 컴퓨 의 실제 터 제 20 권 제 2 호(2014.2)

․본 연구는 산업통상자원부 산업융합원천기술개발사업으로 지원된 연구결과

입니다.[10041664, 멀티 Shader GPU 통합형 멀티 코어 퓨 로세서 원천

기술 개발]

․이 논문은 2013 한국컴퓨터종합학술 회에서 ‘모바일 GPU에서의 병렬

상처리 라이 러리 개발’의 제목으로 발표된 논문을 확장한 것임

††

†††

정 회 원

비 회 원

종신회원

논문 수

심사완료

:

:

:

:

:

인하 학교 정보통신공학과

[email protected]

인하 학교 정보통신공학과

[email protected]

[email protected]

[email protected]

인하 학교 정보통신공학과 교수

[email protected]

(Corresponding author임)

[email protected]

2013년 9월 4일

2013년 11월 5일

CopyrightⒸ2014 한국정보과학회ː개인 목 이나 교육 목 인 경우, 이 작

물의 체 는 일부에 한 복사본 혹은 디지털 사본의 제작을 허가합니다.

이 때, 사본은 상업 수단으로 사용할 수 없으며 첫 페이지에 본 문구와 출처

를 반드시 명시해야 합니다. 이 외의 목 으로 복제, 배포, 출 , 송 등 모든

유형의 사용행 를 하는 경우에 하여는 사 에 허가를 얻고 비용을 지불해야

합니다.

정보과학회논문지: 컴퓨 의 실제 터 제20권 제2호(2014.2)

모바일 GPU를 이용한

실시간 병렬 상처리

라이 러리(Real-Time Parallel Image

Processing Library

using Mobile GPU)

이 종 환† 강 승 헌

††

(Jonghwan Lee) (Seung Heon Kang)

이 만 희†† 이 성 철

††

(Man Hee Lee) (Shengzhe Li)

김 학 일†††

박 인 규†††

(Hakil Kim) (In Kyu Park)

요 약 본 논문은 상용 스마트폰의 모바일 GPU를 사

용하여 실시간으로 상처리를 수행하는 라이 러리 개발

효과 인 개발 방법을 제안한다. 제안하는 라이 러리는

Khronos 그룹의 단체표 인 OpenGL ES 2.0 기반의 Shading

Language (GLSL)와 OpenCL 1.1을 이용하여 개발되었고

Android 운 체제를 기반으로 한 상용 모바일 랫폼에서

구동하여 성능평가를 수행하 다. CPU 기반의 상처리 라

이 러리인 OpenCV (open computer vision library) for

Android의 함수들과의 비교를 통하여, 모바일 CPU 비

모바일 GPU를 이용한 상처리 속도가 평균 3배 이상 가

속되는 것을 확인하 고, 모바일 GPU의 이용에서는OpenGL

ES 2.0과 OpenCL 1.1를 기반으로 한 두 상처리 라이

러리를 비교함으로써 효과 인 병렬 상처리 방법을 제시한다.

키워드: 모바일 GPU, GPGPU, OpenGL ES, OpenCL,

스마트폰, 병렬 상처리

Abstract This paper presents the development and

optimization of image processing library running on

mobile GPU. The library is developed using GLSL

(OpenGL shading language) in OpenGL ES 2.0 and

OpenCL 1.1 which are the open standards from Khronos

group. The performance of developed library is compared

to that of CPU-based OpenCV (open computer vision

library) for Android library. It is shown that the functions

in the developed GPU-based library run more than three

times faster than CPU-based OpenCV on a most recent

commercial mobile platform. Additionally, this paper

proposes effective methods of the parallel image proces-

sing application development on mobile GPU.

Keywords: mobile GPU, GPGPU, OpenGL ES, OpenCL,

smart phone, parallel image processing

1. 서 론

최근 모바일 장치의 사용이 보편화 됨에 따라 개인의

일상 다양한 정보를 기록하고 SNS (social network

service)를 이용하여 정보를 공유하는 사용패턴이 형성

되었고 이러한 심 속에서 모바일 기술은 비약 인 발

을 이루고 있다. 그 에서도 AP (application processor)

의 계산 능력이 성장하며 모바일의 효용성이 커졌고

많은 계산 자원이 필요한 상처리 컴퓨터 비 기

술까지 사용할 수 있게 되었다. 그러나 모바일에 장착되

는 디스 이 카메라 등이 발 하며 데이터 량이

기하 수 으로 증가하기 때문에 고해상도 상에서 컴

퓨터 비 알고리즘을 CPU만으로 처리하는 것은 불가

능하다. 따라서 모바일 GPU를 GPGPU (general purpose

graphics processing unit)로 이용함으로써 상처리를

병렬화, 고속화하여 실시간 상처리가 가능하도록 하는

연구가 이루어지고 있다[1,2].

따라서 본 논문에서는 모바일 GPU를 이용하여 실시

간으로 상처리를 할 수 있는 라이 러리 개발에 하

여 다룬다. 라이 러리 개발에는 카메라와 동 상 시 스

를 이용한 실시간 상처리 임워크 구축과 OpenCV

for Android의 표 함수들을 벤치마크 하여 OpenGL

ES 2.0[3,4]과 OpenCL 1.1[5]을 기반으로 병렬 상처리

라이 러리를 구 하고 이에 한 성능 비교 분석

결과가 포함된다.

Page 2: 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리image.inha.ac.kr/paper/KIISE04Lee.pdf · 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리

모바일 GPU를 이용한 실시간 병렬 상처리 라이 러리 97

2. 실시간 상처리 임워크

2.1 OpenGL ES 2.0 병렬 상처리 임워크

그림 1은 OpenGL ES 2.0 기반으로 본 라이 러리를

동작하기 한 상처리 임워크의 기본 구조를 도

시화하고 있다. 임워크의 수행과정은 다음과 같다.

1) 카메라 입력 상 동 상 입력

2) 입력 상을 텍스처 메모리에 장

3) 텍스처 메모리를 FBO로 지정

4) 정 / 그먼트 쉐이더를 통한 병렬처리

5) 처리결과가 장된 텍스처를 화면에 출력

OpenGL ES 2.0의 이 라인을 효과 으로 이용하

기 하여 입력 상은 GPU 메모리에 텍스처로 장하

여 GPU에서의 고속 근을 가능하도록 하 고 결과로

장된 FBO의 텍스처를 그 로 디스 이 장치에 출

력하는 구조를 통하여 로세서간의 자료 이동을 최소

화 하 다. 그러나 GPU와 CPU간의 자료이동이 필요한

경우 glReadPixels glDrawPixels함수를 통하여 복

사가 이루어지므로 상당한 송지연이 발생하게 된다.

2.2 OpenCL 1.1 병렬 상처리 임워크

그림 2는 본 라이 러리를 동작하기 한 OpenCL 1.1

기반의 임워크를 표 하고 있다. OpenCL 1.1라이

러리는 계산 련 API이기 때문에 상처리부분만을

하여 동작하고 입력과 출력은 2.1 의 OpenGL ES 2.0

이 라인과 동일하게 동작한다. OpenCL 1.1을 이용한

병렬 상처리를 하여 OpenGL타입의 텍스처로 메모리

에 장된 입력 상을 GL_Sharing 련 함수로 Memory-

Object로 지정해 다. 이를 OpenCL 커 에 구 된 일

련의 처리 과정을 통하여 병렬 상처리를 수행하고 결과

출력을 하여 다시 OpenGL타입의 텍스처로 변환한 뒤

에 바로 화면에 출력한다. 일반 으로 모바일 환경에서는

CPU와 GPU가 동일한 하나의 메모리를 서로 다른 구역

그림 1 OpenGL ES 2.0 기반 상처리 임워크

Fig. 1 OpenGL ES-based image processing framework

그림 2 OpenCL 기반 상처리 임워크

Fig. 2 OpenCL-based image processing framework

으로 구분하여 각각 활용하는데, OpenCL 1.1에서는

에서 언 된 Memory Object를 이용하여 CPU와 GPU

에서 모두 근이 가능고 그에 따라 OpenGL ES 2.0의

이 라인에서 존재하던 CPU와 GPU간 자료이동에 한

제약에서 벗어날 수 있다.

3. 모바일 GPU 기반의 실시간 병렬 상처리

라이 러리 개발

3.1 병렬 상처리 라이 러리 구 최 화

상처리 컴퓨터 비 련 알고리즘은 상당히 방

하다. 따라서 라이 러리를 구 하기 에 최종 목

에 따른 분류를 정하고 상세 알고리즘 정의 한

비교평가를 하여 OpenCV의 기술문서를 참고하 다.

해당 함수들은 문서의 참고논문 방법을 이용하여 구

하는 것을 원칙으로 삼았고 병렬화에 어려움이 되는

부분은 최근 가장 일반 으로 사용되는 알고리즘으로

구 하 다. 한 아래의 일반 인 네 가지 최 화 기법과

kernel에서의 분기 문 사용 등 최 의 성능을 고려하며

OpenGL ES 2.0과 OpenCL 1.1을 이용하여 구 하 다.

∙Floating point precision control

∙Loop unrolling

∙Branching

∙Load Sharing between vertex and fragment shader

3.2 OpenGL ES 2.0 기반 병렬 상처리 라이 러리

OpenGL ES는 3D 그래픽 API(Application Program-

ming Interface)를 제공하는 오 라이 러리인 OpenGL

의 모바일 버 으로, OpenGL이 워크스테이션이나 고성

능 PC와 같은 환경에서 3D 이미지를 더링 하는 것을

목표로 하는 것과는 달리 은 용량의 메모리와 낮은

속도의 CPU를 갖춘 임베디드 환경에 최 화 되어있다.

이 의 그래픽 이 라인은 로그래머에 의해 임의로

변경할 수 없었지만 GLSL이 출시됨에 따라 로그래 이

Page 3: 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리image.inha.ac.kr/paper/KIISE04Lee.pdf · 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리

98 정보과학회논문지 : 컴퓨 의 실제 터 제 20 권 제 2 호(2014.2)

가능한 GPU를 사용할 수 있게 되었다. GLSL을 이용하

면 그래픽 이 라인 정 쉐이더 (vertex shader)

와 그먼트 쉐이더 (fragment shader)를 임의 로

수정할 수 있는데, 이를 이용하여 GPU에서OpenGL의

그래픽 이 라인을 통한 병렬연산이 가능하다.

보통의 상처리 알고리즘은 여러 단계를 거쳐 알고

리즘을 완성하는데, 이를 해결하기 하여 그림 1의

그먼트 쉐이더 부분과 같이 FBO (frame buffer

object)를 사용하게 된다. FBO를 이용하여 임 버퍼

에 장되는 출력 결과를 다음 멀티 패스에서 입력 텍

스처로 이용함으로써 GLSL을 통하여 계산된 결과를

임 버퍼에 장하며, CPU와 GPU간의 자료이동으로

인한 성능 하를 방지할 수 있다. 한 텍스처로 장되

어 있는 상처리 결과물을 그 로 화면에 출력함으로

써 화면 표시에 한 간 비용을 최소화할 수 있다.

OpenGL ES 2.0의 이 라인의 구조는 아래의 항목

에서 보여짐과 같이 병렬 상처리에 상당히 제약 이다.

∙픽셀 당 최 4 float크기의 텍스처 장공간

∙쉐이더 당 4개 (최 float 크기)의 출력값

∙각 쉐이더의 결과 정보 공유 불가능

이러한 제약을 해결하기 하여 다 텍스처를 이용

하고 다 패스로 쉐이더를 설계하 다. 때문에 알고리

즘에 따라 우회 으로 구 해야 하므로 개발이 어렵다.

3.3 OpenCL 1.1 기반 병렬 상처리 라이 러리

OpenCL은 개방형 범용 병렬 컴퓨 임워크로써

CPU, GPU, DSP 등의 다 로세서를 동시에 사용하

는 heterogeneous 시스템에서 병렬 로그램 개발을 도

와주는 표 라이 러리이다. 상용 모바일의 경우, 최근

ARM의 Mali-T6xx시리즈, Qualcomm의 Adreno 3xx시

리즈 등 많은 AP 제공자들이 OpenCL 1.1을 지원하는

모바일 GPU를 제공하기 시작하면서 모바일에서도

OpenCL을 이용한 상처리가 이슈화 되고 있다.

OpenCL은 OpenGL ES와 서로 력할 수 있는 구조

를 가지며, OpenGL의 텍스처와 FBO 그리고 더 버퍼

등의 데이터를 공유할 수 있다. 이를 이용하여OpenGL

의 사용에서 제약을 받는 로컬 메모리 사용과 외부에

사용된 메모리를 추가로 사용하는 것이 가능하며, 메모

리 리 모델을 제공하여 병렬 컴퓨 과정에서의 메모

리 사용의 효율성을 제공한다. CPU와 GPU의 메모리

공간을 공유하는 모바일 환경에서의 OpenCL 1.1의 이

용은 호스트와 그래픽 카드 사이의 데이터 송을 AP

가 지원하기만 하면 단순한 포인터 근이 가능하기 때

문에 모바일 환경에서는 큰 장 이 된다.

OpenCL 1.1을 이용한 병렬 상처리 구 의 경우

역 메모리 캐쉬와 워크그룹 내부에서 공용으로 사용 가

능한 로컬 메모리를 활용하여 메모리 효율 메모리

근시간을 최 화할 수 있었고 3.2 에서 소개된 OpenGL

ES 2.0을 이용한 구 시에 발생하는 제약으로부터 자

유로워 개발이 용이하 다.

4. 실험 결과 분석

본 논문에서 개발된 라이 러리의 성능을 평가하기

하여 Android 4.2.2 기반의 Samsung GalaxyS4 LTE-A

스마트폰을 이용하여 실험을 진행하 다. 해당 실험기기

는 2.3GHz의 Qualcomm Krait 400 CPU와 2GB의 메

인 메모리 그리고 Qualcomm Adreno330 GPU를 탑재

하고 있으며 13MP의 카메라 1920×1080 해상도의 디

스 이가 내장되어 있다. 실험을 한 카메라 동작

동 상 재생은 Java기반의 Android SDK를 이용하 고

OpenGL ES 2.0 OpenCL 1.1을 이용한 병렬 상처

리를 하여 C언어 기반의 Android NDK로 구 하 다.

이 실험의 비교 상은 OpenCV4Android 2.4.6에서

제공되는 동일한 기능의 함수들로 구성된다. 본 라이

러리에서는 기존의 PC 버 에서 지원하는 VideoCap-

ture와 같은 클래스가 지원되지 않고, Android SDK에

서 제공되는 MediaPlayer 클래스는 동 상을 재생하며

바로 텍스처로 장하는 내부 이 라인을 이용하기

때문에 GPU 메모리의 텍스처를 CPU 메모리로 다시

가져오면서 자료이동 시간이 존재하게 되어 계산자원을

낭비하게 된다. 따라서 FFmpeg 오 라이 러리를 이

용하여 임을 바로 메인 메모리에서 이용할 수 있도록

해 주었고 동 상 카메라로부터 입력되는 1280×720

해상도의 상을 이용하여 수행하 다.

먼 CPU를 이용하는OpenCV4Android 2.4.6의 상

처리 함수들의 수행결과와 GPU를 이용하는 OpenGL

ES 2.0로 구 된 라이 러리의 병렬 상처리 함수들의

결과를 비교해보았다. 각 알고리즘들의 복잡도 병렬

화의 합성에 따라 2~27배까지의 처리속도 개선을 확

인할 수 있었고 이를 표 1에 정리된 실험 결과로 살펴

볼 수 있다. 그러나 표 1의 calcHist함수와 integral함수

와 같이 체 픽셀에 하여 각 픽셀 값의 빈도수를

하거나 차례로 하는 경우에는 오히려 느려질 수

밖에 없었다. 이는 하나의 픽셀을 담당하는 각각의 쉐이

더가 독립 으로 동작하며 공유 메모리에 값을 장할

수 없어 해당 픽셀 데이터 크기에 상응하는 결과 값만

반환하기 때문이다. 이와 같은 알고리즘들의 결과를 획

득하기 하여 쉐이더를 반복하여 우회 으로 구 하

기 때문에 CPU보다 오히려 느린 수행시간을 보 다.

다음으로 GPU를 이용하는 OpenGL ES 2.0과 OpenCL

1.1로 구 된 병렬 상처리 라이 러리 비교가 용이

한 표 인 함수들의 수행결과로 성능을 비교하 고

표 2에서 그 비교결과를 살펴볼 수 있다. 비교 간단하

Page 4: 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리image.inha.ac.kr/paper/KIISE04Lee.pdf · 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리

모바일 GPU를 이용한 실시간 병렬 상처리 라이 러리 99

표 1 OpenCV와 OpenGL ES 2.0으로 구 된 병렬 상

처리 라이 러리의 비교

Table 1 Comparison of processing time between the

proposed parallel image processing library (using

OpenGL ES 2.0) and OpenCV

Category AlgorithmOpenCV

(ms)

OpenGL

(ms)

Speed

Up

I/O Input and Output 9.6 6.0

Image

Filtering

bilateralFilter[6] 146.0 31.0 x4.7

boxFilter 331.5 17.7 x18.7

buildPyramid 65.6 7.9 x3.5

dilate 41.5 16.4 x2.53

filter2D 192.6 17.6 x10.9

GaussianBlur 219.7 20.8 x10.6

Laplacian 60.1 18.5 x3.2

medianBlur 469.1 17.1 x27.5

pyrMeanShiftFilter 13147.0 39.7 x331.1

sobel 61.8 15.6 x4.0

Geometry

Transform

remap 67.9 8.2 x8.2

resize 36.1 8.6 x4.2

rotate 69.7 13.9 x5.0

warpAffine 70.6 9.6 x7.4

warpPerspective 107.1 10.6 x10.1

Pixel

Transform

cvtColor 49.8 8.9 x5.6

threshold 14.2 8.1 x1.8

Histogram

calcHist 19.4 77.3 x0.3

calcBackProject 28.7 9.9 x2.9

equalizeHist 41.5 10.9 x3.8

Feature

Detection

Canny 326.4 20.2 x16.2

cornerHarris 278.0 22.7 x12.3

FindContours 66.3 11.5 x5.8

goodFeaturesToTrack 325.4 31.6 x10.3

HoughLines[7] 354.2 80.5 x4.4

Robust

Feature

Detection

SIFT[8] 1147.9 229.6 x5.0

SURF[9] 965.5 179.1 x5.4

고 각 픽셀들간의 의존성이 은 함수들에 해서는 동

작이 다르지 않아 성능차이를 보이지 않았다. 그러나

상의 기하학 처리와 련된 함수에서 OpenGL ES

2.0을 이용하는 것이 더욱 효과 인 것을 확인할 수 있

었다. 이는 OpenGL ES 2.0로 구 된 함수에 정 쉐

이더를 이용한 텍스처 맵핑 기법을 이용하 기 때문이

다. OpenGL ES 2.0은 3D 더링을 목 으로 하기 때

문에 이미지의 기하학 처리 부분에서 효과 이며 크

기변환 시에 설정된 방법으로 이 라인을 통하여 자

동으로 보간이 일어나기 때문에 더욱 효과 이다. 반면

에 OpenCL 1.1을 이용하면 역 메모리와 워크그룹 내

부에서 공용으로 사용 가능한 로컬 메모리를 활용할 수

있고 각 쓰 드에서 동일 주소의 메모리 값을 참조 시

표 2 OpenGL ES 2.0과 OpenCL 1.1로 구 된 병렬

상처리 라이 러리의 비교

Table 2 Comparison of processing time between the

proposed parallel image processing libraries

(using OpenGL ES 2.0 and OpenCL)

AlgorithmOpenGL

(ms)

OpenCL

(ms)

Speed

Up

boxFilter 17.7 16.3 x1.1

buildPyramid 7.9 9.3 x0.9

Dilate 16.4 17.6 x0.8

Erode 14.6 14.4 x1.0

GaussianBlur 20.8 16.5 x1.2

Laplacian 18.5 17.2 x1.2

medianBlur 17.1 18.2 x0.9

Sobel 15.6 14.6 x1.1

warpAffine 9.6 21.8 x0.4

warpPerspective 10.6 22.7 x0.5

cvtcolor 8.9 8.7 x1.0

threshold 8.1 8.3 x1.0

calcHist 77.3 48.1 x1.6

calcBackProject 9.9 10.2 x1.0

Canny 20.2 20.6 x1.0

cornerHarris 22.7 20.1 x1.1

SIFT 229.6 212.2 x1.1

SURF 179.1 214.1 x0.8

발생할 수 있는 문제를 해결하는 atomic 련 함수들을

이용할 수 있다. OpenGL ES 2.0 라이 러리에서 구

이 어려웠던 calcHist를 살펴보면 OpenCL 1.1에서는

로컬 메모리를 사용하며 쓰 드간에 정보를 공유할 수

있기 때문에 로컬 워크 그룹 마다의 히스토그램을 각각

구하고 이를 모두 더하여 히스토그램을 완성시킬 수 있

었고 OpenGL ES 2.0의 결과보다 약 1.5배 정도 빠른

수행속도를 보 다. 이와 같이 각 픽셀간의 종속성 문제

에 하여 자유로울 수 있기 때문에 련함수에 하여

구 하기 쉽고 더욱 빠르게 처리할 수 있다.

라이 러리 함수들의 결과는 OpenCV4Android 2.4.6

의 함수 결과와의 결과 비교를 통하여 검증하 고 그림

3과 4에서와 같이 결과를 확인할 수 있다.

5. 결 론

본 논문에서는 스마트폰에 장착된 카메라로부터 입력

되는 리뷰 상 동 상에 하여 GPU를 이용하여

실시간으로 상처리를 수행 할 수 있는 임워크

라이 러리를 개발하 고, 모바일의 CPU와 GPU 각각

의 상처리 속도를 비교하 다. 부분의 함수에 하

여 CPU보다 GPU를 이용한 상처리의 결과가 빠를

수 있음을 확인할 수 있었다. 그러나 OpenGL ES 2.0

Page 5: 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리image.inha.ac.kr/paper/KIISE04Lee.pdf · 모바일 GPU를 이용한 실시간 병렬영상처리 라이브러리

100 정보과학회논문지 : 컴퓨 의 실제 터 제 20 권 제 2 호(2014.2)

그림 3 OpenGL ES 2.0을 이용한 병렬 상처리 라이

러리의 함수 수행 결과 상 (a) SIFT (b) SURF

Fig. 3 Result Images of OpenGL ES-based proposed

library (a) SIFT (b) SURF

그림 4 OpenCL 1.1을 이용한 병렬 상처리 라이 러리의

함수 수행 결과 상 (a) Sobel filter (b) Canny Edge

Fig. 4 Result images of OpenCL-based proposed library

(a) Sobel filter (b) Canny edge

을 이용한 라이 러리의 경우, 구 에 비 합한 알고리

즘에 해서는 이 라인 상의 제약으로 느려질 수도

있음을 확인할 수 있었다.

이를 해결하기 하여 상처리 알고리즘을 구 하기

에 조 더 효과 인 OpenCL 1.1을 이용한 라이 러리

를 추가 으로 구 하 다. 결과 으로 OpenGL ES 2.0

을 이용하여 구 된 함수의 수행 시간과 비슷하지만, 멀

티 패스간의 종속성이 존재하는 복잡한 알고리즘에

해서는 OpenCL 1.1을 이용한 개발이 더 용이했고 보다

빠른 연산속도를 보 다.

한 CPU와 GPU간에 정보교환이 필요한 경우에는

OpenGL ES 2.0을 이용한 라이 러리보다 OpenCL 1.1

을 이용한 라이 러리에서 수행속도가 더욱 빨랐다. 다

만 기하학 인 변환과 련된 알고리즘에서는 OpenGL

ES 2.0의 라이 러리에서의 정 쉐이더를 이용한 텍스

처 맵핑 기법을 이용하는 것이 효과 이었다. 따라서

CPU만을 이용한 상처리 보다 GPU를 이용한 병렬

상처리가 알고리즘 구 은 어렵지만 더 효율 이고, 알

고리즘에 따라 OpenGL ES 2.0과 OpenCL 1.1을

히 혼합하여 사용하는 것이 실시간 상처리에 더 효과

이라는 결론을 내릴 수 있었다.

References

[ 1 ] I. K. Park, M. H. Lee, and Y. Choi, "Trends of

computer vision on embedded platform," Journal of

the Institute of Electronics Engineers of Korea,

vol.39 no.2, pp.157-164, 2012.

[ 2 ] N. Singhal, J. W. Yoo, H. Y. Choi, and I. K. Park,

"Implementation and optimization of image proces-

sing algorithms on embedded GPU," IEICE Trans. on

Information and Systems, vol.95 no.5, pp. 1475-1484,

2012.

[ 3 ] A. Munshi, et al.. OpenGL ES 2.0 Programming

Guide. Addison-Wesley Professional, 2009.

[ 4 ] R. J. Rost, et al.. OpenGL Shading Language,

Addison-Wesley Professional, 2006.

[ 5 ] A. Munshi, et al.,. OpenCL programming guide.

Addison-Wesley Professional, 2012.

[ 6 ] C. Tomasi and R. Manduchi, "Bilateral filtering for

gray and color images," Proc. of IEEE International

Conference on Computer Vision, pp.839-846, 1998.

[ 7 ] R. O. Duda and P. E. Hart, "Use of the Hough trans-

formation to detect lines and curves in pictures,"

Communication of the ACM, vol.15, pp.11-15, Jan. 1972.

[ 8 ] D. G. Low, "Distinctive image features from scale-

invariant keypoints," International Journal of Com-

puter Vision, vol.60, no.2, pp.91-110, Nov. 2004.

[ 9 ] H. Bay, A. Ess, T. Tuytelaars, and L. V. Gool.

"Speeded-up robust features," Computer Vision and

Image Understanding, vol.110, no.3, pp.346-359, Jun.

2008.