41
2. Implementasi rata-rata vektor vertikal
Dibawah ini merupakan implementasi untuk mendapatkan ciri rata-rata vektor vertikal:
Membagi dalam vektor veertikal obyek=1;
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
for i=1:n
for k=1:piksel1
if hsli,k==obyek
sum1=sum1+1; end
end end
for i=1:n
for k=piksel1+1:piksel2
if hsli,k==obyek
sum2=sum2+1; end
end end
for i=1:n
for k=piksel2+1:piksel3
if hsli,k==obyek
sum3=sum3+1; end
end end
for i=1:n
for k=piksel3+1:piksel4
if hsli,k==obyek
sum4=sum4+1; end
end end
for i=1:n
for k=piksel4+11:piksel5
if hsli,k==obyek
sum5=sum5+1; end
end end
for i=1:n
for k=piksel5+1:piksel6
if hsli,k==obyek
sum6=sum6+1; end
end end
for i=1:n
42
for k=piksel6+1:piksel7
if hsli,k==obyek
sum7=sum7+1; end
end end
for i=1:n
for k=piksel7+1:piksel8
if hsli,k==obyek
sum8=sum8+1; end
end h1 =sum1pembagi;
h2 =sum2pembagi; h3 =sum3pembagi;
h4 =sum4pembagi; h5 =sum5pembagi;
h6 =sum6pembagi; h7 =sum7pembagi;h8 =sum8pembagi;
end
Untuk menyimpan nilai setiap vektor vertikal menggunakan variabel h1 sampai h8. Nilai vektor didapat dari jumlah piksel yang
bernilai 1 di setiap vektor di bagi pembagi, yaitu 5000 didapat dari ukuran setiap vektor 25 x 200 piksel.
Gambar 4. 7 Proses membagi citra kedalam vektor vertikal
43
Hasil rata-rata dari setiap vektor vertikal disimpan dalam matriks yang berukuran 1x8 seperti dibawah ini:
Gambar 4. 8 Tabel Ekstrak Ciri Vektor Vertikal
4.1.4 Implementasi Ekstraksi Ciri Warna dan Rata-rata Vektor
Dibawah ini merupakan implementasi untuk mendapatkan ciri warna dan rata-rata vektor horizontal atau vertikal:
Membaca Citra citra=imreadgambar;
Memisahkan RGB dan mencari rata2 RGB serta Kadar RGB meanR=0;
meanG=0; meanB=0;
meanRGB=0; dR=citra:,:,1;
dG=citra:,:,2; dB=citra:,:,3;
meanR=meanmeandR; meanG=meanmeandG;
meanB=meanmeandB; meanRGB=meanR+meanG+meanB3;
Mengubah Citra RGB Menjadi Grayscale grey= rgb2graycitra;
imshow grey; Melakukan deteksi tepi
hsl= edgegrey, Canny
; Membagi dalam vektor
obyek=1; sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0;
sum8=0;
44
for i=1:piksel1
for k=1:m
if hsli,k==obyek
sum1=sum1+1; end
end end
for i=piksel1+1:piksel2
for k=1:m
if hsli,k==obyek
sum2=sum2+1; end
end end
for i=piksel2+1:piksel3
for k=1:m
if hsli,k==obyek
sum3=sum3+1; end
end end
for i=piksel3+1:piksel4
for k=1:m
if hsli,k==obyek
sum4=sum4+1; end
end end
for i=piksel4+11:piksel5
for k=1:m
if hsli,k==obyek
sum5=sum5+1; end
end end
for i=piksel5+1:piksel6
for k=1:m
if hsli,k==obyek
sum6=sum6+1; end
end end
for i=piksel6+1:piksel7
for k=1:m
if hsli,k==obyek
sum7=sum7+1; end
end end
for i=piksel7+1:piksel8
for k=1:m
if hsli,k==obyek
sum8=sum8+1; end
end for
i=1:n
45
for k=1:piksel1
if hsli,k==obyek
sum1=sum1+1; end
end end
for i=1:n
for k=piksel1+1:piksel2
if hsli,k==obyek
sum2=sum2+1; end
end end
for i=1:n
for k=piksel2+1:piksel3
if hsli,k==obyek
sum3=sum3+1; end
end end
for i=1:n
for k=piksel3+1:piksel4
if hsli,k==obyek
sum4=sum4+1; end
end end
for i=1:n
for k=piksel4+11:piksel5
if hsli,k==obyek
sum5=sum5+1; end
end end
for i=1:n
for k=piksel5+1:piksel6
if hsli,k==obyek
sum6=sum6+1; end
end end
for i=1:n
for k=piksel6+1:piksel7
if hsli,k==obyek
sum7=sum7+1; end
end end
for i=1:n
for k=piksel7+1:piksel8
if hsli,k==obyek
sum8=sum8+1; end
end h1 =sum1pembagi;
h2 =sum2pembagi;
46
h3 =sum3pembagi; h4 =sum4pembagi;
h5 =sum5pembagi; h6 =sum6pembagi;
h7 =sum7pembagi; h8 =sum8pembagi;
end
Hasil dari setiap ekstraksi ciri warna dan rata-rata vektor horizontal atau vertikal disimpan dalam vektor yang berukuran 1x12, seperti dibawah ini:
Gambar 4. 9 Tabel Ekstrak Ciri Warna Vektor Horizontal
Gambar 4. 10 Tabel Ekstrak Ciri Warna Vektor Vertikal
Dari kolom ke-1 sampai kolom ke-12 merupakan nilai setiap ciri warna dan rata-rata vektor, dan kolom terakhir atau ke-13 menandakan
kelas
47
4.1.5 Implementasi Klasifikasi menggunakan Naive Bayes
Dibawah ini merupakan implementasi untuk proses klasifikasi menggunakan algoritma Naive Bayes:
load data.mat
, data
; load
data.mat ,
lv_size ;
Data dimasukkan di dalam cell Cell menunjukkan class
nCitraPerClass=str2doublegethandles.edJmlCitraPerKelas, St
ring ;
kelas=str2doublegethandles.edJmlDaerah, String
; jmlData=nCitraPerClasskelas;
kfold=handles.kfold; nTest=floornCitraPerClasskfold
[~,nData]=sizedata; dataTemp=[];
matriks kosong class=1;
for i=1:jmlData
looping untuk memisahkan data per kelas dalam masing2 cell
if datai,nData==class
dataTemp=[dataTemp;datai,:]; end
if modi,nCitraPerClass == 0
dataCell{class}=dataTemp; class=class+1;
dataTemp=[]; end end
Data dalam setiap kelas dimasukan kedalam cell. Jumlah cell sesuai dengan jumlah kelas atau daerah yaitu terdapat 10 cell. Pembagian
citra dalam setiap cell bertujuan untuk memudahkan membagi setiap 10 citra didalam satu kelas. Dibawah ini merupakan data citra yang telah
dimasukan kedalam setiap cell:
Gambar 4. 11 Data di dalam cell
48
idx1=1; batasan untuk ambil data testing
idx2=nTest; batasan untuk ambil data testing sesuai dgn k-
fold nBenar=0;
menampung jumlah benar utk akurasi nSalah=0;
menampung jumlah salah utk akurasi for
z=1:nCitraPerClassnTest looping trainng testing
Mencari std dan mean for
i=1:class dataCell{i}=zscoredataCell{i}:,1:12;
dataTest{i}=dataCell{i}idx1:idx2,:; mengambil
data testing trainingTemp=dataCelli;
mengambil data dari cell utk training semuanya
trainingTemp{:}idx1:idx2,:=[]; ttaining=trainingTemp{:};
data dr trainingtemp dimasukan kdalam training
rerataTraini,1:nData-1=meanttaining:,1:nData- 1;
rerataTraini,nData=i; stdTraini,1:nData-1=stdttaining:,1:nData-1;
stdTraini,nData=i; end
Data citra dari hasil ekstraksi ciri yang telah dimasukan kedalam masing-masing cell digunakan untuk menentukan pengambilan data
testing sesuai dengan k-fold. Data citra dari setiap cell juga digunakan sebagai data training dan digunakan untuk perhitungan mean dan stándar
deviasi, seperti dibawah ini:
Gambar 4. 12 Tabel Mean Ekstrak Ciri Warna Vektor Horizontal
49
Gambar 4. 13 Tabel Stándar Deviasi Ekstrak Ciri Warna Vektor Horizontal
Nilai diatas merupakan nilai mean dan stándar deviasi dari setiap atribut dari ekstraksi ciri warna dan rata-rata vektor horizontal atau
vertikal. Setiap satu baris nya merupakan nilai mean dan stándar deviasi dari satu kelas.
naïve Bayes for
i=1:class for
j=1:nTest rerataTesting=dataTest{i}j,1:nData-1;
stdTraining=stdTrain:,1:nData-1; rerataTraining=rerataTrain:,1:nData-1;
[ idxLabel,hasilProbabilitas ] = bayesKustdTraining,rerataTraining,rerataTesting
if idxLabel == i
jika idxlabel hsil prob sama dengan kelas yg sdang di proses , mka nilai benar akan dijumlahkan
nBenar=nBenar+1; end
end end
proses menentukan index dta testing idx1=idx1+nTest;
idx2=idx2+nTest; end
50
Implementasi algoritma naïve Bayes [m,n]=sizestdTraining;
bayesian=zerossizestdTraining1,1:end; for
i=1:m for
j=1:n bays1=1sqrt2pistdTrainingi,j;
bays2=exp-rerataTesting1,j - rerataTrainingi,j22stdTrainingi,j2;
bayesiani,j=bays1bays2; end
end menghitung likelihood
[idxLabel,hasilProbabilitas]=cariProbabilitasbayesian; function
[idxLabel,hasilProbabilitas]=cariProbabilitasbayesian [mBayesian,nBayesian]=sizebayesian;
likehood=zerosmBayesian,1; likehoodTempt=1;
for k=1:mBayesian
for l=1:nBayesian
if bayesiank,l ~= 0 ~isnanbayesiank,l
membatasi untuk supaya nilai 0 dan nan likehoodTempt=likehoodTemptbayesiank,l;
end end
likehoodk=likehoodTempt; likehoodTempt=1;
end [mLikehood,~]=sizelikehood;
probabilitas=zerossizelikehood; for
k=1:mLikehood probabilitask=likehoodksumlikehood;
end [hasilProbabilitas,idxLabel]=maxprobabilitas;
end end
Data testing diambil dari setiap kelas sesuai dengan pembagian k-fold seperti pada gambar dibawah ini:
Gambar 4. 14 Data Testing Dalam Setiap Cell
51
Gambar 4. 15 Data Testing Dalam Satu Kelas
Data testing dimasukan dalam proses perhitungan mengunakan Naive Bayes. Kemudian di cocokan dengan data training, untuk
mengetahui kelas dari citra kain data testing.
Gambar 4. 16 Hasil Probabilitas
Gambar 4. 17 Hasil IdxLabel
52
Idxlabel merupakan label kelas pada setiap data testing. Jika Idxlabel dan hasil probabilitas sama dengan kelas yang sedang diproses,
maka hasil benar. Seperti pada matriks diatas, idxlabel bernilai 1, brarti benar berada pada kelas 1.
4.1.6 Implementasi Akurasi
Dibawah ini merupakan implementasi dari proses akurasi:
akurasi=nBenarjmlData100; mencari nilai akurasi
sethandles.txtAcc, String
,num2strakurasi;
Hasil akurasi klasifikasi citra menggunakan Naive Bayes dengan 5-fold, dan ekstraksi ciri warna dan vektor horizontal adalah sebagai berikut:
Gambar 4. 18 Hasil Akurasi menggunakan 5-fold 4.1.7 Implementasi Klasifikasi Dari Data User
Dibawah ini merupakan implementasi klasifikasi menggunakan data masukan dari user:
piksel=25; nCitraPerClass=str2doublegethandles.edJmlCitraPerKelas,
St ring
; [namaCitra,
asalCitra] =
uigetfile{ .jpg
}, Pilih
Citra ;
[~,nDt]=sizedataTest; dataTest:,nDt+1=0;
[~,nData]=sizedata;
53
dataTemp=[]; class=1;
for i=1:lv_size:,1
if datai,nData==class
dataTemp=[dataTemp;datai,:]; end
if modi,nCitraPerClass == 0
dataCell{class}=dataTemp; class=class+1;
dataTemp=[]; end
end class=class-1;
rerataTrain=zerosclass,class; stdTrain=zerosclass,class;
for i=1:class
rerataTraini,1:nData-1=meandataCell{i}:,1:nData- 1;
rerataTraini,nData=i; stdTraini,1:nData-1=stddataCell{i}:,1:nData-1;
stdTraini,nData=i; end
testing=dataTest:,1:nDt; stdTraining=stdTrain:,1:nData-1;
rerataTraining=rerataTrain:,1:nData-1; [idxLabel,hasilProbabilitas]=
bayesKustdTraining,rerataTraining,testing; sethandles.txtKemiripan,
String ,num2strhasilProbabilitas
100;
Hasil dari implementasi klasifikasi dengan data citra dari user adalah seperti dibawah ini:
Gambar 4. 19 Hasil Probabilitas Data Dari User
54
Gambar 4. 20 Hasil Klasifikasi Dari Data User
Dari hasil diatas terlihat bahwa data masukan dari user di cocokkan dengan data citra yang telah diklasifikasi. Dan hasil dapat diketahui pula
hasil probabilitas tertingginya dalam bentuk persen. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
4.1.8 Implementasi Antar Muka
Dibawah ini merupakan Implementasi tampilan halaman klasifikasi kain tradisional nusantara dengan menggunakan algoritma Naive Bayes
Classifier:
Gambar 4. 21 Implementasi Antar Muka Klasifikasi Kain Tradisional Nusantara Dengan Menggunakan Naive Bayes Classifer
Pada saat proses ekstraksi ciri telah selesai, maka akan muncul peringatan seperti pada gambar dibawah ini:
Gambar 4. 22 Peringatan Ekstraksi Ciri Telah Selesai
56
BAB V PENGUJIAN DAN ANALISA SISTEM
Pada bab ini akan dibahas mengenai hasil dari setiap proses ekstrak ciri, klasifikasi dan akurasi dari 2 data citra kain yang berbeda serta menganalisa
keluaran dari masing-masing proses.
5.1 Data Ada dua jenis data citra yang digunakan dalam klasifikasi ini yaitu: