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 : 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
79
Embed
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIrepository.usd.ac.id/420/2/115314059_full.pdfRomo Dr. Cyprianus Kuntoro Adi, SJ, MA, M.Sc. selaku dosen pembimbing, terima kasih atas bimbingan,
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
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
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
% 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
% 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
% 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)
% 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;
% 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:
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,
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
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'];
% 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)