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.
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.
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.
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
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)
Gambar 3. (a) Motion Vector dari Mobile Calendar menggunakan blok berukuran 32x32 diambil dari frame referensi (b), dan frame
saat ini (c).
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
160
140
120
40
20
0
32 64 128 256
POC Block
Gambar 5. Processing time of hierarchical search POC GPU dan CPU 2 layer.
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