Anda di halaman 1dari 8

PERCEPATAN MOTION ESTIMATION BERBASIS PHASE ONLY CORRELATION DENGAN

TEKNIK FULL SEARCH MENGGUNAKAN PARALEL THREADING PADA GPU

Rosa A. Asmara1, Cahya Rahmad1, dan Anik N. Handayani2


1
Laboratorium Multimedia, Politeknik Negeri Malang, Jalan Semarang 5 Malang, Jawa Timur, 65145,
Indonesia
2
Laboratorium Multimedia, Universitas Negeri Malang, Jalan Semarang 5 Malang, Jawa Timur, 65145,
Indonesia

E-mail: rosa_andrie@poltek-malang.ac.id

Abstrak

Penelitian ini menyajikan penggunaan metode Phase Only Correlation (POC) pada motion estimation
dengan teknik full search menggunakan Graphical Processing Unit (GPU). Dengan fungsi POC,
seseorang dapat melakukan estimasi translasi motion antara dua blok citra referensi dan citra yang
diproses. Full Search berbasis POC adalah algoritma yang membutuhkan waktu proses lama. Hal ini
menyebabkan sistem yang dicoba pada penelitian ini memproses fungsi POC pada Graphical
Processing Unit (GPU) yang memiliki kelebihan dalam menyelesaikan perhitungan bilangan floating
point dibandingkan CPU. Evaluasi dilakukan dengan menghitung kecepatan waktu proses
menggunakan GPU pada video resolusi tinggi dengan resolusi hingga 1280x720 pixel. Hasil
pengujian menunjukkan bahwa metode yang diselesaikan menggunakan GPU memiliki percepatan
hingga hampir dua kali lipat pada ukuran blok POC 256 x 256 daripada menggunakan CPU.

Kata Kunci: graphic processing unit, motion estimation, phase only correlation

Abstract

This research presents a method using Phase Only Correlation (POC) on the motion estimation with
full search technique using the Graphical Processing Unit (GPU). With POC function, someone can
estimate the translational motion between two blocks of the reference image and the processed image.
POC based Full Search is an algorithm that takes long time process. This leads the system that is used
in this research to process the POC function on Graphical Processing Unit (GPU) which has
advantages in solving the floating point calculations than the CPU. Evaluation is conducted by
calculating the speed of processing time using a GPU on a high-resolution video with resolutions up
to 1280x720 pixels. The test results show that the method that is solved using GPU has an
acceleration up to nearly twice the size of the POC block 256 x 256 instead of using the CPU.

Keywords: graphic processing unit, motion estimation, phase only correlation

1. Pendahuluan dibandingkan dengan blok kandidat di frame


referensi berdasarkan perbedaan atau persamaan
Motion Estimation adalah suatu proses untuk tertentu untuk menemukan blok cocok yang
menentukan pergerakan suatu objek pada terbaik pada area yang dicari. Salah satu contoh
sequences video. Umumnya motion tersebut pengukuran dari perbedaan adalah Sum of
diwujudkan dengan vektor motion pada titik yang Absolute Differences (SAD). Vektor motion dari
dipilih di dalam frame saat ini dihubungkan titik didapat dari perpindahan blok.
dengan frame lain yang disebut dengan frame Metode untuk mencari block match terbaik
referensi. Vektor motion adalah representasi diklasifikasikan dalam dua tipe, yakni metode full
perpindahan dari suatu titik antara frame saat ini search dan hierarchical search. Full search lebih
dengan frame referensi [1]. cocok untuk mendeteksi motion lokal dari objek-
Di antara berbagai macam metode estimasi objek individual. Sementara hierarchical search
motion, algoritma pencocokan blok adalah yang lebih cocok dipakai untuk mendeteksi motion
paling banyak digunakan dan populer karena global dari suatu scene.
kesederhanaan dalam aplikasinya. Pada algoritma Full search berbasis POC adalah algoritma
penyocokan blok, suatu blok citra yang berpusat dengan komputasi tinggi sehingga membutuhkan
pada satu titik di tengahnya di frame saat ini waktu proses lama. Oleh karena itu pada

