KR101827167B1 - Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치 - Google Patents

Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치 Download PDF

Info

Publication number
KR101827167B1
KR101827167B1 KR1020160144675A KR20160144675A KR101827167B1 KR 101827167 B1 KR101827167 B1 KR 101827167B1 KR 1020160144675 A KR1020160144675 A KR 1020160144675A KR 20160144675 A KR20160144675 A KR 20160144675A KR 101827167 B1 KR101827167 B1 KR 101827167B1
Authority
KR
South Korea
Prior art keywords
parallel processing
gpu
cpu
processing
image
Prior art date
Application number
KR1020160144675A
Other languages
English (en)
Inventor
이성주
김윤빈
사재원
곽재경
안광덕
Original Assignee
고려대학교 세종산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고려대학교 세종산학협력단 filed Critical 고려대학교 세종산학협력단
Priority to KR1020160144675A priority Critical patent/KR101827167B1/ko
Application granted granted Critical
Publication of KR101827167B1 publication Critical patent/KR101827167B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/0093Geometric image transformation in the plane of the image for image warping, i.e. transforming by individually repositioning each pixel
    • G06T3/18
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging

Abstract

SIFT 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치가 개시된다. CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법에 있어서, 영상을 대상으로 수행하고자 하는 특징점 추출관련 데이터 분배량을 결정하는 단계, 상기 GPU에서 영상을 대상으로 특징점을 추출하는데 소요되는 스티칭(stitching) 처리 시간, 영상의 입력처리시간, 영상의 출력처리시간에 기초하여 기정의된 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나로 병렬처리를 수행할지 여부를 결정하는 단계, 및 결정된 병렬처리기법에 따라 상기 CPU 및 상기 GPU에서 영상을 대상으로 상기 데이터 분배량에 해당하는 스티칭 처리를 수행하고, 상기 CPU에서 영상의 입력 및 출력을 처리하는 병렬처리를 수행하는 단계를 포함할 수 있다.

Description

