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
2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Dr. Cyprianus Kuntoro Adi, SJ., M.A., M.Sc. Tanggal: Juli 2015
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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,
(Paulina Heruningsih Prima Rosa, S.Si., M.Sc)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
HALAMAN PERSEMBAHAN
“One way to forget about pain is to do something you will be in
completely…So Computer Games”-- Danil Ishutin (Dendi)
“Real life just like dota 2 because no support no win”-- PTZ
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Ega Bima Putranto
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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,
Ega Bima Putranto
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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,
Ega Bima Putranto
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
2.4 Confusion Matrix ...................................................................... 20
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
LAMPIRAN ........................................................................................ 46
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 Gambar 4.8 User Interface ........................................................................ 37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
Daftar Tabel
Tabel 2.1 Hasil eigen value dan eigen vektor ........................................... 13 Tabel 2.2 Tabel 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 Tabel 4.1 Hasil Percobaan Akurasi ........................................................... 40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
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 cross validation. (Putri, 2012)
Penelitian ini ingin membantu penerapkan metode eigenface untuk ekstrak
ciri wajah dan naïve bayesian sebagai klasifikasinya. Diharapkan penelitian ini
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
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
dilakukan diluar sistem.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
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 InputDeteksi Wajah
Ektrak CiriPengenalan
WajahVertifikasi
Bersamaan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
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 :
|𝐴 − 1𝜆| = 0 (2.2)
3. Setelah nilai eigenvalue (𝜆) ditemukan langkah selanjutnya adalah mencari
eigenvektor dengan menggunakan rumus :
𝐴 − 𝜆𝐼 . 𝑥 = 0 (2.3)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
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
𝑁2 × 1 berdasarkan matriks dari citra wajah yang berukuran NxN.
3. Menghitung rata-rata vektor citra wajah
𝑌 = 1
𝑀∑ 𝑟𝑖
𝑀𝑖=1 (2.4)
4. Melakukan normalisasi ukuran citra dengan melakukan pengurangan
vektor citra wajah dengan nilai rata-rata tersebut.
𝑄 = 𝑟𝑖 − 𝑌 (2.5)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
5. Menghitung matriks kovarian
𝐶 =1
𝑀∑ 𝑄𝑛𝑄𝑛
𝑇 = 𝐴𝐴𝑇(𝑚𝑎𝑡𝑟𝑖𝑘𝑠𝑁2𝑥𝑁2)𝑀𝑛=1 (2.6)
Dimana
𝐴 = [𝑄1𝑄2𝑄3 … . 𝑄𝑀](𝑚𝑎𝑡𝑟𝑖𝑘𝑠 𝑁2𝑥 𝑀) (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.
Image1 = [1 23 4
][
1234
]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
Image1 = [3 68 5
][
3685
]
Image1 = [9 84 5
][
9845
]
2. Lalu ditransformasikan ke matriks 𝑁2 × 𝑖𝑚𝑎𝑔𝑒
S = [
1 3 92 6 834
85
45
]
3. Mencari rata-rata vector
𝑌1
1 + 3 + 9
3=
13
3= 4.333333333
𝑌2
2 + 6 + 8
3=
16
3= 5.333333333
𝑌3
3 + 8 + 4
3=
15
3= 5
𝑌4
4 + 5 + 5
3=
14
3= 4.666666667
Sehingga didapatkan :
𝑌 = |
4.333333333 5.333333333
54.666666667
|
4. Mengurangi vector citra wajah dengan nilai Y
𝑄1 [
1234
] − |
4.333333333 5.333333333
54.666666667
| = [
−3.333333333−3.333333333
−2−0.666666667
]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
𝑄2 [
3685
] − |
4.333333333 5.333333333
54.666666667
| = [
−1.3333333330.666666667
30.333333333
]
𝑄3 [
9845
] − |
4.333333333 5.333333333
54.666666667
| = [
4.6666666672.666666667
−10.333333333
]
5. Selanjutnya, 𝑄1, 𝑄2, 𝑄3 digabungkan menjadi satu matriks A
𝐴 = [
−3.333333333−3.333333333
−2−0.666666667
−1.3333333330.666666667
30.333333333
4.6666666672.666666667
−10.333333333
]
6. Menghitung kovarian menggunakan rumus 𝐴𝑇𝐴
𝐶 = [−3.333333333−1.3333333334.666666667
−3.3333333330.6666666672.666666667
−23
−1
−0.6666666670.3333333330.333333333
] ×
[
−3.333333333−3.333333333
−2−0.666666667
−1.3333333330.666666667
30.333333333
4.6666666672.666666667
−10.333333333
]
𝐶 = [22.66666667
−4−22.66666667
−411.33333333
−7.333333333
−22.66666667−7.333333333
30]
7. Menghitung eigenvalue dan eigenvector dari korvarian matriks 𝐶. (Untuk
mempermudahkan perhitungan maka angka dirubah)
𝐶 = [ 2−1−1
042
1−1 0
]
𝐷𝑒𝑡 [(2 − 𝜆)
−1−1
0(4 − 𝜆)
2
1−1−𝜆
] = 0
((2 − 𝜆) ∗ {(4 − 𝜆)(−𝜆) − (2)(−1)}) − (0 ∗ {(−1)(−𝜆) − (−1)(−1)}) + (1
∗ {(−1)(2) − (4 − 𝜆)(−1)}) = 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
(2 − 𝜆){−4𝜆 + 𝜆2 + 2} − 0 + (−𝜆 + 2) = 0
(2 − 𝜆){(𝜆2 − 4𝜆 + 2} + 1 = 0
(2 − 𝜆){(𝜆2 − 4𝜆 + 3} = 0
(2 − 𝜆)(𝜆 − 1)(𝜆 − 3)
𝜆1 = 2𝜆2 = 1 𝜆3 = 3
8. Eigenvalue 𝜆1, 𝜆2, 𝜆3 yang didapat dari matriks 𝐶 digunakan untuk
menghitung eigenvektor
Untuk 𝜆1 = 2
[(2 − 2)
−1−1
0(4 − 2)
2
1−1−2
] [
𝑥1
𝑥2
𝑥3
] = 0
[0
−1−1
022
1−1−2
] [
𝑥1
𝑥2
𝑥3
] = 0
Diperolehlah persamaan:
−𝑥1 + 2𝑥2 = 0
−𝑥1 + 2𝑥2 = 0
−𝑥1 + 2𝑥2 = 0
Langkah selanjutnya dilakukan proses eliminasi sehingga diperoleh,
[
𝑥1
𝑥2
𝑥3
] = [2𝑥2
𝑥2
0]
Eigenvektornya adalah
𝑥2 [210
]
Untuk 𝜆2 = 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
[(2 − 1)
−1−1
0(4 − 1)
2
1−1−1
] [
𝑥1
𝑥2
𝑥3
] = 0
[1
−1−1
032
1−1−1
] [
𝑥1
𝑥2
𝑥3
] = 0
Diperolehlah persamaan:
𝑥1 − 𝑥3 = 0
−𝑥1 + 3𝑥2−𝑥3 = 0
−𝑥1 + 2𝑥2−𝑥3 = 0
Langkah selanjutnya dilakukan proses eliminasi sehingga diperoleh,
[
𝑥1
𝑥2
𝑥3
] = [
−𝑥3
0𝑥3
]
Eigenvektornya adalah
𝑥3 [−101
]
Untuk 𝜆3 = 3
[(2 − 3)
−1−1
0(4 − 3)
2
1−1−3
] [
𝑥1
𝑥2
𝑥3
] = 0
[1
−1−1
032
1−1−1
] [
𝑥1
𝑥2
𝑥3
] = 0
Diperolehlah persamaan:
−𝑥1 = 𝑥3
−𝑥1 + 𝑥2−𝑥1 = 0
−𝑥1 + 2𝑥2−3𝑥1 = 0
Langkah selanjutnya dilakukan proses eliminasi sehingga diperoleh,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
[
𝑥1
𝑥2
𝑥3
] = [
𝑥1
2𝑥1
]
Eigenvektornya adalah
𝑥1 [121
]
9. Menghitung eigenvektor sebanyak M dari matriks𝐴.
𝑢𝑖 = 𝐴. 𝑥𝑖
𝑢1 = [
−3.333333333−3.333333333
−2−0.666666667
−1.3333333330.666666667
30.333333333
4.6666666672.666666667
−10.333333333
] × [210
] = [
−8−6−1−1
]
𝑢2 = [
−3.333333333−3.333333333
−2−0.666666667
−1.3333333330.666666667
30.333333333
4.6666666672.666666667
−10.333333333
] × [−101
] = [
8611
]
𝑢3 = [
−3.333333333−3.333333333
−2−0.666666667
−1.3333333330.666666667
30.333333333
4.6666666672.666666667
−10.333333333
] × [121
] = [
−1.33330.6667
30.3333
]
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
λ=2 -8
-6
-1
-1
λ=1 8
6
1
1
11. Memproyeksikan 𝑄𝑖kedalam eigenspace
𝑤1 =
[−1.3333 0.6667 3 0.3333] × [
−3.333333333−3.333333333
−2−0.666666667
] = −4.0002
[−1.3333 0.6667 3 0.3333] × [
−1.3333333330.666666667
30.333333333
] = 11.3333
[−1.3333 0.6667 3 0.3333] × [
4.6666666672.666666667
−10.333333333
] = −7.3331
𝑤2 =
[−8 −6 −1 −1] × [
−3.333333333−3.333333333
−2−0.666666667
] = 49.3333
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
[−8 −6 −1 −1] × [
−1.3333333330.666666667
30.333333333
] = 3.3333
[−8 −6 −1 −1] × [
4.6666666672.666666667
−10.333333333
] = −52.6667
𝑤3 =
[8 6 1 −1] × [
−3.333333333−3.333333333
−2−0.666666667
] = −49.3333
[8 6 1 −1] × [
−1.3333333330.666666667
30.333333333
] = −3.3333
[8 6 1 −1] × [
4.6666666672.666666667
−10.333333333
] = 52.6667
12. Memasukkan nilai 𝑊𝑖kedalam sebuah vector
𝛺 = [−4.000211.3333−7.3331
49.33333.3333
−52.6667
−49.3333−3.333352.6667
]
13. Langkah selanjutnya dari matriks omega ini di cari mean (µ) dan standar
deviasi (σ).
14. 𝛺 = [−4.000211.3333−7.3331
49.33333.3333
−52.6667
−49.3333−3.333352.6667
]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
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. ∏ 𝑃(𝑋𝑖|𝑌)𝑞𝑖=1 adalah probabilitas independen
kelas Y dari semua fitur dalam vektor X. Nilai P(X) selalu tetap sehingga dalam
perhitungan prediksi selanjutnya tinggal menghitung bagian
𝑃(𝑌) ∏ 𝑃(𝑋𝑖|𝑌)𝑞𝑖=1 dengan memilih yang terbesar sebagai kelas yagg dipilih
sebagai hasil prediksi. Sementara probabilitas independen ∏ 𝑃(𝑋𝑖|𝑌)𝑞𝑖=1 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 jy , peluang kelas bersyarat untuk atribut iX adalah
ij
ijix
ij
jii yYxXP2
2
2exp2
1
(2.14)
Parameter ij dapat diestimasi berdasarkan sampel mean iX x untuk seluruh
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
training record yang dimiliki kelas jy . Dengan cara sama, ij2 dapat diestimasi
dari sampel varian 2s training record tersebut.
2.3.2 Contoh Perhitungan Naive Bayesian
Terdapat data sebagai berikut:
Tabel 2.2 Tabel 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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
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=3.25,m,σ|Tidak) 0.73342325 0.289865
0.212593567
g(IPK=3.25,m,σ|Lulus) 0.680081055 0.985582
0.670275732
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
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%.
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = 𝑎+𝑑
𝑎+𝑏+𝑐+𝑑× 100% (2.14)
Contoh perhitungan akurasi dapat dicontohkan sebagai berikut:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
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
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = 22
36× 100 = 61%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
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 :
ProsesData Preprocessing Output Akurasi
Eigenface
Greyscale
Naivebayesian Data Model ConfusionmatrixCropping dan
Resize
Gambar 3.1 Diagram Block
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
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).
𝑎 = [1 32 4
] 𝑏 = [5 67 8
] 𝑐 = [7 65 7
] 𝑑 = [1 21 5
] 𝑒 = [6 26 4
] 𝑓 = [7 23 4
]
𝑔 = [1 21 6
] ℎ = [6 27 5
] 𝑖 = [1 28 4
] 𝑗 = [1 21 2
]
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
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=[1 ⋯ 10⋮ ⋱ ⋮
22500 ⋯ 225000] 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
mean dan varian. Data testing diolah menggunakan fungsi matlab juga yaitu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
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
secara keseluruhan. Rancangan user interface dapat digambarkan sebagai berikut:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
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
c) Hardisk : 2 TB
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
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.
Gambar 4.1 Data Awal I
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
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
Gambar 4.3 Cropping dan Resize
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
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
Gambar 4.5 Data II
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
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,
trainingsmuaorang untuk menyimpan data citra wajah training dan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
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
Gambar 4.6 Tabel Hasil Confusion Matrix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
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.
Nama file testing adalah menampilkan nama file citra yang diinputkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
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:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
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
. . .
. . .
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
. . .
. . .
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
61 20948 88
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
LAMPIRAN
Source Code
1. 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
% % Normlalisasi zscore
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
% 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
% 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 set(handles.BtnFigureTable,'Visible','off');
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
% 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
namaFile=namaFile(~cellfun('isempty',namaFile));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
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=[];
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
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);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
[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 XX = reshape(strtrim(cellstr(num2str(X(:)))), size(X));
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
% 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}];
%#ok<AGROW>
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
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;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
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',... 'LineWidth',2,...
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
'MarkerSize',2,... 'MarkerEdgeColor','auto',... 'MarkerFaceColor','auto'); xlim([min(pcUji)-50 max(pcUji)+50]); ylim([min(akurasiUji)-0.2 max(akurasiUji)+0.2]); xlabel('Principal Component'); ylabel('Akurasi'); % set(gca,'XColor',[0.4,0.4,0.4],'YColor',[0.4,0.4,0.4]);
[M,I]=max(hasilUji(:,2)); set(handles.edUjiJmlPC,'String',num2str(hasilUji(I,1))); set(handles.edUjiAkurasi,'String',num2str(M));
set(handles.axGrafikUji,'Visible','on'); set(handles.btnFigAxGrafikUji,'Visible','on'); set(handles.btnZoomIn,'Visible','on'); set(handles.btnZoomOut,'Visible','on'); set(handles.btnHand,'Visible','on'); catch err uiwait(msgbox(strcat('ADA
ERROR:',err.message),'Peringatan','modal')); end guidata(hObject, handles);
% --- Executes on button press in btnFigAxGrafikUji. function btnFigAxGrafikUji_Callback(hObject, eventdata, handles)
%#ok<INUSL,DEFNU> % hObject handle to btnFigAxGrafikUji (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA) % Membuat tabel
pcUji=handles.hasilUji(:,1); akurasiUji=handles.hasilUji(:,2); figure; plot(pcUji,akurasiUji,'-s',... 'LineWidth',2,... 'MarkerSize',2,... 'MarkerEdgeColor','auto',... 'MarkerFaceColor','auto'); xlim([min(pcUji)-50 max(pcUji)+50]); ylim([min(akurasiUji)-0.2 max(akurasiUji)+0.2]); title('\fontsize{14}\color{red}Grafik Hasil Uji Akurasi'); xlabel('Principal Component'); ylabel('Akurasi'); % set(gca,'XColor',[0.4,0.4,0.4],'YColor',[0.4,0.4,0.4]);
% --- Executes on button press in btnInputFoto. function btnInputFoto_Callback(hObject, eventdata, handles)
%#ok<INUSL,DEFNU> % hObject handle to btnInputFoto (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles structure with handles and user data (see GUIDATA)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
clc;
try axes(handles.axFotoTesting) imshow('Icons\whos.jpg') axes(handles.axFotoHasil) imshow('Icons\whos.jpg') set(handles.edNamaFile,'String',''); set(handles.edNmFileTest,'String',''); set(handles.edNmClass,'String',''); set(handles.txtTandaBenar,'String','?','ForegroundColor','k'); jmlPC=str2double(get(handles.edJumlahPC, 'String')); jmlFoto=str2double(get(handles.etJumlahFoto,'String')); chkBox=get(handles.chkBoxGreyTest,'Value');
[namaFoto, alamatFoto] = uigetfile({'*.jpg'}, 'Pilih foto
Anda');
if namaFoto ~=0 idx = strfind(alamatFoto, 'DataTesting'); if idx ~= 0 alamatNamaFile=fullfile(alamatFoto,namaFoto); set(handles.edNamaFile,'String',alamatNamaFile); set(handles.edNmFileTest,'String',namaFoto); axes(handles.axFotoTesting) imshow(alamatNamaFile) class_train=handles.class_train; testingSemua=handles.testing; trainingSemua=handles.training;
if str2double(namaFoto(:,1:end-4)) <=
handles.jmlOrang*handles.jmlTesting &&
str2double(namaFoto(:,1:end-4)) > 0
dataTesting=testingSemua(str2double(namaFoto(:,1:end-4)),:);
model = NaiveBayes.fit(trainingSemua,class_train); class_predictTest = model.predict(dataTesting);
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.edIdxClass,'String',class_predictTest);
feature('DefaultCharacterSet','UTF-8');
set(handles.txtTandaBenar,'String',char(hex2dec('2713')),'Foregrou
ndColor',[0 0.5 0]); else
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
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=[];
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
% 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
% --- 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
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)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
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. function chkBoxGreyTest_Callback(hObject, eventdata, handles)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI