14
49 BAB III CARA PENELITIAN III.1 Bahan Analisis komponen utama data citra dilakukan terhadap beberapa berkas citra yang telah banyak digunakan untuk penelitian pengolahan isyarat, khususnya pemrosesan citra digital aras-keabuan. Secara umum data citra yang digunakan dibedakan dalam dua kategori yaitu citra alami dan citra buatan-manusia, namun demikian ada juga data citra yang merupakan gabungan antara keduanya. Berkas citra tersebut antara lain: 1. LENA.BMP 2. BARBARA.BMP 3. WAJAH.BMP 4. KUDA.BMP 5. BATU.BMP 6. BULAN.BMP 7. CAMERA.BMP 8. GOLDHILL.BMP 9. GEDUNG.BMP 10. JALAN.BMP 11. TEXT_1.BMP 12. TEXT_2.BMP

Algoritma Jaringan Saraf untuk menghitung PCA

Embed Size (px)

Citation preview

49

BAB III

CARA PENELITIAN

III.1 Bahan

Analisis komponen utama data citra dilakukan terhadap beberapa berkas citra

yang telah banyak digunakan untuk penelitian pengolahan isyarat, khususnya

pemrosesan citra digital aras-keabuan. Secara umum data citra yang digunakan

dibedakan dalam dua kategori yaitu citra alami dan citra buatan-manusia, namun

demikian ada juga data citra yang merupakan gabungan antara keduanya. Berkas citra

tersebut antara lain:

1. LENA.BMP

2. BARBARA.BMP

3. WAJAH.BMP

4. KUDA.BMP

5. BATU.BMP

6. BULAN.BMP

7. CAMERA.BMP

8. GOLDHILL.BMP

9. GEDUNG.BMP

10. JALAN.BMP

11. TEXT_1.BMP

12. TEXT_2.BMP

50

yang berukuran 256 x 256 piksel. Data citra yang tersebut diperlihatkan pada Gambar

3.1 sampai Gambar 3.6 berikut ini.

(a) (b)

Gambar 3.1 (a) Citra LENA.BMP (b) Citra BARBARA.BMP

(a) (b)

Gambar 3.2 (a) Citra WAJAH.BMP (b) Citra KUDA.BMP

51

(a) (b)

Gambar 3.3 (a) Citra BATU.BMP (b) Citra BULAN.BMP

(a) (b)

Gambar 3.4 (a) Citra KAMERA.BMP (b) Citra GOLDHILL.BMP

52

(a) (b)

Gambar 3.5 (a) Citra GEDUNG.BMP (b) Citra JALAN.BMP

(a) (b)

Gambar 3.6 (a) Citra TEXT_1.BMP (b) Citra TEXT_2.BMP

53

III.2. Alat Penelitian

Alat yang digunakan untuk penelitian ini terdiri atas seperangkat komputer

yang mempunyai perangkat lunak penunjang yaitu MATLAB. Kemudian dibuat

perangkat lunak tambahan yang dijalankan di bawah MATLAB sebagai pengolah

data citra untuk mendapatkan beberapa komponen utamanya. Perangkat lunak yang

dibuat digunakan secara berurutan sebagai berikut.

1. Jalankan program prepro.m untuk memproses data citra menjadi himpunan

data vektor yang akan digunakan menjadi masukan program berikutnya. Cara

penggunaannya adalah sebagai berikut.

[H,J] = prepro('nama_file_citra');

Program ini akan menghasilkan matriks H yang masing-masing kolomnya

adalah vektor kolom dari blok proses. Jadi misalkan untuk blok proses 8 x 8,

maka untuk citra ukuran 256 x 256 piksel akan menghasilkan matriks H

berukuran 64 x 1024. Blok proses diberi indeks dimulai dari bagian kiri atas

bidang citra, selanjutnya blok dibawahnya sampai habis, dilanjutkan blok sebelah

kanannya dimulai dari atas, dan seterusnya sampai pada blok paling akhir yaitu

bagian kanan bawah. Blok yang digunakan berjenis 'distinct' artinya bahwa

masing-masing blok tidak saling tumpang tindih. Proses perubahan dari data citra

menjadi vektor masukan ditunjukkan pada Gambar 3.7 berikut ini.

54

Sedangkan J adalah matriks data citra asal misal untuk citra aras keabuan 256

tingkat maka matriksnya berupa 256 bilangan berbeda dari 0 sampai 1 yang

dapat digunakan untuk memvisualisasikan citra asal dengan baris perintah:

imshow(J,256);

Citra asliblok 8 x 8

H(1)

