• Tidak ada hasil yang ditemukan

BAB 4 IMPLEMENTASI PERANGKAT LUNAK

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 4 IMPLEMENTASI PERANGKAT LUNAK"

Copied!
9
0
0

Teks penuh

(1)

45

BAB 4

IMPLEMENTASI PERANGKAT LUNAK

Setelah tahap perancangan, tahap selanjutnya adalah

tahap pembuatan sistem. Tahap – tahap implementasi perangkat

lunak mencakup lingkungan implementasi, serta program dalam

bentuk script matlab, yang akan dijelaskan pada subbab berikut

ini.

4.1

Lingkungan Implementasi

Perangkat lunak diimplementasikan pada lingkungn

sebagai berikut:



Perangkat Keras

Perangkat lunak ini diimplementasikan pada sebuah

notebook, dengan spesfikasi prosesor Intel Core 2 Duo 2,20

GHz dan memori 0,99 GB.



Perangkat Lunak

Perangkat lunak ini dikembangkan pada sistem operasi

Microsoft Windows XP Home Service Pack 2 dengan

menggunakan Matlab 7.0.

4.2

Implementasi Subclass Discriminant Analysis (SDA)

Pada metode Subclass Discriminant Analysis (SDA),

langkah yang dilakukan setelah membentuk matriks data citra

pelatihan adalah dengan membagi data di tiap kelas menjadi

beberapa subkelas. Pada tugas akhir ini, pembagian tersebut

menggunakan metode yang berdasarkan dengan aturan algoritma

Nearest-Neighbor.

(2)

4.2.1

Implementasi Pembagian Data per Kelas Menjadi

Beberapa Subkelas dengan Algoritma NN-Clustering

Proses awal pada implementasi NN class clustering

adalah mengurutkan data pelatihan terlebih dahulu. Yaitu, dengan

mendapatkan dua sampel untuk tiap kelas yang memiliki jarak

paling jauh. Kode program ditampilkan pada Gambar 4.1.

1 [n,p]=size(trainingdata); 2

3 %element1: menyimpan kolom ke-i pd datatraining yg memiliki jarak paling besar pada tiap kelas 4 element1=zeros(C,1);

5

6 %element2 : menyimpan index dari kolom ke-i pd datatraining yg memiliki jarak paling besar 7 element2=zeros(C,1);

8

9 dist=0; %menyimpan jarak 10

11 %larg_dist:menyimpan jarak terbesar untuk tiap kelas 12 larg_dist=zeros(1,C); 13 14 start=0; 15 for k=1:C 16 %k 17 X = trainingdata(:, start+1:start+nc(k)); 18 for i=1:nc(k)-1 19 Y = X; 20 Y(:, 1:i)=[]; 21 dist = sum((repmat(X(:,i),1,nc(k)-i)-Y).^2); 22 [dist,ind] = sort(dist); 23 24 if (dist(end) > larg_dist(k)) 25 larg_dist(k)=dist(end); 26 element1(k)=i+start; 27 element2(k)=ind(end)+start+i; 28 end 29 end 30 start=sum(nc(1:k)); 31 end

Gambar 4.1 Kode Program NN Class Clustering (1)

Kemudian meletakkan dua sampel yang memiliki jarak

terjauh tersebut pada elemen pertama dan elemen paling akhir.

Langkah selanjutnya adalah mengurutkan semua sampel pada tiap

(3)

kelas. Dengan cara, mencari tiap sampel yang berjarak paling

dekat dengan elemen pertama dan elemen terkahir secara

bersamaan. Kode program ditampilkan pada Gambar 4.2.

32 start=0; 33 sortedtrain=zeros(n,p); 34 for k=1:C 35 %k 36 key1=trainingdata(:, element1(k)); 37 key2=trainingdata(:, element2(k)); 38

39 sortedtrain(:, start+1)= key1; 40 sortedtrain(:, start+nc(k)) = key2; 41

42 num1=element1(k)-start; 43 num2=element2(k)-start; 44

