BAB III PERANCANGAN PERANGKAT LUNAK
3.1. Sistem Pendeteksi Senyum Sistem pendeteksi senyum dalam skripsi ini dibuat dengan membandingkan tiga buah metode, yaitu Harris Corner Detection, Edge Based Corner Detection, dan FAST Corner Detection. Sistem pendeteksi senyum ini bertujuan untuk mendeteksi citra masukan merupakan ekspresi tersenyum atau bukan. Perancangan perangkat lunak sistem pendeteksi senyum ini dibuat dengan menggunakan Matlab 2012b. Source code pemrograman ditulis dengan Matlab dan telah dibuat untuk sistem pendeteksi senyum ini mencakup source code pra proses color segmentation, ketiga metode pendeteksi senyum, yaitu Harris Corner Detection, Edge Based Corner Detection, dan FAST Corner Detection.
3.2. Pemrosesan Data Dalam skripsi ini, pada bagian pemrosesan data akan dilakukan proses konversi citra RGB ke grayscale, serta pra proses color segmentation.
3.2.1. Konversi Citra RGB ke Grayscale Dalam skripsi ini, citra masukan yang masih berupa citra RGB seperti ditunjukkan pada Gambar 3.1, yang akan di konversi ke citra grayscale seperti ditunjukkan pada Gambar 3.2.
Gambar 3.1. Contoh Citra RGB Bibir yang Digunakan Dalam Skripsi
Gambar 3.2. Contoh Citra Bibir yang Telah Dikonversi ke Citra Grayscale
16
3.2.2. Color Segmentation Pada skripsi ini, metode pra proses color segmentation menjadi kombinasi untuk membandingkan hasil akurasinya terhadap metode lain yang tidak di pra proses dengan color segmentation terlebih dahulu. Untuk mengekstraksi warna merah pada daerah bibir, digunakan metode thresholding pada citra RGB. Sistem akan mempertahankan warna asli pada citra yang memiliki nilai Red yang lebih dari 80, nilai Green yang kurang dari 80 dan nilai Blue yang kurang dari 100. Selain batas nilai ini, sistem akan mengubahnya menjadi warna hitam atau mengubah nilainya menjadi 0. Diagram alir color segmentation dapat dilihat pada Gambar 3.3. Source code pra proses color segmentation dapat dilihat pada Lampiran A.1. Mulai
Masukan dir = citra bibir yang dideteksi dengan metode Viola Jones
y=imread(dir)
pic=y mm=1 nn=1
pic(mm,nn,1)<80 pic(mm,nn,2)>80 pic(mm,nn,3)>100
Ya
Tidak
pic(mm,nn,:)=[0,0,0]
Tidak
nn=nn+1
nn=size(pic,2)?
Ya mm=mm+1
Tidak mm=size(pic,1)?
Ya
Selesai
Gambar 3.3. Diagram Alir Pra Proses Color Segmentation 17
3.3. Harris Corner Detection Pada metode Harris Corner Detection, citra masukan yang tidak di pra proses maupun yang sudah di pra proses akan dihitung nilai kesudutannya menggunakan parameter sigma dan konstanta sensitivitas yang diubah-ubah. Diagram alir metode Harris Corner Detection dapat dilihat pada Gambar 3.4. Source code metode Harris Corner Detection dapat dilihat pada Lampiran A.2.
Mulai 1 Masukan dir= citra bibir Ix2=conv2(Ix.^2,g,’same’)
pic=imread(dir) Iy2=conv2(Iy.^2,g,’same’)
Ixy=conv2(Ix.*Iy,g,’same’)
level=graythresh(pic) bw=im2bw(pic,level) im=double(bw(:,:,1))
cim=(Ix2.*Iy2-Ixy.^2)-k*(Ix2+Iy2).^2 sigma=1 k=0.09 dx=[-1 0 1; -1 0 1; -1 0 1] dy=dx’
[r,c,max_local]=findLocalMaximum(cim,3*sigma)
thres=0.01*max(max_local(:))
Ix=conv2(im,dx,’same’)
[r,c]=find(max_local>=thres)
Iy=conv2(im,dy,’same’)
points=[r,c] g=fspecial(‘gaussian’,max (1,fix(6*sigma+1)),sigma) Selesai
1
Gambar 3.4. Diagram Alir Metode Harris Corner Detection
18
3.4. Edge Based Corner Detection Pada metode ini, citra masukan akan dideteksi tepiannya terlebih dahulu menggunakan Sobel edge detection terlebih dahulu sebelum citra dideteksi sudutnya menggunakan Harris Corner Detection. Diagram alir metode Edge Based Corner Detection dapat dilihat pada Gambar 3.5. Source code metode Edge Based Corner Detection dapat dilihat pada Lampiran A.3.
Mulai
Masukan dir=direktori citra bibir yang telah diekstrak
2
Ix2=conv2(Ix.^2,g,’same’) pic=imread(dir) Iy2=conv2(Iy.^2,g,’same’) level=graythresh(pic) bw=im2bw(pic,level) bw3=edge(bw,’sobel’) im=double(bw3(:,:,1))
Ixy=conv2(Ix.*Iy,g,’same’)
cim=(Ix2.*Iy2-Ixy.^2)-k*(Ix2+Iy2).^2
sigma=1 k=0.09 dx=[-1 0 1; -1 0 1; -1 0 1] dy=dx’
[r,c,max_local]=findLocalMaximum(cim,3*sigma)
Ix=conv2(im,dx,’same’) thres=0.01*max(max_local(:))
Iy=conv2(im,dy,’same’) [r,c]=find(max_local>=thres)
g=fspecial(‘gaussian’,max (1,fix(6*sigma+1)),sigma)
points=[r,c]
Selesai 2
Gambar 3.5. Diagram Alir Metode Edge Based Corner Detection 19
3.5. FAST Corner Detection Metode FAST Corner Detection terkenal dengan waktu komputasinya yang sangat cepat karena “hanya” membandingkan nilai satu titik terhadap empat titik di sekitarnya. Jika tidak ada minimal tiga buah titik yang memenuhi syarat, maka titik tersebut bukanlah titik sudut. Kemudian sistem akan bergeser ke titik baru untuk dibandingkan lagi nilainya. Kecepatan deteksi FAST Corner Detection jauh diatas Harris Corner Detection dan Edge Based Corner Detection. Diagram alir metode FAST Corner Detection dapat dilihat pada Gambar 3.6. Source code metode FAST Corner Detection dapat dilihat pada Lampiran A.4. Mulai
3 Masukan dir=citra bibir
pic(j,i-3)>bts1
ctr=ctr+1
pic(j,i-3)
ctr=ctr+1
thres=11 ctr=0 kk=0 [yy xx]=size(pic)
pic(j,i+3)>bts1
ctr=ctr+1
i=4 j=4
pic(j,i+3)
ctr=ctr+1
pic=imread(dir)
pic=rgb2gray(pic)
bts1=pic(j,i)+thres bts2=pic(j,i)-thres Ctr>=4?
Ya ctr=ctr+1
Ya
pic(j-3,i)>bts1
4 kk=kk+1
Tidak
ctr=ctr+1
Ya
pic(j-3,i)
j=j+1
Ya
Ya
i=i+1
pic(j+3,i)>bts1
Tidak
ctr=ctr+1
Ya
pic(j+3,i)
j=yy-3?
4
Tidak
ctr=ctr+1
Tidak
Tidak
i=xx-3?
Ya 3
Selesai
Gambar 3.6. Diagram Alir metode FAST Corner Detection 20
3.6. Deteksi Senyum Metode-metode pendeteksi sudut yang sudah disebutkan sebelumnya akan berusaha menemukan titik sudut pada citra dengan ekspresi tersenyum. Titik sudut ini akan dirata-rata koordinat sumbu y nya untuk mendapatkan satu koordinat rata-rata ekspresi tersenyum. Proses diulang untuk kesemua dataset pelatihan untuk kemudian diperoleh koordinat rata-rata seluruh ekspresi tersenyum. Proses pendeteksian dilakukan dengan melakukan rata-rata koordinat citra uji. Jika koordinat rata-rata citra uji lebih besar daripada koordinat rata-rata ekspresi tersenyum, maka citra tersebut bukan ekspresi tersenyum. Sebaliknya, jika koordinat rata-rata citra uji lebih kecil atau sama dengan koordinat rata-rata ekspresi tersenyum, maka citra merupakan ekspresi tersenyum. Diagram alir proses pendeteksian senyum dapat dilihat pada gambar 3.7. Mulai
load nilai rata-rata ekspresi tersenyum
Deteksi titik sudut citra bibir
points = seluruh titik sudut yang terdeteksi oleh sistem
[xkiri, k] = max(points(:,2));
[i, j] = ind2sub(size(points), k);
ykiri = points(i,1);
[xkanan, k] = min(points(:,2));
[ii, jj] = ind2sub(size(points), k);
ykanan = points(ii,1);
rata=(ykiri+ykanan)/2;
rata < tengah?
Tidak
Bukan Tersenyum
Ya Ekspresi Tersenyum
Selesai
Gambar 3.7. Diagram Alir Proses Pendeteksian Senyum 21
3.7. Perhitungan Akurasi Perhitungan akurasi dilakukan dengan menghitung jumlah citra uji dengan ekspresi tersenyum yang dideteksi tersenyum oleh sistem dan menghitung jumlah citra uji dengan ekspresi bukan tersenyum yang dideteksi bukan tersenyum oleh sistem. Citra dengan ekspresi tersenyum yang dideteksi benar oleh sistem disebut True Positive (TP) dan citra dengan ekspresi bukan tersenyum yang dideteksi benar oleh sistem disebut True Negative (TN). Kedua parameter ini yang digunakan untuk menghitung. Tabel hasil TN dan TP dari setiap metode serta kombinasi parameternya dapat dilihat pada Lampiran B.
3.8. Pembuatan Dataset Skripsi Dataset yang digunakan pada skripsi berupa citra bibir dengan ekspresi tersenyum dan ekspresi bukan tersenyum. Dataset diperoleh dengan menggunakan kamera digital dengan image quality small dan diambil dalam kondisi pencahayaan yang cukup dengan warna latar belakang yang rata seragam. Jarak antara kamera dengan subyek disesuaikan agar seluruh bagian wajah dapat tertangkap oleh kamera. Posisi kamera akan berada tegak lurus dari wajah subyek. Dataset ini kemudian akan diekstraksi bagian bibirnya saja dengan menggunakan bantuan metode Viola Jones dan diresize menjadi berukuran 260×100 piksel. Dataset yang telah diperoleh dapat digunakan dalam proses pendeteksian senyum, baik sebagai dataset pelatihan maupun sebagai dataset pengujian. Dataset pelatihan akan terdiri dari 125 citra dengan ekspresi tersenyum lebar dan 125 citra dengan ekspresi tersenyum tipis. Dataset pengujian True Positive terdiri dari 100 ekspresi tersenyum; 50 ekspresi tersenyum tipis dan 50 ekspresi tersenyum lebar, dan dataset pengujian True Negative terdiri dari 100 ekspresi selain tersenyum. Gambar 3.8 adalah dataset untuk ekspresi tersenyum lebar, Gambar 3.9 adalah dataset untuk ekspresi tersenyum tipis, dan Gambar 3.10 adalah dataset untuk ekspresi bukan tersenyum.
22
Gambar 3.8. Contoh Dataset dengan Ekspresi Tersenyum Lebar
Gambar 3.9. Contoh Dataset dengan Ekspresi Tersenyum Tipis
Gambar 3.10. Contoh Dataset dengan Ekspresi Bukan Tersenyum
3.9. Graphical User Interface Pada skripsi ini juga dibuat fasilitas Graphical User Interface (GUI) pada Matlab untuk mendemokan sistem pendeteksi senyum. Fasilitas GUI dibuat agar pengguna lebih mudah mengoperasikan program yang telah dibuat pada skripsi ini. Selain itu, GUI juga dibuat untuk melakukan pengujian kualitas sistem pada sebuah citra. Fasilitas GUI ini meliputi tombol browse untuk memilih citra yang akan diuji, text untuk menampilkan direktori dari citra yang dipilih, dan sebuah axes untuk menampilkan citra yang dipilih. Terdapat sebuah popup menu yang berisi pilihan ketiga metode pendeteksi senyum yang akan digunakan dan radio button untuk pilihan penggunaan pra proses color segmentation. Sebelum citra dideteksi, pengguna diwajibkan menekan tombol “DETECT” terlebih dahulu. Hasil pendeteksian senyum akan ditampilkan di sebuah kolom, dan sebuah kolom lainnya untuk menampilkan waktu komputasi dari metode yang dipilih. Gambar 3.11 adalah contoh GUI yang akan digunakan pada skripsi ini. Gambar 3.12 adalah contoh GUI yang menampilkan hasil pendeteksian ekspresi wajah dan waktu komputasinya. Source code Graphical User Interface dapat dilihat pada Lampiran A.6.
23
Gambar 3.11. Graphical User Interface Skripsi
Gambar 3.12. Contoh Eksekusi Graphical User Interface Skripsi.
24