x11 x12 . . . x18 x11

x21 x22 . . . x28 x21

. . . diubah menjadi . masukan . . . vektor . jaringan PCA . . . x81

x81 x82 . . . x88 x12

x22

. . .x88

Gambar 3.7 Diagram proses program prepro.m

2. Kemudian langkah awal membentuk jaringan PCA adalah dengan menentukan

banyaknya simpul masukan dan simpul keluaran, sekaligus menetapkan bobot

sinapsis awal dengan program initpca.m, dengan perintah sebagai berikut.

w = initpca(i,j);

55

dengan i adalah menyatakan banyaknya simpul masukan, misal untuk ukuran

blok proses 8 x 8 maka i berharga 64. Sedangkan j adalah menyatakan

banyaknya simpul keluaran, misal untuk jaringan yang akan memberikan hasil

berupa 8 pertama komponen utama maka j adalah berharga 8. Matriks w adalah

bobot sinapsis awal berukuran i x j yang berupa bilangan acak berdistribusi

seragam dari -1 sampai 1, yang akan digunakan pada proses pelatihan jaringan.

3. Proses pelatihan dilakukan dengan dua metode yang membedakan cara

memasukan himpunan vektor data, yaitu:

a) Metode pemayaran (scanning), yaitu vektor data dimasukan secara

berurutan misal untuk data citra ukuran 256 x 256 yang diproses dengan

blok ukuran 8 x 8 maka vektor dimasukan mulai dari blok kiri atas (blok

ke-1) dan seterusnya sampai blok kanan bawah dari bidang citra (blok ke-

1024), dengan menjalankan program trainpca.m dengan baris

perintah sebagai berikut.

wt = trainpca (H, lr, w, epoch);

Sebagai masukannya berupa 4 argumen yaitu H, lr, w dan epoch. Matriks

H diperoleh dengan menjalankan program prepro.m, bobot sinapsis

awal w dari program initpca.m, sedangkan lr dan epoch ditentukan

sendiri. Pelatihan akan berhenti jika sebanyak epoch yang telah

56

ditentukan telah tercapai. Pemberian indeks blok proses dalam metode ini

ditunjukkan pada Gambar 3.8 berikut ini.

Blok 1

Blok 2

Blok 33

Blok 34

Blok 31

Blok 32Blok1024

Gambar 3.8 Urutan blok proses 8x8 pada citra ukuran 256x256 metode pemayaran

b) Metode acak, yaitu memasukan vektor data secara acak dengan cara

membangkitkan bilangan acak sebagai indeks vektor data, misal untuk

matriks H ukuran 64 x 1024, maka bilangan acak yang dibangkitkan

adalah dari 1 sampai 1024 dengan distribusi yang seragam. Pelatihan ini

dilakukan dengan baris perintah sebagai berikut.

[wt,iterasi] = trarand(H,lr,w);

57

Sebagai masukannya berupa 4 argumen yaitu H, lr, w, dan error. Matriks

H diperoleh dengan menjalankan program prepro.m, bobot sinapsis

awal w dari program initpca.m, sedangkan lr ditentukan sendiri.

Pelatihan akan berhenti jika perubahan bobotnya lebih kecil dari 0,00001

(dengan pertimbangan bahwa nilai piksel dinyatakan dengan bilangan

desimal empat angka dibelakang koma).

Hasil dari proses pelatihan ini adalah wt sebagai bobot sinapsis keadaan tunak.

4. Untuk memvisualisasikan bobot sinapsis wt yang telah diperoleh sebagai hasil

pelatihan dilakukan dengan program plotpca.m.

Berikut ini listing program secara lengkap.

prepro.m function [H,J] = prepro(filename) % Fungsi pemrosesan awal file citra untuk mendapatkan % matriks % yang berisi vektor masukan berukuran Ix1 % % Pemakaian : % [H,J] = prepro('namafile') % dengan : % J = matriks aras-keabuan citra % H = hasil operasi blok 8 x 8 terhadap J % yang disusun menurut kolom % % % Dibuat oleh : Achmad Hidayatno % NIM: 8402/I-1/506/96 % 2001

58

