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
49
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) Gambar 3.2 (a) Citra WAJAH.BMP (b) Citra KUDA.BMP
(b)
51
(a)
(b) Gambar 3.3 (a) Citra BATU.BMP (b) Citra BULAN.BMP
(a) Gambar 3.4 (a) Citra KAMERA.BMP (b) Citra GOLDHILL.BMP
(b)
52
(a)
(b)
Gambar 3.5 (a) Citra GEDUNG.BMP (b) Citra JALAN.BMP
(a) Gambar 3.6 (a) Citra TEXT_1.BMP (b) Citra TEXT_2.BMP
(b)
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 asli blok 8 x 8 H(1) x11 x21 . . . x81
x12 . . . x18 x22 . . . x28 . . . . . . x82 . . . x88
diubah menjadi vektor
x11 x21 . . x81 x12 x22 . . . x88
masukan jaringan PCA
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 ke1024), 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 33
Blok 2
Blok 34
Blok 31
Blok 32
Blok 1024
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 = dengan : wt = x = lr = w = epoch =
trainpca(x,lr,w,epoch) IxJ matriks bobot sinapsis setimbang IxQ matriks berisi vektor masukan laju pembelajaran IxJ matriks bobot sinapsis sebelumnya 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 = dengan : wt = x = lr = w =
trarand(x,lr,w) IxJ matriks bobot sinapsis setimbang IxQ matriks berisi vektor masukan laju pembelajaran 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