Anda di halaman 1dari 5

[DIGITAL IMAGE PROCESSING]

janshendry@gmail.com{ee&it of UGM, Indonesia}

INTEGRAL IMAGE (VIOLA JONES) THEORY AND MATLAB

Artikel kali ini hanya diperuntukkan untuk menjelaskan bagaimana konsep Integral Image yang diusung oleh Viola-Jones secara sederhana. Dalam artikel ini saya tambahkan program yang dibuat menggunakan matlab, sehingga anda bisa melakukan uji silang (cross check) antara apa yang anda mengerti, apa yang anda hitung secara manual (potlot) terhadap hasil dari eksekusi program. Agar lebih mudah dalam memahami tentang Integral Image, maka saya akan memberikan contoh dan perhitungannya secara manual. Integral image kerap kali digunakan sebagai algoritma untuk face detection (deteksi wajah). Dengan menggunakan algoritma ini, proses bisa dilakukan hanya dengan sekali pemayaran (1pass) dan memakan waktu yang cepat dan akurat. Integral image digunakan untuk menghitung hasil penjumlahan intensitas piksel pada daerah tertentu, dalam hal ini daerah yang berbentuk rectangular atau persegi panjang. Sehingga hasil dari Integral Image dikatakan sebagai representasi baru dari citra asli. Agar mempermudah penjelasan tentang algoritma ini, contoh yang diberikan adalah sederhana sehingga bisa menjadi dasar untuk mengembangkan ke kasus yang lebih kompleks. Data yang akan diolah hanya berupa matriks biasa, bukan berupa citra namun program yang diberikan bisa diimplementasikan untuk data seperti citra. Saya hadirkan sebuah matriks sebagai data original sebagai berikut:

Misalkan kita ingin menghitung jumlah seluruh piksel (intensitas) atau nilai dari matriks di atas pada daerah yang diberi kotak warna merah. Langkah-langkahnya: Buatlah summed area table yang merupakan Integral Image dari matriks original dengan ukuran yang sama persis. Agar tabel itu bisa dibuat, maka rumus yang digunakan adalah

, 1 +

1,

1, 1

February 27, 2012

[DIGITAL IMAGE PROCESSING]


janshendry@gmail.com{ee&it of UGM, Indonesia}

Perhatikan gambar di bawah ini sebagai ilustrasi:

s(x,y)

s(x,y) merupakan nilai summed area pada (x,y), nilai i(x,y) merupakan intensitas dari matriks/citra asli, s(x,y-1) merupakan nilai summed area dari nilai piksel tetangga y, dan s(x-1,y) merupakan nilai summed area dari nilai piksel tetangga x serta s(x-1,y-1) merupakan nilai summed are dari nilai piksel tetangga diagonalnya. Agar lebih mudah dalam memahami, perhatikan gambar berikut

3 1

7 i(x,y) 3

s(x-1,y-1)

s(x,y-1)

s(x-1,y)

s(x,y)

Sum area table

Dengan menggunakan rumus di atas, maka kita akan mengisi tiap kolom dari sum area table. Ketika memprogram menggunakan matlab, terlebih dahulu kita siapkan matriks buffer yang ukurannya sama dengan matriks original tapi diberi nilai nol. Tujuannya adalah mempersiapkan memori dan juga untuk mempercepat komputasi. Pengaruh akan terlihat ketika kita mengolah citra dengan ukuran yang lebih besar. Matriks buffer tersebut akan menjadi tempat kita meletakkan nilai Summed Area Table. s(x,y-1) = 0 s(x,y)=3
0 0

di luar batas matriks di luar batas matriks di luar batas matriks

s(x-1,y) = 0 s(x-1,y-1) = 0

i(x,y) = 3

intensitas di piksel (1,1)

s(x,y) = i(x,y)+s(x,y-1)+s(x-1,y)-s(x-1,y-1) s(x,y-1) = 0


s(x-1,y)=3

di luar batas matriks

s(x,y)=10

s(x-1,y) = 3 s(x-1,y-1) = 0 di luar batas matriks

i(x,y) = 7 s(x,y) = 10

intensitas di piksel (1,1)