65
66 Jurnal Ilmu Komputer dan Informasi, Volume 3, Nomor 1, Juni 2010

penelitian ini sistem yang dibangun membuat Correlation r ( n1 , n 2 ) adalah inverse Diskrit
fungsi POC agar dapat diproses pada Graphical
Processing Unit menggunakan teknologi parallel Transformasi Fourier 2D (2D IDFT) dari
threading. R ( k1 , k 2 ) dan didapat dari persamaan 9.

2. Metodologi kn k n
1
r ( n1 , n 2 ) R ( k , k )W 1 1W 2 2
Pada bagian Phase Only Correlation (POC), 1 2 N N
N N kk 1 2
1 2 1 2
peneliti menjelaskan jika dua buah citra resolusi
N1 x N2, f(n1,n2) dan g(n1,n2), yang diasumsikan (9)
range index-nya adalah n1= -M1,...,M1 dan n2= - M M
M2,...,M2 agar lebih sederhana dalam perhitungan, k k 1 2
1 2 k M k M
sehingga N1 = 2M1 + 1 dan N2 = 2M2 + 1. Jika 1 1 2 2
F(k1,k2) dan G(k1,k2) adalah Diskrit Transformasi (10)
Fourier 2D (2D DFTs) dari dua buah citra,
F(k1,k2) dan G(k1,k2) didapat dengan Asumsikan fc(x1,x2) adalah citra 2D dalam
menggunakan persamaan 1 dan persamaan 2. ruang temporal dengan bilangan real disimbolkan
sebagai x1 dan x2. Simbol 1 dan 2 mewakili
k n k n perpindahan subpixel fc(x1,x2) pada arah x1 dan x2.
F ( k1, k 2 ) f ( n1, n2 )WN1 1WN2 2 Maka citra yang berpindah dapat disimbolkan
n1n2 1 2
fc(x1- 1,x2- 2). Anggap bahwa f(n1,n2) dan
j F ( k1,k2 )
g(n1,n2) adalah citra yang ter-sampling secara
AF ( k1 , k 2 )e spasial dari fc(x1,x2) dan fc(x1- 1,x2- 2), dan
(1) didefinisikan dengan persamaan 11 dan 12.

k n k n (1 , 2 ) = (1 , 2 )|1= 11,2= 2 2 (11)


G ( k1 , k 2 ) g ( n1 , n2 )WN1 1WN2 2
n1n2 1 2
(1 , 2 ) = (1 1 , 2 2 )|1= 11,2= 22
jG ( k1,k2 )
AG ( k1, k 2 )e (2) (12)

k1 = -M1,...,M1 (3) T1 dan T2 adalah interval sampling secara spasial.