45 temp = trainingdata(:, start+1:start+nc(k)); 46 temp(:, num2)=[]; 47 temp(:, num1)=[]; 48 49 count=nc(k)-2; 50 51 for i=1:fix((nc(k)-2)/2)

52 dist = sum((repmat(key1,1,count) - temp).^2); 53 [c,I]=min(dist); 54 sortedtrain(:,start+1+i)=temp(:,I); 55 temp(:,I)=[]; 56 count=count-1; 57 clear dist 58

59 dist = sum((repmat(key2,1,count) - temp).^2); 60 [c,I]=min(dist); 61 sortedtrain(:,start+nc(k)-i)=temp(:,I); 62 temp(:,I)=[]; 63 count=count-1; 64 clear dist 65 end 66 if (mod(nc(k),2)~=0) 67 sortedtrain(:,start+fix(nc(k)/2)+1)=temp; 68 end 69 start = sum(nc(1:k)); 70 end

Gambar 4.2 Kode Program NN Class Clustering (2)

Setelah mengurutkan data pelatihan, langkah selanjutnya

adalah membagi data di tiap kelas menjadi beberapa subkelas.

(4)

Proses ini menentukan jumlah sampel untuk tiap subkelas. Jumlah

sampel untuk tiap subkelas diusahakan sama. Kode program

ditampilkan pada Gambar 4.3.

71 NH=[]; 72 for i=1:category 73 tempNH=[]; 74 if (mod(nc(i),H(i)) == 0) 75 nh = nc(i)/H(i); 76 for j=1:H(i) 77 tempNH = [tempNH, nh]; 78 end 79 else 80 nh = fix(nc(i)/H(i));

81 if (mod(H(i),2)~=0) % H(i) ganjil 82 for j=1:(H(i)-1)/2 83 tempNH = [nh,tempNH,nh]; 84 end 85 tempNH = [tempNH(1:j),nc(i)- nh*2*j,tempNH(j+1:end)]; 86 else

87 for j=1:(H(i)-2)/2 %H(i) genap 88 tempNH = [nh,tempNH,nh]; 89 end 90 if (H(i)==2) j=0; end; 91 tempNH=[tempNH(1:j),nh,nc(i)- nh*(2*j+1),tempNH(j+1:end)]; 92 end 93 end 94 NH=[NH,tempNH]; 95 end

Gambar 4.3 Kode Program Get Jumlah Sample

4.2.2

Implementasi Perhitungan Matriks Scatter-Between

Subclass (Σ

B

)

Langkah awal implementasi perhitungan matriks

scatter-between subclass adalah dengan menghitung rata-rata sampel di

tiap subkelas pada matriks data pelatihan. Σ

B

mengukur

perbedaan mean subkelas antar subkelas di kelas yang berbeda.

Matriks

scatter-between

subclass

dihitung

menggunakan

persamaan (2.14). Kode program ditampilkan pada Gambar 4.4.

(5)

96 n = size(X,1); 97 p = size(X,2); 98 99 HH = sum(H); 100 start = 0; 101 102 %=================== menghitung SigmaB =================== 103 meanx = mean(X,2); %rata-rata per kolom

104 for i=1: HH

105 %mengambil matriks tiap kelas(per kolom) 106 temp = X(:,start+1:start+nh(i));

107

108 %mean subclass

109 slicemean(:,i)=mean(temp,2); 110

111 %melabeli subclass termasuk class yg mana 112 for class = 1:C 113 if (i <= sum(H(1:class))) 114 sub_label(i) = class; 115 break; 116 end 117 end 118 start = sum(nh(1:i)); 119 end 120 clear temp; 121

122 %menghitung matriks kovarian dari mean subkelas di kelas yg berbeda

123 SigmaB = zeros(n,n); 124 for i=1:HH-1

125 for j=i+1:HH

126 if (sub_label(i) ~= sub_label(j))

127 %Menghitung matriks scatter antar subkelas per5 128 SigmaB = SigmaB + (nh(i)/p)*(nh(j)/p)*

