Segmentasi Wajah Manusia Dengan - Faculty e

advertisement
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 :
 n1 ( x)   n ( x)
t

 

 ( F )      S c ( )      S c (c )  
  cC

 cC
(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.
Download