Range index didapat dari persamaan 13.
k2 = -M2,...,M2 (4)
n1 = -M1,...,M1 dan n2 = -M2,...,M2. (13)
2
1
1 = (5) Fungsi POC (n1,n2) antara f(n1,n2) dan g(n1,n2)
didapat dari persamaan 14.
2
2
2 =
sin (n1 1 ) sin (n2 2
(6)
r(n1 , n2 )
1 2 = 2 N1 N 2
1 = 1 2 = 2
1
(7) sin (n1 1 ) sin (n2 2 )
N1 N2
Pada persamaan 1 dan 2, AF(k1,k2) dan Dengan < 1 (14)
AG(k1,k2) adalah komponen amplitudo, sementara

(1,2) dan (1,2) adalah komponen fase. Posisi puncak dari fungsi POC menyatakan
Spektrum Cross-phase (cross spectrum perpindahan antara dua citra dan nilai puncak

ternormalisasi) R (1 , 2 ) didapat dari persamaan menyatakan derajat kemiripan antara dua citra.
8. Gambar 1 menunjukkan contoh fungsi fitting
untuk melakukan estimasi posisi yang benar dan
F ( k1 , k 2 )G ( k1 , k 2 ) j ( k1,k2 ) (8) tinggi dari puncak korelasi.
(k , k ) e
R 1 2 Sementara pada bagian Metode Full Search,
F ( k1 , k 2 )G ( k1 , k 2 )
peneliti menjelaskan metode full search motion
estimation berbasis POC (atau dapat juga disebut
Ekspresi (1 , 2 ) menyatakan konjugasi POC-FS) yang membutuhkan lebih sedikit
kompleks dari (1 , 2 ) dan (1 , 2 ) = kalkulasi daripada full search biasa tetapi
(1 , 2 ) (1 , 2 ). Fungsi Phase Only memiliki hasil pencocokan yang lebih akurat.
Asmara, dkk., Percepatan Motion Estimation Berbasis Phase Only Correlation 67

Dikatakan dua blok citra dengan ukuran W x W Langkah keempat adalah menggambarkan
dengan menerapkan fungsi Hanning Window pada motion vektor = . Pada percobaan ini,
ukuran yang sama. Dikarenakan setengah lebar peneliti menggunakan ukuran window 128x128
dari fungsi Hanning Window adalah , dapat dan area pencarian 64 horizontal dan vertikal.
dikatakan pergeseran maksimum yang diestimasi GPU dipabrikasi dan lebih cocok dipakai
untuk menyelesaikan permasalahan yang dapat
antara dua blok citra adalah baik horizontal diekspresikan ke dalam komputasi parallel-data
maupun vertikal, sehingga tidak perlu memeriksa (program yang sama dieksekusi pada banyak
setiap blok kandidat, melainkan hanya memeriksa elemen data dalam paralel) dengan intensitas
blok kandidat pada interval piksel pada area aritmatika tinggi (rasio dari operasi aritmatika
yang sama. dibandingkan operasi memori). Dikarenakan
Terdapat empat prosedur untuk POC-FS. program yang sama dieksekusi untuk tiap elemen
Dimana masing-masing input adalah citra saat ini data, dibutuhkan spesifikasi yang lebih rendah
I(1 , 2 ), citra referensi J(1 , 2 ), dan titik p untuk flow control canggih. Kemudian karena
I(1 , 2 ). Kemudian akan menghasilkan dua dijalankan pada banyak elemen data dan memiliki
output, yakni titik korespondensi q dari titik p intensitas aritmatika tinggi, akses memori latency
pada J(1 , 2 ) dan Motion vector dari titik p. dapat disembunyikan dengan perhitungan tanpa
cache data yang besar.
Langkah pertama adalah mengekstrak citra per
Pemrosesan data paralel memetakan elemen
blok dengan ukuran blok W x W dengan titik p
data pada thread parallel processing. Banyak
berada di bagian tengah pada frame sekarang
aplikasi yang memproses set data berukuran besar
I(1 , 2 ). Langkah kedua mengkalkulasikan
dapat menggunakan model pemrograman data-
fungsi POC antara blok citra dari frame sekarang
paralel untuk mempercepat perhitungan. Pada
I(1 , 2 ) dan blok kandidat dari frame referensi
rendering 3D, set piksel dan titik berukuran besar
J(1 , 2 ) tiap piksel pada area pencarian. dipetakan pada thread paralel. Dengan cara yang
Peneliti menggunakan versi sederhana dari fungsi sama, aplikasi pemrosesan media dan citra seperti
POC untuk mendapatkan nilai korelasi puncak post-processing dari citra di-render, video
(didefinisikan sebagai nilai maksimum dari fungsi encoding dan decoding, penskalaan citra, stereo
POC (1 , 2 ) pada persamaan 4 dan posisi vision, dan pengenalan pola dapat memetakan
puncak yang akan memberikan nilai pergeseran blok citra dan piksel pada thread parallel
antara dua citra dengan akurasi tinggi. Langkah processing. Kenyataannya banyak algoritma
ketiga adalah mengidentifikasikan 3 blok cocok selain bidang rendering dan pemrosesan citra
terbaik pada langkah 2 dan geser blok-blok dapat dipercepat menggunakan pemrosesan data-
tersebut menurut nilai pergeserannya sehingga paralel, dari pemrosesan sinyal umum ataupun
akan didapatkan puncak korelasi pada bagian simulasi fisika hingga komputansi financial atau
tengah dari blok. Kalkulasi ulang fungsi POC komputasi biologi. Tipe data dari GPU yang
untuk 3 kandidat blok baru. Blok paling cocok peneliti gunakan hanya dapat memproses data
adalah blok dengan korelasi puncak tertinggi single precision sehingga peneliti harus
diantara tiga blok. Fungsi POC yang digunakan mengonversi tipe datanya terlebih dahulu jika data
lagi adalah fungsi POC versi sederhana. Titik pada double precision.
korespondensi q diposisikan di bagian tengah dari
blok yang paling cocok.

Gambar 1. Fungsi fitting untuk estimasi posisi puncak dan koordinat pergeseran.
68 Jurnal Ilmu Komputer dan Informasi, Volume 3, Nomor 1, Juni 2010

(a)

(b)

(c)

Gambar 2. (a) Translasi pergeseran dari puncak korelasi, (b) dan (c) dengan phase only correlation menggunakan GPU.
Asmara, dkk., Percepatan Motion Estimation Berbasis Phase Only Correlation 69

Terdapat delapan langkah dalam prosedur POC memproses kernel dengan register yang
GPU. Langkah pertama adalah mengonversi tipe digunakan tiap thread dikalikan dengan thread
data input dari double precision ke single block lebih besar dari N, proses akan gagal.
precision. Langkah kedua adalah meminindahkan Ukuran N dari GPU yang digunakan pada
data single precision dari RAM CPU ke RAM penelitian ini adalah 8192 32-bit register tiap
GPU. Langkah ketiga adalah melakukan multiprosesor.
komputasi paralel FFT paralel GPU. Langkah Dari spesifikasi fisik GPU yang ditunjukkan
keempat adalah membuat kernel GPU untuk pada tabel I, peneliti dapat mengkalkulasi
Cross Correlation untuk melakukan estimasi maximum occupancy multiprocessor sebagai
pergeseran (gambar 2). Pada percobaan, peneliti berikut:
menggunakan 256 thread per block. Langkah
kelima adalah melakukan komputasi paralel IFFT per block
pada GPU. Langkah keenam adalah X1 minn Z | n Thread

memindahkan kembali hasil pergeseran dari GPU thread per warp

ke CPU. Langkah ketujuh adalah melakukan (15)
konversi kembali tipe data dari single precision ke
double precision. Langkah terakhir adalah dengan x1 = 8, Z = nilai integers, dan x1 Warp
menggambarkan motion vector. tiap thread block.

X 2 minn Z | n x1, warp allocation granullarity


TABEL I
SPESIFIKASI FISIK GPU YANG DIGUNAKAN

Threads / Warp 32
Warps / Multiprocessor 24 maka
Threads / Multiprocessor 768

X 3 minn Z | n x2 r 2 32, y2
Thread Blocks /
Multiprocessor 8
Total # of 32-bit registers /
Multiprocessor 8192
Register allocation unit size 256 x3 = 2304 (16)
Shared Memory /
Multiprocessor (bytes) 16384 dengan r1= register per thread, y2= ukuran unit
Warp allocation granularity register allocation, x3 register tiap thread
(untuk alokasi register) 2
block.
3. Hasil dan Pembahasan

Untuk melakukan manajemen terhadap


X 4 minn Z | n sharedmem. perthread ,512
ribuan thread yang berjalan bersamaan,
multiprosesor menggunakan arsitektur yang x4= 512 (17)
dinamakan SIMT (single instruction, multiple
thread). Multiprosesor memetakan tiap thread dengan x4 shared memory tiap thread block.
pada satu core prosesor skalar, dan tiap thread
skalar dieksekusi tersendiri sesuai dengan alamat Limit warp per multiptocessor
instruksinya dan register pada multiprosesor yang
bersangkutan. Unit SIMT dari multiprosesor
5
X minn Z | n



warp per block
membuat, mengelola, menjadwal, dan
mengeksekusi thread ke dalam group 32 thread
x5 = 3 (18)
paralel dan dinamakan Warp. Maximum
Occupancy dari multiprosesor adalah rasio dari
dengan x5 Max. Warp tiap multiprocessor.
jumlah Warp aktif terhadap jumlah maksimum
Warp yang dapat ditangani oleh satu

X 6 minn Z | n Total register per multiptocessor
multiprosesor GPU. Tiap multiprosesor memiliki
sejumlah N register sebagai resource yang di-
sharing dan dialokasikan pada thread di dalam register per thread block
block yang dieksekusi. Compiler berusaha untuk
meminimalisasi penggunaan register untuk x6 = 3 (19)
memaksimalkan jumlah thread yang aktif secara
simultan. Jika program mencoba untuk dengan x6 Max. Register tiap multiprocessor
70 Jurnal Ilmu Komputer dan Informasi, Volume 3, Nomor 1, Juni 2010

shared memory per multiptocessor



Active Threads per Multiprocessor = Active
7
X max n Z | n



thread block per multiprocessor X thread per
block = 768
shared memory per thread block
(22)

x7= 32 (20) Multiprocessor Maximum Occupancy = (Active


Warp per multiprocessor / Warp per
dengan x7 Max. Shared memory per multiprocessor) X 100% = 100%
multiprocessor. (23)

Dengan mengambil nilai minimum dari Gambar 4 dan 5 adalah hasil dari lamanya
persamaan 8, 9, dan 10, yang nilainya sama waktu komputasi dari Full Search dan
dengan thread block aktif per multiprocessor. Hierarchical Search 2 layer menggunakan blok
POC berukuran 32x32 hingga 256x256. Bar
Active Warp per multiprocessor = Active thread kuning adalah waktu komputasi pada CPU dan
block per multiprocessor X Warp per thread block bar berwarna merah adalah waktu komputasi pada
= 24 GPU.
(21)

(a) (b) (c)

Gambar 3. (a) Motion Vector dari Mobile Calendar menggunakan blok berukuran 32x32 diambil dari frame referensi (b), dan frame
saat ini (c).

Full Search POC CPU vs GPU

40
35

30
time (seconds)

25
FS POC CPU
20
FS POC GPU
15

10
5
0
32 64 128 256
POC Block

Gambar 4. Waktu komputasi dari Full Search POC GPU dan CPU.
Asmara, dkk., Percepatan Motion Estimation Berbasis Phase Only Correlation 71

2 Layer HS POC CPU vs GPU

160

140

120

time (seconds) 100


HS POC CPU
80
HS POC GPU
60

40

20

0
32 64 128 256
POC Block

Gambar 5. Processing time of hierarchical search POC GPU dan CPU 2 layer.

Time Process Ratio GPU/CPU

2.5

1.5 FS POC
Ratio

3 Layer HS POC
1 2 Layer HS POC

0.5

0
32 64 128 256
POC Block

Gambar 6. Rasio waktu komputasi antara POC full search, hierarchical search 3 layer, dan hierarchical search 2 layer pada
GPU dan CPU.

Gambar 6 adalah hasil dari rasio waktu menyelesaikan komputasi 1,7 kali lebih cepat
komputasi antara CPU dan GPU pada dibandingkan menggunakan metode yang sama
hierarchical search 2 layer, hierarchical search 3 pada CPU. Menggunakan GPU NVidia GeForce
layer, dan full search menggunakan blok POC 9600GT, kernel dieksekusi dengan 256 thread per
berukuran 32x32 hingga 256x256. Bar kuning block, 9 32-bit register per thread, dan 36 bytes
adalah rasio waktu komputasi pada full search, memory shared untuk tiap thread block, maximum
bar merah adalah rasio waktu komputasi pada occupancy multiprocessor adalah 100%, dengan
hierarchical 3 layer, dan bar hijau adalah rasio 768 threads active per multiprocessor, 24 Warps
waktu komputasi pada hierarchical search 2 layer. Active per multiprocessor, dan 3 thread blocks
active per multiprocessor.
4. Kesimpulan
Ucapan Terima Kasih
Penelitian pada paper ini menyajikan
percepatan motion estimation berbasis POC Peneliti mengucapkan terima kasih kepada
dengan teknik hierarchical search menggunakan Direktur Jenderal Pendidikan Tinggi, Direktorat
GPU. Pada metode yang digunakan, hasil motion Pendidikan Tinggi, Departemen Pendidikan
vector didapat dari proses hasil pergeseran blok Nasional Indonesia atas dukungan finansialnya
citra pada GPU. Peneliti telah menunjukkan sehingga penelitian ini dapat terselesaikan dengan
bahwa metode yang digunakan rata-rata dapat baik.
72 Jurnal Ilmu Komputer dan Informasi, Volume 3, Nomor 1, Juni 2010

Referensi Genc, GPU-based Video Feature Tracking


and Matching Workshop on Edge
[1] L.H. Chien & Takafumi Aoki, Robust Computing Using New Commodity
Motion Estimation for Video Sequences Architectures, pp. 695-699, 2006.
Based on Phase-Only Correlation In [8] E.P. Simoncelli, Coarse-to-Fine Estimation
Proceeding 6th IASTED International of Visual Motion In Proceeding 8th
Conference Signal and Image Processing, Workshop on Image and Multidimensional
pp. 441-446, 2004. Signal Processing in Cannes France, pp.
[2] C.D. Kuglin & D.C. Hines, The Phase 128-129, 1993.
Correlation Image Alignment Method In [9] J. Watkinson, The Engineers Guide to
Proceeding of Cybernetics and Society, pp. Motion Compensation, Snell and Wilcox
163-165, 1975. Handbook Series, Hampshire, 1994.
[3] K. Takita, M.A. Muquit, T. Aoki, & T. [10] NVidia Cuda Team, SC-07 Cuda Tutorial,
Higuchi, High-Accuracy Subpixel Iimage 2007.
Registration Based on Phase-only [11] GPGPU VISCOURSE05, International
Correlation, IEICE Transaction conference on GPGPU, Minneapolis USA,
Fundamentals, vol. E86-A, pp. 1925-1934, 2005.
2003. [12] Matlab R2007a Documentation, 2007.
[4] K. Takita, M. A. Muquit, T. Aoki, & T. [13] Nvidia Developer Team, NVIDIA CUDA
Higuchi, A Sub-pixel Correspondence Programming Guide Version 2.0, 2008.
Search Technique for Computer Vision [14] Nvidia Developer Team, CUDA Reference
Applications, IEICE Transaction Manual Version 2.0, 2008.
Fundamentals, pp. 1913-1923, 2004. [15] Nvidia Developer Team, CUDA CUFFT
[5] T. Klein, M. Strengert, S. Stegmaier, & T. Library Manual Version 2.0, 2008.
Ertl, Exploiting Frame-to-Frame Coherence [16] Nvidia Developer Team, CUDA nvcc
for Accelerating High-Quality Volume Manual Version 2.0, 2008.
Raycasting on Graphics Hardware, IEEE [17] Nvidia Developer Team, Accelerating
Visualization 2005 (VIS05), pp. 223-230, MATLAB with CUDA using MEX Files, In
2005. Nvidia White Paper, September 2007.
[6] N. Vasconcelos, Coarse-to-Fine Least [18] Nvidia CUDA Forums,
Squares Motion Estimator, 1993. http://forums.nvidia.com/index.php?showfor
[7] S.N. Sinha, J. Frahm, M. Pollefeys, & Y. um=62, 2009, retrieved January 4, 2010.

Anda mungkin juga menyukai