SIFT 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치{METHOD AND APPARATUS FOR HIGH SPEED IMAGES STITCHING USING SIFT PARALLIZATION}
본 발명은 SIFT 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치에 관한 것으로서, CPU와 GPU를 동시에 활용하여 VR 컨텐츠 제작 시 스티칭(stitching) 기법의 수행 시간을 감소시키는 고속 영상 스티칭 방법 및 장치에 관한 것이다.
최근, 클라우드 컴퓨팅이나 빅데이터 처리를 위한 분산처리 시스템에서 여러 종류의 컴퓨팅 환경의 발달로 인해 CPU와 GPU를 동시에 이용하는 병렬처리기법에 대한 관심이 증가하고 있다.
인터넷이 발달하고, 무선 인터넷 기능이 탑재된 스마트 폰(smart terminal), 태블릿(tablet) 등의 사용자 단말이 대중화됨에 따라, 사용자 단말에서 무선 인터넷을 통해 영상을 제공받아 영화를 시청하거나, 또는 실시간 스트리밍 서비스(streaming service)를 통해 방송 컨텐츠를 제공받고 있다. 영상 기술이 발전함에 따라 영상 컨텐츠는 방송, 영화뿐만 아니라 VR(Virtual Reality) 컨텐츠까지 영역이 확장되었으며, 최근 들어, VR 산업의 수요가 증가하고 있다.
VR(Virtual Reality) 컨텐츠를 제작하기 위해서는 스티칭(stitching) 기법과 보간 기법이 수행된다. 스티칭 기법은 360도 전방향에 대해 촬영된 영상을 이어서 붙여서 파노라마(panorama) 영상으로 만드는 기법이고, 보간 기법은 스티칭(stitching)을 통해 이어진 영상 사이의 칼자국, 즉, 이어진 영상 간의 이어 붙인 흔적을 제거하는 기법이다. 스티칭 기법은 2개 이상의 영상들(예컨대, 사진 등)을 이어 붙일 때, 각 영상의 특징(feature)이 되는 좌표를 기준으로 이어 붙인다. 이에 따라, 스트칭 기법에서 특징점 추출 알고리즘이 제작된 영상의 품질(quality)을 결정하는 핵심적인 요소가 된다. 예들 들어, 특징점 추출 알고리즘으로는 해리스코너(Harris conner), SURF(Speeded Up Robust Features), SIFT(Scale Invariant Feature Transform) 등이 주로 이용되고 있으며, 현재까지는 상기 알고리즘들 중 SIFT의 성능이 가장 우수하다고 알려져 있다.
그러나, SIFT의 경우, 해리스코너 및 SURF 대비 성능은 우수하나, 해리스코너 및 SURF 대비 특징점을 추출하는 수행시간이 수 배 이상 느리다. 이처럼, SIFT의 경우, 수행시간이 느려 적용 가능한 분야가 제한적이다. 예컨대, VR 컨텐츠를 스트리밍 서비스(streaming service)로 제공하는 경우에 상기 수행시간이 느린 문제로 인해 적용하기 어려웠다.
이에 따라, VR 컨텐츠 제작 시 SIFT의 수행시간을 감소시켜, 속도를 개선할 수 있는 기술이 요구된다.
한국공개특허 제10-2010-0053411호는 멀티코어 멀티스레드 기반의 KLT 특징점 추적 방법 및 그 장치에 관한 것으로, 영상의 영역 별로 코어를 할당하고, 영역 별 병렬 실시간으로 특징점을 추출하는 기술을 개시하고 있다.
본 발명은 상기한 바와 같은 종래기술의 문제점을 해결하기 위해, CPU와 GPU 병렬 처리를 이용하여 입력 영상에서 특징점을 추출하는 스티칭(stitching) 수행에 소요되는 시간을 감소시키는 고속 영상 스티칭 방법 및 장치를 제안하고자 한다.
상기한 목적을 달성하기 위해, 본 발명의 바람직한 일실시예에 따르면, CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법에 있어서, 영상을 대상으로 수행하고자 하는 특징점 추출관련 데이터 분배량을 결정하는 단계, 상기 GPU에서 영상을 대상으로 특징점을 추출하는데 소요되는 스티칭(stitching) 처리 시간, 영상의 입력처리시간, 영상의 출력처리시간에 기초하여 기정의된 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나로 병렬처리를 수행할지 여부를 결정하는 단계, 및 결정된 병렬처리기법에 따라 상기 CPU 및 상기 GPU에서 영상을 대상으로 상기 데이터 분배량에 해당하는 스티칭 처리를 수행하고, 상기 CPU에서 영상의 입력 및 출력을 처리하는 병렬처리를 수행하는 단계를 포함하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법이 제공된다.
상기 병렬처리를 수행하는 단계는, 상기 병렬처리기법 1로 병렬처리를 수행하는 것으로 결정된 경우, 상기 GPU에서 상기 영상의 스티칭 처리를 수행함에 따라 발생하는 CPU의 유휴시간 동안 상기 CPU에서 상기 영상의 입력처리를 수행하는 단계를 포함할 수 있다.
상기 병렬처리를 수행하는 단계는, 상기 병렬처리기법 2로 병렬처리를 수행하는 것으로 결정된 경우, 상기 GPU에서 상기 영상을 대상으로 입력처리시간 및 출력처리시간과 GPU의 데이터 복사시간을 중복시키면서 상기 병렬처리를 수행하는 단계를 포함할 수 있다.
상기 병렬처리를 수행할지 여부를 결정하는 단계는, 상기 CPU에서 수행되는 상기 입력처리시간을 계산하는 단계, 상기 CPU에서 수행되는 상기 출력처리시간을 계산하는 단계, 상기 GPU에서의 스티칭(stitching) 처리 시간 및 GPU의 속도증가값에 기초하여 계산된 값과 상기 입력처리시간 및 출력처리시간을 비교하는 단계, 및 상기 비교를 통해 상기 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나를 결정하는 단계를 포함할 수 있다.
상기 비교를 통해 상기 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나를 결정하는 단계는, 상기 계산된 값이 상기 입력처리시간 및 출력처리시간 중 큰 값보다 작은 경우, 상기 병렬처리기법 1에 따라 병렬처리를 수행하는 것으로 결정할 수 있다.
상기 비교를 통해 상기 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나를 결정하는 단계는, 상기 계산된 값이 상기 입력처리시간 및 출력처리시간 중 큰 값 이상인 경우, 상기 병렬처리기법 2에 따라 병렬처리를 수행하는 것으로 결정할 수 있다.
본 발명의 다른 측면에 따르면, CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 장치에 있어서, 하나 이상의 코어를 포함하는 CPU, GPU, 및 상기 CPU와 GPU를 제어하는 제어부를 포함하고, 상기 제어부는, 영상을 대상으로 수행하고자 하는 특징점 추출관련 데이터 분배량을 결정하고, 상기 GPU에서 영상을 대상으로 특징점을 추출하는데 소요되는 스티칭(stitching) 처리 시간, 영상의 입력처리시간, 영상의 출력처리시간에 기초하여 기정의된 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나로 병렬처리를 수행할지 여부를 결정하고, 결정된 병렬처리기법에 따라 상기 CPU 및 상기 GPU에서 영상을 대상으로 상기 데이터 분배량에 해당하는 스티칭 처리를 수행하고, 상기 CPU에서 영상의 입력 및 출력을 처리하는 병렬처리를 수행하도록 상기 GPU와 CPU를 제어하는 것을 특징으로 하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 장치가 제공된다.
본 발명에 따르면, CPU와 GPU를 이용하여 영상에 대해 SIFT 병렬처리를 수행함으로써, 순차처리 대비 SIFT 수행 시간을 상당히(예컨대, 5배) 감소시킬 수 있으며, SIFT 수행 시간의 속도 개선을 통해 VR 컨텐츠의 제작에 소요되는 비용을 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 고속 영상 스티칭 장치의 블록도이다.
도 2는 본 발명의 일실시예에 따른 스티칭 처리가 입력, 출력 및 특징점 추출로 구분되는 것을 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 CPU와 GPU를 이용하여 고속 영상 스티칭 방법을 설명하기 위해 제공되는 흐름도이다.
도 4는 본 발명의 일실시예에 따른 병렬처리기법 1 및 병렬처리기법 2에 따른 CPU와 GPU의 동작을 도시한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
본 실시예들에서 "영상"은 "프레임(Frame)"을 의미할 수 있다.
이하, 본 발명의 바람직한 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면 번호에 상관없이 동일한 수단에 대해서는 동일한 참조 번호를 사용하기로 한다.
도 1은 본 발명의 일 실시예에 따른 고속 영상 스티칭 장치의 블록도이다.
도 1에 도시된 바와 같이, 고속 영상 스티칭 장치(100)는 복수의 코어(코어 1 내지 코어 n)를 포함하는 CPU(Central Processing Unit, 110), GPU(Graphic Processing Unit, 120), 및 제어부(130)를 포함할 수 있다.
고속 영상 스티칭 장치(100)는 VR(Virtual Reality) 컨텐츠 생성 시 영상에서 특징점들을 추출하는 스티칭 처리에 사용되며, SIFT, SURF 등 다양한 특징점 추출 분야에서 사용될 수 있다. 예컨대, 본 실시예들에서는 SIFT(Scale Invariant Feature Transform)를 이용하여 특징점을 추출하는 경우에 CPU(110)와 GPU(120)를 이용하여 병렬처리를 수행하는 경우를 중심으로 하나, 이는 실시예에 해당되며, SIFT 이외에 다양한 특징점 추출 알고리즘의 병렬처리에 적용될 수 있다.
제어부(130)는 스티칭 처리(SIFT)를 수행하고자 하는 영상에 대해 상기 스티칭 처리를 병렬화하기 위해, 영상의 입력처리를 수행하기 위한 입력 태스크(task), 영상에서 특징점을 추출하기 위한 SIFT 태스크(task), 및 영상의 출력처리를 수행하기 위한 출력 태스크(task)와 같이, 세 가지 태스크를 고려하여 병렬화를 수행하도록 CPU(110)와 GPU(120)를 제어할 수 있다.
도 2는 본 발명의 일실시예에 따른 스티칭 처리가 입력, 출력 및 특징점 추출로 구분되는 것을 도시한 도면이다.
도 2에서, 스티칭 처리가 영상을 CPU(110)로 읽어드리는 입력처리(210), 영상에서 특징점들을 추출하는 부분(220), 및 특징점들에 기초하여 두 영상을 이어 붙여 파노라마 영상을 생성하여 출력하는 출력처리(230)로 나뉘어짐을 확인할 수 있다.
도 3은 본 발명의 일실시예에 따른 CPU와 GPU를 이용하여 고속 영상 스티칭 방법을 설명하기 위해 제공되는 흐름도이다.
도 3을 참고하면, 먼저, 제어부(130)는 CPU(110)와 GPU(120)의 동시 처리를 위한 특징점 추출관련 데이터 분배량(즉, SIFT 데이터 분배량)을 결정할 수 있다(S310).
예를 들어, 하나의 코어에서 특징점을 추출하는 스티칭 처리를 수행하는 동안 나머지 코어들은 유휴 상태가 될 수 있다. 제어부(130)는 각 코어의 유휴 시간이 최소화될 수 있도록 각 코어의 데이터 분배량을 결정할 수 있다. 예컨대, 제어부(130)는 CPU의 속도증가(CPU speedup) 대비 GPU의 속도증가(GPU speedup)로 나눔으로써 CPU(110)와 GPU(120) 각각에서 SIFT 처리를 위한 데이터 분배량을 결정할 수 있다. CPU(110)와 GPU(120) 동시 처리시 CPU(110)와 GPU(120)의 데이터 분배방법은 잘 알려진 기술이므로 상세한 설명은 생략하기로 한다.
제어부(130)는 GPU(120)에서 영상을 대상으로 특징점을 추출하는데 소용되는 스티칭 처리 시간, 영상의 입력처리시간, 영상의 출력처리시간에 기초하여 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나의 기법으로 병렬처리를 수행할지 여부를 결정할 수 있다(S320). 즉, 제어부(130)는 위에서 구분한 세 가지 태스크(입력 태스크, SIFT 태스크, 출력 태스크)의 수행 시간에 기초하여 기정의된 병렬처리기법들 중 어느 하나의 기법으로 병렬처리를 수행할지 여부를 결정할 수 있다.
예를 들어, 제어부(130)는 CPU(110)에서 수행되는 영상의 입력처리시간(t1)을 계산하고, CPU(110)에서 수행되는 영상의 출력처리시간(t3)을 계산하고, CPU(110)에서의 스티칭 처리 시간(t2), GPU(120)에서의 스티칭 처리 시간(TGPU(t2))을 계산할 수 있다. 그리고, 제어부(130)는 계산된 입력처리시간(t1), 출력처리시간(t3), CPU(110)에서의 스티칭 처리 시간(t2), GPU(120)에서의 스티칭 처리 시간(TGPU(t2))과 아래의 수학식 1 내지 수학식 6, 표 1의 알고리즘에 기초하여 병렬처리를 수행하기 위한 기법을 결정할 수 있다.
[수학식 1]
Figure 112016106818623-pat00001
수학식 1에서,
Figure 112016106818623-pat00002
는 CPU(110) 및 GPU(120)를 동시에 이용하여 t1, t2, t3를 처리하는데 소요되는 시간으로서, 총 처리시간(total execution time)을 나타내며, t1은 CPU(110)에서의 영상의 입력처리시간, t2는 CPU(110) 또는 GPU(120)에서의 스티칭 처리시간, 즉, SIFT 처리시간(t2), t3는 CPU(110)에서의 영상의 출력처리시간을 나타내고, n은 CPU의 코어의 수, m은 영상(프레임)의 수를 나타낼 수 있다. 그리고, TCPU()와 TGPU()는 병렬처리기법 1(scenario 1)에 따라 수행되는 멀티코어 CPU(multicore-CPU) 및 멀티코어 GPU(multicore-GPU)에서 모듈들의 처리 시간(execution time)을 나타낼 수 있다. 여기서, t1, t2, t3는 CPU(110)의 처리 시간(execution time)에 영향을 주고, t2는 GPU(120)의 처리 시간(execution time)에 영향을 줄 수 있다.
수학식 1에 따르면, t1, t2, t3를 CPU에서 처리하는 시간과 GPU에서 t2를 처리하는데 소요되는 시간(즉, GPU의 SIFT 처리시간) 중 큰 값, 입력처리시간(t1), 출력처리시간(t3), CPU의 코어 수(n), 및 영상의 프레임 수(m)에 기초하여 병렬처리기법 1이 수행되며, t1과 t3를 중복시켜(overlapping) 유휴시간을 감소시키는 것임을 알 수 있다.
수학식 1에서, 병렬처리기법 1에 따라 수행되는 CPU의 처리시간 TCPU()은 아래의 수학식 2와 같이 표현될 수 있다.
[수학식 2]
Figure 112016106818623-pat00003
수학식 2에서, n-1은 n-1번째 영상(즉, n-1번째 프레임)을 나타내고, DataCopyTime은 SIFT 병렬처리를 위해 CPU(110)에서 GPU(120)로 데이터를 복사하는데 소요되는 시간, 즉, GPU의 데이터 복사시간을 나타낼 수 있다. 그리고, SPEEDUPCPU는 CPU(110)를 대상으로 측정된 CPU의 속도증가값을 나타내고, SPEEDUPGPU는 GPU(110)를 대상으로 측정된 GPU의 속도증가값을 나타낼 수 있다.
수학식 2에 따르면, 스티칭 처리(특징점 추출), 즉, SIFT 처리를 CPU(110)와 GPU(120)에서 동시에 병렬로 처리함에 따라, 상기 t2, 즉 SIFT 처리시간은 SPEEDUPCPU 및 SPEEDUPGPU으로 나누어질 수 있다. 수학식 2와 같이, 병렬처리기법 1에 따라 수행되는 CPU의 처리시간 TCPU()은 t1, t2, t3에 의해 결정될 수 있다.
수학식 2에서, 데이터복사시간 DataCopyTime은 CPU(110)에서 GPU(120)로의 데이터 전송 시간과 GPU(120)에서 CPU(110)로의 데이터 전송시간(예컨대, 처리 결과를 CPU로 전송하는 데 소요되는 시간)에 기초하여 계산될 수 있다. 그리고, CPU(110)에서 GPU(120)로의 데이터 전송 시간과 GPU(120)에서 CPU(110)로의 데이터 전송시간은 GPU(120)의 입력데이터량 및 출력데이터량에 기초하여 계산될 수 있다.
다시 수학식 1에서, 병렬처리기법 1에 따라 스티칭 처리, 즉, SIFT 처리를 수행하는데 소요되는 시간 TGPU()는 아래의 수학식 3과 같이 표현될 수 있다.
[수학식 3]
Figure 112016106818623-pat00004
이상의 수학식 1 내지 수학식 3에서는 병렬처리기법 1(scenario 1)에 따른 CPU 및 GPU의 동시처리를 설명하였으며, 병렬처리기법 2(scenario 2)에 따라 CPU 및 GPU에서 동시처리하는 경우의 총 처리 시간(total execution time)은 아래의 수학식 4와 같이 표현될 수 있다.
[수학식 4]
Figure 112016106818623-pat00005
수학식 4에서, 병렬처리기법 2에 따라 CPU(110)에서 스티칭 처리, 즉, SIFT 처리를 수행하는데 소요되는 시간 TCPU()과 GPU(120)에서 스티칭 처리, 즉, SIFT 처리를 수행하는데 소요되는 시간 TGPU()는 각각 아래의 수학식 5 및 수학식 6과 같이 표현될 수 있다.
[수학식 5]
Figure 112016106818623-pat00006
[수학식 6]
Figure 112016106818623-pat00007
위의 수학식 4 내지 수학식 6에 따르면, 병렬처리기법 2(scenario 2)는 t1 또는 t2를 GPU의 데이터 복사시간과 중복(overlapping)시킴으로써 유휴시간을 감소시키는 것임을 확인할 수 있다.
병렬처리기법 1의 경우, 입력처리시간 t1 및 출력처리시간 t3이 GPU(120)에서 스티칭 처리(특징점 추출), 즉, SIFT 처리(t2)를 수행한 시간보다 작은 경우에 병렬처리기법 2보다 좋은 성능을 가질 수 있다. 그리고, t1 및 t2가 GPU의 데이터 복사시간보다 작으면 병렬처리기법 2가 병렬처리기법 1보다 우수한 성능을 가질 수 있다. 이처럼, 제어부(130)는 t1, t2, 및 GPU의 t2 처리시간(t2 on GPU)을 비교하는 간단한 연산을 통해 현재 입력되는 영상들(프레임들)을 대상으로 CPU와 GPU의 동시 처리를 위한 가장 좋은 성능을 갖는 병렬처리기법(예컨대, 병렬처리기법 1, 병렬처리기법 2)을 결정하고, 결정된 기법에 따라 CPU와 CPU의 동시처리를 제어할 수 있다. 여기서, 제어부(130)는 아래의 표 1의 알고리즘에 따라 t1, t2, 및 GPU의 t2 처리시간(t2 on GPU)을 비교하여 현재 상황에서 가장 적합한 병렬처리기법을 결정할 수 있다.
Figure 112016106818623-pat00008
위의 표 1에 따르면, 제어부(130)는 CPU(110) 및 GPU(120)를 대상으로 GPU(120)에서의 스티칭(stitching) 처리시간, 즉, SIFT 처리시간(t2 on GPU)을 계산할 수 있다. 그리고, 제어부(130)는 입력처리시간 t1, 출력처리시간 t3 중 큰 값과 GPU(120)에서의 스티칭(stitching) 처리시간, 즉, SIFT 처리시간(t2 on GPU)의 값의 크기를 비교할 수 있다. 예를 들어, 상기 입력처리시간 t1이 출력처리시간 t3보다 큰 경우, 제어부(130)는 상기 GPU에서의 스티칭(stitching) 처리시간(즉, SIFT 처리시간) t2 on GPU을 GPU의 속도증가값(SPEEDUPGPU)로 나눔으로써 계산된 값
Figure 112016106818623-pat00009
과 상기 입력처리시간 t1의 크기를 비교할 수 있다. 이때, 입력처리시간 t1
Figure 112016106818623-pat00010
보다 작은 경우, 제어부(130)는 병렬처리기법 1에 따라 해당 영상에 대한 병렬처리, 즉, CPU와 GPU의 동시 처리를 수행하는 것으로 결정할 수 있다. 그리고,
Figure 112016106818623-pat00011
이 입력처리시간 t1 보다 작지 않은 경우, 즉, t1 이상인 경우, 제어부(130)는 병렬처리기법 2에 따라 해당 영상에 대한 병렬처리, 즉, CPU와 GPU의 동시처리를 수행하는 것으로 결정할 수 있다. 한편, 상기 출력처리시간 t3 이 입력처리시간 t1보다 큰 경우에도, 마찬가지로, 제어부(130)는 상기
Figure 112016106818623-pat00012
과 출력처리시간 t3을 비교하여 해당 영상의 병렬처리를 병렬처리기법 1 및 2 중 어느 것으로 수행할지 여부가 결정될 수 있다.
이처럼, 병렬처리를 수행할 기법이 결정되면, 제어부(130)는 결정된 병렬처리기법에 따라 데이터 분배량(즉, SIFT 데이터 분배량)에 해당하는 스티칭 처리(즉, 특징점 추출)를 CPU(110)와 GPU(120)에서 수행하도록 제어할 수 있다.
일례로, 병렬처리기법 1로 병렬처리를 수행하는 것이 결정된 경우, 제어부(130)는 GPU(120)에서 영상의 스티칭 처리를 수행함에 따라 발생하는 CPU(110)의 유휴시간(idle time)동안 GPU(120)에서 영상의 입력처리를 수행하도록 CPU(110)와 GPU(120)를 제어할 수 있다. 즉, 제어부(130)는 GPU(120)의 데이터 처리 시 발생하는 CPU(즉, CPU의 호스트 코어)의 유휴시간을 감소시키기 위해 상기 유휴시간동안 CPU(110)에서 입력처리를 수행하도록 제어할 수 있다.
다른 예로, 병렬처리기법 2로 병렬처리를 수행하는 것이 결정된 경우, 제어부(130)는 GPU(120)에서 한번에 기정의된 복수개의 SIFT 처리를 수행하도록 상기 GPU(120)를 제어할 수 있다.
이처럼, CPU(110)는 처리해야 할 전체 데이터 중 CPU의 데이터 분배량에 해당하는 데이터의 스티칭 처리, 영상의 입출력 처리를 병렬처리기법 1 또는 2에 따라 수행하고, GPU(120)는 전체 데이터 중 GPU의 데이터 분배량에 해당하는 데이터의 스티칭 처리를 병렬처리기법 1 또는 2에 따라 수행함으로써(즉, 특징점을 추출하는 스티칭 처리를 CPU(110)와 GPU(120)에서 동시에 병렬로 처리하여), 스티칭 처리에 소요되는 시간이 감소할 수 있다.
도 4는 본 발명의 일실시예에 따른 병렬처리기법 1 및 병렬처리기법 2에 따른 CPU와 GPU의 동작을 도시한 도면이다.
도 4를 참고하면, 태스크(task)는 영상을 읽어드리는 등의 입력처리를 위한 태스크, 읽어드린 영상을 대상으로 특징점을 추출하여 이어 붙이는 스티칭 처리(즉, SIFT 처리)를 위한 태스크, 스티칭 처리가 수행된 영상의 출력처리를 위한 태스크로 구분될 수 있다. 이때, 입력처리와 출력처리는 하나의 영상 내에서 데이터 종속성으로 인해 병렬화가 어려우며, 특징점을 추출하는 스티칭 처리는 병렬화가 가능하다. 이에 따라, 입력처리와 출력처리는 여러 영상에서 병렬화가 가능하도록 태스크 단위로 병렬화가 수행되고, 스티칭 처리는 데이터 병렬화가 수행될 수 있다.
이때, 데이터 병렬화 시 CPU에서 GPU로 계산해야 할 데이터를 넘겨주는 시간(즉, CPU(110)에서 GPU(120)로의 데이터 전송 시간)과 결과값을 넘겨받는 시간(GPU(120)에서 CPU(110)로의 데이터 전송시간)이 소요되므로, 소요되는 시간을 고려하여 병렬화가 수행될 수 있다. 즉, 위의 수학식 2와 같이, 데이터복사시간 DataCopyTime을 고려하여 병렬처리기법 1(410) 또는 병렬처리기법 2(420)를 기반으로 GPU(120)를 이용한 병렬화가 수행될 수 있다.
도 4에서, 410은 병렬처리기법 1에 따라 CPU(110)와 GPU(120)를 이용한 병렬처리를 나타내는 것으로서, 병렬처리기법 1은 영상의 입력처리를 GPU(120)의 데이터 처리 시 발생하는 CPU(110)의 유휴시간을 감소시키도록 CPU(110)에서 입력처리를 수행하는 병렬처리구조를 가질 수 있다. 다시 말해, 병렬처리기법 1은 CPU(110)에서 입력처리(t1) 및 스티칭 처리(즉, 특징점을 추출하는 SIFT 처리)를 수행하고 동시에 GPU(120)에서는 스티칭 처리를 위한 데이터를 복사하여 스티칭 처리(즉, 특징점을 추출하는 SIFT 처리)를 수행하는 기법으로서, 각 영상(즉, 프레임)마다 GPU(120)의 복사-계산-복사 방식으로 입력처리(t1)와 출력처리(t3)를 오버랩핑(overlapping)시킴으로써 유휴시간(Idle time)을 감소시키는 기법을 나타낼 수 있다.
이처럼, 병렬처리기법 1(410)에 따라 병렬처리를 수행하는 경우, CPU(110)에서 수행하는 입력처리의 영향이 CPU(110)에서 수행하는 스티칭 처리(특징점 추출)에 미칠 수 있다. 이처럼, CPU(110)에서의 입력처리의 영향이 스티칭 처리에 미치는 것을 제거하기 위해 병렬처리기법 2(420)의 구조로 병렬처리가 수행될 수 있다.
420은 병렬처리기법 2에 따라 CPU(110)와 GPU(120)를 이용한 병렬처리를 나타내는 것으로서, 병렬처리기법 2는 한 번에 기정의된 개수(예컨대, 4개)의 SIFT를 GPU(120)에서 처리하여 CPU(110)의 유휴시간을 감소시키는 구조를 가질 수 있다. 다시 말해, 병렬처리기법 2는 CPU(110)에서 스티칭 처리(즉, 특징점을 추출하는 SIFT 처리)를 수행하고 동시에 GPU(120)에서는 스티칭 처리를 위한 데이터를 복사하여 스티칭 처리(즉, 특징점을 추출하는 SIFT 처리)를 수행하는 기법으로서, CPU의 코어 개수(예컨대, 4개의 프레임)마다 GPU(120)의 계산을 수행하고, 2 번째 병렬 처리 시에는 CPU(110)에서의 입력처리(t1) 및 출력처리(t3)의 순서를 바꾸는 방식으로 입력처리(t1) 및 출력처리(t3)의 데이터 복사시간(data copy)을 중복시킴으로써 유휴시간(idle time)을 감소시키는 기법을 나타낼 수 있다.
예를 들어, 410을 참고하면, 병렬처리기법 1의 경우, 영상 1 내지 영상 4(즉, 프레임 1 내지 프레임 4)를 대상으로, 각 영상 별로 GPU(120)에서 특징점을 추출하는 스티칭 처리(즉, SIFT)를 수행하고, 각 영상 별로 수행된 처리 결과값을 CPU(110)로 전송하는 것임을 확인할 수 있다. 반면, 420을 참고하면, 병렬처리기법 2의 경우, 영상 1 내지 영상 4, 즉, 4개의 영상을 대상으로 특징점을 추출하는 스티칭 처리(즉, SIFT 처리)를 GPU(120)에서 한 번에 수행하는 것임을 확인할 수 있다. 그리고, 영상 1 내지 영상 4를 대상으로 처리된 결과값을 GPU(120)에서 CPU(110)로 한 번에 전송하는 것임을 확인할 수 있다. 이처럼, 복수개의 영상을 묶어서 한 번에 SIFT를 처리하도록 구현하는 것은 병렬처리기법 1과 같이 구현하는 경우보다 어려우나, 영상의 입력처리에 소요되는 시간(즉, 입력처리시간)이 스티칭 처리(SIFT 처리)에 영향을 미치지 않기 때문에 표 1의 알고리즘 1을 기반으로 상황에 따라 병렬처리기법 1 또는 병렬처리기법 2로 영상에 대상으로 병렬화가 수행될 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다.  예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (10)

  1. CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법에 있어서,
    영상을 대상으로 수행하고자 하는 특징점 추출관련 데이터 분배량을 결정하는 단계;
    상기 GPU에서 상기 영상을 대상으로 특징점을 추출하는데 소요되는 스티칭(stitching) 처리 시간, 영상의 입력처리시간, 영상의 출력처리시간에 기초하여 기정의된 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나로 병렬처리를 수행할지 여부를 결정하는 단계; 및
    결정된 병렬처리기법에 따라 상기 CPU 및 상기 GPU에서 영상을 대상으로 상기 데이터 분배량에 해당하는 스티칭 처리를 동시에 수행하고, 상기 CPU에서 영상의 입력 및 출력을 처리하는 병렬처리를 수행하는 단계
    를 포함하고,
    상기 병렬처리를 수행할지 여부를 결정하는 단계는,
    상기 CPU에서 수행되는 상기 입력처리시간을 계산하는 단계;
    상기 CPU에서 수행되는 상기 출력처리시간을 계산하는 단계;
    상기 GPU에서의 스티칭(stitching) 처리 시간 및 GPU의 속도증가값에 기초하여 계산된 값과 상기 입력처리시간 및 출력처리시간을 비교하는 단계; 및
    상기 비교를 통해 상기 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나를 결정하는 단계
    를 포함하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법.
  2. 제1항에 있어서,
    상기 병렬처리를 수행하는 단계는,
    상기 병렬처리기법 1로 병렬처리를 수행하는 것으로 결정된 경우, 상기 GPU에서 상기 영상의 스티칭 처리를 수행함에 따라 발생하는 CPU의 유휴시간 동안 상기 CPU에서 상기 영상의 입력처리를 수행하는 단계
    를 포함하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법.
  3. 제1항에 있어서,
    상기 병렬처리를 수행하는 단계는,
    상기 병렬처리기법 2로 병렬처리를 수행하는 것으로 결정된 경우, 상기 GPU에서 상기 영상을 대상으로 입력처리시간 및 출력처리시간과 GPU의 데이터 복사시간을 중복시키면서 상기 병렬처리를 수행하는 단계
    를 포함하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 비교를 통해 상기 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나를 결정하는 단계는,
    상기 계산된 값이 상기 입력처리시간 및 출력처리시간 중 큰 값보다 작은 경우, 상기 병렬처리기법 1에 따라 병렬처리를 수행하는 것으로 결정하는 것
    을 특징으로 하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법.
  6. 제1항에 있어서,
    상기 비교를 통해 상기 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나를 결정하는 단계는,
    상기 계산된 값이 상기 입력처리시간 및 출력처리시간 중 큰 값 이상인 경우, 상기 병렬처리기법 2에 따라 병렬처리를 수행하는 것으로 결정하는 것
    을 특징으로 하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 방법.
  7. CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 장치에 있어서,
    하나 이상의 코어를 포함하는 CPU;
    GPU; 및
    상기 CPU와 GPU를 제어하는 제어부를 포함하고,
    상기 제어부는,
    영상을 대상으로 수행하고자 하는 특징점 추출관련 데이터 분배량을 결정하고, 상기 GPU에서 상기 영상을 대상으로 특징점을 추출하는데 소요되는 스티칭(stitching) 처리 시간, 영상의 입력처리시간, 영상의 출력처리시간에 기초하여 기정의된 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나로 병렬처리를 수행할지 여부를 결정하고,
    결정된 병렬처리기법에 따라 상기 CPU 및 상기 GPU에서 영상을 대상으로 상기 데이터 분배량에 해당하는 스티칭 처리를 동시에 수행하고, 상기 CPU에서 영상의 입력 및 출력을 처리하는 병렬처리를 수행하도록 상기 GPU와 CPU를 제어하고,
    상기 제어부는,
    상기 CPU에서 수행되는 상기 입력처리시간을 계산하고, 상기 CPU에서 수행되는 상기 출력처리시간을 계산하고, 상기 GPU에서의 스티칭(stitching) 처리 시간 및 GPU의 속도증가값에 기초하여 계산된 값과 상기 입력처리시간 및 출력처리시간을 비교하고, 상기 비교를 통해 상기 병렬처리기법 1 및 병렬처리기법 2 중 어느 하나를 결정하는 것
    을 특징으로 하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 장치.
  8. 제7항에 있어서,
    상기 제어부는,
    상기 병렬처리기법 1로 병렬처리를 수행하는 것으로 결정된 경우, 상기 GPU에서 상기 영상의 스티칭 처리를 수행함에 따라 발생하는 CPU의 유휴시간 동안 상기 CPU에서 상기 영상의 입력처리를 수행하도록 상기 CPU와 상기 GPU를 제어하는 것
    을 특징으로 하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 장치.
  9. 제7항에 있어서,
    상기 제어부는,
    상기 병렬처리기법 2로 병렬처리를 수행하는 것으로 결정된 경우, 상기 GPU에서 상기 영상을 대상으로 입력처리시간 및 출력처리시간과 GPU의 데이터 복사시간을 중복시키면서 상기 병렬처리를 수행하도록 상기 GPU를 제어하는 것
    을 특징으로 하는 CPU와 GPU 병렬처리 기반의 고속 영상 스티칭 장치.
  10. 삭제