129 (slicemean(:,i)-slicemean(:,j))* 130 (slicemean(:,i)-slicemean(:,j))'; 131 end 132 end 133 end 134 %==========================================================

Gambar 4.4 Kode Program Perhitungan Matriks Scatter-Between

(6)

4.2.3

Implementasi Perhitungan Matriks Scatter-Within

Subclass (Σ

X

)

Kode program perhitungan Matriks Scatter-Within

Subclass (Σ

X

) ditampilkan pada Gambar 4.5.

135 temp=X-repmat(meanx,1,p);

136 SigmaX=temp*temp'/p; %matriks kovarian

Gambar 4.5 Kode Program Perhitungan Matriks Scatter-Within

Subclass (

Σ

X

)

4.2.4

Implementasi Penentuan Jumlah Subkelas yang

Optimal (H

0

)

Pada tahap penentuan jumlah subkelas yang optimal (H

0

),

langkah awal yang dilakukan adalah menghitung vektor eigen

dari matriks Scatter-Within Subclass (Σ

X

) dan Scatter-Between

Subclass (Σ

B

). Kemudian menghitung nilai K

H

seperti persamaan

(2.17). Langkah terakhir adalah mencari nilai K

H

yang paling

kecil, untuk menentukan jumlah subkelas yang optimal (H

0

).

Kode program ditampilkan pada Gambar 4.6-a dan 4.6-b.

137 opts.disp=0;

138 rankB=rank(SigmaB);

139 [vb,db]=eigs(SigmaB,rankB,'LM',opts); 140 %vb : eigenvector ke-i dari SigmaB 141 %db : eigenvalue dari SigmaB 142 db = diag(db)';

143

144 [vx,dx]=eig(SigmaX);

145 %vx : eigenvector ke-j dari SigmaX 146 %dx : eigenvalue dari SigmaX 147 dx = diag(dx)';

148

149 [dx,ind]=sort(dx);

150 dx=fliplr(dx); %flip left to right 151 ind=fliplr(ind);

152 vx=vx(:,ind); %mengurutkan egienvector sesuai index 153

Gambar 4.6-a Kode Program Penentuan Jumlah Subkelas yang

Optimal (H

0

)

(7)

154 %menghapus eigenvector yg eigenvalue nya kurang dari ... 155 vx(:,dx < (sum(dx)/thr))=[];

156 %menghapus eigenvalue yg eigenvalue nya kurang dari ... 157 dx(dx < (sum(dx)/thr))=[];

158

159 L = length(dx); 160