if nargin ~= 1 error('Requires one input argument.'); elseif nargin == 1 & isstr(filename) if (isempty(findstr(filename,'.'))==1) filename=[filename,'.gif']; end % Find full filename fid = fopen(filename); if fid == -1, error(['File ',filename' not found.']); end fname = fopen(fid); fclose(fid); [X,map] = ungif(fname); X = X + 1; X = X'; map = map(1:max(max(X)),:); end J=ind2gray(X,map); % Proses blok H=im2col(J,[8 8],'distinct'); %end program initpca.m function w = initpca(i,j) % Fungsi Inisialisasi untuk PCA Network % Jaringan Syaraf Umpan-Maju Linier Lapis Tunggal % % Pemakaian : % w = initpca (i,j) % dengan : % i = jumlah masukan (disesuaikan dengan ukuran % blok proses) % j = jumlah neuron (disesuaikan dengan banyaknya % PC yang mau diambil) % % w = matriks bobot sinapsis awal berukuran I x J % bilangan random dalam interval (-1,1) %

59

% Lihat juga TRAINPCA, LEARNPCA, SIMUPCA , PLOTPCA % % Dibuat oleh : Achmad Hidayatno % NIM: 8402/I-1/506/96 % 2001 % if nargin < 2,error('Not enough arguments'),end % Menentukan bilangan random antara -1 : 1 w=2*rand(i,j)-1; % end program learnpca.m function dw = learnpca(x,lr,w) % Fungsi pembelajaran mengatur-mandiri % untuk PCA Network % % Menggunakan algoritma pembelajaran Hebb yang dimodifikasi % % Pemakaian : % dw = learnpca(x,lr,w) % dengan : % dw = matriks perubahan bobot sinapsis % x = IxQ matriks berisi vektor masukan % lr = laju pembelajaran % w = IxJ matriks bobot sinapsis sebelumnya % Lihat juga : INITPCA, TRAINPCA, SIMUPCA % % dibuat oleh : Achmad Hidayatno % NIM : 8402/I-1/506/96 % 2001 if nargin < 3, error('Not enough argumen'), end % Algoritma pembelajaran Hebb yang dimodifikasi

60

% dengan triu adalah operator upper triangel dw=lr*(x*x'*w-w*triu(w'*x*x'*w)); % end program trainpca.m function [wt] = trainpca(x,lr,w,epoch) % Fungsi pelatihan Jaringan PCA untuk mendapatkan % bobot sinapsis yang konvergen pada nilai setimbang % dengan masing-masing kolomnya merupakan eigenvektor % dari matriks yang diobservasi % % Pemakaian : % wt = trainpca(x,lr,w,epoch) % dengan : % wt = IxJ matriks bobot sinapsis setimbang % x = IxQ matriks berisi vektor masukan % lr = laju pembelajaran % w = IxJ matriks bobot sinapsis sebelumnya % epoch = banyaknya epoch % % Lihat juga : INITPCA, LEARNPCA, SIMUPCA % % dibuat oleh : Achmad Hidayatno % NIM : 8402/I-1/506/96 % 2001 if nargin < 4, error('Not enough argumen'), end [pr,pc]=size(x); for k=1:epoch

for i=1:pc % mengambil secara berurutan vektor masukan

a=x(:,i); % menghilangkan rerata pada masukan

a=a-mean(a);

61

% menghitung perubahan bobot karena adanya masukan

dw=learnpca(a,lr,w); % memperbaharui bobot

w=w+dw; % normalisasi nilai bobot sinapsis w=w/(max(max(w));

end lr=lr/2; end % Simpan bobot akhir wt=w; % Visualisasi komponen utama plotpca(wt); % end program trarand.m function [wt] = trarand(x,lr,w) % Fungsi pelatihan Jaringan PCA secara acak % untuk mendapatkan % bobot sinapsis yang konvergen pada nilai setimbang % dengan masing-masing kolomnya merupakan eigenvektor % dari matriks yang diobservasi % % Pemakaian : % wt = trarand(x,lr,w) % dengan : % wt = IxJ matriks bobot sinapsis setimbang % x = IxQ matriks berisi vektor masukan % lr = laju pembelajaran % w = IxJ matriks bobot sinapsis sebelumnya % % Lihat juga : INITPCA, LEARNPCA, SIMUPCA % % dibuat oleh : Achmad Hidayatno % NIM : 8402/I-1/506/96

62

% 2001 if nargin < 3, error('Not enough argumen'), end [pr,pc]=size(x); [wr,wc]=size(w); t=1; e=1; epo=1; while e > 0.00001 % membangkitkan indeks acak i=round(rand*pc); if i <=0 i = 1; end if i > pc i = pc ; end a=x(:,i); a=a-mean(a); dw=learnpca(a,lr,w); e=norm(dw); w=w+dw; w=w/max(max(w)); t=t+1; if t > 1000 lr=lr/2; t=1; epo=epo+1; end end iterasi =(epo*1000)+t wt=w; %Visualisasi komponen utama clg; plotpca(wt); % end program