KR1020160144675A 2016-11-01 2016-11-01 Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치 KR101827167B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160144675A KR101827167B1 (ko) 2016-11-01 2016-11-01 Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160144675A KR101827167B1 (ko) 2016-11-01 2016-11-01 Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101827167B1 true KR101827167B1 (ko) 2018-02-08

Family

ID=61232295

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160144675A KR101827167B1 (ko) 2016-11-01 2016-11-01 Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101827167B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111812691A (zh) * 2019-04-11 2020-10-23 北京初速度科技有限公司 一种车载终端及图像帧检测处理方法、装置
CN113592943A (zh) * 2020-04-30 2021-11-02 丰田自动车株式会社 位置推定系统及位置推定方法
WO2022055026A1 (ko) * 2020-09-11 2022-03-17 주식회사 단단시스 Gpu를 이용한 스캔 변환 장치
KR20220084790A (ko) * 2020-12-14 2022-06-21 건국대학교 산학협력단 3차원 공간정보 생성을 위한 병렬처리 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010111261A1 (en) 2009-03-23 2010-09-30 Azuki Systems, Inc. Method and system for efficient streaming video dynamic rate adaptation
JP5600695B2 (ja) 2012-02-09 2014-10-01 日本電信電話株式会社 並列化近傍探索処理方法、及び並列化近傍探索プログラム
KR101467558B1 (ko) * 2007-07-26 2014-12-01 엘지전자 주식회사 그래픽데이터 처리 장치 및 방법
US20150098625A1 (en) 2013-10-04 2015-04-09 Industrial Technology Research Institute System and method of multi-user coaching inside a tunable motion-sensing range

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101467558B1 (ko) * 2007-07-26 2014-12-01 엘지전자 주식회사 그래픽데이터 처리 장치 및 방법
WO2010111261A1 (en) 2009-03-23 2010-09-30 Azuki Systems, Inc. Method and system for efficient streaming video dynamic rate adaptation
JP5600695B2 (ja) 2012-02-09 2014-10-01 日本電信電話株式会社 並列化近傍探索処理方法、及び並列化近傍探索プログラム
US20150098625A1 (en) 2013-10-04 2015-04-09 Industrial Technology Research Institute System and method of multi-user coaching inside a tunable motion-sensing range

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"CPU-GPU 이종 멀티프로세서 시스템에서의 SDF 그래프 기반 성능 분석 및 버퍼 최적화 기법", 서울대학교 대학원 (2012)*
"Fast Implementation of Scale Invariant Feature Transform Based on CUDA", Applied Mathematics & Information Sciences An International Journal(2013)*
"묵시적 동기화 기반의 고성능 다중 GPU 렌더링", 정보과학회논문지 제42권 제11호(2015.11.)*
"실시간 비전 응용을 위한 GPU 가속을 이용한 SURF의 성능 실험", 한국지능시스템학회 2011년도 춘계학술대회 학술발표논문집 제21권 제1호(2011)*

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111812691A (zh) * 2019-04-11 2020-10-23 北京初速度科技有限公司 一种车载终端及图像帧检测处理方法、装置
CN111812691B (zh) * 2019-04-11 2023-09-12 北京魔门塔科技有限公司 一种车载终端及图像帧检测处理方法、装置
CN113592943A (zh) * 2020-04-30 2021-11-02 丰田自动车株式会社 位置推定系统及位置推定方法
CN113592943B (zh) * 2020-04-30 2024-01-30 丰田自动车株式会社 位置推定系统及位置推定方法
WO2022055026A1 (ko) * 2020-09-11 2022-03-17 주식회사 단단시스 Gpu를 이용한 스캔 변환 장치
KR102381022B1 (ko) 2020-09-11 2022-03-31 주식회사 단단시스 Gpu를 이용한 스캔 변환 장치
KR20220084790A (ko) * 2020-12-14 2022-06-21 건국대학교 산학협력단 3차원 공간정보 생성을 위한 병렬처리 장치 및 방법
KR102520375B1 (ko) * 2020-12-14 2023-04-11 건국대학교 산학협력단 3차원 공간정보 생성을 위한 병렬처리 장치 및 방법

