DETEKSI WAJAH MENGGUNAKAN INFORMASI WARNA KULIT DENGAN METODE LEVEL SET Rudy Adipranata1, Ibnu Gunawan2 Abstract: The development of technologies in video coding and transmission, the increasing of multimedia data and also natural interaction between human and computer, cause human face detection becoming an important application. Until now various method already developed to do human face detection using face features like eye, nose, mouth, etc. In this paper develop human face detection using skin color information. Beginning with creating active contour around the object, the goal is to estimate a boundary which is the face detected. The problem minimize active contour energy in order to evolve to the face. For reference while minimizing energy, we use skin color information and also use level set method to solve the evolving problem. The result of this research showing that the method use effective to detect face from several images. Even there are noise in those images, the face still can be detected. Keywords: Face Detection, Level Set, Skin Color. 1. Pendahuluan Dewasa ini teknologi video coding telah berkembang sedemikian pesatnya sehingga mampu menghasilkan data video berukuran kecil dengan kualitas gambar yang baik. Aplikasi video coding tersebut membutuhkan suatu cara untuk memisahkan obyek terhadap latar belakang, karena obyek akan dikodekan tersendiri dan latar belakang dikodekan tersendiri, sehingga jika terjadi pergerakan obyek, maka hanya kode obyek tersebut.yang berubah sedangkan latar belakang akan tetap. Hal ini yang menyebabkan ukuran data video tersebut kecil tanpa mengurangi kualitas gambar. 1 Rudy Adipranata, S.T, M.Eng e-mail : [email protected] 2 Ibnu Gunawan, S.T e-mail : [email protected] Teknik Informatika – Fakultas Teknologi Industri – Universitas Kristen Petra Jl. Siwalankerto 121-131, Surabaya Telp. (031) 8439040 Sehubungan dengan hal tersebut maka dibutuhkan suatu aplikasi yang dapat melakukan pemisahan gambar obyek dengan latar belakang dan gambar obyek ini dapat harus dapat disimpan untuk digunakan pada proses lain yang membutuhkan. Pada penelitian ini dibuat suatu aplikasi yang mempunyai tujuan untuk memisahkan obyek dari latar belakang dimana obyek dibatasi pada gambar wajah manusia. Input dari aplikasi adalah sebuah gambar statis yang berisi gambar manusia beserta dengan latar belakangnya. Dari gambar statis tersebut akan diproses untuk memisahkan bagian wajah manusia dari latar belakang dan dari bagian tubuh yang lain. Sebagai batasan, gambar wajah manusia disini haruslah gambar wajah yang tidak tertutupi oleh obyek yang lain dan harus menghadap ke depan atau ke samping. Pada langkah awal pendeteksian gambar wajah terdapat langkah manual yang harus dikerjakan yaitu pendefinisian active contour yang melingkupi bagian wajah dengan radius tertentu, dan nantinya active contour ini akan bergerak menyempit dan berhenti jika sudah berhasil mendeteksi gambar wajah dengan tepat. Sebagai referensi untuk menentukan bagian wajah digunakan warna kulit. Sedangkan untuk melakukan pergerakan active contour digunakan metode level set. Hasil penelitian ini adalah sebuah gambar wajah yang telah terpisah dari latar belakangnya atau latar belakang berwarna putih serta disimpan berupa sebuah file yang dapat digunakan oleh aplikasi lain yang membutuhkannya. Hasil output dari aplikasi ini dapat digunakan pada aplikasi baik yang berhubungan dengan video coding ataupun aplikasi lain seperti identifikasi wajah. 1.1 Tinjauan Pustaka Pada penelitian ini, metode untuk memecahkan masalah pendeteksian wajah diformulasikan sebagai usaha untuk meminimumkan suatu energi yang terdapat pada active contour. Active contour disini adalah sebuah konsep tentang model kurva tertutup yang dapat bergerak melebar ataupun menyempit. Active contour mula-mula diperkenalkan oleh Kass et al dan diberi nama snakes. Active contour ini dapat bergerak melebar ataupun menyempit dengan cara meminimumkan energi yang terdapat padanya menggunakan tenaga ekternal, serta dipengaruhi juga oleh ciri-ciri suatu gambar seperti garis ataupun sisi (edge) (Kass, 1988). Energi yang mempengaruhi active contour ini dapat diformulasikan sebagai : 1 1 0 0 E Eint ( ( s)) ds Eext ( ( s)) ds (1) Pada formula di atas, Eint adalah energi internal yang dipengaruhi oleh lekuk obyek, sedangkan Eext adalah energi eksternal yang akan menarik contour baik melebar ataupun menyempit menuju ke obyek yang dikehendaki. (s) di sini adalah sebuah kurva dalam ruang dua dimensi yaitu (s) : [0,1] 2 . Lebih lanjut, energi internal dapat dituliskan sebagai formula : 2 2 Eint (s) s (s) (s) ss (s) / 2 (2) Pada energi internal ini terdapat dua bagian yang diatur oleh (s) dan (s ) . Dengan mengatur nilai (s) serta (s ) ini akan menentukan pergerakan kurva dimana suku pertama menyebabkan kurva bergerak seperti membran dan suku kedua menyebabkan kurva bergerak seperti plat yang tipis. Sedangkan energi eksternal dapat diformulasikan : E ext G ( ( s )) 2 (3) Disini G adalah gambar dimana terdapat obyek yang hendak dideteksi. Pada penelitian ini, untuk menyelesaikan masalah bagaimana meminimumkan energi pada active contour, digunakan metode level set serta sebagai referensi energi tersebut digunakan informasi warna kulit. Active contour mula-mula yaitu 0 dianggap sebagai zero level set dari sebuah fungsi 0 (Osher, 2003). Fungsi mempunyai sifat : ( x , t ) 0 jika x ( x , t ) 0 jika x ( x , t ) 0 jika x = (t ) (4) n dimana x = (x1, ..., xn) R , adalah daerah tempat obyek berada yang hendak dideteksi dan t adalah waktu. Disini tujuan yang hendak dicapai adalah mencari kurva dimana fungsi ( x, t ) 0 . 1.2 Formulasi Level Set Untuk membuat formulasi level set guna menyelesaikan permasalahan active contour, maka pertama kali harus ditentukan kurva 0 yang merupakan zero level set dari fungsi 0 . Kurva 0 ini dapat diimplementasikan dengan menggunakan fungsi jarak d(x,y) yang dihitung dari titik pusat kurva menuju ke tepi kurva. Awal kurva adalah berbentuk lingkaran sehingga dapat dianggap bahwa titik-titik pada gambar yang mempunyai jarak sama dengan radius lingkaran jika dihitung dari pusat lingkaran, diberi nilai nol, sedangkan titik-titik di luar kurva diberi nilai positif dan di dalam kurva diberi nilai negatif. Langkah berikut adalah menggerakkan kurva tersebut menuju ke obyek yang dikehendaki dengan menggunakan formula seperti dijabarkan berikut. Pertama diasumsikan bahwa kurva yang digunakan memenuhi persamaan differential partial: ( s, t ) F (s, t )n(s, t ) t (5) Jika kurva tersebut direpresentasikan sebagai level set dari fungsi ( x, y , t ) maka didapat : Lc ( x, y, t ) {( x, y, t ) R 2 : ( x, y, t ) c} (6) Disini c adalah konstan, dan dengan menurunkan persamaan (6) terhadap t (waktu), maka didapat : ( L, t ). L ( L, t ) 0 t t n (7) (8) Agar didapat L maka harus dimana n adalah normal dari level set L. dipenuhi persamaan : L F .n t (9) Dan dengan menggabungkan persamaan (7) hingga (9) maka didapat : 0 .V t .F .n t t F . t .F . F . t (10) (11) Gambar yang dideteksi terdiri dari dua bagian yaitu bagian wajah dan bagian yang lain, dituliskan sebagai S={(i,j): 1 i M1, 1 j M2} yang merupakan gambar input dimana M1 dan M2 adalah ukuran gambar tersebut. Sedangkan untuk menyatakan bagian wajah serta bagian lainnya digunakan simbol untuk bagian wajah dan c untuk bagian lainnya. Dengan memasukkan gambar input serta mendiskritkan persamaan (11) maka didapat : n1 ( x) n ( x) t ( F ) S c ( ) S c (c ) cC cC (12) Persamaan inilah yang digunakan untuk menggerakkan active contour sehingga mencapai obyek wajah yang dikehendaki. Pada persamaan tersebut terdapat F yang merupakan informasi warna kulit dan dijelaskan pada sub bab 2.2. Sedangkan untuk digunakan operator Sobel sebagai implementasinya. 1.3 Informasi Warna Kulit Informasi warna kulit yang digunakan berada pada chromatic color space, yang didekati dengan menggunakan Gaussian dua dimensi yaitu : m (r , g ) dimana r 1 N N ri , g i 1 1 N N g i 1 i (13) Dengan menggunakan informasi warna kulit tersebut didapat persamaan untuk F : (r r ) 2 ( g g ) 2 (r r )( g g ) F (r , g ) 2 2 r g g2 r 2 (14) Metode Penelitian Setelah penjelasan pada bagian pendahuluan terutama bagian tinjauan pustaka beserta dengan formulasi level set serta informasi warna kulit, maka pada bagian ini akan dijelaskan mengenai alur kerja aplikasi yang dikembangkan dengan menggunakan flowchart. Pada gambar 1 di bawah ini adalah flowchart umum sistem yang dikembangkan. Start Input MeanRed, MeanGreen, VarRed, VarGreen, Image HitungWarnaKulit BuatInitialContour For i=1 to MaxIteration UpdateKriteriaEvolve i Output FaceImage End Gambar 1. Flowchart Umum Sistem Pada flowchart tersebut terlihat bahwa bagian yang penting untuk melakukan pendeteksian terdapat pada function UpdateCriteriaEvolve. Dimana setelah menjalankan function UpdateCriteriaEvolve dengan jumlah iterasi tertentu, akan didapat output berupa gambar wajah yang diinginkan. Berikut ini digambarkan flowchart untuk masing-masing function yang ada pada sistem. HitungWarnaKulit Start Input image For i=0 to image.height-1 For j=0 to image.width-1 temp = MeanR[i][j] / (MeanR[i][j] + MeanG[i][j] + MeanB[i][j]) CR[i][j] = temp * 255 temp = MeanG[i][j] / MeanR[i][j] + MeanG[i][j] + MeanB[i][j]) CG[i][j] = temp * 255 j i End Gambar 2. Flowchart Function HitungWarnaKulit BuatInitialContour Start Input radius, pusatX, pusatY For i=0 to image.height-1 For j=0 to image.width-1 Jarak[i][j] = radius - sqrt((j-pusatX)*(j-pusatX) + (i-pusatY)*(i-pusatY)) j i End Gambar 3. Flowchart Function BuatInitialContour Pada function BuatInitialContour terdapat input yang harus dimasukkan oleh pengguna yaitu lokasi awal contour. Contour awal ini berupa lingkaran yang harus melingkupi bagian wajah yang hendak dideteksi. Input yang dimasukkan ke dalam function adalah lokasi pusat lingkaran yaitu pusatX dan pusatY serta radius lingkaran tersebut. Langkah berikutnya adalah membuat sebuah array dua dimensi (disimbolkan dengan variabel Jarak) dengan ukuran yang sama dengan dimensi gambar input. Array ini berisi hasil dari fungsi yang terdapat pada formula (4). Jadi jika posisi pixel tepat berada pada boundary contour, maka nilai variabel Jarak pada posisi tersebut adalah nol. Jika posisi pixel terletak di dalam contour, maka variabel Jarak pada posisi tersebut bernilai positif. Sedangkan jika posisi pixel terletak di luar contour, maka variable Jarak pada posisi tersebut akan bernilai negatif. Setelah terdefinisi contour awal, maka langkah berikutnya adalah melakukan update pada nilai variabel Jarak dengan menggunakan function UpdateKriteriaEvolve. Setelah function UpdateKriteriaEvolve dijalankan sejumlah iterasi tertentu, maka variabel Jarak yang bernilai nol merupakan batas pemisah antara bagian wajah yang dideteksi terhadap latar belakang. UpdateKriteriaEvolve Start Input MeanRed, MeanGreen, VarRed, VarGreen For i=0 to image.height-1 For j=0 to image.width-1 cov = -10 / (sqrt(VarRed) * sqrt(VarGreen)); F = 9 - ((CR[i][j] - MeanRed) * (CR[i][j] - MeanRed)) / VarRed + ((CG[i][j] - MeanGreen) * (CG[i][j] - MeanGreen)) / VarGreen – 2*cov*(((CR[i][j]-MeanRed) * (CG[i][j] - MeanGreen)) / (sqrt(VarRed) * sqrt(VarGreen))); JarakNext[i][j] = temp + Jarak[i][j]; j i For i=0 to image.height-1 For j=0 to image.width-1 Jarak[i][j] = JarakNext[i][j] j i End Gambar 4. Flowchart Function UpdateKriteriaEvolve 3 Hasil Penelitian dan Pembahasan Implementasi program aplikasi dibuat dengan menggunakan bahasa pemrograman Visual C++ dengan berdasarkan flowchart yang terdapat pada bagian metode penelitan. Hasil aplikasi tersebut kemudian diujikan pada beberapa gambar untuk mendeteksi wajah yang terdapat pada masing-masing gambar tersebut. Gambar yang diinputkan adalah gambar statis yang berisi obyek manusia dengan wajah melihat ke depan serta melihat ke samping. Sebelum melakukan proses pendeteksian, terdapat parameter informasi warna kulit yang harus dimasukkan. Parameter informasi warna kulit bisa didapat dengan cara mengambil sampel dari banyak gambar yang mempunyai warna kulit dan kemudian dari keseluruhan gambar tersebut dihitung rata-rata (mean) serta variance untuk warna merah dan hijau. Hasil rata-rata dan variance inilah yang dimasukkan sebagai parameter. Parameter yang digunakan pada pengujian ini adalah 118 untuk rata-rata warna merah, 79 untuk rata-rata warna hijau, 24 untuk variance warna merah serta 9 untuk variance warna hijau. Angka-angka tersebut didapat setelah menghitung rata-rata dan variance dari sampel gambar warna kulit sebanyak 50 gambar. Setelah semua parameter dimasukkan ke dalam aplikasi, maka gambar input dapat diproses untuk melakukan pemisahan wajah. Hasil pengujian dapat dilihat pada gambar di bawah ini. Gambar 5. Hasil Pengujian Pendeteksian Wajah Pertama Dari hasil pengujian diatas, gambar sebelah kiri adalah gambar input yang diproses oleh aplikasi dan gambar sebelah kanan adalah gambar output dari aplikasi dimana output ini hanya merupakan bagian wajah dari gambar input. Pada gambar di bawah ini ditampilkan hasil pengujian dengan menggunakan obyek yang lain. Gambar 6. Hasil Pengujian Pendeteksian Wajah Kedua Dari hasil pengujian, terlihat bahwa masih terdapat bagian-bagian lain yang seharusnya bukan merupakan bagian wajah namun terdeteksi sebagai bagian wajah. Untuk menghitung keakuratan pendeteksian, dilakukan pemisahan wajah yang berada pada gambar input dengan cara manual yaitu menggunakan perangkat lunak pengolah grafik, kemudian dibandingkan dengan output dari aplikasi, dan dihitung perbedaan jumlah pixel yang terjadi dimana perbedaan jumlah pixel ini merupakan tingkat kesalahan proses pendeteksian. Hasil perhitungan tingkat kesalahan ini terdapat pada tabel 1. Tabel 1. Tingkat Kesalahan Pendeteksian Gambar Input Jumlah Pixel Jumlah Pixel Persentase Yang Terdeteksi Seharusnya Kesalahan Obyek I melihat depan 4413 4340 1.7 % Obyek I Melihat ke samping 5624 4510 24.7 % Obyek II melihat depan 4072 3528 15.4 % Obyek II melihat ke samping 3080 2576 19.5 % Dari tabel 1 terlihat bahwa hasil pendeteksian wajah terdapat tingkat kesalahan rata-rata sebesar 15%, yang didapat dengan cara menghitung jumlah pixel yang salah terdeteksi dibandingkan dengan bagian wajah yang seharusnya didapat secara manual. Pendeteksian wajah dapat dilakukan tanpa memperhatikan pose wajah tersebut, sehingga walaupun wajah tidak melihat ke depan, tetap dapat dideteksi. Hanya saja dari tabel 1 terlihat bahwa keakuratan pose wajah yang melihat ke depan lebih besar daripada keakuratan wajah yang tidak melihat ke depan. Hasil akhir dari pendeteksian wajah dapat disimpan pada sebuah file dengan format gambar umum (jpg, gif, bmp) sehingga dapat dipergunakan untuk aplikasi lain yang membutuhkan. 4 Simpulan Dari hasil penelitian ini dapat diambil kesimpulan bahwa aplikasi yang dikembangkan telah berhasil melakukan pemisahan gambar wajah terhadap latar belakang ataupun terhadap bagian tubuh yang lain. Tingkat keakuratan pendeteksian wajah yang dihasilkan adalah sekitar 85 %. Pendeteksian wajah dapat dilakukan tanpa memperhatikan pose wajah tersebut, sehingga walaupun wajah tidak melihat ke depan, tetap dapat dideteksi hanya saja tingkat keakuratan lebih rendah dibandingkan dengan wajah tersebut melihat ke depan Keakuratan pendeteksian wajah dipengaruhi oleh parameter informasi warna kulit yang digunakan, dimana parameter ini adalah mean dan variance untuk warna merah dan hijau. Ketepatan nilai parameter yang dimasukkan terhadap mean dan variance warna merah dan hijau yang terdapat pada gambar input akan mempengaruhi hasil pendeteksian. Daftar Rujukan [1] Kass, M., Witkin, A. and Terzopoulos D. 1988. Snakes: Active Contour Models. International Journal of Computer Vision. 1 : 321-331. [2] Osher, S., Pargios, N., 2003, Geometric Level Set Methods in Imaging, Vision and Graphics, Springer. [3] Paragios, N. and Deriche R. 2000. Geodesic Active Contour and Level sets for The Detection and Tracking Moving Objects. IEEE Transaction on Pattern Analysis and Machine Intelligence. 22(3): 266-280. [4] Goldenberg, R., Kimmel, R., Rivlin, E. and Rudzsky M. 2001. Fast Geodesic Active Contours. IEEE Transactions on Image Processing. 10(10): 1467-1475. [5] Chan, T. F. and Vese, A. 2001. Active Contours Without Edges. IEEE Transaction on Image Processing. 10(2): 266-277. [6] Dai, Y. and Nakano, Y. 1995. Extraction for Facial Images from Complex Background Using Color Information and SGLD Matrices. Proc. First International Workshop Automatic Face and Gesture Recognition. 238-242.