B1-60
Percepatan Motion Estimation Berbasis Fase Dengan
Teknik Hierarchical Search Menggunakan Graphical
Processing Unit (GPU)
Rosa A. Asmara dan M. Hariadi
Jurusan Elektro Bidang Keahlian Jaringan Cerdas Multimedia Institut Teknologi 10 Nopember Surabaya
60111, Indonesia Email : ra@elect-eng.its.ac.id
Abstrak
Pada paper ini menyajikan penggunaan metode Phase Only Correlation (POC) pada motion estimation dengan teknik hierarchical search menggunakan Graphical Processing Unit (GPU). Menggunakan fungsi POC, seseorang dapat melakukan estimasi translasi motion antara dua blok citra referensi dan citra yang diproses. Motion Estimation adalah proses untuk menentukan pergerakan suatu objek pada sekuens video digital. Pergerakannya umumnya diwakili dalam bentuk vector gerakan pada titik yang dipilih dalam frame sekarang dibandingkan dengan frame lain yang disebut sebagai frame referensi. Motion Estimation adalah hal mendasar pada beberapa bidang seperti image processing, image analysis, video coding, dan computer vision.
Hierarchical Search berbasis POC adalah algoritma yang membutuhkan waktu proses lama, sehingga system yang dicoba pada tesis ini memproses fungsi POC pada Graphical Processing Unit (GPU), dimana GPU 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 1280 x 720 pixel. Hasil percobaan menunjukkan bahwa metode yang diajukan jika diselesaikan menggunakan GPU akan meningkatkan akselerasi proses hingga lebih dari dua kali lebih cepat dibandingkan jika diselesaikan menggunakan CPU.
Kata kunci : Motion Estimation, computer vision, image processing, POC, GPU, CUDA,
coarse-to-fine search technique.
1. Pendahuluan
Estimasi gerakan adalah suatu proses untuk menentukan pergerakan suatu objek pada sekuens video. Umumnya pergerakan tersebut diwujudkan dengan vektor gerakan pada titik yang dipilih didalam frame sekarang dihubungkan dengan frame lain yang disebut dengan frame referensi. Vektor gerakan adalah representasi perpindahan dari suatu titik antara frame sekarang dengan frame referensi [1].
Diantara berbagai macam metode estimasi gerakan, algoritma pencocokan blok adalah yang paling banyak digunakan dan populer karena kesederhanaan dalam aplikasinya. Pada algoritma pencocokan blok, suatu blok citra yang berpusat pada satu titik ditengahnya diframe sekarang dibandingkan dengan blok kandidat diframe referensi berdasarkan perbedaan atau persamaan tertentu untuk menemukan blok cocok yang terbaik pada area yang dicari. Salah satu contoh pengukuran dari perbedaan adalah Sum of Absolute Differences (SAD). Vektor gerakan dari titik didapat dari perpindahan blok.
Saat ini, teknik pencocokan citra akurasi tinggi menggunakan fungsi Phase Only Correlation (POC) telah dibuat dan diaplikasikan [1]-[4]. Menggunakan fungsi POC, kita dapat mengestimasi perpindahan translasional sebagai suatu derajat kesamaan
diantara dua blok citra dari lokasi dan tinggi puncak korelasi, secara berturut-turut. Telah ditunjukkan bahwa teknik pencocokan ini dapat mengestimasi perpindahan diantara dua citra dengan 1/100 akurasi pixel pada ukuran citra 100x100 pixel [3].
Salah satu permasalahan umum dari teknik POC ini adalah waktu komputasinya yang lama. Untuk mengatasi hal tersebut, maka proses komputasi dapat dilakukan oleh GPU (Graphical Processing Unit). GPU adalah suatu prosessor khusus yang dibuat untuk melakukan perhitungan rumit. Umumnya GPU digunakan dalam bidang komputer grafis untuk mengolah gambar-gambar dengan tingkat kompleksitas tinggi. Seiring perkembangannya, GPU saat ini telah dapat juga digunakan untuk proses komputasi untuk tujuan umum (General Purpose GPU - GPGPU). Dimulai dengan GPGPU, menggunakan CG-Toolkit. Akan tetapi proses menggunakan CG-Toolkit masih dirasa terlalu merepotkan bagi developer program, karena proses komputasi yang akan diolah GPU harus diubah terlebih dahulu menjadi data citra (Texture mapping). Untuk mengatasi hal tersebut, beberapa manufaktur GPU dunia telah mengembangkan bahasa tingkat tinggi untuk melakukan proses komputasi menggunakan GPU.
Penelitian ini mengusulkan perancangan dan pembuatan estimasi gerakan berbasis POC pada
sekuens video dan memanfaatkan GPU sebagai proses komputasinya, diharapkan dari penelitian ini akan didapat suatu aplikasi estimasi gerakan akurasi tinggi dengan proses yang lebih cepat karena komputasinya menggunakan GPU.
2. Phase Only Correlation
Phase Only Correlation adalah suatu metode untuk membandingkan fase block pada frame yang dianalisa dengan fase block pada frame referensi. Komponen fase didapat dari hasil transformasi diskrit 2D pada frame.
Jika dua buah citra resolusi N1 x N2, f(n1,n2)
dan g(n1,n2), dimana kita asumsikan range indexnya
adalah n1= -M1,...,M1 dan n2= -M2,...,M2 agar lebih
sederhana dalam perhitungan, sehingga N1 = 2M1 +
1 dan N2 = 2M2 + 1. Jika F(k1,k2) dan G(k1,k2) adalah
diskrit transformasi fourier 2D (2D DFTs) dari dua buah citra, maka F(k1,k2) dan G(k1,k2) didapat dari,
) , ( 2 1 2 1 2 1 1 2 2 1 2 2 2 1 1 1
(
,
)
)
,
(
)
,
(
F j k k n n n k N n k N Fe
k
k
A
W
W
n
n
f
k
k
F
=
∑
=
θ (1) ) , ( 2 1 2 1 2 1 1 2 2 1 2 2 2 1 1 1(
,
)
)
,
(
)
,
(
G j k k n n n k N n k N Ge
k
k
A
W
W
n
n
g
k
k
G
=
∑
=
θ (2) Dimana k1 = -M1,...,M1, k2 = -M2,...,M2, 1 1 2 N j Ne
W
π −=
, 2 2 2 N j Ne
W
π −=
, dan operator∑
n1n2 dinyatakan dengan∑
1=1− 1∑
22=− 2 M M n M M n ,AF(k1,k2) dan AG(k1,k2) adalah komponen amplitudo,
dan
e
jθF(k1,k2) dane
jθG(k1,k2) adalah komponenfase.
Spektrum Cross-phase (atau cross spectrum ternormalisasi)
R
ˆ
(
k
1,
k
2)
didapat dari,) , ( 2 1 2 1 2 1 2 1 2 1 1 2
)
,
(
)
,
(
)
,
(
)
,
(
)
,
(
ˆ
j k ke
k
k
G
k
k
F
k
k
G
k
k
F
k
k
R
=
=
θ (3)Dimana
G
(
k
1,
k
2)
menyatakan konjugasi kompleks dari G(k1,k2) dan θ(k1,k2) = θF(k1,k2) –θG(k1,k2). Fungsi Phase Only Correlation
ˆ
(
,
)
2 1n
n
r
adalah inverse diskrit transformasi fourier 2D (2D IDFT) dari
R
ˆ
(
k
1,
k
2)
dan didapat dari∑
− −=
2 1 2 2 2 1 1 1)
,
(
ˆ
1
)
,
(
ˆ
1 2 2 1 2 1 k k n k N n k NW
W
k
k
R
N
N
n
n
r
(4) Dimana∑
2 1k k menyatakan∑
∑
=− =2− 2 2 1 1 1 M M k M M k .Dianggap fc(x1,x2) adalah citra 2D dalam ruang
temporal dengan bilangan real disimbolkan sebagai x1 dan x2. δ1 dan δ2 mewakili perpindahan subpixel
fc(x1,x2) pada arah x1 dan x2. Maka citra yang
berpindah dapat disimbolkan fc(x1- δ1,x2- δ2).
Anggap bahwa f(n1,n2) dan g(n1,n2) adalah citra
yang tersampling secara spasial dari fc(x1,x2) dan
fc(x1- δ1,x2- δ2), dan didefinisikan dengan,
2 2 2 1 1 1 , 2 1 2 1
,
)
(
,
)
|
(
n
n
f
cx
x
x nT x nTf
=
= = , 2 2 2 1 1 1 , 2 2 1 1 2 1,
)
(
,
)
|
(
n
n
f
cx
x
x nT x nTg
=
−
δ
−
δ
= =Dimana T1 dan T2 adalah interval sampling secara
spasial, dan range index didapat dari n1 = -M1,...,M1
dan n2 = -M2,...,M2. Fungsi POC
r
ˆ
(
n
1,
n
2)
antaraf(n1,n2) dan g(n1,n2) didapat dari,
{
}
{
}
+
+
+
+
≅
)
(
sin
(
sin
)
(
sin
)
(
sin
)
,
(
ˆ
2 2 2 2 2 1 1 1 1 1 2 1 2 1δ
π
δ
π
δ
π
δ
π
α
n
N
n
n
N
n
N
N
n
n
r
, (5)Dimana α < 1. Posisi puncak dari fungsi POC menyatakan perpindahan antara dua citra, dan nilai puncak α menyatakan derajat kemiripan antara dua
citra.
Gambar 1. Fungsi Fitting untuk estimasi posisi puncak
3. Metode Pencarian Hierarki
Pada metode estimasi gerakan dengan pencarian hierarki berbasis POC (POC-Hierarchical Search), beberapa versi coarse (halus) dari citra masukan awal dibuat. Metode ini juga dikenal dengan nama coarse-to-fine correspondence search technique [4]. Pencocokan blok berbasis POC dimulai dari layer citra terkasar dan operasinya berlanjut ke layer yang lebih halus. Motion vector yang terdeteksi pada tiap layer di periksa pada layer berikutnya. Untuk lebih jelasnya dapat dilihat pada gambar berikut.
Gambar 2. Metode Pencarian Hierarki Jika po adalah titik yang diberikan pada citra yang
dianalisa, dan qo adalah titik korespondensi pada
citra referensi, pl dan ql adalah titik yang cocok pada
layer ke-l. Tujuan dari pencarian korespondensi adalah mencari titik korespondensi qo dari titik po
dan dengan demikian, akan didapatkan motion vector po sebagai qo – po.
Berikut adalah prosedur dari POC-HS : Masukan :
Citra yang dianalisa Io(n1,n2)(=I(n1,n2)),
Citra referensi Jo(n1,n2)(=J(n1,n2)),
Titik po (= p) pada Io(n1,n2)
Keluaran :
Titik korespondensi qo dari titik po pada
Jo(n1,n2), motion vector
HS po
v
dari titik po.Langkah 1: Untuk layer l = 1,2,...,lmax, buat layer ke-l
pada citra Il(n1,n2) dan Jl(n1,n2), sebagai contoh versi
kasar dari Io(n1,n2) dan Jo(n1,n2) adalah:
∑
∑
= − =+
+
=
l i l l i ln
n
I
n
i
n
i
I
0 2 2 1 1 1 0 2 1 2 1)
2
,
2
(
4
1
)
,
(
,∑
∑
= − =+
+
=
l i l l i ln
n
J
n
i
n
i
J
0 2 2 1 1 1 0 2 1 2 1)
2
,
2
(
4
1
)
,
(
.Pada percobaan yang telah dilakukan [4] telah diset nilai untuk lmax pada 2 atau 3 tergantung pada range
gerakan yang diinginkan.
Langkah 2: Pada tiap layer l = 1,2,...,lmax, hitung
koordinat pl = (pl1,pl2) yang berkorespondensi
dengan titik asal po :
=
=
−1 −11 −122
1
,
2
1
2
1
l l l lp
p
p
p
Langkah 3: Diasumsikan bahwa qlmax = plmax pada
layer terkasar, dengan l = lmax – 1.
Langkah 4: Dari citra layer ke-l Il(n1,n2) dan Jl(n1,n2),
diambil dua blok citra (dengan ukuran W x W) yaitu fl(n1,n2) dan gl(n1,n2) dengan titik pusatnya secara
berturut-turut pada pl dan 2ql+1. Untuk keakurasian
pencocokan, ukuran dari blok citra selayaknya besar. Pada penelitian sebelumnya, digunakan 32 x 32 blok citra.
Langkah 5: Hitung jarak perpindahan antara fl(n1,n2)
dan gl(n1,n2) dengan akurasi pixel menggunakan
fungsi POC yang telah disederhanakan. Jika vector jarak perpindahannya adalah δl, maka korespondensi layer ke-l ql didapatkan dengan :
ql = 2ql+1 + δl.
Langkah 6: Kurangi counter dengan 1 untuk l = l – 1
dan ulangi dari langkah 4 sampai langkah 6 jika l>=0.
Langkah 7: Didapatkan nilai motion vector o o HS po
q
p
v
=
−
. Citra Referensi (Frame 100)Citra yang diproses (Frame 105)
Gambar 3. Hasil motion vector Mobile Calendar 320x240 dengan 8 macroblock dan 4 search
parameter
4. Phase Only Correlation menggunakan GPU
Beberapa langkah yang harus dilakukan untuk melakukan proses di GPU adalah:
1. Alokasi Memori ke GPU.
2. Perpindahan data dari RAM CPU ke RAM GPU. Pada Matlab, tipe data yang dipakai adalah Double precision, sedangkan perangkat CUDA yang dipakai pada sistem ini hanya mendukung Single Precision. Sehingga sebelum data ditransfer ke RAM GPU, jika data yang akan diproses bertipe Double precision, maka data harus dikonversi ke Single precision.
3. Data pada RAM CPU perlu dialokasikan. 4. Saat data sudah berada di GPU, maka data
sudah siap diproses menggunakan CUDA (membuat fungsi sendiri atau library yang ada seperti CUBLAS/CUFFT).
5. Perpindahan data hasil proses dari GPU ke CPU. Jika diperlukan, data dapat dikonversi lagi ke Double precision.
6. Bersihkan alokasi memori pada GPU. Berikut adalah diagram proses dari POC menggunakan GPU:
Gambar 4. Diagram Alir POC GPU
5. Hasil Pengujian dan Analisa
Sistem yang diusulkan diimplementasikan dan diuji pada PC dengan sistem operasi Windows XP profesional SP2 dengan prosessor Intel Pentium Core2Duo, memori DDR2 512MB, Kartu grafis yang mendukung CUDA dengan spesifikasi Albatron NVIDIA GeForce 9600GT PCIExpress 512MB DDR3. File video yang diproses adalah video dataset dengan format .AVI dengan kecepatan 30 frame per second. Citra yang diproses adalah setiap 5 frame. Perangkat lunak yang digunakan adalah MATLAB 2007ª, untuk editing video menggunakan Ulead Video Studio, sedangkan compiler yang digunakan untuk mengcompile tool MEX CUDA adalah Microsoft Visual C++ 2005.
Diagram berikut berturut-turut adalah hasil pengujian yang didapatkan:
Full Search POC CPU vs GPU
0 5 10 15 20 25 30 35 40 32 64 128 256 POC Block ti m e ( s e c o n d s ) FS POC CPU FS POC GPU
Gambar 5. Selisih rata-rata waktu proses antara Full Search CPU dan GPU (semakin kecil bar, hasilnya
semakin baik)
3 Layer HS POC CPU vs GPU
0 100 200 300 400 500 600 32 64 128 256 POC Block ti m e ( s e c o n d s ) HS POC CPU HS POC GPU
Gambar 6. Selisih rata-rata waktu proses antara Hierarchical Search CPU dan GPU 3 layer
(semakin kecil bar, hasilnya semakin baik)
2 Layer HS POC CPU vs GPU
0 20 40 60 80 100 120 140 160 32 64 128 256 POC Block ti m e ( s e c o n d s ) HS POC CPU HS POC GPU
Gambar 7. Selisih rata-rata waktu proses antara Hierarchical Search CPU dan GPU 2 layer
(semakin kecil bar, hasilnya semakin baik)
Time Process Ratio GPU/CPU
0 0.5 1 1.5 2 2.5 32 64 128 256 POC Block R a ti o FS POC 3 Layer HS POC 2 Layer HS POC
Gambar 8. Perbandingan kecepatan proses pada Full Search, 3 layer Hierarchical Search, 2 layer Hierarchical Search POC antara GPU dan CPU
6. Kesimpulan
Dari hasil percobaan, terlihat perbandingan kecepatan optimal didapat dari POC Hierarchical Search 2 layer pada POC block 256, yaitu bernilai sekitar 2,1. Atau dengan kata lain, dengan POC Hierarchical Search 2 layer pada 256 POC block, diproses menggunakan GPU akan lebih cepat 2,1 kali daripada diproses menggunakan CPU. Tidak menutup kemungkinan, jika teknologi dimasa mendatang lebih maju dan ukuran resolusi video menjadi lebih tinggi, maka sistem ini juga akan
dapat menyelesaikan permasalahan dengan lebih cepat tingkat rasionya.
7. Daftar Pustaka
[1] Loy Hui Chien and Takafumi Aoki, ”Robust Motion Estimation for Video Sequences Based on Phase-Only Correlation,” 6th IASTED International Conference Signal and Image Processing, pp. 441-446, August 2004.
[2] C.D. Kuglin and D.C. Hines, “The phase correlation image alignment method,” Proc. Int. Conf. on Cybernetics and Society, pp. 163-165, 1975.
[3] K. Takita, M.A. Muquit, T. Aoki, and T. Higuchi, “High-Accuracy subpixel image registration based on phase-only correlation,” IEICE Trans. Fundamentals, Vol. E86-A, No. 8, pp. 1925-1934, August 2003.
[4] K. Takita, M. A. Muquit, T. Aoki, and T. Higuchi,“A sub-pixel correspondence search technique for computer vision applications,” IEICE Trans. Fundamentals, 2004.
[5] Ensiklopedia online, http://www.en.wikipedia.org [6] GPGPU Vis Course, Minneapolis, USA, 2005. [7] Nuno Vasconcelos, “Coarse-to-Fine Least
Squares Motion Estimator”, October 23, 1993.
[8] Sudipta N. Sinha, Jan-Michael Frahm, Marc Pollefeys, Yakup Genc, “GPU-based Video Feature Tracking and Matching”, 2004
[9] Eero P. Simoncelli, “Coarse-to-Fine Estimation of Visual Motion”, 8th Workshop on Image and Multidimensional Signal Processing in Cannes France, IEEE Signal Processing Society, September 1993.
[10] NVidia Cuda Team, “SC-07 Cuda Tutorial”, 2007
[11] GPGPU VISCOURSE05, International
conference on GPGPU, Minneapolis USA, April 20, 2005.
[12] Matlab R2007a Documentation, 2007. [13] Nvidia Developer Team, “NVIDIA CUDA
Programming Guide Version 2.0”, 6/7/2008.
[14] Nvidia Developer Team, “CUDA Reference Manual Version 2.0”, June 2008.
[15] Nvidia Developer Team, “CUDA CUFFT Library Manual Version 2.0”, April 2008.
[16] Nvidia Developer Team, “CUDA nvcc Manual Version 2.0”, January 04 2008.
[17] Nvidia Developer Team, “Nvidia White Paper, Accelerating MATLAB with CUDA using MEX Files”, September 2007.
[18] Nvidia CUDA Forums,
http://forums.nvidia.com/index.php?showforum=62