February 27, 2012

[DIGITAL IMAGE PROCESSING]


janshendry@gmail.com{ee&it of UGM, Indonesia}

s(x,y-1) = 3
s(x,y-1)=3

10

s(x-1,y) = 0 s(x-1,y-1) = 0

di luar batas matriks di luar batas matriks

s(x,y)=4

i(x,y) = 1 s(x,y) = 4

intensitas di piksel (1,1)

s(x,y-1) = 10
s(x-1,y-1)=3 s(x,y-1)=10

s(x-1,y) = 4 s(x-1,y-1) = 3

s(x-1,y)=4

s(x,y)=0

i(x,y) = 3 s(x,y) = 14

Tabel di atas menunjukkan cara kerja dari Integral Image yang menghasilkan Summed Area Table. Bila matriks original yang telah kita hadirkan di atas, dikenai operasi Integral Image maka akan dihasilkan:

Nah, sekarang kita akan menggunakan hasil dari Integral Image tersebut untuk menghitung jumlah piksel atau intensitas suatu citra untuk bagian tertentu saja. Bagian ini merupakan sebuah area yang berbentuk rectangle. Matriks original di atas kita bawa lagi di sini:

Agar jumlah piksel pada area merah dapat dihitung dengan cepat dan akurat, kita menggunakan nilai-nilai yang sudah didapat dari Integral Image. Prinsip yang digunakan sedikit berbeda dengan rumus pada integral image. Perhatikan gambar berikut:

February 27, 2012

[DIGITAL IMAGE PROCESSING]


janshendry@gmail.com{ee&it of UGM, Indonesia}

Sumber: Integral image-based representations, Konstantinos G. Derpanis, 2007

Untuk menghitung jumlah piksel dari daerah A, maka rumusnya adalah = + +

Kita petakan kembali simbol L1 ... L4 ke dalam tabel Integral Image:

Maka, = 14 = 74 = 28 = 37 Sehingga hasil dari A =

Apakah hasil di atas bisa dipertanggungjawabkan??? Okay, kita buktikan secara manual. Seharusnya jawaban dari A tersebut merupakan penjumlahan dari semua nilai intensitas piksel pada daerah yang diberi kotak berwarna MERAH. Sehingga: A = 9+5+6+3 = 23. Terbukti, bahwa hasil dengan menggunakan Konsep Integral Image benar.

February 27, 2012

[DIGITAL IMAGE PROCESSING]


janshendry@gmail.com{ee&it of UGM, Indonesia}

Program yang digunakan untuk komputasi di atas adalah

clear all; close all; clc; %% data I=[3,7,7,3; 1,3,3,1; 5,9,9,5; 3,6,6,3]; %% %% Integral Image - Summed Area Table A=zeros(size(I,1)+2,size(I,2)+2); A(2:size(A,1)-1,2:size(A,2)-1)=I; s=zeros(size(A,1)+2,size(A,2)+2); for x=2:size(A,1)-1 for y=2:size(A,2)-1 s(x,y)=A(x,y)+s(x-1,y)+s(x,y-1)-s(x-1,y-1); end end s=s(2:size(I,1)+1,2:size(I,2)+1); %% %% Aplikasi kotak=2; for m=1:size(s,1)/kotak for n=1:size(s,2)/kotak new(m,n)=s(m*kotak,n*kotak); end end new=reshape(new',1,4); final=new(1)+new(4)-(new(2)+new(3)); %% %% displaying disp('Original Matrix'); disp(I); disp('Summed Area Table'); disp(s); disp('Jumlah Piksel pada Kotak Yang diMaksud'); disp(final); %% Apa yang dijelaskan di atas merupakan dasar dari Integra Image oleh Viola dan Jones. Bila ingin diimplementasikan pada pengolahan citra untuk kasus tertentu, bisa jadi perlu tambahan kode program karena memerlukan algoritma lainnya. Tapi khusus untuk Integral Image, dapat langsung diterapkan pada citra yang ingin anda olah. Bila ternyata anda membutuhkan modifikasi untuk kasus tertentu, silakan menghubungi email yang saya berikan. Terima kasih. February 27, 2012