Similar Documents

Publication Publication Date Title
CN110163215B (zh) 图像处理方法、装置、计算机可读介质及电子设备
US10936911B2 (en) Logo detection
KR101827167B1 (ko) Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치
KR102163424B1 (ko) 인터리빙된 채널 데이터를 위한 구성가능한 컨볼루션 엔진
US9600744B2 (en) Adaptive interest rate control for visual search
CN111031346B (zh) 一种增强视频画质的方法和装置
JP5340088B2 (ja) 情報処理方法及び装置
US9697581B2 (en) Image processing apparatus and image processing method
CN101263713A (zh) 用于运动补偿的自然成形区域
CN111027438A (zh) 一种人体姿态的迁移方法、移动终端以及计算机存储介质
US9342894B1 (en) Converting real-type numbers to integer-type numbers for scaling images
CN107680028B (zh) 用于缩放图像的处理器和方法
CN108960012B (zh) 特征点检测方法、装置及电子设备
US10572969B2 (en) Method and device for processing data
KR102239588B1 (ko) 이미지 처리 방법 및 장치
CN111736988A (zh) 一种异构加速方法、设备、装置及计算机可读存储介质
CN113497886B (zh) 视频处理方法、终端设备及计算机可读存储介质
CN114998172A (zh) 图像处理方法及相关系统
Sulzbachner et al. An optimized silicon retina stereo matching algorithm using time-space correlation
US9361540B2 (en) Fast image processing for recognition objectives system
CN113191210A (zh) 一种图像处理方法、装置及设备
JP2006338293A (ja) 画像データ割当て方法、画像処理制御装置および画像処理システム
WO2023193648A1 (zh) 一种图像处理方法、装置、电子设备和存储介质
Heng et al. Implementation and optimization of software depth estimation for arm
WO2023031999A1 (ja) 映像情報処理装置、方法およびプログラム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant