Upload
achmad-hidayatno
View
481
Download
3
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