Penerapan Metode Eigenface Untuk Pencocokan Wajah Dengan Menggunakan Klasifikasi Naive Bayesian.
KLASIFIKASI NAIVE BAYESIAN
ABSTRAK
Wajah adalah biometrik yang secara alamiah dipunyai dan menjadi ciri khas setiap manusia. Ciri khas wajah yang unik ini dapat dimanfaatkan untuk membantu komputer mengenali wajah seseorang. Di antara metode yang ada, supaya komputer dapat mengenali ciri wajah digunakan metode eigenface di tahap preprocessing dan metode naïve bayesian untuk proses klasifikasi. Kedua metode ini yang digunakan untuk pencocokan wajah dalam tulisan ini. Setiap hasil dari proses klasifikasi akan dihitung akurasinya dengan menggunakan confusionmatrix. Dari hasil percobaan yang telah dilakukan, dengan menggunakan metode ini dapat dicapai akurasi 88% dari 200 citra wajah yang berasal dari 20 mahasiswa dimana setiap mahasiswa mempunyai 10 citra wajah. Berdasarkan hasil akurasi ini dapat disimpulkan bahwa untuk pengenalan wajah dengan menggunakan komputer dapat digunakan metode
(2)
ABSTRACT
Face is a biometric that naturally belongs to human race and become one of human characteristic. This unique characteristic can be used to help computers recognize an image of person's face. In order to help computer recognize an image
of person’s face, eigenface method can be used in the image preprocessing stage and naïve bayesian method for the classification process. Both of these methods are used for face recognize in this paper. Each result of the classification process will be calculated using confusion matrix to gain the accuracy of the classification. The results of the experiments that have been conducted, the accuracy reach up to 88% obtained from 200 face images by 20 students where each student have 10 face images. Based on this result, eigenface and naïve bayesian concluded as suitable
(3)
i
Penerapan Metode Eigenface Untuk Pencocokan Wajah
Dengan Menggunakan Klasifikasi Naive Bayesian
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Oleh :
Halaman Judul
Ega Bima Putranto 115314059
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
(4)
ii
Application of Eigenface Method For Face Recognize Use
Naïve Bayesian Classified
A Thesis
Presented as Partial Fulfillment of the Requirements to Obtain Sarjana Komputer Degree in Informatics Engineering Study Program
Written By:
Halaman Judul (English)
Ega Bima Putranto 115314059
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY
YOGYAKARTA 2015
(5)
iii
HALAMAN PESETUJUAN
SKRIPSI
Penerapan Metode Eigenface Untuk Pencocokan Wajah
Dengan Menggunakan Klasifikasi Naive Bayesian
Disusun oleh: Ega Bima Putranto
115314059
Telah disetujui oleh:
Dosen Pembibing
(6)
iv
HALAMAN PENGESAHAN SKRIPSI
Penerapan Metode Eigenface Untuk Pencocokan Wajah
Dengan Menggunakan Klasifikasi Naive Bayesian
Dipersiapkan dan disusun oleh: Nama : Ega Bima Putranto NIM : 115314059
Telah dipertahankan di depan panitia penguji pada tanggal 22 Juli 2015
dan dinyatakan memenuhi syarat
Susunan Panitia Penguji:
Nama Lengkap Tanda Tangan Ketua Dr. Anastasia Rita Widiarti, M.Kom ___________ Sekretaris Eko Hari Parmadi, S.Si., M.Kom ___________ Anggota Dr. Cyprianus Kuntoro Adi, SJ., M.A., M.Sc. ___________
Yogyakarta, Juli 2015 Fakultas Sains dan Teknologi
Universitas Sanata Dharma Dekan,
(7)
v
HALAMAN PERSEMBAHAN
“One way to forget about pain is to do something you will be in completely…So Computer Games”-- Danil Ishutin (Dendi)
(8)
vi
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka sebagaimana layaknya karya ilmiah.
Yogyakarta, 30 Juni 2015 Penulis
(9)
vii
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI
KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma:
Nama : Ega Bima Putranto NIM : 115314059
Demi pengembangan ilmu pengetahuan, saya memberikan kepada perpustakaan
Universitas Sanata Dharma karya ilmiah yang berjudul:
PENERAPAN METODE EIGENFACE UNTUK PENCOCOKAN WAJAH DENGAN MENGGUNAKAN KLASIFIKASI NAIVE BAYESIAN
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas, dan mempublikasikan di internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap mencatumkan nama saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Yogyakarta, 30 Juli 2015 Yang menyatakan,
(10)
viii
PENERAPAN METODE EIGENFACE UNTUK
PENCOCOKAN WAJAH DENGAN MENGGUNAKAN
KLASIFIKASI NAIVE BAYESIAN
ABSTRAK
Wajah adalah biometrik yang secara alamiah dipunyai dan menjadi ciri khas setiap manusia. Ciri khas wajah yang unik ini dapat dimanfaatkan untuk membantu komputer mengenali wajah seseorang. Di antara metode yang ada, supaya komputer dapat mengenali ciri wajah digunakan metode eigenface di tahap
preprocessing dan metode naïve bayesian untuk proses klasifikasi. Kedua metode ini yang digunakan untuk pencocokan wajah dalam tulisan ini. Setiap hasil dari proses klasifikasi akan dihitung akurasinya dengan menggunakan confusion matrix. Dari hasil percobaan yang telah dilakukan, dengan menggunakan metode ini dapat dicapai akurasi 88% dari 200 citra wajah yang berasal dari 20 mahasiswa dimana setiap mahasiswa mempunyai 10 citra wajah. Berdasarkan hasil akurasi ini dapat disimpulkan bahwa untuk pengenalan wajah dengan menggunakan komputer dapat digunakan metode eigenface dan naïve bayesian.
(11)
ix
APPLICATION OF EIGENFACE METHOD FOR FACE
RECOGNIZE USE NAÏVE BAYESIAN CLASSIFIED
ABSTRACT
Face is a biometric that naturally belongs to human race and become one of human characteristic. This unique characteristic can be used to help computers recognize an image of person's face. In order to help computer recognize an image of person’s face, eigenface method can be used in the image preprocessing stage and naïve bayesian method for the classification process. Both of these methods are used for face recognize in this paper. Each result of the classification process will be calculated using confusion matrix to gain the accuracy of the classification. The results of the experiments that have been conducted, the accuracy reach up to 88% obtained from 200 face images by 20 students where each student have 10 face images. Based on this result, eigenface and naïve bayesian concluded as suitable method for recognize an image of person’s face.
(12)
x
KATA PENGANTAR
Dengan kerendahan hati terucap puji dan syukur kepada Tuhan Yang Maha Esa karena dengan perlindungan dan kuasa-Nya penulis dapat menyelesaikan skripsi yang berjudul “Penerapan Metode Eigenface Untuk Pencocokan Wajah Dengan Menggunakan Klasifikasi Naïve Bayesian”. Pada
proses penulisan tugas akhir ini, terucap banyak terimakasih kepada:
1. Kedua orang tua penulis, Bapak M. Alim Bimo Gunarto dan Ibu Siti Baroyani yang menyemangati penulis.
2. Kedua saudara penulis, Antonius Aryanto Nugroho dan Mita Kurnianti yang tanpa henti memberi semangat kepada penulis.
3. Romo Dr. Cyprianus Kuntoro Adi, SJ, MA, M.Sc. selaku dosen pembimbing, terima kasih atas bimbingan, kesabaran, inspirasi, dan motivasi yang telah diberikan sehingga penulis dapat menyelesaikan skripsi ini.
4. Bapak Eko Hari Parmadi, S.Si., M.Kom. dan Ibu Dr. Anastasia Rita Widiarti, M.Kom. selaku dosen penguji yang telah memberikan banyak masukan terhadap skripsi ini.
5. Romo Poldo Situmorang, Benedictus Reynusa Paradhipta dan Aluisius Bayu Saputra yang bersama-sama memberikan ide, inspirasi dan semangat dengan cara membantu ataupun menyusahkan.
6. Seluruh civitas akademika Teknik Informatika angkatan 2011, terutama anggota C++ yang telah berjuang bersama dan saling memberi semangat dan inspirasi.
7. Teman-teman Dota 2 Yogo, Niel, Pantrek, Angga, Nusa dan yang tidak bisa disebut satu persatu, yang telah menemani dan menghibur penulis. 8. Semua pihak baik langsung maupun tidak langsung, yang telah
membantu dalam proses penyelesaian skripsi ini.
Yogyakarta, 22 Juli 2015 Penulis,
(13)
xi
Daftar Isi
Halaman Judul ... i
Halaman Judul (English) ... ii
HALAMAN PESETUJUAN ... iii
HALAMAN PENGESAHAN ... iv
HALAMAN PERSEMBAHAN ... v
PERNYATAAN KEASLIAN KARYA ... vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI ... vii
ABSTRAK ... viii
ABSTRACT ... ix
KATA PENGANTAR ... x
Daftar Isi ... xi
Daftar Gambar... xiii
Daftar Tabel ... xiv
BAB I PENDAHULUAN ... 1
1.1 Latar Belakang Masalah... 1
1.2 Rumusan Masalah ... 2
1.3 Tujuan ... 2
1.4 Batasan Masalah ... 2
BAB II LANDASAN TEORI ... 3
2.1 Pengenalan Wajah ... 3
2.1.1 Pengertian Pengenalan Wajah ... 3
2.1.2 Tahapan Pengenalan Wajah ... 4
2.1.3 Ekstrasi Ciri ... 5
2.2 Metode Eigenface ... 5
2.2.1 Principal Component Analysis (PCA) ... 7
2.2.2 Proses Principal Component Analysis (PCA) / Eigenface .. 7
2.2.3 Contoh PerhitunganEigenface ... 8
2.3 Naive Bayesian ... 16
2.3.1 Klasifikasi Naive Bayesian ... 16
2.3.2 Contoh Perhitungan Naive Bayesian ... 18
(14)
xii
BAB III METODOLOGI ... 22
3.1 Metode Pengumpulan Data ... 22
3.2 Teknik Analisis Data ... 22
3.3 Desain User Interface ... 28
3.4 Spesifikasi Software dan Hardware ... 30
BAB IV IMPLEMENTASI DAN ANALISIS HASIL ... 31
4.1 Implementasi ... 31
4.1.1 Pengolahan Data ... 31
4.1.1.1 Preprocessing ... 32
4.1.1.2 Proses ... 34
4.1.1.3 Output ... 35
4.1.1.4 Akurasi ... 35
4.1.2 User Interface ... 36
4.2 Analisis ... 39
BAB V KESIMPULAN DAN SARAN ... 43
5.1 Kesimpulan ... 43
5.2 Saran ... 43
Daftar Pustaka ... 45
(15)
xiii
Daftar Gambar
Gambar 2.1 PengenalanWajah (Zhao dan Chellapa, 2006) ... 4
Gambar 3.1 Diagram Block ... 22
Gambar 3.2 User Interface ... 29
Gambar 4.1 Data Awal I ... 31
Gambar 4.2 Data Awal II ... 32
Gambar 4.3 Cropping dan Resize ... 32
Gambar 4.4 Data I ... 33
Gambar 4.5 Data II ... 33
Gambar 4.6 Tabel Hasil Confusion matrix ... 35
Gambar 4.7 Hasil Matrix ... 36
(16)
xiv
Daftar Tabel
Tabel 2.1 Hasil eigen value dan eigen vektor ... 13
Tabel 2.2Tabel IPK ... 18
Tabel 2.3 Hasil IPK ... 19
Tabel 2.4 Hasil Uji IPK ... 19
Tabel 2.5 Confusion Matrix ... 20
Tabel 2.6 Contoh Confusion Matrix ... 21
Tabel 3.1 Pembagian Data ... 27
Tabel 3.2 Contoh Hasil Confusion Matrix (akurasi 88%) ... 28
(17)
1
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Indonesia merupakan negara yang maju. Teknologi di Indonesia juga sudah bisa dikatakan maju karena penggunaan teknologi yang banyak. Bisa dibuktikan dengan salah satunya adalah biometrik. Biometrik adalah metode mengenali karakteristik biologis manusia dari ciri fisik biologisnya. Contoh penerapan biometrik di Indonesia beberapa diantaranya adalah sistem absensi yang menggunakan sidik jari, raut wajah, dan retina mata.
Walaupun banyak yang menerapkan biometrik ini, sangat disayangkan di Indonesia belum banyak yang membuatnya sendiri. Banyak perkantoran atau instansi-instansi lainya yang masih membelinya dari luar negeri. Hal ini membuat Indonesia di mata dunia masih sebagai konsumen bukan sebagai pengembang perangkat lunak.
Metode eigenface pernah digunakan untuk citra wajah beperapa karyawan Universitas Sanata Dharma Yogyakarta. Penelitian tersebut menggunakan metode
ecludian distance sebagai pencocokan wajahnya. Tingkat keberhasilan dari metode ecludian distance adalah 97.143% yang didapat dari salah satu kombinasi data dari proses 3 fold crossvalidation. (Putri, 2012)
Penelitian ini ingin membantu penerapkan metode eigenface untuk ekstrak ciri wajah dan naïve bayesian sebagai klasifikasinya. Diharapkan penelitian ini
(18)
mampu membantu pengembang perangkat lunak untuk mendalami metode tersebut sehingga dapat mengurangi permasalahan yang sudah disebutkan diatas.
1.2 Rumusan Masalah
Berdasarkan latar belakang yang telah disebutkan sebelumnya, maka dapat dirumuskan permasalahan, yaitu:
1. Bagaimana metode eigenface dapat mengekstrasi ciri citra wajah?
2. Berapa akurasi pengenalan wajah menggunakan klasifikasi naive bayesian
dalam mengenali wajah? 1.3 Tujuan
Adapun tujuan dari penelitian ini, antara lain :
1. Menerapkan metode eigenface untuk mengektraksi ciri citra wajah dengan baik.
2. Mengetahui akurasi pengenalan wajah menggunakan klasifikasi naive bayesian.
1.4 Batasan Masalah
1. Citra digital hanya dapat menggunakan tampilan background polos sehingga tidak ada obyek-obyek dibelakangnya.
2. Sistem hanya berbentuk prototype yang dibuat menggunakan MATLAB. 3. Data sebanyak 200 citra wajah dari 20 orang dimana setiap orang memiliki
10 citra wajah dengan berbagai ekspresi.
4. Data citra wajah berukuran 150x150 pixels. Proses resize dan cropping
(19)
2
BAB II
Landasan Teori
Landasan teori digunakan untuk menjelaskan teori yang akan digunakan pada penelitian ini, diantaranya pengertian wajah, eigenface, naive bayesian dan
Principal Component Analysis (PCA).
2.1 Pengenalan Wajah
Wajah atau muka adalah bagian depan dari kepala manusia meliputi wilayah dari dahi hingga dagu, termasuk rambut, alis, mata, hidung, pipi, mulut, bibir, gigi, kulit, dan dagu (Sugiono, 2008). Elemen-elemen itulah yang menjadi pembeda antara wajah satu dengan yang lain. Selain elemen fisik ada faktor-faktor lain yang mempengaruhi wajah yaitu: syaraf dan pembuluh darah, trauma fisik dan hasil pembedahan, ekspresi karena pembuluh, air mata dan keringat, kesakitan dan kelelahan, gender, ras, pertumbuhan dan usia. Oleh karena itu tidak ada satu wajahpun yang serupa mutlak, bahkan pada manusia kembar identik sekalipun karena wajah terutama digunakan untuk ekspresi wajah, penampilan serta identitas (Sitorus dkk, 2006).
2.1.1 Pengertian Pengenalan Wajah
Pengenalan wajah adalah suatu teknologi yang disebut biometrik yang sudah lama digunakan. Teknologi biometrik pada wajah ini sudah banyak digunakan pada isntansi-instansi pemerintah maupun swasta seperti perkantoran swasta maupun negeri, kepolisian, kemiliteran, dan perumahan. Teknologi biometrik itu diaplikasikan pada sistem absesnsi, sistem pembuatan SIM (Surat
(20)
Izin Mengemudi), sistem keamanan rumah,dan sistem pengamanan komputer pribadi.
Pada pengenalan wajah langkah yang dikerjakan adalah melakukan pengenalan wajah secara mandiri atau otomatis yang lalu akan disimpan pada suatau basis data tertententu.
2.1.2 Tahapan Pengenalan Wajah
Dalam melakukan pengenalan wajah (face recognition), ada beberapa tahapan proses yang harus dilalui, seperti :
Gambar 2.1 PengenalanWajah (Zhao dan Chellapa, 2006)
Deteksi wajah (face detection) merupakan proses awal yang harus dilakukan pada citra input untuk mendeteksi adanya citra wajah di dalam citra masukan. Namun, berdasarkan Gambar 2.1 tahap-tahap proses pengenalan wajah dikelompokkan menjadi 2 bagian, yaitu proses ekstraksi ciri dan proses pengenalan wajah (Zhao dan Chellapa, 2006). Proses deteksi wajah akan dilakukan bersama dalam proses ekstraksi ciri. Hal ini dikarenakan dalam proses deteksi wajah diperlukan ekstraksi ciri di dalam citra masukan yang akan mendeteksi apakah citra masukan merupakan citra yang mengandung ciri wajah.
Citra Input Deteksi
Wajah Ektrak Ciri
Pengenalan
Wajah Vertifikasi
(21)
2.1.3 Ekstrasi Ciri
Secara umum, (Zhao dan Chellapa 2006) menjelaskan ada dua macam ciri (feature) pada wajah, yaitu holistic features dan facial feature. Facial feature
contoh cirinya adalah warna dan bentuk, besar dan letak hidung, mulut, mata, telinga, dan lain-lain. Sedangkan pada holistic features setiap cirinya adalah merupakan suatu karakteristik dari seluruh wajah. Wajah dianggap sebagai kesatuan yang utuh. Untuk melakukan ekstrak ciri pada wajah, (Zhao dan Chellapa, 2006) membedakan teknik pengenalan wajah menjadi tiga metode, sebagai berikut:
a) Holistic methods
Metode ini digunakan untuk menyelesaikan kasus holistic features
yaitu mencari informasi secara keseluruhan pada wajah.
b) Features-based
Metode ini digunakan untuk menyelesaikan kasus facial features
yaitu mencari informasi berdasarkan ciri yang ada pada wajah seperti hidung, mata, telinga, dan lain-lain.
c) Hybrid methods
Metode ini merupakan penggabungan dari metode holistic methods
dan features-based.
2.2 Metode Eigenface
Kata eigenface sebenarnya berasal dari bahasa jerman yaitu “eigenwert”
dimana “eigen” artinya karakteristik dan “wert” artinya nilai. Eigenface adalah salah satu algoritma pengenalan pola wajah yang berdasarkan pada Principle
(22)
Component Analysis (PCA) yang dikembangkan di MIT. Banyak penulis lebih menyukai istilah eigen image. Teknik ini telah digunakan pada pengenalan tulisan tangan, pembacaan bibir, pengenalan suara dan pencitraan medis. Menurut layman (Al Fatta, 2009) Eigenface adalah sekumpulan unsur wajah yang telah dibuat standar yang diambil dari analisis statistik dari banyak gambar wajah. Algoritma eigenface secara keseluruhan cukup sederhana. Training image
direpresentasikan dalam sebuah vector flat (gabungan vektor) dan digabung bersama-sama menjadi sebuah matriks tunggal. Eigenface dari masing-masing citra kemudian diekstraksi dan disimpan dalam file temporary atau database. Test image yang masuk didefinisikan juga nilai eigenfaces-nya dan dibandingkan dengan eigenfaces dari image database atau file temporary (Prasetyo dan Rahmatun, 2008).
Cara perhitungannya dilakukan dengan cara:
1. Pencarian matriks A berukuran N x N dapat dihitung dengan :
. = � . (2.1)
λ dinamakan eigenvalue dari matriks A, sedangkan x merupakan eigenvector yang sama dengan scalar (λ).
2. Pencarian determinan dari matriks A dengan rumus :
| − �| = (2.2)
3. Setelah nilai eigenvalue (�) ditemukan langkah selanjutnya adalah mencari
eigenvektor dengan menggunakan rumus :
(23)
2.2.1 Principal Component Analysis (PCA)
Principal Component Analysis (PCA) adalah sebuah transformasi linier yang biasa digunakan untuk mereduksi data. Principal Component Analysis
(PCA) adalah sebuah teknik statistika yang berguna pada bidang pengenalan, klasifikasi dan mereduksi data citra. PCA juga merupakan teknik yang umum digunakan. Karena Principal Component Analysis (PCA) sangat ampuh untuk mereduksi data baik seperti teks, citra, dan sinyal.
2.2.2 Proses Principal Component Analysis (PCA) / Eigenface
Proses perhitungan PCA dapat dilakukan dengan langkah-langkah sebagai berikut (Fatta, 2009)
1. Mengambil satu set training citra wajah (M). Misalkan M berjumlah 10 buah citra wajah.
2. Inisialisasi untuk tiap citra wajah dari set training. r adalah sebuah vektor
× berdasarkan matriks dari citra wajah yang berukuran NxN. 3. Menghitung rata-rata vektor citra wajah
= �∑��= � (2.4)
4. Melakukan normalisasi ukuran citra dengan melakukan pengurangan vektor citra wajah dengan nilai rata-rata tersebut.
(24)
5. Menghitung matriks kovarian
= �∑��= � �� = � � (2.6)
Dimana
= [ … . �] � (2.7)
6. Dikarenakan ukuran matriks terlalu besar, maka pencarian matriks kovarian menjadi :
= � (2.8)
7. Menghitung eigenvalue (λ) dan eigenvector (x) dari matriks kovarian
= � (2.9)
8. Menghitung eigenvector sebanyak M dari matriks kovarian
= � (2.10)
dengan persamaan :
� = . � (2.11)
9. Melakukan normalisasi terhadap u. 10. Mengumpulkan eigenvector sebanyak K.
2.2.3 Contoh Perhitungan Eigenface
1. Terdapat 3 buah image yang masing-masing mempunyai 2x2 matriks.
(25)
Image1 = [ ][ ]
Image1 = [ ][ ]
2. Lalu ditransformasikan ke matriks × �
S = [ ]
3. Mencari rata-rata vector
+ +
= = .
+ +
= = .
+ +
= =
+ +
= = .
Sehingga didapatkan :
= | . . .
|
4. Mengurangi vector citra wajah dengan nilai Y
[ ] − | . . .
| = [ − . − .
− − .
(26)
[ ] − | . . . | = [ − . . . ] [ ] − | . . . | = [ . . − . ]
5. Selanjutnya, , , digabungkan menjadi satu matriks A
= [ − . − . − − . − . . . . . − . ]
6. Menghitung kovarian menggunakan rumus �
= [− .− . . − . . . − − − . . . ] × [ − . − . − − . − . . . . . − . ] = [ . − − . − . − . − . − . ]
7. Menghitung eigenvalue dan eigenvector dari korvarian matriks . (Untuk mempermudahkan perhitungan maka angka dirubah)
= [− − − ] [ −− � − − � −−�] = − � ∗ { − � −� − − } − ∗ { − −� − − − } + ∗ { − − − � − } =
(27)
− � {− � + � + } − + −� + = − � { � − � + } + =
− � { � − � + } =
− � � − � −
� = � = � =
8. Eigenvalue � , � , � yang didapat dari matriks digunakan untuk menghitung eigenvektor
Untuk � =
[ −−
− − −− ] [ ] =
[−
− −− ] [ ] =
Diperolehlah persamaan:
− + =
− + =
− + =
Langkah selanjutnya dilakukan proses eliminasi sehingga diperoleh,
[ ] = [ ]
Eigenvektornya adalah
[ ] Untuk � =
(28)
[ −−
− − −− ] [ ] =
[−
− −− ] [ ] =
Diperolehlah persamaan:
− =
− + − =
− + − =
Langkah selanjutnya dilakukan proses eliminasi sehingga diperoleh,
[ ] = [− ]
Eigenvektornya adalah
[− ] Untuk � =
[ −−
− − −− ] [ ] =
[−
− −− ] [ ] =
Diperolehlah persamaan:
− = − + − =
− + − =
(29)
[ ] = [ ]
Eigenvektornya adalah
[ ]
9. Menghitung eigenvektor sebanyak M dari matriks .
� = . � = [ − . − . − − . − . . . . . − . ] × [ ] = [ − − − − ] = [ − . − . − − . − . . . . . − . ] × [− ] = [ ] = [ − . − . − − . − . . . . . − . ] × [ ] = [ − . . . ]
10.Setelah itu eigenvalue diurutkan dari yang paling kecil sampai yang paling besar.
Tabel 2.1 Hasil eigen value dan eigen vektor Eigenvalue Eigenvektor
λ=3 -1.3333
0.6667 3 0.3333
(30)
λ=2 -8 -6 -1 -1
λ=1 8
6 1 1
11.Memproyeksikan �kedalam eigenspace
=
[− . . . ] × [
− . − .
− − .
] = − .
[− . . . ] × [
− . . .
] = .
[− . . . ] × [
. .
− .
] = − . =
[− − − − ] × [
− . − .
− − .
(31)
[− − − − ] × [ − . . . ] = . [− − − − ] × [ . . − . ] = − . = [ − ] × [ − . − . − − . ] = − . [ − ] × [ − . . . ] = − . [ − ] × [ . . − . ] = .
12.Memasukkan nilai �kedalam sebuah vector
� = [− .. − . . . − . − . − . . ]
13.Langkah selanjutnya dari matriks omega ini di cari mean (µ) dan standar deviasi (σ).
14. � = [
− . . − . . . − . − . − . . ]
(32)
2.3 Naive Bayesian
Bayesian filter atau Naive Bayes Classifier merupakan metode terbaru untuk mengklasifikasikan dokumen. Algoritma ini adalah metode probabilitas dan dikemukakan oleh ilmuwan Inggris bernama Thomas Bayes, yaitu memprediksi probabilitas di masa depan berdasarkan pengalaman sebelumnya. Dasar dari teorema Naive Bayes digunakan dalam pemrograman adalah rumus Naive Bayes
sebagai berikut ini:
│ = │ ∗ / (2.12)
P (A|B) = Probabilitas yang dihitung (Posterior) dari peristiwa A karena adanya informasi yang dikandung dalam peristiwa B.
P (B|A) = Probabilitas yang dihitung (Posterior) dari peristiwa B karena adanya informasi yang dikandung dalam peristiwa A.
P (A) = Probabilitas tak bersyarat atau disebut probabilitas awal (Prior) dari peristiwa A.
P (B) = Probabilitas tak bersyarat atau disebut probabilitas awal (Prior) dari peristiwa B.
2.3.1 Klasifikasi Naive Bayesian
Jika X adalah vektor masukkan yang berisi fitur dan Y adalah label kelas, Naïve Bayes dituliskan dengan P (X|Y). Notasi tersebut berarti probabilitas label kelas Y didapatkan setelah fitur-fitur X diamati. Notasi ini disebut juga probabilitas akhir (posterior probability) untuk Y, sedangkan P (Y) disebut probabilitas awal (prior probability) Y.
(33)
Selama proses pelatihan harus dilakukan pembelajaran probabilitas akhir P (Y|X) pada model untuk setiap kombinasi X dan Y bedasarkan informasi yang didapat dari data latih. Dengan membangun model tersebut, suatu data uji X’ dapat diklasifikasikan dengan mencari nilai Y’ dengan memaksimalkan nilai P(X’|Y’).
Yang lalu didapatkan rumus Naïve Bayes untuk klasifikasi sebagai berikut:
| = � ∏��=1�( �| )
� (2.13)
P(Y|X) adalah probabilitas data dengan vektor X pada kelas Y. P(Y) adalah probabilitas awal kelas Y. ∏��= �| adalah probabilitas independen kelas Y dari semua fitur dalam vektor X. Nilai P(X) selalu tetap sehingga dalam perhitungan prediksi selanjutnya tinggal menghitung bagian
∏��= �| dengan memilih yang terbesar sebagai kelas yagg dipilih
sebagai hasil prediksi. Sementara probabilitas independen ∏��= �| tersebut merupakan pengaruh semua fitur dari data terhadap setiap kelas Y.
Naive bayesian memiliki bentuk peluang kelas bersyarat untuk atribut kontinyu. Distribusi dikarakterisasi dengan dua parameter yaitu mean,
, dan varian, 2. Untuk tiap kelas yj, peluang kelas bersyarat untuk atribut Xi adalah
ijij i x ij j i i x Y y X P 2 2 2 exp 2 1 (2.14) Parameter ij dapat diestimasi berdasarkan sampel meanXi
x untuk seluruh(34)
training record yang dimiliki kelas yj. Dengan cara sama,
2ij dapat diestimasidari sampel varian
s2 training record tersebut. 2.3.2 Contoh Perhitungan Naive Bayesian Terdapat data sebagai berikut:Tabel 2.2Tabel IPK IPK
Tidak Lulus
2 3.5
3 3.25
2 2.75
2.5 3.5
1.6 4
2.5 3.75
2.3 2.25
3.25 3.8
Jika terdapat IPK 3.5 nilai tersebut dikategorikan lulus atau tidak. Langkah pertama adalah menentukan rata-rata dan standar deviasi untuk masing-masing kelas.
(35)
Tabel 2.3 Hasil IPK
IPK
Tidak Lulus
2 3.5
3 3.25
2 2.75
2.5 3.5
1.6 4
2.5 3.75
2.3 2.25
3.25 3.8
Mean 2.39375 3.35
Standar Deviasi 0.544083 0.586759
Kemudian nilai mean dan standar deviasi dimasukkan kedalam rumus
naive bayesian bersarat pada rumus (2.14). Setelah itu dihasilkan nilai sebagai berikut:
Tabel 2.4 Hasil Uji IPK
g(IPK= . 5,m,σ|Tidak) 0.73342325 0.289865
0.212593567
g(IPK= . 5,m,σ|Lulus) 0.680081055 0.985582
(36)
Dihasilkan nilai IPK 3,25 mirip dengan data training lulus jadi dapat disimpulkan bahwa jika IPK 3,25 kemungkinan besar lulus.
2.4 Confusion Matrix
Fungsi confusion matrix adalah mebghitung seberapa tepat dan lengkap klasifikasi terhadap suatu kelas data. Isi dari confusion matrix adalah informasi hasil actual dan prediksi yang dihasilkan oleh pengklasifikasian.
Tabel 2.5 Confusion Matrix
Prediksi
negatif
positif
Asli
negatif
A
B
positif
C
D
A adalah jumlah nilai prediksi benar ketika contoh negatif. B adalah jumlah nilai prediksi salah ketika contoh positif. C adalah jumlah nilai prediksi salah ketika contoh negatif. D adalah jumlah nilai prediksi benar ketika contoh positif.
Akurasi adalah hasil dari penjumlahan nilai diagonal dibagi dengan jumlah total keseluruhan data dan selajutnya dikalikan 100%.
= + + ++ × % (2.14)
(37)
Tabel 2.6 Contoh Confusion Matrix
1 1 1 1 1 1
0 2 2 0 2 0
0 1 1 2 1 1
0 0 0 6 0 0
0 0 0 0 6 0
0 0 0 0 0 6
(38)
3
BAB III
METODOLOGI
Berdasarkan pada landasan teori yang telah disampaikan pada bab kedua di atas, pada bab ini dibahas metodologi yang akan digunakan pada penelitian ini. Bab ini berisi tentang blok diagram, data, tatap muka pengguna dan contoh perhitungan.
3.1 Metode Pengumpulan Data
Mengambil 200 citra wajah mahasiswa Universitas Sanata Dharma Program Studi Teknik Informatika angkatan 2011 dikarenakan data sangat mudah untuk didapat dan data yang dihasilkan adalah data yang nyata.
3.2 Teknik Analisis Data
Hasil yang diperoleh dari pengumpulan data selanjutnya dianalisa dengan tahap- tahap sebagai berikut :
Proses
Data Preprocessing Output Akurasi
Eigenface Greyscale
Naivebayesian Data Model Confusionmatrix Cropping dan
Resize
(39)
1. Data
Data yang diambil adalah citra wajah dari mahasiswa Universitas Sanata Dharma Fakultas Teknik Program Studi Teknik Informatika. Dengan jumlah mahasiswa 20 dan setiap mahasiswa mempunyai 10 citra wajah sehingga total data keseluruhan adalah 200 citra wajah. citra asli berukuran 3456 x 5184 pixel yang di ambil menggunakan kamera Digital Single Lens Reflex (DSLR).
2. Preprocessing
Data citra asli pada awal preprocessing dipotong fokus pada bagian wajah menjadi 150 x 150 pixel karena data yang diperkecil terlebih dahulu untuk mempermudah proses perhitungan di dalam sistem. Proses memperkecil citra wajah menggunakan program Adobe Photoshop CS 5 Version 12.0 (64x bits).
Data yang sudah didapat lalu diproses melalui grayscale, sehingga citra menjadi putih keabu-abuan. Matriks akan berbentuk seperti ini (contoh perhitungan menggunakan matriks berukuran 2x2 yang seharusnya 150x150).
= [ ] = [ ] = [ ] = [ ] = [ ] = [ ]
= [ ] ℎ = [ ] = [ ] = [ ]
Langkah berikutnya adalah tahap eigenface, merupakan langkah awal yang diterapkanpada setiap citra. Data dirubah ukurannya (reshape) menjadi bentuk N1 * N2 *1, kemudian disimpan ke matriks S.
(40)
Langkah selanjutnya mengurangi matriks S dengan rata-ratanya untuk setiap kolom menggunakan zero mean. Dan hasil disimpan pada matriks A.
Setelah didapatkan matriks A, penghitungan kovarian dilakukan. Perhitungan dilakukan dengan cara C=A*A’. Berikut adalah hasil dari perhitungan tersebut
(41)
Hasil C selanjutnya akan dinormalisasi menggunakan zscore. Berdasarkan nilai kovarian, matriks C menghasilkan eigenvalue dan eigenvektor.
Eigenvalue diurutkan (sorting) berdasarkan nilai yang paling tinggi ke paling rendah. Tahap ini adalah tahap akhir dari proses eigenface. Selanjutnya
eigenvektor diurutkan berdasarkan indeks eigenvalue yang telah diurutkan sebelumnya. Langkah terakhir dari proses eigenface adalah pembentukan dataset
yang baru dengan nama matriks u.
Agar bentuk akhir sama dengan matriks asli yang digunakan pada sistem maka matriks u ini di transpose terlebih dahulu maka hasil matriks u adalah seperti matriks
(42)
Proses yang telah disebutkan di atas adalah perhitungan setiap orang, dimana masing-masing orang mempunyai 10 citra wajah maka ukuran matriks yang akan terbentuk adalah berukuran 22500x100 seperti matriks
u=[ ⋱ ] dimana setiap baris merupakan atribut (feature).
Matriks u selanjutnya di normalisasi menggunakan zscore data matriks u agar dapat dipotong sesuai keinginan, data yang digunakan mempunyai panjang
feature 22500 jika feature ini dipotong maksimal yang dapat dipotong adalah 22499 dan minimal adalah satu. Proses pemotongan adalah memotong baris dari matriks u diatas.
3. Proses
Hasil eigenface dari 10 citra wajah per orang dibagi menjadi fivefold. Fungsi fivefold adalah membuat lima buah bagian dari 10 citra wajah untuk diambil satu bagian (dua citra wajah) untuk testing dan empat bagian untuk training, sehingga data training terdapat delapan buah citra wajah dan data testing
terdapat dua buah citra wajah. Langkah ini dilakukan berulang sebanyak iterasi jumlah orang. Hasil dari fivefold disimpan dan digabungkan. Langkah selanjutnya, data training diproses menggunakan NaiveBayes.fit dan data testing menggunakan
predict. Proses NaiveBayes.fit menggunakan fungsi matlab, data training diolah menggunakan fungsi ini. Hasil proses ini menghasilkan data model yang disebut
(43)
predict, hasil model dari pengolahan data training lalu di predict menggunakan data testing.
4. Output
Proses output akan menghasilkan keluaran data model. Data model ini berisi mean dan varian yang dihasilkan dari proses NaiveBayes.fit. Proses predict
menghasilkan prediksi klasifikasi dari data testing. 5. Akurasi
Proses akurasi bertujuan untuk menguji keakuratan dan keberhasilan suatu sistem. Setiap proses menghasilkan confusion matrix, lalu proses ini diulang samapai semua bagian pernah menjadi data testing. Pembagian data dibagi seperti berikut :
Tabel 3.1 Pembagian Data
Sehingga didapat hasil akhir yang berupa confusion matrix. Pembagian data ini terjadi ketika proses setelah eigenface.
I II III IV V 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 9 9 10 10 10 10 10
(44)
Tabel 3.2 Contoh Hasil Confusion Matrix (akurasi 88%)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
2 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
4 0 0 0 8 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
5 0 0 0 0 7 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0
6 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 1 0 0 0
8 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 1 0 0
9 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 1 0 0
10 0 0 0 0 0 0 0 0 1 9 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0
12 0 0 0 0 2 0 0 0 0 0 0 7 0 0 0 0 1 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 2 0
14 0 0 0 0 0 0 0 1 0 0 0 0 0 9 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 8 0 0 1 0
17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 1 0
18 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 8 1 0
19 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 9 0
20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10
Confusion matrix mempresentasikan hasil dari pencocokan data training dan data testing. Setiap data yang memiliki nilai sama antara data training dan data testing dapat dikatakan bernilai benar. Setiap hasil pencocokan yang bernilai benar akan dihitung dengan dijumlahkan kemudian dibagi dengan jumlah data dan dikalikan dengan 100%, sehingga menghasilkan akurasi. Pencocokan data yang bernilai benar membentuk diagonal pada matriks, dengan kata lain penjumlahan dari diagonal confusion matrix merupakan akurasi dari sistem.
3.3 Desain User Interface
Agar proses dapat mudah dilihat oleh pengguna maka dirancang interface
(45)
Gambar 3.2 User Interface
Pada data input diinputkan jumlah orang, jumlah foto, jumlah atribut, ekstensi foto dan grayscale. Pada interface juga terdapat citra asli dan citra
eigenface agar pengguna juga dapat melihat perubahan citra. Lalu confusion matrix dan akurasi juga ditampilkan akan mempermudah pengguna untuk memantau sistem.
Panel di bawahnya menunjukkan hasil analisis untuk beperapa kali percobaan yang disertai dengan informasi grafik sehingga pengguna akan dipermudah untuk menganalisa sistem.
(46)
3.4 Spesifikasi Software dan Hardware
Untuk proses membuat sistem dan data digunakan software dan hardware
sebagai berikut :
1. Software
a) Sistem operasi : Windows 8.1 Single Language 64-bit b) Bahasa pemprograman : Matlab version 8.0.0.783 (R2012b) c) Program pengolah citra : Adobe Photoshop CS5 v.12.0 64-bit
2. Hardware
a) Processor : Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz b) Memory : 16 GB
(47)
4
BAB IV
IMPLEMENTASI DAN ANALISIS HASIL
Metodologi yang dijelaskan pada bab-bab sebelumnya diimplementasikan pada bab ini yang meliputi implementasi, pengolahan data, preprocessing, proses, output, akurasi, user interface dan analisis.
4.1 Implementasi
Landasan teori yang telah dipaparkan akan lebih berguna jika diimplementasikan. Imlementasi yang akan dipaparkan pada bab ini meliputi pengolahan data dan user interface.
4.1.1 Pengolahan Data
Data mentah yang diambil menggunakan kamera Digital Single Lens Reflex (DSLR) sejumlah 200 citra wajah dengan rincian 20 orang yang setiap orangnya mempunyai 10 citra wajah.
(48)
Gambar 4.2 Data Awal II
Data mentah ini belum bisa diolah kedalam sistem karena ukuran dan tidak fokusnya citra terhadap wajah. Data mentah ini harus diproses dalam tahap
preprocessing.
4.1.1.1 Preprocessing
Tahap awal sebelum data masuk ke pengolahan data mining data masih bisa dikatakan sebagai data mentah yang harus melelaui proses preprocessing. Tahap preprocessing yang harus dilalui adalah:
1. Cropping dan Resize
(49)
Proses pemotongan dan pengecilan citra menggunakan Adobe Photoshop CS 5 Version 12.0 (64x bits). Proses ini bertujuan mefokuskan citra pada wajah dan memperkecil ukuran citra yang awalnya berukuran 3456 x 5184 pixel bisa dilihat pada gambar 4.3 menjadi 150x150 pixel pada gambar 4.4 dan gambar 4.5.
Gambar 4.4 Data I
(50)
2. Grayscaling
Proses awal preprocessing adalah grayscaling (keabu-abuan). Data citra yang berjumlah 200 citra wajah dirubah menjadi citra keabu-abuan dan disimpan kedalam matriks S. Setiap baris matriks tersimpan satu orang yang mempunyai citra wajah 10 citra. Proses ini berulang hingga 20 kali sesuai dengan jumlah orang, sehingga data citra wajah yang berjumlah 200 ini bisa masuk ke proses berikutnya yaitu eigenface.
3. Eigenface
Data yang sudah menjadi grayscale memasuki proses kedua dari
reprocessing yaitu eigenface. Pada proses ini citra wajah diubah menjadi citra
eigenface. Hasil eigenface disimpan ke dalam matriks u yang di dalam setiap kolom tersimpan satu citra wajah yang sudah berbentuk citra eigenface, setiap proses eigenface menyimpan satu set data satu orang di dalam matriks u yang panjang kolomnya sepanjang 22500. Panjang kolom ini bisa dipotong sesuai dengan keinginan pengguna. Setelah dipotong hasil pemotongan data ini disimpan kedalam matriks hasileigface yang menampung 200 citra wajah eigenface yang telah dipotong.
4.1.1.2 Proses
Pada proses ini adalah memproses data citra wajah menggunakan klasifikasi naïve bayes. Sebelum masuk inti proses naïve bayes data dipisah terlebih dahulu menjadi data training dan data testing. Hasil dari pemisahan ini disimpan kedalam 2 matriks yaitu trainingsmuaorang dan testingsemuaorang,
(51)
testingsemuaorang untuk menyimpan data citra wajah testing. Perhitungan naïve bayesian menggunakan fungsi matlab yaitu naivebayes.fit dan predict, trainingsemuaorang diproses menggunakan naivebayes.fit kemudian
testingsemuaorang diproses menggunakan predict. Fungsi model = naivebayes.fit(trainingsemuaorang) adalah fungsi matlab yang digunakan untuk mengolah data training sedangkan fungsi model.predict(testingsemuaorang)
untuk mengolah data testing.
4.1.1.3 Output
Berdasarkan proses naïve bayesian, maka dihasilkan mean dan varian
sebagai data model yang diperoleh dari data training, kemudian hasil prediksi kelas yang didapat dari data testing. Selanjutnya, langkah yang dilakukan adalah mencocokan data testing dengan kelas training proses ini akan digunakan untuk proses selanjutnya yaitu perhitungan akurasi.
4.1.1.4 Akurasi
Proses menghitung akurasi terbentuk dari perhitungan jumlah hasil
confusion matrix. Penjumlahan diagonal matriks ini akan memberikan nilai akurasi sistem. Hasil dari confusion matrix dapat dilihat gambar 4.6
(52)
Hasil confusion matrix diambil ketika dilakukan pemotongan feature
sejumlah 19095. kemudian dari confusion matrix dapat dihitung akurasinya dengan cara jumlah diagonal dibagi dengan seluruh jumlah data jadi jumlah diagonal dari gambar 4.6 adalah 175 dan lalu dibagi dengan keseluruhan data 200 yang menghasilkan nilai 0,875 selanjutnya dikalikan dengan 100 agar hasil menjadi perseratus, akurasi yang didapat adalah 87.5%. Pemotongan feature
minimal sehingga didapatkan akurasi 87.5% adalah 19095 dari total feature
22500.
Gambar 4.7 Hasil Matrix 4.1.2 User Interface
Pembuatan User interface sistem pencocokan wajah menggunakan sarana yang diberikan oleh Matlab version 8.0.0.783 (R2012b), user interface ini berguna untuk mempermudahkan pengguna di dalam penginputan data yang dibutuhkan untuk sistem. User interface yang terbentuk tersimpan di file Input.m dan Input.fig bentuk dari user interface dapat dilihat pada gambar 4.8
(53)
Gambar 4.8 User Interface
Gambar tersebut menjelaskan bahwa input dialog terdapat interaksi yang dibutuhkan oleh pengguna. Panel input dialog membutuhkan inputan berupa jumlah orang, jumlah foto, jumlah atribut, ekstensi foto, grayscale, tombol save
dan proses.
Jumlah orang menjelaskan jumlah orang yang akan diproses di dalam sistem.
Jumlah foto menjelaskan jumlah foto setiap orang yang akan diproses di dalam sistem.
Jumlah atribut mendeskripsikan jumlah atribut atau feature yang sudah melalui proses eigenface menurut keiinginan pengguna.
(54)
Ekstensi foto menjelaskan ekstensi citra yang akan digunakan meliputi *.jpg, *.bmp, *.jpeg.
Grayscale menjelaskan data citra sudah berbentuk citra grayscale atau tidak.
Tombol save digunakan untuk menyimpan model data. Tombol proses digunakan utnuk menjalankan sistem.
Selanjutnya bagian proses foto menampilkan citra wajah yang berbentuk grayscale dan citra wajah yang berbentuk eigenface. Bagian
confusion matrix menampilkan jumlah confusion matriks, dalam confusion matrix terdapat tombol biru yang berguna untuk memperbesar tabel dari
confusion matrix. Terakhir dari user interface adalah bagian akurasi dalam akurasi akan menampilkan jumlah akurasi yang didapatkan dari perhitungan
confusion matrix.
Panel input foto tedapat check box graysclae, tombol input foto, foto
testing, foto hasil, nama file testing, label dan keterangan benar atau salah kegunaanya adalah:
Check box graysclae berguna untuk jika inputan citra testing sudah berupa
grayscale.
Tombol input foto adala tombol untuk memilih dan memproses inputan citra.
Foto testing dan foto hasil menampilkan citra yang diinputkan dan hasil citra setelah diolah.
(55)
Label adalah menampilkan hasil label yang didapatkan setelah proses. Keterangan benar dan salah adalah keterangan yang didapatkan saat data
testing dan data hasil dicocokkan menghasilkan citra yang benar atau salah.
Panel Uji Akurasi dan Hasil Uji Tertinggi terdapat min atribut, max atribut, range, jumlah atribut, akurasi dan tombol proses uji kegunaan panel tersebut adalah:
Min Atribut adalah inputan pengguna yang memasukkan batas minimal atribut yang sudah melalui proses eigenface yang akan digunakan.
Max Atribut adalah inputan pengguna yang memasukkan batas maksimal atribut yang sudah melalui proses eigenface yang akan digunakan.
Range adalah inputan pengguna yang memasukkan jarak atribut yang sudah melalui proses eigenface sesuai keinginan.
Jumlah Atribut menunjukkan titik atribut yang sudah melalui proses
eigenface tertinggi menunjukkan akurasi tertinggi. Akurasi menunjukkan akurasi teringgi yang didapatkan.
Grafik Hasil Uji Akurasi menampilkan grafik dalam bentuk garis dari beperapa percobaan akurasi.
4.2 Analisis
Implementasi yang telah ditulis diatas membantu analisis terhadap penerapan pengenalan pola citra wajah metode eigenface menggunakan naïve bayesian. Percobaan untuk menguji sistem dengan akurasi sebagai berikut:
(56)
Tabel 4.1 Hasil Percobaan Akurasi
No Panjang
Atribut Akurasi(%) No
Panjang
Atribut Akurasi(%)
1 1 8 62 20949 88
2 2 8.5 63 20950 88
3 3 9.5 64 20951 88
4 4 10 65 20952 88
. . . 66 20953 88
. . . 67 20954 88
5 100 37 68 20955 88
6 101 37 69 20956 88
7 102 36.5 70 20957 88
8 103 38.5 71 20958 88
9 104 37.5 72 20959 88
10 105 37.5 73 20960 88
11 106 36 74 20961 88
. . . . . .
. . . . . .
12 113 36 75 21066 88
13 114 36.5 76 21067 88
14 115 36.5 77 21068 88
15 116 37 78 21069 88
16 117 37.5 79 21070 88
17 118 38 80 21071 88
18 119 38 81 21072 88
19 120 37.5 82 21073 88
. . . 83 21074 88
. . . 84 21075 88
20 1000 51.5 85 21076 87.5
21 1001 51.5 . . .
22 1002 51 . . .
23 1003 51.5 85 22467 87.5
24 1004 51.5 86 22468 87.5
25 1005 51.5 87 22469 87.5
26 1006 51.5 88 22470 87.5
27 1007 51.5 89 22471 87.5
28 1008 51.5 90 22472 87.5
29 1009 51.5 91 22473 87.5
30 1010 51.5 92 22474 87.5
(57)
. . . . . .
31 20000 87.5 93 22493 87.5
32 20001 87.5 94 22494 87.5
33 20002 87.5 95 22495 87.5
34 20003 87.5 96 22496 87.5
35 20004 87.5 97 22497 87.5
36 20005 87.5 98 22498 87.5
37 20006 87.5 99 22499 87.5
38 20007 87.5 100 22500 87.5
39 20008 87.5
40 20009 87.5
41 20010 87.5
42 20011 87.5
43 20012 87.5
44 20013 87.5
45 20014 87.5
46 20015 87.5
47 20016 87.5
48 20017 87.5
49 20018 87.5
50 20019 87.5
51 20020 87.5
. . .
. . .
52 20939 87.5
53 20940 88
54 20941 88
55 20942 88
56 20943 88
57 20944 88
58 20945 88
59 20946 88
60 20947 88
(58)
Gambar 4.6 Hasil Atribut dan Akurasi
Berdasarkan tabel 4.1 dengan 22500 kali percobaan didapatkan hasil seperti yang tertera di dalam percobaan. Percobaan dilakukan dengan mengambil dari minimum feature dengan nilai nol sampai 22500, dengan jarak satu feature
setiap percobaan.
Nilai akurasi tertingi adalah 88% pada panjang feature 20940. Nilai akurasi terendah adalah 8% pada panjang feature 1.
(59)
5
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan penelitian, penerapan metode eigenface untuk pencocokan wajah dengan menggunakan naïve bayesian dapat disimpulkan beperapa hal, yaitu:
1. Ekstraksi ciri menggunakan metode eigenface dan klasifikasi menggunakan metode naïve bayesian terbukti mampu mengenali wajah dengan baik, karena didapatkan akurasi yang tinggi sebesar 88%.
2. Hasil dari percobaan menggunakan semua feature sepanjang 22500 akurasi metode eigenface menggunakan naive bayesian membantu mengenali wajah sebesar 87.5%. Hasil akurasi terbesar yang didapatkan adalah sebesar 88% dari panjang feature 20940.
3. Berdasarkan penelitian dari panjang feature 0-20940 sampai 0-21075 didapatkan akurasi yang stabil sebesar 88%.
5.2 Saran
Untuk penelitian lebih lanjut, ekstrak ciri menggunakan metode eigenface
dan klasifikasi menggunakan metode naïve bayesian dapat digunakan untuk membuat sistem informasi seperti sistem absensi, sistem keamanan rumah, sistem identifikasi seseorang dan lain-lain.
(60)
Untuk memudahkan pengguna sistem, citra wajah bisa terdapat obyek-obyek lain yang terdapat di dalam citra. Sehingga citra wajah yang diinputkan oleh pengguna dapat lebih sedikit mempunyai batasan.
(61)
Daftar Pustaka
Depdiknas. (2002). Kamus Besar Bahasa Indonesia (Edisi Ketiga). Jakarta: Balai Pustaka.
Fatta, H. A. (2009). Rekayasa Sistem Pengenalan Wajah. Yogyakarta: Andi Offset.
Prasetyo, E. (2012). Konsep dan Aplikasi menggunakan MATLAB. Yogyakarta: Andi Offset.
Prasetyo, E. (2014). Mengolah Data Menjadi Informasi Menggunakan Matlab.
Yogyakarta: Andi Offset.
Prasetyo, E., & Rahmatun, I. (2008). Desain System Pengenalan Wajah Dengan Variasi Ekspresi dan Posisi Menggunakan Metode EIGENFACE. Jurnal Ilmiah Informatika dan Komputer, Vol.11, No.01, pp.33.
Putri, Y. W. (2012). Penerapan Face Recognition Menggunakan Metode Eigenface Pada Sistem Presensi Karyawan Universitas Sanata Dharma.
Skripsi. Yogyakarta: Fakultas Sains dan Teknologi, Universitas Sanata Dharma.
Sitorus, S. d. (2006). Pengolahan Citra Digital. Medan: USU Press.
Sugiono, D. (2008). Kamus Besar Bahasa Indonesia Pusat Bahasa Edisi Keempat. Jakarta: PT Gramedia Pustaka Utama.
Zhao, W., & Chellapha, R. (2006). Face Processing Advanced Modeling and Methods. London: Elsevier Inc.
(62)
LAMPIRAN
Source Code1. Bayes.m
function [ ConMatrix,model ] = Bayes(
class_train,class_test,trainingSemua,testingSemua )
%UNTITLED5 Summary of this function goeBayess here % Detailed explanation goes here
model = NaiveBayes.fit(trainingSemua,class_train); class_predict = model.predict(testingSemua);
ConMatrix=hitungConfusionmat (class_test,class_predict);
function confMat=hitungConfusionmat(class_test,class_predict)
yu=unique(class_test); confMat=zeros(length(yu)); for i=1:length(yu)
for j=1:length(yu)
confMat(i,j)=sum(class_test==yu(i) & class_predict==yu(j)); end end ConMatrix=confMat; end % assignin('base','class_predict',class_predict); end 2. Eigface.m
function [hasilEig,eigPic]=eigface(S,irow,icol)
[jmlBaris,jmlKolom] = size(S); rerataData = mean(S,2);
S=double(S); A=S;
for i=1:jmlBaris
for j=1:jmlKolom
A(i,j)=S(i,j)-rerataData(i,1); end
end
ADbl=A;
% ADbl=[];
% for i=1:jmlKolom
% temp=double(A(:,i)); % ADbl=[ADbl temp]; % end
(63)
% ADbl=zscore(ADbl);
C=ADbl'*ADbl; C=zscore(C);
% 3. Hitung eigenvector dan eigenvalue dari covariance matrix.
[eigenvector,eigenvalue]=eig(C);
% 4. Pilih component dan bentuk vector feature dan principal component dari
% eigenvector yang memiliki eigenvalue paling besar diambil (decreasing order).
eigenvalue=diag(eigenvalue);
[~, indeks]=sort(eigenvalue,'descend');
featureVector=eigenvector(:,indeks);
% 5. Menurunkan data set yang baru.
u = ADbl*featureVector;
% assignin('base','u',u);
% % PCA denggan PCA dari Matlab % ADbl=double(S);
% [~,u,~] = princomp(ADbl); % Normalisasi
u= zscore(u);
% % Potong PC
% cutU=u(1:jmlPC,:); % Hasil akhir
hasilEig=u;
% Tampilan foto eigenface
for i=1:size(u,2)
img=reshape(u(:,i),icol,irow); img=img';
img=histeq(img,255); eigPic=img;
end end
(64)
3. Input.fig
4. Input.m
function varargout = Input(varargin)
%INPUT M-file for Input.fig
% INPUT, by itself, creates a new INPUT or raises the existing
% singleton*. %
% H = INPUT returns the handle to a new INPUT or the handle to
% the existing singleton*. %
% INPUT('Property','Value',...) creates a new INPUT using the % given property value pairs. Unrecognized properties are passed via
% varargin to Input_OpeningFcn. This calling syntax produces a
% warning when there is an existing singleton*. %
% INPUT('CALLBACK') and INPUT('CALLBACK',hObject,...) call the
% local function named CALLBACK in INPUT.M with the given input
% arguments. %
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
(65)
% instance to run (singleton)". %
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Input % Last Modified by GUIDE v2.5 29-Jul-2015 20:43:54
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Input_OpeningFcn, ...
'gui_OutputFcn', @Input_OutputFcn, ...
'gui_LayoutFcn', [], ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Input is made visible.
function Input_OpeningFcn(hObject, ~, handles, varargin)
% This function has no output args, see OutputFcn. % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA) % varargin unrecognized PropertyName/PropertyValue pairs from the
% command line (see VARARGIN)
clc;
% Choose default command line output for Input
handles.output = hObject; axes(handles.Logo1)
imshow('Icons\logo.png') axes(handles.axeGreyTraining) imshow('Icons\whos.jpg')
axes(handles.axeEigenfaceTraining) imshow('Icons\whos.jpg')
axes(handles.axFotoTesting) imshow('Icons\whos.jpg') axes(handles.axFotoHasil) imshow('Icons\whos.jpg')
% Icon button zoom in confusion matriks
(66)
icon=imread('Icons\figure.jpg');
set(handles.BtnFigureTable,'CData',icon);
% Icon button zoom in
set(handles.btnZoomIn,'Visible','off');
icon=imread('Icons\zoom_in.jpg');
set(handles.btnZoomIn,'CData',icon);
% Icon button zoom out
set(handles.btnZoomOut,'Visible','off');
icon=imread('Icons\zoom_out.jpg');
set(handles.btnZoomOut,'CData',icon);
% Icon button hand
set(handles.btnHand,'Visible','off');
icon=imread('Icons\hand.jpg');
set(handles.btnHand,'CData',icon);
% Icon button figure axes grafik hasil uji
set(handles.btnFigAxGrafikUji,'Visible','off');
icon=imread('Icons\figure.jpg');
set(handles.btnFigAxGrafikUji,'CData',icon);
% Axes grafik hasil uji
set(handles.axGrafikUji,'Visible','off');
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Input wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Input_OutputFcn(~, ~, handles)
% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes during object creation, after setting all properties.
function Logo1_CreateFcn(~, ~, ~) %#ok<DEFNU>
% hObject handle to Logo1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
(67)
% Hint: place code in OpeningFcn to populate Logo1
% --- Executes on button press in btnDataTraining.
function btnDataTraining_Callback(hObject, ~, handles) %#ok<DEFNU>
% hObject handle to btnDataTraining (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
clc;
try
set(handles.tblConMatrik,'Visible','off'); set(handles.txtAkurasi,'Visible','off'); set(handles.txtPersen,'Visible','off'); set(handles.BtnFigureTable,'Visible','off'); set(handles.btnSave,'Enable','inactive');
set(handles.BtnFigureTable,'Enable','inactive'); warning('off'); %#ok<WNOFF>
handles.folder= uigetdir;
if handles.folder ~= 0
jmlOrang=str2double(get(handles.etJumlahOrang, 'String'));
jmlFoto=str2double(get(handles.etJumlahFoto, 'String'));
jmlPC=str2double(get(handles.edJumlahPC, 'String'));
handles.jmlOrang=jmlOrang; handles.jmlFoto=jmlFoto;
if get(handles.popFormat,'Value') == 1
handles.format='.jpg';
elseif get(handles.popFormat,'Value') == 2
handles.format='.bmp';
else
handles.format='.jpeg';
end
% Mengambil nama file, menghilangkan angka dan ekstensi
files =
dir(fullfile(strcat(handles.folder,'\*',handles.format)));
namaFile=cell(1,jmlOrang); namaSemua=cell(1,jmlOrang);
for i=1:jmlFoto*jmlOrang nama=files(i).name;
nama=regexprep(nama,strcat('[12345678910]+',handles.format),''); namaSemua{i}=nama;
if mod(i,jmlFoto)==0 namaFile{i}=nama; end
end
(68)
handles.nama=namaFile;
% Pengambilan file dan memulai proses eigenface
chkBox=get(handles.chkBoxGrey,'Value');
for i=1:jmlOrang S=[];
for j=1:jmlFoto
str=strcat(handles.folder,'\',char(handles.nama(i)),int2str(j),han
dles.format);
gambar=imread(str);
if chkBox==0
gambar=rgb2gray(gambar); % Berarti foto yang
digunakan
% adalah foto berwarna
else
% gambar=rgb2gray(gambar);
end
axes(handles.axeGreyTraining); %#ok<LAXES>
imshow(gambar); % Gambar grey untuk axeGreyTraining
% pause(0.1);
[irow,icol]=size(gambar); a=gambar';
temp=reshape(a,irow*icol,1); S=[S temp]; %#ok<AGROW>
set(handles.txtDimensiData,'String',['[m , n] =
[',num2str(irow),' , ',num2str(icol),'] => Size: ', num2str(irow*icol)]); end handles.S=S;
% Proses eigenface
[hasilEig,eigPic]=eigface(S,irow,icol);
hasilSemuaEigFace{i}=hasilEig; %#ok<AGROW> % Menampung seluruh hasil eigenface
% ke dalam cell
% Foto eigenface untuk axeEigenfaceTraining
axes(handles.axeEigenfaceTraining); %#ok<LAXES>
imshow(eigPic); end
% Potong PC
[~,n]=size(hasilSemuaEigFace); hasilEigFace=[];
(69)
hasilEigFaceMtx=[]; for i=1:n
hasilEigFace{i}=hasilSemuaEigFace{i}(1:jmlPC,:);
%#ok<AGROW>
hasilEigFaceMtx=[hasilEigFaceMtx;hasilSemuaEigFace{i}(1:jmlPC,:)'] ; %#ok<AGROW>
end
handles.hasilSemuaEigFace=hasilSemuaEigFace;
% Pembentukan class training dan testing
jmlTesting=2;%str2double(get(handles.edJmlTesting,'String')); handles.jmlTesting=jmlTesting; class_semuaData=zeros(1,(jmlOrang*jmlFoto)); class_train=zeros(1,(jmlOrang*jmlFoto)-(jmlOrang*jmlTesting)); class_test=zeros(1,jmlOrang*jmlTesting); class=1; idxSemuaData=1; idxTrain=1; idxTest=1;
for i=1:jmlOrang for j=1:jmlFoto
class_semuaData(idxSemuaData)=class; idxSemuaData=idxSemuaData+1;
end
for j=1:jmlFoto-jmlTesting
class_train(idxTrain)=class; idxTrain=idxTrain+1;
end
for k=1:jmlTesting
class_test(idxTest)=class; idxTest=idxTest+1; end class=class+1; end handles.class_semuaData=class_semuaData'; class_train=class_train'; class_test=class_test'; handles.class_train=class_train; handles.class_test=class_test; handles.hasilEigFaceMtx=hasilEigFaceMtx;
model = NaiveBayes.fit(hasilEigFaceMtx,class_semuaData); handles.dataModelSemua=model.Params;
% assignin('base','class_semuaData',class_semuaData);
% assignin('base','hasilEigFaceMtx',hasilEigFaceMtx);
%
assignin('base','dataModelSemua',handles.dataModelSemua);
(70)
[testing,training,dataModel,ConMatrix,akurasi]=klafikasiAkurasi (hasilEigFace,jmlOrang,jmlFoto,class_train,class_test,jmlTesting); handles.testing=testing; handles.training=training; handles.conMax=ConMatrix; [~,n]=size(dataModel); dataModel{n+1}=handles.dataModelSemua; handles.model=dataModel;
% assignin('base','dataModel',dataModel);
% Menampilkan confius matriks
set(handles.tblConMatrik,'Data',ConMatrix);
set(handles.tblConMatrik,'ColumnWidth',{30});
set(handles.tblConMatrik,'Visible','on'); set(handles.BtnFigureTable,'Visible','on');
% Menampilkan hasil akurasi
set(handles.txtAkurasi,'String',num2str (akurasi));
set(handles.txtAkurasi,'Visible','on');
% Menampilkan logo persen
set(handles.txtPersen,'Visible','on'); % Mengaktifkan tombol Save dan figure tabel
set(handles.btnSave,'Enable','on');
set(handles.BtnFigureTable,'Enable','on');
% Set max PC untuk percobaan uji akurasi
set(handles.edPercobaanMax,'String',num2str(irow*icol));
end
catch err
uiwait(msgbox(strcat('ADA
ERROR:',err.message),'Peringatan','modal'));
end
guidata(hObject, handles);
%=========================================================END OF TRAINING
% --- Executes on button press in BtnFigureTable.
function BtnFigureTable_Callback(~, ~, handles) %#ok<DEFNU>
% hObject handle to BtnFigureTable (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of
BtnFigureTable
X=handles.conMax;
% Konversi matrix dari nomor ke cell array string
(71)
% Penentuan yang akan diberi warna dengan fotmat html
[m,n]=size(X);
for i=1:m for j=1:n if i==j
XX(i,j) = strcat(...
'<html><span style="color: #429808; font-weight: bold;font-size:18;">', ...
XX(i,j), ...
'</span></div></html>'); else
if X(i,j)> 0
XX(i,j) = strcat(...
'<html><span style="color: #FF0000; font-weight: bold;font-size:15;">', ...
XX(i,j), ...
'</span></html>'); end end end end
% Membuat tabel
f = figure;
h = uitable('Parent',f, 'Units','normalized', 'ColumnWidth',{30},
'Position',[0.05 0.05 0.9 0.9]);
% Menset data tabel
set(h, 'Data',XX)
% --- Executes on button press in btnSave.
function btnSave_Callback(~, ~, handles) %#ok<DEFNU>
% hObject handle to btnSave (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[namaFile,alamatFile] = uiputfile({'*.xls';'*.xlsx'},'Simpan',...
'Data Simpan\');
if isequal(namaFile,0) || isequal(alamatFile,0)
msgbox('Proses simpan telah Anda batalkan.','Peringatan');
else
alamatNamaFile=fullfile(alamatFile,namaFile); [~,nModel]=size(handles.model);
for i=1:nModel
[m,n]=size(handles.model{i}); ditulisTemp=[];
ditulis=[]; for j=1:m for k=1:n
ditulisTemp=[ditulisTemp handles.model{i}{j,k}];
(72)
end
ditulis=[ditulis;ditulisTemp]; %#ok<AGROW>
ditulisTemp=[]; end
% Menulis di excel
% excel hanya bs menyimpan maksimal 255 column (PC),
% maka data 'ditulis' ditranspose
xlswrite(alamatNamaFile,ditulis',i); end
% Merubah nama sheet di file excel simpanan
e = actxserver('Excel.Application'); % Mengaktifkan Activex
server
ewb = e.Workbooks.Open(alamatNamaFile); % Membuka file
for i=1:nModel
if i ~= nModel
namaSheet=strcat('Params-',int2str(i)); % Pembentukan
nama sheet
ewb.Worksheets.Item(i).Name = namaSheet; % Mengganti
nama sheet
else
namaSheet='Params-ALL'; % Pembentukan nama sheet
ewb.Worksheets.Item(i).Name = namaSheet; % Mengganti
nama sheet
end
end
ewb.Save % Menyimpan file kembali
ewb.Close(false) e.Quit
e.delete
% Keterangan selesai menyimpan
uiwait(msgbox('Proses simpan telah berhasil
dilakukan.','Peringatan','modal'));
end
% --- Executes on button press in btnProsesPercobaan.
function btnProsesPercobaan_Callback(hObject, eventdata, handles)
%#ok<INUSL,DEFNU>
% hObject handle to btnProsesPercobaan (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
clc;
set(handles.axGrafikUji,'Visible','off');
set(handles.btnFigAxGrafikUji,'Visible','off'); set(handles.btnZoomIn,'Visible','off');
set(handles.btnZoomOut,'Visible','off'); set(handles.btnHand,'Visible','off');
try
minPC=str2double(get(handles.edPercobaanMin, 'String'));
maxPC=str2double(get(handles.edPercobaanMax, 'String'));
rangeInput=str2double(get(handles.edPercobaanRange,
'String'));
jmlOrang=handles.jmlOrang; jmlFoto=handles.jmlFoto;
(73)
hasilSemuaEigFace=handles.hasilSemuaEigFace; jmlTesting=handles.jmlTesting; class_train=handles.class_train; class_test=handles.class_test; % assignin('base','hasilSemuaEigFace',hasilSemuaEigFace); batasUji=maxPC-minPC; rangePC=int16(batasUji/rangeInput); pcUji=0; pcUjiTemp2=0; pcUjiTemp1=minPC+rangeInput; pcUjiTemp2=pcUjiTemp2+pcUjiTemp1; for i=1:rangePC
if pcUjiTemp2 <= maxPC
pcUji(i,1)=pcUjiTemp2; %#ok<AGROW>
pcUjiTemp2=pcUjiTemp2+rangeInput; end end [m,~]=size(pcUji); [~,n]=size(hasilSemuaEigFace); progresTemp=100/m; progres=0;
set(handles.txtProgres,'Visible','on');
set(handles.txtPersenProgres,'Visible','on');
set(handles.txtProgres,'String',num2str(progres));
for i=1:m
% Potong PC
hasilEigFace=[]; for j=1:n
hasilEigFace{j}=hasilSemuaEigFace{j}(1:pcUji(i,1),:); %#ok<AGROW> end [~,~,~,ConMatrix,akurasi]=klafikasiAkurasi (hasilEigFace,jmlOrang,jmlFoto,class_train,class_test,jmlTesting); progres=progres+progresTemp;
set(handles.txtProgres,'String',num2str(int8(progres)));
pause(0.1);
ConMatrixUji{i,1}=ConMatrix; %#ok<AGROW>
akurasiUji(i,1)=akurasi; %#ok<AGROW>
end
assignin('base','ConMatrixUji',ConMatrixUji);
hasilUji=[pcUji,akurasiUji]; handles.hasilUji=hasilUji;
set(handles.txtProgres,'Visible','off');
set(handles.txtPersenProgres,'Visible','off'); assignin('base','hasilUji',hasilUji);
% Tampilkan grafik di axes
axes(handles.axGrafikUji); plot(pcUji,akurasiUji,'-s',...
(1)
gambar=imread(alamatNamaFile);
if chkBox==0
gambar=rgb2gray(gambar); % Berarti foto yang digunakan
% adalah foto berwarna
else
% gambar=rgb2gray(gambar);
end
[irow,icol]=size(gambar); a=gambar';
temp=reshape(a,irow*icol,1);
S=[temp,handles.S];
[hasilEig,~]=eigface(S,irow,icol);
model = NaiveBayes.fit(trainingSemua,class_train); class_predictTest =
model.predict(hasilEig(1:jmlPC,1)');
fotoTest=strcat(handles.folder,'\',char(handles.nama(class_predict Test)),int2str(1),handles.format);
axes(handles.axFotoHasil) imshow(fotoTest)
set(handles.edNmClass,'String',handles.nama{class_predictTest});
set(handles.txtTandaBenar,'String','X','ForegroundColor','r'); end
else
uiwait(msgbox('ADA ERROR: Anda tidak mengambil file dari folder "DataTesting"','Peringatan','modal'));
end end catch err
uiwait(msgbox(strcat('ADA
ERROR:',err.message),'Peringatan','modal')); end
function
[testing,training,dataModel,ConMatrix,akurasi]=klafikasiAkurasi (hasilEigFace,jmlOrang,jmlFoto,class_train,class_test,jmlTesting)
hasilEigFaceTemp=hasilEigFace;
testingSemuaOrang=[]; trainingSemuaOrang=[];
(2)
dataModel=[]; ConMatrix=0; idx1=1; idx2=2;
for i=1:jmlFoto/jmlTesting for j=1:jmlOrang
testing=hasilEigFaceTemp{j}(:,idx1:idx2); trainingTemp=hasilEigFaceTemp(j);
trainingTemp{:}(:,idx1:idx2)=[]; ttaining=trainingTemp{:};
testingSemuaOrang=[testingSemuaOrang;testing'];
%#ok<AGROW>
trainingSemuaOrang=[trainingSemuaOrang;ttaining'];
%#ok<AGROW>
end
% Perhitungan bayesian
[ ConMatrixTemp,model ] = Bayes(
class_train,class_test,trainingSemuaOrang,testingSemuaOrang );
testing=testingSemuaOrang; training=trainingSemuaOrang; idx1=idx1+2;
idx2=idx2+2;
testingSemuaOrang=[]; trainingSemuaOrang=[];
ConMatrix=ConMatrix+ConMatrixTemp;
% Data model
dataModel{i}=model.Params; %#ok<AGROW>
end
% Perhitungan akurasi
akurasi=sum(diag(ConMatrix))/sum(ConMatrix(:)); akurasi=akurasi*100;
% --- Executes on button press in btnZoomIn.
function btnZoomIn_Callback(hObject, eventdata, handles)
%#ok<INUSL,DEFNU>
% hObject handle to btnZoomIn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
hZoomIn=zoom;
hZoomIn.Enable='on'; hZoomIn.Direction='in';
setAllowAxesZoom(hZoomIn,handles.axGrafikUji,1);
% --- Executes on button press in btnZoomOut.
function btnZoomOut_Callback(hObject, eventdata, handles)
%#ok<INUSL,DEFNU>
% hObject handle to btnZoomOut (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
(3)
% handles structure with handles and user data (see GUIDATA)
hZoomIn=zoom;
hZoomIn.Enable='on'; hZoomIn.Direction='out';
setAllowAxesZoom(hZoomIn,handles.axGrafikUji,1);
% --- Executes on button press in btnHand.
function btnHand_Callback(hObject, eventdata, handles)
%#ok<INUSL,DEFNU>
% hObject handle to btnHand (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
hPan=pan;
hPan.Enable = 'on';
setAllowAxesPan(hPan,handles.axGrafikUji,1);
function edJumlahPC_Callback(~, ~, ~) %#ok<DEFNU> % hObject handle to edJumlahPC (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edJumlahPC as text
% str2double(get(hObject,'String')) returns contents of edJumlahPC as a double
% --- Executes during object creation, after setting all properties.
function edJumlahPC_CreateFcn(hObject, ~, ~) %#ok<DEFNU> % hObject handle to edJumlahPC (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function etJumlahFoto_Callback(~, ~, ~) %#ok<DEFNU> % hObject handle to etJumlahFoto (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of etJumlahFoto as text
% str2double(get(hObject,'String')) returns contents of etJumlahFoto as a double
(4)
% --- Executes during object creation, after setting all properties.
function etJumlahFoto_CreateFcn(hObject, ~, ~) %#ok<DEFNU> % hObject handle to etJumlahFoto (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function etJumlahOrang_Callback(~, ~, ~) %#ok<DEFNU> % hObject handle to etJumlahOrang (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of etJumlahOrang as text
% str2double(get(hObject,'String')) returns contents of etJumlahOrang as a double
% --- Executes during object creation, after setting all properties.
function etJumlahOrang_CreateFcn(hObject, ~, ~) %#ok<DEFNU>
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on selection change in popFormat.
function popFormat_Callback(~, ~, ~) %#ok<DEFNU>
% --- Executes during object creation, after setting all properties.
function popFormat_CreateFcn(hObject, ~, ~) %#ok<DEFNU>
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
(5)
function edJmlTesting_Callback(~, ~, ~) %#ok<DEFNU>
% --- Executes during object creation, after setting all properties.
function edJmlTesting_CreateFcn(hObject, ~, ~) %#ok<DEFNU>
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in chkBoxGrey.
function chkBoxGrey_Callback(~, ~, ~) %#ok<DEFNU>
function edPercobaanMin_Callback(hObject, eventdata, handles) function edPercobaanMin_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edPercobaanMax_Callback(hObject, eventdata, handles) function edPercobaanMax_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edPercobaanRange_Callback(hObject, eventdata, handles) function edPercobaanRange_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edUjiJmlPC_Callback(hObject, eventdata, handles) function edUjiJmlPC_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edUjiAkurasi_Callback(hObject, eventdata, handles) function edUjiAkurasi_CreateFcn(hObject, eventdata, handles)
(6)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function edNamaFile_Callback(hObject, eventdata, handles) function edNamaFile_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function edNmFileTest_Callback(hObject, eventdata, handles) function edNmFileTest_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
function edNmClass_Callback(hObject, eventdata, handles) function edNmClass_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edIdxClass_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in chkBoxGreyTest.