161 %K. nilai selisih -> nilai yg terkecil yg terbaik 162 K=0; 163 m=max(1,ceil(rankB/2)); %m < rank(B) 164 %Menghitung persamaan 7 165 for i=1:m 166 K=K+sum((vb(:,i)'*vx(:,1:min(i,L))).^2); 167 end 168 K=K/m;

Gambar 4.6-b Kode Program Penentuan Jumlah Subkelas yang

Optimal (H

0

)

4.2.5

Implementasi Pembentukan Matriks Fitur Ekstraksi

Implementasi pembentukan matriks fitur ekstraksi

dilakukan dengan menggunakan persamaan

−1X

B

V

=

V

Λ

X

.

Kode program ditampilkan pada Gambar 4.7.

169 % reconstruct (inv(SigmaX)*SigmaB using selected eigens) 170 rat1 = db'*(1./dx); 171 rat2 = vb'*vx; 172 rat = rat1.*rat2; 173 174 new_mtx=zeros(n,n); 175 176 for i=1:rankB 177 tmpvx = vx*rat(i,:)';

178 new_mtx = new_mtx + tmpvx*vb(:,i)'; 179 end

180

181 [v,d]=eigs(new_mtx,min(rankB,L),'LM',opts);

Gambar 4.7 Kode Program Pembentukan Matriks Fitur Ekstraksi

4.2.6

Implementasi Pengenalan Citra

Pada proses pengenalan, citra input terlebih dahulu

diubah menjadi vektor kolom. Kemudian menghitung matriks

fitur ekstraksi citra input. Dan, menghitung jarak antara matriks

(8)

fitur ekstraksi citra input dengan matriks fitur ekstraksi data

pelatihan. Kode program ditampilkan pada Gambar 4.8.

182 %membaca tiap citra

183 ReadObjRGB = imread(ObjName); 184

185 %menjadikan dalam bentuk grayscale 186 ReadObj = rgb2gray(ReadObjRGB); 187

188 [baris kolom] = size(ReadObj); 189 inputObjVector = zeros(JumDim, 1);

190 inputObjVector(1:JumDim,1)= reshape(ReadObj,JumDim,1); 191

192 % Penghitungan fitur ekstraksi dari matriks inputan 193 recog_wt = v'*inputObjVector;

194

195 % Penghitungan jarak antar fitur ekstraksi data training dengan fitur ekstraksi input sebagai bagian dari proses recognition 196 for j=1:JmlTot, 197 for i=1:klm, 198 euDis(i,j)=sqrt((train_wt(i,j)-recog_wt(i,:)).^2); 199 end 200 end

Gambar 4.8 Kode Program Perhitungan Jarak Fitur Ekstraksi Data

Pelatihan dengan Fitur Ekstraksi Citra Input

Langkah selanjutnya adalah mencari jarak terdekat antara

matriks fitur ekstraksi data pelatihan dengan matriks fitur

ekstraksi citra input. Kode program ditampilkan pada Gambar

4.9-a dan 4.9-b.

201 % penghitungan/pencarian jarak terdekat 202 temp =[];

203 for i=1:JmlTot, 204 jum_mag = 0;

205 mag(i) = norm(euDis(:,i),2); 206 jum_mag = [jum_mag + mag(i)]; 207 temp = [temp jum_mag];

208 if i == 1,

209 minDistance = jum_mag; 210 index = 1;

211 else

(9)

212 if minDistance > jum_mag, 213 minDistance = jum_mag; 214 index = i; 215 end 216 end 217 End

Gambar

Gambar 4.1 Kode Program NN Class Clustering (1)
Gambar 4.2 Kode Program NN Class Clustering (2)
Gambar 4.3 Kode Program Get Jumlah Sample
Gambar 4.4 Kode Program Perhitungan Matriks Scatter-Between  Subclass ( Σ B )
+4

Referensi

Dokumen terkait

Selain mengajukan gugatan terhadap kelalaian produsen, ajaran hukum juga memperkenalkan konsumen untuk mengajukan gugatan atas wanprestasi. Tanggung jawab produsen yang dikenal

Ketiganya adalah (1) kearifan berbeda dengan karakteristik kepribadian lainnya karena di dalam konsep tersebut diintegrasikan aspek kognitif, afektif, dan motivasi, (2)

Variasi maltodekstrin berpengaruh terhadap kadar abu, total fenolik, aktivitas antioksidan, waktu larut, dan uji ALT serta tidak berpengaruh terhadap kadar air minuman

String matching fokus pada pencarian satu, atau lebih umum, semua kehadiran sebuah kata (lebih umum disebut pattern ) dalam sebuah teks. Semua algoritma yang akan dibahas

Menimbang, bahwa setelah Majelis Hakim Tingkat Banding memeriksa dan meneliti secara cermat dan seksama berkas perkara beserta salinan resmi putusan Pengadilan Negeri Garut

Untuk mengetahui exercise Half Semont Manuver lebih baik dari exercise Brandt-doroff Manuver dalam menggurangi keluhan vertigo pada gangguan fungsi Vestibular Posterior

Bijaksana ini dalam bahasa Arab disebut fathanah artinya kecerdikan. Ini adalah salah satu sifat Rasulullah, kalau beliau tidak bijaksana tidak mungkin kaumnya akan

bahwa Negara Indonesia telah mengesahkan Konvensi tentang Hak Anak dengan Keputusan Presiden Nomor 36 Tahun 1990 yang harus ditindak lanjuti oleh Pemerintah dalam upaya