Implementasi dan Perbandingan Pengenalan Pola Tanda Tangan Menggunakan Metode Kohonen dan Metode Adaptive Resonance Theory (ART)

(1)

LAMPIRAN LISTING PROGRAM

Form_utama.m (Halaman Utama)

function varargout = Form_utama(varargin)

% --- Executes just before form_utama is made visible.

function Form_utama_OpeningFcn(hObject, eventdata, handles, varargin)

gambar = imread('logo.jpg'); axes(handles.Logo);

imshow(gambar);

% fungsi keluar aplikasi

function Keluar_Callback(hObject, eventdata, handles) pilih = questdlg('Keluar dari aplikasi ?', 'Keluar',

'Ya', 'Tidak', 'Tidak'); switch pilih

case 'Ya', close case 'Tidak' otherwise end

% fungsi bantuan menu utama

function Bantuan_Callback(hObject, eventdata, handles) Bantuanmenuutama;

% fungsi menampilkan halaman pelatihan

function Pelatihan_Callback(hObject, eventdata, handles) close;

Pelatihan;

% fungsi menampilkan halaman pengujian

function Pengujian_Callback(hObject, eventdata, handles) close;

Pengujian;

Pelatihan.m (Halaman Pelatihan)

% menampilkan bantuan

function bantuan_Callback(hObject, eventdata, handles) Bantuanpelatihan

% fungsi keluar aplikasi


(2)

pilih = questdlg('Kembali ke menu utama ?', 'Keluar', 'Ya', 'Tidak', 'Ya');

switch pilih case 'Ya', close Form_utama case 'Tidak' return end

% fungsi untuk membuka citra

function bukacitra_Callback(hObject, eventdata, handles) try

graf(1) = handles.axes1; graf(11) = handles.axes11; graf(2) = handles.axes2; graf(12) = handles.axes12; graf(3) = handles.axes3; graf(13) = handles.axes13; graf(4) = handles.axes4; graf(14) = handles.axes14; graf(5) = handles.axes5; graf(15) = handles.axes15; graf(6) = handles.axes6; graf(16) = handles.axes16; graf(7) = handles.axes7; graf(17) = handles.axes17; graf(8) = handles.axes8; graf(18) = handles.axes18; graf(9) = handles.axes9; graf(19) = handles.axes19; graf(10) = handles.axes10; graf(20) = handles.axes20;

[nama_file, nama_path, ~] = uigetfile({'*.jpg' , 'File jpeg (*.jpg)'} , 'Buka File Citra', 'MultiSelect', 'on');

if ~isequal(nama_file , 0) for a = 1 : 20

gambar = strcat(nama_path, nama_file{a});

set(graf(a), 'Visible', 'On'); axes(graf(a)); imshow(gambar);

end else

return; end

set(handles.bukacitra, 'Enable', 'Off'); set(handles.binerisasi, 'Enable', 'On'); catch

errordlg('Citra Tidak Sesuai', 'Error'); end

% fungsi binerisasi

function binerisasi_Callback(hObject, eventdata, handles) for a = 1 : 20

citralatihan = getimage(citralatih(a));

citralatihan = imresize(citralatihan, [115 115]); citralatihan_abuabu = rgb2gray(citralatihan); citra_thres = graythresh(citralatihan_abuabu);


(3)

citra_biner = im2bw(citralatihan_abuabu, citra_thres);

[baris, kolom] = size(citra_biner); for x = 1 : baris

for y = 1 : kolom

if citra_biner(x, y) == 0 citra_biner1(x, y) = 1; elseif citra_biner(x, y) == 1 citra_biner1(x, y) = 0; end

end end

citra_biner1 = logical(citra_biner1);

axes(citralatih(a)); imshow(citra_biner1); end

set(handles.binerisasi,'Enable','Off'); set(handles.thinning, 'Enable', 'On');

% fungsi thinning

function thinning_Callback(hObject, eventdata, handles) for a = 1 : 20

citra_biner1 = getimage(citralatih(a));

axes(citralatih(a)); imshow(citralatihan_tipis); end

set(handles.thinning,'Enable','Off'); set(handles.pemotongan, 'Enable', 'On');

% fungsi pemotongan citra

function pemotongan_Callback(hObject, eventdata, handles) for a =1 : 20

citralatihan_tipis = getimage(citralatih(a)); [b, k] = find(citralatihan_tipis);

citralatihan_dipotong =

imresize(citralatihan_dipotong, [115 115]);

axes(citralatih(a)); imshow(citralatihan_dipotong); end

set(handles.pemotongan, 'Enable', 'Off'); set(handles.ekstraksifitur, 'Enable', 'On');

% fungsi ekstraksi citra

function ekstraksifitur_Callback(hObject, eventdata, handles)

baris_A = {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10',...

'A11', 'A12', 'A13', 'A14', 'A15', 'A16', 'A17', 'A18', 'A19', 'A20'};

for a = 1 : 20

citralatihan_dipotong = getimage(citralatih(a)); axes(citralatih(a)); imshow(citralatihan_ap);


(4)

citralatihan_ap = reshape(citralatihan_ap, 1, 400); xlswrite('M:\Belajar\matlab\Pengenalan Pola Tanda

Tangan\Input Pelatihan.xlsx', citralatihan_ap, 'sheet1', baris_A{a});

end

msgbox('Pengolahan Citra Selesai');

set(handles.ekstraksifitur, 'Enable', 'Off');

% fungsi pelatihan

function latih_Callback(hObject, eventdata, handles) try

masukan = xlsread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Input Pelatihan.xlsx', 'sheet1'); pola_masukan = masukan_norm';

pola_masukan1 = logical(masukan);

iterasi_maks = str2double(get(handles.iterasi_maks, 'String'));

% pelatihan kohonen

baris_bobot = {'A1:OJ1', 'A2:OJ2', 'A3:OJ3', 'A4:OJ4', 'A5:OJ5', 'A6:OJ6', 'A7:OJ7' 'A8:OJ8', 'A9:OJ9', 'A10:OJ10',...

'A11:OJ11', 'A12:OJ12', 'A13:OJ13', 'A14:OJ14', 'A15:OJ15', 'A16:OJ16', 'A17:OJ17' 'A18:OJ18', 'A19:OJ19', 'A20:OJ20'};

laju_pemahaman = str2double(get(handles.laju_pemahaman, 'String'));

net = newsom(minmax(pola_masukan), [5 5], 'randtop', 'dist', laju_pemahaman, 1000, 0.5, 0);

net.trainFcn = 'trainr';

net.trainParam.epochs = iterasi_maks;

loading = waitbar(0, 'Sedang diproses...'); steps = 1;

for step = 1 : steps tic;

net = train(net, pola_masukan); elapsedTime = toc;

waitbar(0.25);

bobot = net.IW{1, 1};

nilai = sim(net, pola_masukan); keluaran = vec2ind(nilai);

% akhir pelatihan kohonen

waitbar(0.5);

% pelatihan art1

L = 10; n = 20;

b = (ones(20, 400) * (1/(1 + n))); t = ones(20, 400);


(5)

tic;

[b] = art1(pola_masukan1, p, L, b, t, iterasi_maks); elapsedTime1 = toc;

waitbar(0.75);

xlswrite('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Bobot ART1.xlsx', b, 'sheet1');

waitbar(step / steps); end

close(loading);

% akhir pelatihan art1

msgbox('Pelatihan Selesai', 'Berhasil');

set(handles.waktupelkhn, 'String', elapsedTime); set(handles.waktupelart, 'String', elapsedTime1); catch

msgbox('Citra Belum Diolah'); end

% fungsi reset citra

function resetcitra_Callback(hObject, eventdata, handles) set(handles.ekstraksifitur, 'Enable', 'Off');

for z = 1 : 20 cla(citra(z));

set(citra(z), 'Visible', 'Off'); end

set(handles.bukacitra, 'Enable', 'On'); set(handles.binerisasi, 'Enable', 'Off'); set(handles.thinning, 'Enable', 'Off'); set(handles.pemotongan, 'Enable', 'Off'); msgbox('Berhasil di reset', 'Berhasil');

% fungsi reset bobot

function resetbobot_Callback(hObject, eventdata, handles) n = 20;

b = (ones(20, 400) * (1/(1 + n)));

xlswrite('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Bobot ART1.xlsx', b, 'sheet1');

w = zeros(20, 400);

xlswrite('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Bobot Kohonen.xlsx', w, 'sheet1');

msgbox('Berhasil di reset', 'Berhasil');

% fungsi pelatihan art1

function [b] = art1(pola_masukan1, p, L, b, t, iterasi_maks)

iterasi = 0;

while iterasi <= iterasi_maks for i = 1 : 20


(6)

standar_s = sum(s); x = s;

for j = 1 : 20 y(j) = 0; if y(j) ~= -1

y(j) = sum(b(j, :) .* x); end

end

[m, j] = max(y); j = min(j); if y(j) == -1 p = 0.5 * p; else

x = s .* t(j, :);

standar_x = sum(x);

if (standar_x / standar_s) < p y(j) = -1;

p = 0.5 * p;

elseif (standar_x / standar_s) >= p b(j, :) = ((L * x) / (L - 1 +

standar_x));

t(j, :) = x; end

end end

iterasi = iterasi + 1; end

% akhir dari fungsi pelatihan art1

Pengujian.m (Halaman Pengujian)

% menampilkan bantuans

function bantuan_Callback(hObject, eventdata, handles) Bantuanpengujian

% fungsi tombol buka citra

function buka_citra_Callback(hObject, eventdata, handles) try

switch get(handles.jumlahcitra, 'Value') case 1

[nama_file, nama_path] = uigetfile({'*.jpg' , 'File jpeg (*.jpg)'} , 'Buka File Citra');

if ~isequal(nama_file , 0)

set(handles.citrauji, 'Visible', 'On'); gambar = imread(fullfile(nama_path ,

nama_file));


(7)

imshow(gambar); else

return; end; case 2

graf(1) = handles.citrauji; graf(11) = handles.citrauji10;

graf(2) = handles.citrauji1; graf(12) = handles.citrauji11;

graf(3) = handles.citrauji2; graf(13) = handles.citrauji12;

graf(4) = handles.citrauji3; graf(14) = handles.citrauji13;

graf(5) = handles.citrauji4; graf(15) = handles.citrauji14;

graf(6) = handles.citrauji5; graf(16) = handles.citrauji15;

graf(7) = handles.citrauji6; graf(17) = handles.citrauji16;

graf(8) = handles.citrauji7; graf(18) = handles.citrauji17;

graf(9) = handles.citrauji8; graf(19) = handles.citrauji18;

graf(10) = handles.citrauji9; graf(20) = handles.citrauji19;

[nama_file, nama_path] = uigetfile({'*.jpg' , 'File jpeg (*.jpg)'} , 'Buka File Citra',

'MultiSelect', 'on');

if ~isequal(nama_file , 0) for a = 1 : 20

gambar = strcat(nama_path, nama_file{a});

set(graf(a), 'Visible', 'On'); axes(graf(a)); imshow(gambar); end else return; end otherwise end

set(handles.uji, 'Enable', 'On'); catch

errordlg('Citra Tidak Sesuai', 'Error'); end

% fungsi pengujian

function uji_Callback(hObject, eventdata, handles) loading = waitbar(0, 'Sedang diproses...');


(8)

for step = 1 : steps

% pengolahan citra

switch get(handles.jumlahcitra, 'Value') case 1

citra_uji = getimage(handles.citrauji); citra_uji = imresize(citra_uji, [115 115]); citrauji_abuabu = rgb2gray(citra_uji);

citrauji_thres = graythresh(citrauji_abuabu); citrauji_biner = im2bw(citrauji_abuabu,

citrauji_thres);

[baris, kolom] = size(citrauji_biner); for x = 1 : baris

for y = 1 : kolom

if citrauji_biner(x, y) == 0 citrauji_biner1(x, y) = 1; elseif citrauji_biner(x, y) == 1 citrauji_biner1(x, y) = 0; end

end end

citrauji_biner1 = logical(citrauji_biner1); citrauji_dipotong = imresize(citrauji_dipotong,

[115 115]);

citrauji_ap = reshape(citrauji_ap, 1, 400);

xlswrite('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Input Pengujian.xlsx', citrauji_ap, 'sheet1'); case 2

bariss_A = {'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10',...

'A11', 'A12', 'A13', 'A14', 'A15', 'A16', 'A17', 'A18', 'A19', 'A20'};

for a = 1 : 20

citraujian = getimage(citra_uji(a));

citraujian = imresize(citraujian, [115 115]); citraujian_abuabu = rgb2gray(citraujian); citraujian_thres =

graythresh(citraujian_abuabu);

citraujian_biner = im2bw(citraujian_abuabu, citraujian_thres);

[brs, klm] = size(citraujian_biner); for x = 1 : brs

for y = 1 : klm

if citraujian_biner(x, y) == 0 citraujian_biner1(x, y) = 1; elseif citraujian_biner(x, y) == 1 citraujian_biner1(x, y) = 0; end

end end


(9)

citraujian_biner1 = logical(citraujian_biner1); citraujian_dipotong =

imresize(citraujian_dipotong, [115 115]);

[C, S] = wavedec2(citraujian_dipotong, 3, 'sym4');

xlswrite('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Input Pengujian Banyak.xlsx',

citraujian_ap, 'sheet1', bariss_A{a}); end

otherwise end

switch get(handles.jumlahcitra, 'Value') case 1

jumlahcitra = 1;

masukan = xlsread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Input Pengujian.xlsx', 'sheet1'); case 2

jumlahcitra = 20;

masukan = xlsread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Input Pengujian Banyak.xlsx',

'sheet1'); otherwise end

pola_masukan = masukan_norm;

pola_masukan1 = logical(masukan);

waitbar(0.25);

global time1; global time2;

% pengujian kohonen

bobot = xlsread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Bobot Kohonen.xlsx', 'sheet1');

for b = 1 : jumlahcitra tic;

[nilai] = kohonen(pola_masukan(b, :), bobot); elapsedTime = toc;

% akhir pengujian kohonen

switch (nilai) case 1

nama = 'Abidah'; case 2

nama = 'Agung'; case 3

nama = 'Al Mizfar'; case 4


(10)

nama = 'Anandhini'; case 5

nama = 'Ema'; case 6

nama = 'Febri'; case 7

nama = 'Fikri'; case 8

nama = 'Ismail'; case 9

nama = 'Ita'; case 10

nama = 'Joshua'; case 11

nama = 'Khairun nisa'; case 12

nama = 'Martina'; case 13

nama = 'Mawaddah'; case 14

nama = 'Nurkholija'; case 15

nama = 'Retri'; case 16

nama = 'Richard'; case 17

nama = 'Ruth Mey'; case 18

nama = 'Sengli'; case 19

nama = 'Susi'; case 20

nama = 'Tifany'; otherwise

nama = 'Tidak Dikenali'; end

waitbar(0.5);

%pengujian art1

b_uji = xlsread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\Bobot ART1.xlsx', 'sheet1');

tic;

[kelompok] = art1(pola_masukan1(b, :), b_uji); elapsedTime1 = toc;

% akhir pengujian art1

switch (kelompok) case 1

nama1 = 'Abidah'; case 2


(11)

nama1 = 'Agung'; case 3

nama1 = 'Al Mizfar'; case 4

nama1 = 'Anandhini'; case 5

nama1 = 'Ema'; case 6

nama1 = 'Febri'; case 7

nama1 = 'Fikri'; case 8

nama1 = 'Ismail'; case 9

nama1 = 'Ita'; case 10

nama1 = 'Joshua'; case 11

nama1 = 'Khairun nisa'; case 12

nama1 = 'Martina'; case 13

nama1 = 'Mawaddah'; case 14

nama1 = 'Nurkholija'; case 15

nama1 = 'Retri'; case 16

nama1 = 'Richard'; case 17

nama1 = 'Ruth Mey'; case 18

nama1 = 'Sengli'; case 19

nama1 = 'Susi'; case 20

nama1 = 'Tifany'; otherwise

nama1 = 'Tidak Dikenali'; end

nama = string(nama); nama1 = string(nama1); time1(b) = elapsedTime; time2(b) = elapsedTime1;

elapsedTime3 = num2str(elapsedTime); elapsedTime4 = num2str(elapsedTime1); hasilujikhn{b} = nama;

waktukhn{b} = elapsedTime3; hasilujiart1{b} = nama1; waktuart1{b} = elapsedTime4;


(12)

end

pemilikttduji = {'Abidah', 'Agung', 'Al Mizfar', 'Anandhini', 'Ema',...

'Febri', 'Fikri', 'Ismail', 'Ita', 'Joshua',...

'Khairun nisa', 'Martina', 'Mawaddah', 'Nurkholija', 'Retri',...

'Richard', 'Ruth Mey', 'Sengli', 'Susi', 'Tifany'};

keputusan1 = strcmp(pemilikttduji, hasilujikhn); keputusan2 = strcmp(pemilikttduji, hasilujiart1);

nilaikhn = 0; nilaiart1 = 0; for c = 1 : 20

if keputusan1(c) == 1

nilaikhn = nilaikhn + 1; kep = 'benar';

else

nilaikhn = nilaikhn + 0; kep = 'salah';

end

kep = string(kep); keptsnkhn{c} = kep; end

for d = 1 : 20

if keputusan2(d) == 1

nilaiart1 = nilaiart1 + 1; kep1 = 'benar';

else

nilaiart1 = nilaiart1 + 0; kep1 = 'salah';

end

kep1 = string(kep1); keptsnart1{d} = kep1; end

persentasikhn = (nilaikhn/20)*100; persentasiart1 = (nilaiart1/20)*100;

waitbar(step / steps); end

close(loading);

msgbox('Pengujian Selesai', 'Berhasil');

% menampilkan hasil pengujian

if jumlahcitra == 1

set(handles.waktupegkhn, 'String', elapsedTime3); set(handles.namapegkhn, 'String', nama);


(13)

set(handles.waktupegart, 'String', elapsedTime4); set(handles.namapegart, 'String', nama1);

elseif jumlahcitra == 20

datahsl = [pemilikttduji; hasilujikhn; waktukhn; keptsnkhn;...

hasilujiart1; waktuart1; keptsnart1]; datahsl = datahsl';

set(handles.tabelhasil, 'Data', datahsl);

set(handles.persenkhn, 'String', persentasikhn); set(handles.persenart1, 'String', persentasiart1); set(handles.simpandata, 'Enable', 'On');

set(handles.grafikpeg, 'Enable', 'On'); end

% keluar aplikasi

function keluar_Callback(hObject, eventdata, handles) pilih = questdlg('Kembali ke menu utama ?', 'Keluar',

'Ya', 'Tidak', 'Tidak'); switch pilih case 'Ya', close Form_utama case 'Tidak' return end

% reset citra uji

function resetcitrauji_Callback(hObject, eventdata, handles)

set(handles.uji, 'Enable', 'Off'); for z = 1 : 20

cla(citra(z));

set(citra(z), 'Visible', 'Off'); end

set(handles.waktupegkhn, 'String', ''); set(handles.namapegkhn, 'String', ''); set(handles.waktupegart, 'String', ''); set(handles.namapegart, 'String', ''); set(handles.persenkhn, 'String', ''); set(handles.persenart1, 'String', ''); datahsl{20, 7} = '';

set(handles.tabelhasil, 'Data', datahsl); set(handles.simpandata, 'Enable', 'Off'); set(handles.grafikpeg, 'Enable', 'Off'); msgbox('Berhasil di reset', 'Berhasil');

% fungsi menampilkan grafik pengujian

function grafikpeg_Callback(hObject, eventdata, handles) global time1;


(14)

global time2; x = 1 : 20; figure

plot(x, time1, 'r-*', x, time2, 'b-+'); set(gca, 'XTick', 1:20);

legend('metode Kohonen', 'metode ART1'); xlabel('Tanda Tangan');

ylabel('Waktu Pengujian');

% fungsi menyimpan data

function simpandata_Callback(hObject, eventdata, handles) data = get(handles.tabelhasil, 'Data');

data = cellstr(data);

[nama_file, nama_path] = uiputfile({'*.xls', 'File Excel (*.xls)'}, 'Simpan Data Tabel Hasil');

nama = fullfile(nama_path, nama_file); xlswrite(nama, data);

msgbox('Data Berhasil Disimpan', 'Berhasil');

% fungsi pengujian kohonen

function [nilai] = kohonen(pola_masukan, bobot) for i = 1

for j = 1 : 20

d(j) = sum((bobot(j, :) - pola_masukan(i, :)) .^ 2);

end

[m, j] = min(d); nilai = j;

end

% akhir dari fungsi pengujian kohonen % fungsi pengujian art1

function [kelompok] = art1(pola_masukan1, b_uji) for i = 1

s = pola_masukan1(i, :); x = s;

for j = 1 : 20

y(j) = sum(b_uji(j, :) .* x); end

[m, j] = max(y); j = min(j); kelompok = j; end

% akhir dari fungsi pengujian art1

Bantuanmenuutama.m (Halaman Bantuan untuk Halaman Utama)


(15)

% --- Executes just before Bantuanmenuutama is made visible.

function Bantuanmenuutama_OpeningFcn(hObject, eventdata, handles, varargin)

gambar = imread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\New folder\Citra lain\menuutama.jpg');

axes(handles.axes1); imshow(gambar);

% keluar dari halaman bantuan

function keluar_Callback(hObject, eventdata, handles) close

Bantuanpelatihan.m (Halaman Bantuan untuk Halaman Pelatihan)

function varargout = Bantuanpelatihan(varargin)

% --- Executes just before Bantuanpelatihan is made visible.

function Bantuanpelatihan_OpeningFcn(hObject, eventdata, handles, varargin)

gambar = imread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\New folder\Citra lain\pelatihan.jpg');

gambar = imresize(gambar, [1000 400]); axes(handles.axes1);

imshow(gambar);

isi = {'1. Menu menampilkan halaman'...

' bantuan pada halaman pelatihan.'... '2. Menu keluar dari halaman'...

' pelatihan ke halaman utama.'... '3. Tombol membuka folder'...

' penyimpanan citra yang akan'... ' dipilih dan menampilkan citra'... ' pilihan.'...

'4. Tombol menghapus citra yang telah'... ' ditampilkan di panel citra.'...

'5. Tombol proses binerisasi citra.'... '6. Tombol proses penipisan (thinning)'... ' citra.'...

'7. Tombol proses pemotongan citra.'... '8. Tombol ekstraksi fitur citra.'... '9. Laju pemahaman Kohonen dengan'... ' rentang nilai : 0 < x < 1.'... '10. Parameter kewaspadaan'...

' (vigilance) ART1 rentang'... ' nilai : 0 < x < 1.'...

'11. Iterasi maksimum proses pelatihan'... ' Kohonen dan ART1.'...

'12. Tombol proses pelatihan jaringan'... ' saraf tiruan Kohonen dan ART1. '...


(16)

'13. Tombol reset bobot Kohonen dan'... ' ART1 pada basis data.'};

set(handles.isipelatihan, 'String', isi);

function keluar_Callback(hObject, eventdata, handles) close

Pelatihan

Bantuanpengujian.m (Halaman Bantuan untuk Halaman Pengujian)

function varargout = Bantuanpengujian(varargin)

% --- Executes just before Bantuanpengujian is made visible.

function Bantuanpengujian_OpeningFcn(hObject, eventdata, handles, varargin)

gambar = imread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\New folder\Citra lain\peg1.jpg');

axes(handles.axes1); imshow(gambar);

gambar1 = imread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\New folder\Citra lain\peg2.jpg');

axes(handles.axes2); imshow(gambar1);

gambar2 = imread('M:\Belajar\matlab\Pengenalan Pola Tanda Tangan\New folder\Citra lain\peg3.jpg');

axes(handles.axes3); imshow(gambar2);

isi1 = {'1. Menu menampilkan'...

' bantuan pada halaman'... ' pengujian.'...

'2. Menu keluar dari'...

' halaman pengujian ke'... ' halaman utama.'};

set(handles.isipeg1, 'String', isi1); isi2 = {'1. Pilihan jumlah citra'... ' yang akan diuji.'... '2. Tombol membuka folder'... ' penyimpanan citra uji'... ' yang akan dipilih'... '3. Tombol menghapus citra'... ' pada panel citra uji.'... '4. Tombol proses pengujian'... ' jaringan saraf tiruan'... ' Kohonen dan ART1.'};

set(handles.isipeg2, 'String', isi2); isi3 = {'1. Tombol menyimpan data'...


(17)

' ke file excel.'... '2. Menampilkan grafik'... ' pengujian'};

set(handles.isipeg3, 'String', isi3);

function keluar_Callback(hObject, eventdata, handles) close


(18)

LAMPIRAN CITRA TANDA TANGAN

Gambar Nama Gambar Nama

Abidah1 Agung1

Abidah2 Agung2

Abidah3 Agung3

Abidah4 Agung4

Abidah5 Agung5

Al Mizfar1 Anandhini1

Al Mizfar2 Anandhini2

Al Mizfar3 Anandhini3

Al Mizfar4 Anandhini4

Al Mizfar5 Anandhini5


(19)

Ema2 Febri2

Ema3 Febri3

Ema4 Febri4

Ema5 Febri5

Fikri1 Ismail1

Fikri2 Ismail2

Fikri3 Ismail3

Fikri4 Ismail4

Fikri5 Ismail5

Ita1 Joshua1

Ita2 Joshua2

Ita3 Joshua3


(20)

Ita5 Joshua5

Khairun nisa1 Martina1

Khairun nisa2 Martina2

Khairun nisa3 Martina3

Khairun nisa4 Martina4

Khairun nisa5 Martina5

Mawaddah1 Nurkholija1

Mawaddah2 Nurkholija2

Mawaddah3 Nurkholija3

Mawaddah4 Nurkholija4

Mawaddah5 Nurkholija5

Retri1 Richard1


(21)

Retri3 Richard3

Retri4 Richard4

Retri5 Richard5

Ruth Mey1 Sengli1

Ruth Mey2 Sengli2

Ruth Mey3 Sengli3

Ruth Mey4 Sengli4

Ruth Mey5 Sengli5

Susi1 Tifany1

Susi2 Tifany2

Susi3 Tifany3

Susi4 Tifany4


(22)

CURRICULUM VITAE

Nama : Martina Abriani Sipayung

Tempat, Tanggal Lahir : Saribudulok, 05 Oktober 1992 Jenis Kelamin : Perempuan

Alamat : Jalan Jamin Ginting Pasar VII Perumahan Lingga No. C-1 Medan

Alamat Orang Tua : Jalan Sutomo No. 111 Saribudolok

Telp/Hp : 081264065851

Email : martinasipayung15@gmail.com

Riwayat Pendidikan

2011 – 2015 : S1 Ilmu Komputer Universitas Sumatera Utara 2008 – 2011 : SMA Santo Thomas 1 Medan

2005 – 2008 : SMP Bunda Mulia Saribudolok 1999 – 2005 : SD Don Bosco Saribudolok

Kursus

Kelas Toefl (Toefl Preparation) di YPPIA Medan

Kelas percakapan (Conversation Class) di YPPIA Medan Seminar/Kegiatan

Peserta Workshop “Pengenalan Android Oleh Android Medan Community” Artechno Festival 2011 (Medan, 16 November 2011)

 Peserta Seminar “How to Build Augmented Reality for Mobile Application” (Medan, 19 Desember 2012)

 Peserta lomba “Application” IMILKOM Contest 2012 (Medan, 20 Desember 2012)


(23)

 Peserta seminar nasional “Creative Animation and Gaming Industry” (Medan, 14 Desember 2013)

 Peserta seminar nasional “Seminar Nasional Literasi Informasi (SENARAI) 2014” Fasilkom-TI USU (Medan, 1 Desember 2014)

Data Kemampuan

Bidang Bahasa Tingkat Kemampuan

Bahasa Inggris Intermediate

Bahasa Pemrograman Tingkat Kemampuan

Matlab Beginner/Advanced

C# Beginner/Advanced

Java Beginner

[

JADILAH YANG TERBAIK DARI DIRIMU

SENDIRI

]


(24)

DAFTAR PUSTAKA

Basuki, A., Palandi, J.F. & Fathurrochman. 2005. Pengolahan Citra Menggunakan Visual BASIC. Yogyakarta: Graha Ilmu.

Budiono, Herlien. 2007. Kumpulan Tulisan Hukum Perdata di Bidang Kenotariatan. Bandung: Citra Aditya Bakti.

Fausett, L. 1993. Fundamentals of Neural Networks. ͳ௦௧ Edition. New Jersey : Pearson. Jain, C., Singh, P. & Chugh, A. 2014. An Offline Signature Verification using Adaptive Resonance Theory 1 (ART1). International Journal of Computer Applications (0975 – 8887) 94(2): 8 – 11.

Kriesel, D. 2007. A Brief Introduction to Neural Networks. (Online) http://www.dkriesel.com (13 Desember 2014).

Pratama, H. K. 2011. Analisis Perbandingan Pengenalan Tanda Tangan dengan Menggunakan Metode Perceptron dan Backpropagation. Skripsi. Universitas Islam Negeri Syarif Hidayatullah Jakarta.

Pressman, Roger S. 2012. Rekayasa Perangkat Lunak. Yogyakarta: Andi.

Putra, D. 2009. Sistem Biometrika Konsep Dasar, Teknik Analisis Citra, dan Tahapan Membangun Aplikasi Sistem Biometrika. Yogyakarta: Andi.

Putra, D. 2010. Pengolahan Citra Digital. Yogyakarta: Andi.

Siahaan, Daniel. 2012. Analisa Kebutuhan dalam Rekayasa Perangkat Lunak. Yogyakarta: Andi.

Siang, J. J. 2005. Jaringan Syaraf Tiruan dan Pemrogramannya Menggunakan Matlab. Yogyakarta: Andi.

Sihotang, S. J. A. 2010. Implementasi Jaringan Syaraf Tiruan untuk Pengenalan Tanda Tangan. Skripsi. Universitas Sumatera Utara.

Sutojo, S., Mulyanto, E. & Suhartono, V. 2011. Kecerdasan Buatan. Yogyakarta: Andi. Wahana Komputer. 2013. Ragam Aplikasi Pengolahan Image dengan Matlab. Jakarta:

PT Elex Media Komputindo.

Wasista, S. & Tjandrasa, H. 2003. Metode Komponen Utama dan Kohonen SOM sebagai Pengenalan Pola Geometri Tangan. Prosiding Seminar Industrial


(25)

Electronics Seminar (IES) Politeknik Elektronika Negeri Surabaya, pp. 134-138.


(26)

Bab 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis sistem adalah tahapan yang menjelaskan masalah dan kebutuhan sistem sesuai dengan syarat – syarat dan tujuan dari sistem tersebut. Analisis sistem membantu dalam perancangan dan implementasi sistem.

3.1.1 Analisis Masalah

Tanda tangan telah digunakan oleh masyarakat umum dalam pembuktian identitas di kehidupan sehari – hari. Tanda tangan digunakan dalam pembuktian identitas dalam bidang perbankan, pendidikan, usaha dan lain – lain. Tanda tangan yang digunakan akan dicek keasliannya dengan cara membandingkannya dengan tanda tangan yang asli. Kurangnya ketelitian dalam pengecekan tanda tangan adalah salah satu permasalahan dalam pengecekan tanda tangan secara manual. Oleh karena itu, dikembangkan sebuah sistem pengenalan pola tanda tangan yang dapat membantu mengatasi permasalahan tersebut. Pengenalan pola tanda tangan akan diimplementasikan menggunakan jaringan saraf tiruan tanpa supervisi yaitu metode Kohonen dan metode ART1.

Penyebab dan dampak dari permasalahan dalam penelitian ini digambarkan pada diagram ishikawa pada gambar 3.1.


(27)

Gambar 3.1 Diagram Ishikawa

3.1.2 Analisis Kebutuhan

Analisis kebutuhan adalah tahapan pada analisis sistem yang bertujuan memahami permasalahan dan solusi dari sistem yang akan dibangun.

3.1.2.1 Kebutuhan Fungsional

Kebutuhan fungsional yang dibutuhkan oleh sistem pada penelitian ini yaitu 1. Format citra yang digunakan adalah file citra *.jpg atau *.jpeg.

2. Sistem mampu mengolah citra asli (*.jpg atau *.jpeg) agar dapat digunakan sebagai masukan dalam sistem.

3. Sistem mampu melatih citra masukan sesuai dengan parameter yang dimasukkan dan menghasilkan bobot yang dapat digunakan pada tahap pengujian.

4. Sistem mampu menguji atau mengenali pola yang telah dilatih dan belum dilatih.


(28)

3.1.2.2 Kebutuhan Non-Fungsional

Kebutuhan non-fungsional yang dibutuhkan oleh sistem pada penelitian ini yaitu 1. Tampilan sistem mudah dimengerti dan mudah digunakan oleh pengguna. 2. Efisien dalam menyelesaikan masalah ataupun tujuan dari sistem tersebut. 3. Penyimpanan data citra, pelatihan dan pengujian agar dapat diakses kembali. 4. Sistem dapat dikembangkan dengan mudah.

5. Sistem dapat digunakan dengan baik tanpa mengeluarkan biaya.

3.1.3 Analisis Proses

Dalam sistem ini ada empat proses yang terjadi yaitu prapengolahan citra, ekstraksi fitur, pelatihan jaringan dan pengujian jaringan. Citra yang digunakan adalah citra tanda tangan. Ekstraksi fitur yang digunakan dalam penelitian ini adalah Transformasi Wavelet 2D. Pelatihan dan pengenalan pola tanda tangan dalam penelitian ini menggunakan metode Kohonen dan ART1.

3.1.3.1 Akuisisi Citra

Tanda tangan yang digunakan sebagai data pada penelitian ini didapatkan dari 20 orang mahasiswa S1 Ilmu Komputer USU, 5 tanda tangan untuk tiap orang. Tanda tangan dibubuhkan diatas kertas putih. Kertas tersebut di-scan menggunakan printer HP. Citra yang didapat dari hasil scan memiliki format JPEG. Banyaknya data yang digunakan adalah 100 tanda tangan.

3.1.3.2 Prapengolahan Citra

Citra tanda tangan yang akan digunakan sebagai masukan jaringan saraf tiruan diolah terlebih dahulu melalui proses prapengolahan citra. Adapun proses pengolahan tersebut diawali dengan mengubah ukuran citra asli (citra hasil scanning) menjadi 115 x 115 piksel. Selanjutnya, citra diubah menjadi citra abu – abu (grayscalling). Setelah itu dilakukan proses pengambangan pada citra abu – abu yang menghasilkan citra biner. Citra biner tersebut ditipiskan (thinning). Selanjutnya, citra tersebut dipotong dengan menghapus kolom dan baris yang tidak memiliki nilai 1 (putih). Citra akhir hasil prapengolahan diubah kembali ukurannya menjadi 115 x 115 piksel. Adapun langkah – langkah tersebut dapat dilihat pada gambar 3.2.


(29)

Gambar 3.2 Prapengolahan citra

3.1.3.3 Ekstraksi Fitur

Ekstraksi fitur merupakan proses mengambil nilai – nilai fitur dari suatu objek. Nilai – nilai fitur tersebut digunakan dalam proses komputasi. Oleh karena itu, nilai – nilai fitur harus dapat mewakili suatu objek dengan tepat. Metode ekstraksi fitur yang digunakan pada penelitian ini adalah Transformasi Wavelet 2D dengan dekomposisi 3 (tiga) tingkatan. Adapun hasil ekstraksi fitur pada citra tanda tangan dapat dilihat pada gambar 3.3.

Gambar 3.3 Ekstraksi fitur

3.1.3.4 Fase Pelatihan dan Pengujian

Pelatihan dan pengujian pola tanda tangan pada penelitian ini menggunakan metode jaringan saraf tiruan tanpa supervisi yaitu metode Kohonen dan Adaptive Resonance


(30)

Theory 1 (ART1). Berikut ini adalah langkah – langkah proses pelatihan dan pengujian metode Kohonen dan Adaptive Resonance Theory 1 (ART1) dalam contoh yang sederhana.

Contoh 3.1 Jaringan Kohonen

Diketahui 4 (empat) buah vektor x(1) = (0.2, 0.3, 0.4, 0.5), x(2) = (0.1, 0.2, 0.6, 0.1), x(3) = (0.2, 0.4, 0.5, 0.3) dan x(4) = (0.1, 0.0, 0.2, 0.3).

Digunakan jaringan Kohonen untuk mengelompokkan 4 (empat) buah vektor tersebut ke dalam maksimum 2 (dua) buah kelompok. Digunakan laju pemahaman awal α(0) = 0.6 dan α(t + 1) = 0.5α(t). Jari – jari vektor sekitar yang dimodifikasi = 0 (berarti hanya vektor pemenang yang dimodifikasi bobotnya pada setiap langkah).

Penyelesaian Inisialisasi :

 bobot = [ .. .

. .. .. ]

 laju pemahaman α(0) = 0.6 dan α(t + 1) = 0.5α(t)  jari – jari = 0

Pelatihan dilakukan untuk tiap vektor : Untuk vektor x(1) = (0.2, 0.3, 0.4, 0.5) : Sesuai dengan persamaan 2.2 dihitung D(j).

D(1) = (0.2 – 0.2)^2 + (0.6 – 0.3)^2 + (0.5 – 0.4)^2 + (0.9 – 0.5)^2 = 0.0 + 0.09 + 0.01 + 0.16 = 0.26

D(2) = (0.8 – 0.2)^2 + (0.4 – 0.3)^2 + (0.7 – 0.4)^2 + (0.3 – 0.5)^2 = 0.36 + 0.01 + 0.09 + 0.04 = 0.5

D(j) minimum untuk j = 1. Maka vektor bobot di baris 1 dimodifikasi menurut persamaan 2.3.

= . + . . − . = . + = . = . + . . − . = . + − . = . = . + . . − . = . + − . = . = . + . . − . = . + − . = . Didapatkan vektor bobot baru : = [ .. .


(31)

Untuk vektor x(2) = (0.1, 0.2, 0.6, 0.1) : Sesuai dengan persamaan 2.2 dihitung D(j).

D(1) = (0.2 – 0.1)^2 + (0.42 – 0.2)^2 + (0.44 – 0.6)^2 + (0.66 – 0.1)^2 = 0.01 + 0.0484 + 0.0256 + 0.3136 = 0.3976

D(2) = (0.8 – 0.1)^2 + (0.4 – 0.2)^2 + (0.7 – 0.6)^2 + (0.3 – 0.1)^2 = 0.49 + 0.04 + 0.01 + 0.04 = 0.58

D(j) minimum untuk j = 1. Maka vektor bobot di baris 1 dimodifikasi menurut persamaan 2.3.

= . + . . − . = . + − . = .

= . + . . − . = . + − . = .

= . + . . − . = . + . = .

= . + . . − . = . + − . = .

Didapatkan vektor bobot baru : = [ .. .

. . . . . ] Untuk vektor x(3) = (0.2, 0.4, 0.5, 0.3) :

Sesuai dengan persamaan 2.2 dihitung D(j).

D(1) = (0.14 – 0.2)^2 + (0.288 – 0.4)^2 + ( . – 0.5)^2 + ( . – 0.3)^2 = 0.0036 + 0.0125 + 0.0013 + 0.000576 = 0.018

D(2) = (0.8 – 0.2)^2 + (0.4 – 0.4)^2 + (0.7 – 0.5)^2 + (0.3 – 0.3)^2 = 0.36 + 0.0 + 0.04 + 0.0 = 0.4

D(j) minimum untuk j = 1. Maka vektor bobot di baris 1 dimodifikasi menurut persamaan 2.3.

= . + . . − . = . + . = .

= . + . . − . = . + . = .

= . + . . − . = . + − . = .

= . + . . − . = . + − . = .

Didapatkan vektor bobot baru : = [ .

. . . . . . . ] Untuk vektor x(4) = (0.1, 0.0, 0.2, 0.3) :

Sesuai dengan persamaan 2.2 dihitung D(j).


(32)

= 0.49 + 0.1262 + 0.0988 + 0.00009216 = 0.7151

D(2) = (0.8 – 0.1)^2 + (0.4 – 0.0)^2 + (0.7 – 0.2)^2 + (0.3 – 0.3)^2 = 0.49 + 0.16 + 0.25 + 0.0 = 0.9

D(j) minimum untuk j = 1. Maka vektor bobot di baris 1 dimodifikasi menurut persamaan 2.3.

= . + . . − . = . + − . = .

= . + . . − . = . + − . = .

= . + . . − . = . + − . = .

= . + . . − . = . + − . = .

Didapatkan vektor bobot baru : = [ .

. . . . . . . ]

Sebelum melanjutkan iterasi kedua dalam mengubah bobot, terlebih dahulu dilakukan modifikasi laju pemahaman.

� = . . = .

Untuk vektor x(1) = (0.2, 0.3, 0.4, 0.5) : Sesuai dengan persamaan 2.2 dihitung D(j).

D(1) = ( . – 0.2)^2 + ( . – 0.3)^2 + ( . – 0.4)^2 + ( . – 0.5)^2 = 0.0737

D(2) = (0.8 – 0.2)^2 + (0.4 – 0.3)^2 + (0.7 – 0.4)^2 + (0.3 – 0.5)^2 = 0.5

D(j) minimum untuk j = 1. Maka vektor bobot di baris 1 dimodifikasi menurut persamaan 2.3.

= . + . . − . = .

= . + . . − . = .

= . + . . − . = .

= . + . . − . = .

Didapatkan vektor bobot baru : = [ . . .

. . . . . ] Untuk vektor x(2) = (0.1, 0.2, 0.6, 0.1) :

Sesuai dengan persamaan 2.2 dihitung D(j).


(33)

= 0.1352

D(2) = (0.8 – 0.1)^2 + (0.4 – 0.2)^2 + (0.7 – 0.6)^2 + (0.3 – 0.1)^2 = 0.58

D(j) minimum untuk j = 1. Maka vektor bobot di baris 1 dimodifikasi menurut persamaan 2.3.

= . + . . − . = .

= . + . . − . = .

= . + . . − . = .

= . + . . − . = .

Didapatkan vektor bobot baru : = [ .

. . . . . . . ] Untuk vektor x(3) = (0.2, 0.4, 0.5, 0.3) :

Sesuai dengan persamaan 2.2 dihitung D(j).

D(1) = ( . – 0.2)^2 + ( . – 0.4)^2 + ( . – 0.5)^2 + ( . – 0.3)^2 = 0.0532

D(2) = (0.8 – 0.2)^2 + (0.4 – 0.4)^2 + (0.7 – 0.5)^2 + (0.3 – 0.3)^2 = 0.4

D(j) minimum untuk j = 1. Maka vektor bobot di baris 1 dimodifikasi menurut persamaan 2.3.

= . + . . − . = .

= . + . . − . = .

= . + . . − . = .

= . + . . − . = .

Didapatkan vektor bobot baru : = [ .

. . . . . . . ] Untuk vektor x(4) = (0.1, 0.0, 0.2, 0.3) :

Sesuai dengan persamaan 2.2 dihitung D(j).

D(1) = ( . – 0.1)^2 + ( . – 0.0)^2 + ( . – 0.2)^2 + ( . – 0.3)^2 = 0.1289

D(2) = (0.8 – 0.1)^2 + (0.4 – 0.0)^2 + (0.7 – 0.2)^2 + (0.3 – 0.3)^2 = 0.9


(34)

D(j) minimum untuk j = 1. Maka vektor bobot di baris 1 dimodifikasi menurut persamaan 2.3.

= . + . . − . = .

= . + . . − . = .

= . + . . − . = .

= . + . . − . = .

Didapatkan vektor bobot baru : = [ .

. . . . . . . ]

Pengelompokan vektor dilakukan dengan menghitung jarak vektor dengan bobot yang didapatkan setelah pelatihan.

Vektor x(1) = (0.2, 0.3, 0.4, 0.5) memiliki

D(1) = (0.1386 – 0.2)^2 + ( . – 0.3)^2 + ( . − . ^ + . – 0.5)^2 = 0.0625

D(2) = (0.8 – 0.2)^2 + ( . – 0.3)^2 + ( . − . ^ + . – 0.5)^2 = 0.5

D(j) minimum untuk j = 1. Vektor x(1) = (0.2, 0.3, 0.4, 0.5) masuk dalam kelompok 1.

Vektor x(2) = (0.1, 0.2, 0.6, 0.1) memiliki

D(1) = (0.1386 – 0.1)^2 + ( . – 0.2)^2 + ( . − . ^ + . – 0.1)^2 = 0.0906

D(2) = (0.8 – 0.1)^2 + ( . – 0.2)^2 + ( . − . ^ + . – 0.1)^2 = 0.58

D(j) minimum untuk j = 1. Vektor x(2) = (0.1, 0.2, 0.6, 0.1) masuk dalam kelompok 1.

Vektor x(3) = (0.2, 0.4, 0.5, 0.3) memiliki

D(1) = (0.1386 – 0.2)^2 + ( . – 0.4)^2 + ( . − . ^ + . – 0.3)^2 = 0.0692

D(2) = (0.8 – 0.2)^2 + ( . – 0.4)^2 + ( . − . ^ + . – 0.3)^2 = 0.4


(35)

Vektor x(4) = (0.1, 0.0, 0.2, 0.3) memiliki

D(1) = (0.1386 – 0.1)^2 + ( . – 0.0)^2 + ( . − . ^ + . – 0.3)^2 = 0.0632

D(2) = (0.8 – 0.2)^2 + ( . – 0.0)^2 + ( . − . ^ + . – 0.3)^2 = 0.9

D(j) minimum untuk j = 1. Vektor x(4) = (0.1, 0.0, 0.2, 0.3) masuk dalam kelompok 1.

Contoh 3.2 Jaringan ART1

Diketahui 4 (empat) buah vektor x(1) = (1 1 1 1), x(2) = (1 1 0 0), x(3) = (0 0 1 1) dan x(4) = (0 0 0 0 ).

Digunakan jaringan ART1 untuk mengelompokkan 4 (empat) buah vektor tersebut ke dalam maksimum 2 (dua) buah kelompok.

Penyelesaian :

Inisialisasi parameter : L = 2

p = 0.5

inisialisasi bobot : = [ .. .

. .. .. ] = [ ]

Pelatihan dilakukan untuk tiap vektor : Vektor x(1) = (1 1 1 1)

s = (1 1 1 1) ‖ ‖ = 4 x = (1 1 1 1)

= . + . + . + .

= 0.8

= . + . + . + .

= 0.8

Dikarenakan nilai dan sama maka j = 1 (j dengan indeks minimum). Sesuai dengan persamaan 2.7 didapatkan x :


(36)

= [ ] x [ ] = [ ]

‖ ‖ = 4

Uji untuk reset : ‖ ‖

‖ ‖ =  reset salah

Didapatkan bobot baru sesuai dengan persamaan 2.9. = [ .. .. .. .. ]

= [ ]

Vektor x(2) = (1 1 0 0) s = (1 1 0 0)

‖ ‖ = 2 x = (1 1 0 0)

= . + . + . + .

= 0.8

= . + . + . + .

= 0.4

dengan nilai maksimum maka j = 1. Sesuai dengan persamaan 2.7 didapatkan x :

= [ ] x [ ] = [ ]

‖ ‖ = 2

Uji untuk reset : ‖ ‖

‖ ‖ =  reset salah

Didapatkan bobot baru sesuai dengan persamaan 2.9. = [ . . . . . . ]


(37)

= [ ]

Vektor x(3) = (0 0 1 1) s = (0 0 1 1)

‖ ‖ = 2 x = (0 0 1 1)

= . + . + +

= 0

= . + . + . + .

= 0.4

dengan nilai maksimum maka j = 2. Sesuai dengan persamaan 2.7 didapatkan x :

= [ ] x [ ] = [ ]

‖ ‖ = 2

Uji untuk reset : ‖ ‖

‖ ‖ =  reset salah

Didapatkan bobot baru sesuai dengan persamaan 2.9. = [ . . . . ]

= [ ]

Vektor x(4) = (0 0 0 0) s = (0 0 0 0)

‖ ‖ = 0 x = (0 0 0 0)

= . + . + +

= 0


(38)

= 0

Dikarenakan nilai dan sama maka j = 1 (j dengan indeks minimum). Sesuai dengan persamaan 2.7 didapatkan x :

= [ ] x [ ] = [ ]

‖ ‖ = 0

Uji untuk reset : ‖ ‖

‖ ‖ =  reset benar maka = − (inhibited) = −

=

dengan nilai maksimum maka j = 2. x = (0 0 0 0)

‖ ‖ = 0 ‖ ‖

‖ ‖ =  reset benar maka = − (inhibited)

Dikarenakan dan inhibited maka perhitungan dihentikan. Bobot yang didapatkan dari proses pelatihan :

= [ . . . . ]

Pengelompokan vektor dilakukan dengan mengalikan vektor masukan dengan bobot yang didapatkan setelah pelatihan.

Vektor x(1) = (1 1 1 1)

= . + . + +

= 1.3334

= + + . + .

= 1.3334

Dikarenakan nilai dan sama maka j = 1 (j dengan indeks minimum)  kelompok 1.

Vektor x(2) = (1 1 0 0)

= . + . + +

= 1.3334


(39)

= 0

dengan nilai maksimum maka j = 1  kelompok 1. Vektor x(3) = (0 0 1 1)

= . + . + +

= 0

= + + . + .

= 1.3334

dengan nilai maksimum maka j = 2  kelompok 2. Vektor x(1) = (0 0 0 0)

= . + . + +

= 0

= + + . + .

= 0

Dikarenakan nilai dan sama maka j = 1 (j dengan indeks minimum)  kelompok 1.

3.2 Pemodelan Sistem

Sistem pada penelitian ini dimodelkan dengan UML (Unified Modelling Language). Model UML yang digunakan pada penelitian ini yaitu diagram kasus penggunaan (use case diagram), diagram aktivitas (activity diagram) dan diagram urutan aksi - aksi (sequence diagram).

3.2.1 Diagram Kasus Penggunaan (Use Case Diagram)

Kasus penggunaan (use case) merupakan deskripsi dari interaksi antara aktor dan sistem yang ditujukan untuk memenuhi kebutuhan pengguna. Suatu kasus penggunaan merupakan deskripsi langkah – langkah interaksi antara aktor dan sistem untuk mencapai hasil tertentu. Kasus penggunaan seringkali merepresentasikan fungsional yang dapat dilakukan oleh aktor dari sistem. Kasus penggunaan juga merefleksikan tujuan seorang aktor ketika menggunakan sistem (Siahaan, 2012).


(40)

Gambar 3.4 Diagram kasus penggunaan (use case diagram)

Tabel 3.1 Dokumentasi naratif kasus penggunaan (use case) pelatihan Kohonen dan ART1

Nama Kasus Penggunaan (Use Case)

Pelatihan Kohonen dan ART1.

Aktor Pengguna.

Deskripsi Kasus pengunaan (use case) ini mendeskripsikan pelatihan jaringan saraf tiruan menggunakan metode Kohonen dan metode ART1. Citra tanda tangan sebagai data masukan di sistem dilatih untuk menghasilkan bobot yang akan digunakan dalam proses pengujian.

Prakondisi Telah masuk dalam tampilan menu utama.

Pemicu Kasus pengunaan (use case) disusun ketika bobot baru diperlukan.


(41)

1. Buka citra.

2. Binerisasi

3. Thinning

4. Pemotongan

5. Ekstraksi Fitur

6. Pengisian laju pemahaman jaringan kohonen.

7. Pengisian parameter vigilance jaringan ART1. 8. Pengisian iterasi

maksimum. 9. Pelatihan.

1. Dibuka jendela penyimpanan dan ditampilkan citra yang telah dipilih.

2. Ditampilkan citra hasil binerisasi

3.Ditampilkan citra hasil thinning.

4.Ditampilkan citra hasil pemotongan.

5.Ditampilkan citra hasil ekstraksi fitur.

6.Tidak ada.

7.Tidak ada.

8.Tidak ada.

9.Bobot disimpan dalam basis data dan waktu pelatihan ditampilkan. Bidang Alternatif 1. Jika jumlah file citra yang dipilih tidak sesuai (20 file

citra), muncul pesan error.

2. Digunakan nilai kegagalan (default) jika laju pemahaman jaringan kohonen, parameter vigilance ART1 dan iterasi maksimum tidak diisi oleh pengguna.

3. Tombol reset citra berguna untuk menghapus citra yang telah ditampilkan.

4. Tombol reset bobot berguna untuk mengembalikan nilai bobot ke nilai awal.


(42)

Hasil penentuan akhir Kasus pengunaan (use case) berakhir ketika pengguna menerima tampilan kotak dialog keterangan pelatihan telah selesai.

Post kondisi Bobot baru telah tersimpan.

Tabel 3.2 Dokumentasi naratif kasus penggunaan (use case) pengujian Kohonen dan ART1

Nama Kasus

Penggunaan (Use Case)

Pengujian Kohonen dan ART1.

Aktor Pengguna.

Deskripsi Kasus pengunaan (use case) ini mendeskripsikan pengujian jaringan saraf tiruan menggunakan metode Kohonen dan metode ART1. Sistem mengenali citra tanda tangan menggunakan hasil pelatihan.

Prakondisi 1.Telah masuk dalam tampilan menu utama. 2.Telah didapatkan bobot hasil pelatihan.

Pemicu Kasus penggunaan (use case) disusun ketika tanda tangan akan dikenali.

Bidang Khusus Kegiatan Pengguna Jawaban Sistem 1.Pemilihan jumlah citra.

2.Buka citra.

3.Uji.

1. Tidak ada.

2. Dibuka jendela penyimpanan dan ditampilkan citra yang telah dipilih.

3. Proses pengujian.

Informasi mengenai hasil, waktu dan persentase citra uji yang benar hasil pengujian ditampilkan.


(43)

Bidang Alternatif 1.Jika file citra yang dipilih tidak sesuai dengan jumlah citra yang dipilih, muncul pesan error.

2.Tombol reset citra berguna untuk menghapus citra yang telah ditampilkan.

Hasil penentuan akhir Kasus pengunaan (use case) berakhir ketika pengguna menerima tampilan kotak dialog keterangan pengujian telah selesai.

Post kondisi Informasi mengenai hasil, waktu dan persentase citra uji yang benar hasil pengujian ditampilkan.

3.2.2 Diagram Aktivitas (Activity Diagram)

Diagram aktivitas (activity diagram) yang disediakan oleh UML melengkapi kasus penggunaan (use case) yang telah dibuat sebelumnya dengan memberikan representasi grafis dari aliran – aliran interaksi di dalam suatu skenario yang sifatnya spesifik. Berikut ini diagram aktivitas dari sistem yang dirancang (Pressman, 2012).


(44)

(45)

Gambar 3.6 Diagram aktivitas (activity diagram) pengujian sistem


(46)

Gambar 3.8 Diagram aktivitas (activity diagram) menampilkan grafik pengujian

3.2.3 Diagram Urutan Aksi – aksi (Sequence Diagram)

Diagram urutan aksi – aksi (sequence diagram) bermanfaat untuk memperlihatkan bagaimana kejadian – kejadian yang terjadi bisa mengakibatkan transisi dari suatu objek ke objek lainnya (Pressman, 2012).

Gambar 3.9 Diagram urutan aksi – aksi (sequence diagram) sistem 3.3 Perancangan Flowchart


(47)

Flowchart merupakan sebuah diagram yang menggambarkan aliran proses dengan menampilkan langkah – langkah proses tersebut. Flowchart digunakan untuk menganalisis, mendesain dan mendokumentasikan proses.

Sistem yang dibangun mempunyai alur mulai dari prapengolahan citra, ekstraksi fitur, pelatihan sampai pengujian.

3.3.1 Flowchart Binerisasi Citra

Pada gambar 3.10 ditampilkan diagram alur proses binerisasi citra.

mulai

citra latih (a = 20)

a = 1

citra latih (a)

ubah ukuran citra latih menjadi 115 x

115 piksel

ubah citra latih RGB menjadi citra

abu - abu

pengambangan citra (thresholding)

ubah citra menjadi citra biner

a <= 20

A

A

y <= jumlah kolom (citra

latih(a))

ya y = 1

citra biner (x, y) == 0

tidak

citra biner = 1 ya

citra biner = 0 ya

x = x + 1 y = y + 1

x = 1

ubah tipe data citra biner (double) menjadi citra biner

(logical)

tampil citra biner

a = a + 1

selesai x <= jumlah

baris(citra latih(a)) tidak ya tidak tidak

Gambar 3.10 Flowchart binerisasi citra Pseudocode proses binerisasi citra :

citralatih(1..20)  axes(1..20) for a = 1 : 20


(48)

citra latih  imresize(citra latih, [115 115]) citra latih abu - abu  rgb2gray(citra latih)

citra thresholding  graythresh(citra latih abu-abu) citra biner  im2bw(citra latih abu-abu, citra thresholding)

[baris, kolom]  size(citra biner) for x  1 : baris

for y  1 : kolom

if citra biner(x, y) == 0 citra biner1(x, y)  1 elseif citra biner(x, y) == 1 citra biner1(x, y)  0 end

end end

citra biner1  logical(citra biner1) tampil(citra biner1)

end

3.3.2 Flowchart Thinning Citra


(49)

mulai

a = 1

a <= 20 citra latih (a = 20)

citra biner (a)

citra ditipiskan dengan morfologi (skel) citra

biner

selesai

tidak ya

tampil citra latih tipis

a = a + 1

Gambar 3.11 Flowchart thinning citra

Pseudocode proses thinning citra :

citra latih(1..20)  axes(1..20) for a  1 : 20

citra biner  getimage(citra latih(a))

citra latih tipis  bwmorph(citra biner, 'skel', Inf) axes(citra latih(a))

imshow(citra latih tipis) end


(50)

mulai

a = 1

a <= 20 citra latih (a = 20)

citra latih tipis (a)

cari baris dan kolom citra latih tipis yang memiliki

nilai 1 (putih)

selesai ya

citra latih yang dipotong disusun berdasarkan nilai minimal sampai maksimal baris dan kolom citra latih

ubah ukuran citra dipotong menjadi 115 x 115 piksel

tampil citra latih dipotong

tidak

a = a + 1

Gambar 3.12 Flowchart pemotongan citra

Pada gambar 3.12 dapat dilihat diagram alur proses pemotongan citra. Citra dipotong dengan menghapus baris dan kolom citra yang tidak memiliki nilai 1 (putih).


(51)

Pseudocode proses pemotongan citra :

citra latih(1..20)  axes(1..20) for a  1 : 20

citra latih tipis  getimage(citra latih(a)) [b, k]  find(citra latih tipis)

citra latih dipotong  citra latih tipis (min(b(:)):max(b(:)), min(k(:)): max(k(:)))

citra latih dipotong  imresize(citra latih dipotong, [115 115])

axes(citra latih(a)) imshow(citra latih dipotong) end

3.3.4 Flowchart Ekstraksi Fitur

Pada gambar 3.13 ditampilkan diagram alur proses ekstraksi fitur. Pseudocode proses ekstraksi fitur :

citra latih(1..20)  axes(1..20) for a  1 : 20

citra latih dipotong  getimage(citra latih(a)) [C, S]  wavedec2(citra latih dipotong, 3, 'sym4') citra latih aproksimasi  appcoef2(C, S, 'sym4', 3) axes(citra latih(a)) imshow(citra latih)

citra latih aproksimasi  reshape(citra latih aproksimasi, 1, 400)

simpan citra latih aproksimasi end


(52)

mulai

a = 1

a <= 20 citra latih

(a = 20)

citra latih dipotong (a)

citra latih aproksimasi dari hasil transformasi wavelet

2D

selesai ya

citra latih dipotong diekstraksi dengan

transformasi wavelet 2D

matriks citra latih hasil transformasi 20 x 20 diubah menjadi 1 x 400

citra latih aproksimasi

tampil citra latih aproksimasi

tidak

a = a + 1


(53)

3.3.5 Flowchart Pelatihan Jaringan Saraf Tiruan (JST)

Alur proses pelatihan jaringan saraf tiruan dimulai dengan masukan citra hasil prapengolahan dan ekstraksi fitur, pengisian laju pemahaman jaringan Kohonen, parameter vigilance ART1 dan iterasi maksimum. Proses pelatihan dilakukan dan menampilkan waktu pelatihan jaringan saraf tiruan Kohonen dan ART1.

Jaringan Kohonen dibentuk dengan menggunakan perintah newsom pada Matlab. Berikut ini adalah perintah newsom dengan keterangannya :

net = newsom(PR, [D1,D2,..., Di], TFCN, DFCN, OLR, OSTEPS, TLR, TNS) dengan

PR : matriks Rx2 yang berisi nilai minimum dan maksimum R buah elemen masukan.

Di : ukuran topologi layar (default = [5 8] TFCN : fungsi topologi (default = ‘hextop’) DFCN : fungsi jarak (default = ‘linkdist’)

OLR : laju pemahaman fase pengaturan (default = 0.9) OSTEPS : jumlah iterasi langkah pengaturan (default = 1000) TLR : laju pemahaman fase penyempurnaan (default = 0.02)


(54)

mulai bobot masukan

(awal), laju pemahaman,

iterasi maksimum

iterasi <= iterasi maksimum ?

i = 1

i <= 20

d(j) = sum((bobot masukan(baris(j)) –

pola

masukan(baris(i))^2 j <= 20

ya

ya

B

B

bobot masukan = bobot masukan + laju pemahaman*(pola masukan(baris(i))) – bobot masukan(baris(j))

laju pemahaman = laju pemahaman *

0.5

bobot masukan

(baru) [m j] = min(d)

j = 1

ya

iterasi = iterasi + 1

selesai i = i + 1

j = j + 1

tidak

tidak tidak


(55)

mulai

iterasi <= iterasi maksimum ?

i = 1

i <= 20

s = pola masukan (baris(i))

standar(s)

x = s

j = 1

C ya

ya

C

y(j) ~= -1

y(j) = sum(bobot masukan (baris(j)) *

x) ya

[m, j] = max(y)

j = min(j)

y(j) == -1 p = 0.5 * p

x = s * bobot kelompok

(baris(j))

standar(x) iterasi maksimum,

bobot masukan (awal), bobot kelompok (awal), parameter vigilance, pola masukan, L ya tidak

j <= 20

ya

j = j + 1

y(j) = 0

1 tidak tidak 2 4 tidak 3 5 tidak


(56)

5

(standar(x) / standar(s)) < p

y(j) = -1

p = 0.5 * p

bobot masukan (baris(j)) = ((L * x) / (L - 1 + standar(x)))

bobot kelompok (baris(j)) = x tidak

ya

iterasi = iterasi + 1

bobot masukan (baru), bobot

kelompok (baru)

selesai i = i + 1

1

2 3

4

Gambar 3.15 Flowchart pelatihan ART1

Pseudocode proses pelatihan JST : Pelatihan Kohonen :


(57)

net  newsom(minmax(pola_masukan), [5 5], ‘randtop', 'dist', laju_pemahaman, 1000, 0.5, 0)

net.trainFcn  'trainr'

net.trainParam.epochs  iterasi maksimum net  train(net, pola_masukan)

bobot  net.IW{1, 1}

nilai  sim(net, pola_masukan) keluaran  vec2ind(nilai)

for c  1 : 20

bariskelompok  keluaran(c)

bobotbaru  bobot(bariskelompok, :) simpan bobotbaru

end

Pelatihan ART1 :

iterasi = 0;

while iterasi <= iterasi maks for i  1 : 20

s  pola masukan(i, :) standar(s)  sum(s) x  s

for j  1 : 20 y(j)  0 if y(j) ~= -1

y(j)  sum(b(j, :) .* x) end

end

[m, j]  max(y) j = min(j) if y(j) == -1


(58)

p  0.5 * p else

x  s .* t(j, :)

standar(x)  sum(x)

if (standar(x) / standar(s)) < p y(j)  -1

p  0.5 * p

elseif (standar(x) / standar(s)) >= p b(j, :)  ((L * x) / (L - 1 +

standar(x)))

t(j, :)  x end

end end

iterasi  iterasi + 1 end

3.3.6 Flowchart Pengujian Jaringan Saraf Tiruan (JST)

Proses pengujian dimulai dengan masukan citra asli yang diolah dan diekstraksi menjadi fitur – fitur yang digunakan dalam pengujian jaringan saraf tiruan. Citra uji yang dihasilkan diuji menggunakan bobot yang dihasilkan pada proses pelatihan jaringan saraf tiruan. Proses pengujian selesai dengan menghasilkan informasi nama pemilik tanda tangan, waktu pengujian tiap tanda tangan dan persentase akurasi untuk citra yang berjumlah 20 (dua puluh).


(59)

mulai

bobot masukan

(baru)

i = 1

i <= 20

d(j) = sum((bobot masukan(j, :) – pola

masukan(i, :)^2 j <= 20

D

D

[m j] = min(d) j = 1

ya

kelompok kelompok = j

selesai i = i + 1 ya

tidak

j = j + 1

tidak


(60)

mulai

i = 1

i <= 20

s = pola masukan (i, :)

standar(s)

x = s

j = 1

E ya

E

y(j) = sum(bobot masukan (j, :) * x)

[m, j] = max(y)

j = min(j) bobot masukan

(baru), bobot kelompok (baru), pola uji

kelompok = j

kelompok

selesai i = i + 1 j <= 20

j = j + 1

tidak tidak


(61)

Pseudocode proses pengujian JST : Pengujian Kohonen :

for i  1 : 20

s  pola_masukan1(i, :) x  s

for j  1 : 20

y(j)  sum(bobot uji(j, :) .* x) end

[m, j]  max(y) j  min(j) kelompok  j end

Pengujian ART1 :

for i  1

s  pola masukan(i, :) x  s

for j  1 : 20

y(j)  sum(b_uji(j, :) .* x) end

[m, j]  max(y) j  min(j) kelompok  j end

3.4 Perancangan Arsitektur Jaringan

Jaringan yang digunakan dalam penelitian ini adalah jaringan Kohonen dengan jaringan Adaptive Resonance Theory 1 (ART1).


(62)

Arsitektur jaringan kohonen dapat dilihat pada gambar 3.18. Jaringan terdiri dari 20 masukan. Citra tersebut akan dikelompokkan menjadi 25 kelompok.

Gambar 3.18 Arsitektur jaringan saraf tiruan metode kohonen untuk pengenalan tanda tangan

3.4.2 Jaringan Adaptive Resonance Theory 1 (ART1)

Arsitektur jaringan kohonen dapat dilihat pada gambar 3.19. Jaringan terdiri dari 20 masukan. Citra tersebut akan dikelompokkan menjadi 20 kelompok. Lapisan masukan dan lapisan tampilan terhubung dengan reset. adalah bobot yang digunakan dari lapisan tampilan ke lapisan kelompok. adalah bobot yang digunakan dari lapisan kelompok ke lapisan tampilan.


(63)

Gambar 3.19 Arsitektur jaringan saraf tiruan metode ART1 untuk pengenalan tanda tangan

3.5 Perancangan Antarmuka Sistem

Sistem pengenalan pola tanda tangan ini menggunakan bahasa pemrograman Matlab R2014a. Antarmuka sistem memudahkan pengguna berinteraksi dengan sistem.

3.5.1 Halaman Utama

Gambar 3.20 menunjukkan rancangan antarmuka sistem yang pertama kali ditampilkan ketika pengguna menjalankan sistem.


(64)

Gambar 3.20 Halaman utama

Keterangan :

1. Menu pelatihan

Menu pelatihan menampilkan halaman pelatihan. 2. Menu pengujian

Menu pengujian menampilkan halaman pengujian. 3. Menu bantuan

Menu ini menampilkan penjelasan mengenai menu yang akan dipilih oleh pengguna pada halaman utama.

4. Menu keluar

Menu ini berfungsi keluar dari sistem.

3.5.2 Pengolahan Citra dan Pelatihan


(65)

Gambar 3.21 Pengolahan citra dan pelatihan

Keterangan : 1. Menu bantuan

Menu ini berfungsi menampilkan penjelasan mengenai tombol, pilihan dan kotak isian pada halaman pengolahan citra dan pelatihan.

2. Menu keluar

Menu ini berfungsi kembali ke halaman utama. 3. Tombol buka citra

Dengan meng-klik tombol tersebut, pengguna dapat memilih direktori penyimpanan file citra dan memilih citra. Citra yang terpilih langsung ditampilkan pada axes citra.

4. Tombol reset citra

Berfungsi menghapus citra pada axes. 5. Tombol binerisasi

Berfungsi mengubah citra menjadi citra biner. 6. Tombol thinning

Berfungsi menipiskan citra biner. 7. Tombol pemotongan


(66)

8. Tombol ekstraksi fitur

Berfungsi mengambil nilai fitur citra. 9. Kotak pengisian teks laju pemahaman

Pengguna dapat mengisi nilai laju pemahaman Kohonen pada kotak teks ini. 10. Kotak pengisian teks parameter vigilance

Pengguna dapat mengisi nilai parameter vigilance ART1 pada kotak teks ini. 11. Kotak pengisian teks iterasi maksimum

Pengguna dapat mengisi nilai iterasi maksimum proses pelatihan pada kotak teks ini.

12. Tombol pelatihan

Berfungsi melakukan proses pelatihan pada citra. 13. Tombol reset bobot

Berfungsi untuk mengubah nilai bobot menjadi nilai awal. 14. Axes 1 – 20

Berfungsi untuk menampilkan citra yang akan dilatih. 15. Kotak teks waktu pelatihan Kohonen

Berfungsi untuk menampilkan waktu proses pelatihan Kohonen. 16. Kotak teks waktu pelatihan ART1

Berfungsi untuk menampilkan waktu proses pelatihan ART1.

3.5.3 Pengujian


(67)

Gambar 3.22 Pengujian

Keterangan :

1. Menu bantuan

Menu ini berfungsi menampilkan penjelasan mengenai tombol, pilihan dan kotak isian pada halaman pengujian.

2. Menu keluar

Menu ini berfungsi kembali ke halaman utama. 3. Axes 1 – 20

Tempat ditampilkan citra pengujian. 4. Menu popup jumlah citra

Pengguna dapat memilih jumlah citra yang digunakan dalam proses pengujian. Jumlah tersebut dapat dipilih melalui menu popup ini. Jumlah yang dipilih adalah 1 (satu) citra dan 20 (dua puluh) citra.

5. Tombol buka citra

Dengan meng-klik tombol tersebut, pengguna dapat memilih direktori penyimpanan file citra dan memilih citra sesuai jumlah yang dipilih. Citra yang terpilih langsung ditampilkan pada panel citra uji.


(68)

Berfungsi menghapus citra pada axes. 7. Tombol uji

Berfungsi melakukan proses pengujian citra. 8. Tabel hasil

Berfungsi menampilkan hasil pengujian banyak (20 dua puluh citra pengujian). 9. Kotak teks nama pemilik tanda tangan Kohonen

Berfungsi untuk menampilkan hasil pengujian Kohonen yaitu nama pemilik tanda tangan.

10.Kotak teks waktu pengujian Kohonen

Berfungsi untuk menampilkan waktu proses pengujian Kohonen. 11.Kotak teks nama pemilik tanda tangan ART1

Berfungsi untuk menampilkan hasil pengujian ART1 yaitu nama pemilik tanda tangan.

12.Kotak teks waktu pengujian ART1

Berfungsi untuk menampilkan waktu proses pengujian ART1. 13.Tombol simpan data tabel

Berfungsi untuk menyimpan data pada tabel ke file excel. 14.Kotak teks persentase akurasi Kohonen

Berfungsi untuk menampilkan hasil persentase akurasi pengujian Kohonen. 15.Kotak teks persentase akurasi ART1

Berfungsi untuk menampilkan hasil persentase akurasi pengujian ART1. 16.Tombol grafik pengujian

Berfungsi untuk menampilkan grafik waktu pengujian pada setiap tanda tangan.

3.5.4 Bantuan

Gambar 3.23 menunjukkan rancangan antarmuka sistem halaman bantuan pada halaman utama. Gambar 3.24 menunjukkan rancangan antarmuka sistem halaman bantuan pada halaman pelatihan. Gambar 3.25 menunjukkan rancangan antarmuka sistem halaman bantuan pada halaman pengujian.


(69)

Gambar 3.23 Bantuan halaman utama

Keterangan :

1. Menu keluar

Menu ini berfungsi kembali ke halaman utama. 2. Axes (Gambar)

3. Kotak teks


(70)

Gambar 3.24 Bantuan halaman pelatihan

Keterangan :

1. Menu keluar

Menu ini berfungsi kembali ke halaman pelatihan. 2. Axes (Gambar)

3. Kotak teks


(71)

Gambar 3.25 Bantuan halaman pengujian

Keterangan :

1. Menu keluar

Menu ini berfungsi kembali ke halaman pengujian. 2. Axes (Gambar)

3. Axes (Gambar) 4. Kotak teks

Berfungsi menampilkan teks bantuan. 5. Kotak teks

Berfungsi menampilkan teks bantuan. 6. Axes (Gambar)

7. Kotak teks


(72)

Bab 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Implementasi sistem pengenalan pola tanda tangan menggunakan metode Kohonen dan metode Adaptive Resonance Theory 1 (ART1) ini dibangun menggunakan bahasa pemrograman Matlab versi R2014a. Sistem diterapkan dengan menggunakan komputer yang memiliki sistem operasi Windows 8 dan perangkat keras prosesor Intel Core i7, CPU 2.40Ghz, RAM 6 GB, dan harddisk 1 TB.

4.1.1 Tampilan Antarmuka Sistem

Sistem pengenalan tanda tangan diimplementasikan dalam beberapa tampilan antarmuka, yaitu halaman utama, halaman pelatihan, halaman pengujian dan halaman bantuan.

4.1.1.1 Halaman Utama

Gambar 4.1 adalah tampilan awal saat pertama kali sistem dijalankan. Pada halaman ini terdapat menu pelatihan, menu pengujian, menu bantuan dan menu keluar. Menu pelatihan berfungsi menampilkan halaman pelatihan. Menu pengujian berfungsi menampilkan halaman pengujian. Menu bantuan berfungsi menampilkan halaman bantuan untuk halaman utama. Menu keluar berfungsi keluar dari aplikasi.


(73)

Gambar 4.1 Halaman utama

4.1.1.2 Pelatihan

Gambar 4.2 adalah tampilan halaman pelatihan jaringan saraf tiruan. Pada halaman ini dapat dilakukan proses prapengolahan citra, ekstraksi fitur dan pelatihan jaringan saraf tiruan metode Kohonen dan ART1. Terdapat dua menu pada halaman ini, yaitu menu bantuan dan keluar. Menu bantuan berfungsi menampilkan halaman bantuan untuk halaman pelatihan. Menu keluar berfungsi untuk keluar dari halaman pelatihan dan kembali ke halaman utama.

Terdapat delapan tombol yang dapat digunakan. Tombol pertama adalah tombol buka citra yang berfungsi membuka direktori penyimpanan dan pengguna dapat memilih dua puluh citra yang akan dilatih. Tombol reset citra berfungsi untuk menghapus citra yang ada di panel citra. Tombol binerisasi berfungsi untuk mengubah citra asli menjadi citra biner. Tombol thinning berfungsi menipiskan citra biner. Tombol pemotongan berfungsi untuk memotong baris dan kolom citra yang tidak memiliki nilai 1 (putih). Tombol ekstraksi fitur berfungsi mengekstrak fitur citra. Tombol pelatihan berfungsi melakukan proses pelatihan dan tombol reset bobot berfungsi mengubah bobot yang ada pada basis data menjadi nilai awal.


(74)

Gambar 4.2 Pelatihan

4.1.1.2.1 Prapengolahan Citra dan Ekstraksi Fitur

Sebelum memulai proses pelatihan, terlebih dahulu citra diolah dan diekstrak agak menghasilkan pola masukan yang diinginkan. Langkah pertama yang dilakukan adalah membuka citra melalui tombol buka citra. Langkah tersebut dapat dilihat pada gambar 4.3.


(75)

Gambar 4.3 Buka citra

Setelah citra dipilih, maka citra pelatihan tampil pada panel citra. Langkah tersebut dapat dilihat pada gambar 4.4.

Gambar 4.4 Citra pelatihan

Citra asli melalui proses binerisasi agar menjadi citra biner. Hasil dari langkah tersebut dapat dilihat pada gambar 4.5.


(76)

Setelah dilakukan proses binerisasi, dilakukan proses thinning dengan menekan tombol thinning. Langkah tersebut dapat dilihat pada gambar 4.6.

Gambar 4.6 Thinning pada citra

Setelah itu dilakukan proses pemotongan citra untuk menghilangkan baris dan kolom citra yang tidak memiliki nilai 1 (putih). Langkah tersebut dapat dilihat pada gambar 4.7.


(77)

Agar didapatkan nilai – nilai fitur yang menjadi masukan pada jaringan saraf tiruan dilakukan proses ekstraksi fitur Transformasi Wavelet 2D pada citra. Nilai – nilai fitur tersebut akan langsung tersimpan pada basis data. Langkah tersebut dapat dilihat pada gambar 4.8.

Gambar 4.8 Proses ekstraksi fitur Hasil dari proses ekstraksi fitur dapat dilihat pada gambar 4.9.


(78)

Citra dapat dihapus jika pengguna ingin mengganti citra yang akan dilatih menggunakan tombol reset citra.

4.1.1.2.2 Pelatihan Jaringan Saraf Tiruan

Citra yang telah diolah dan dihasilkan masukan untuk jaringan saraf tiruan dilatih menggunakan metode Kohonen dan ART1. Pengguna dapat mengisi laju pemahaman untuk metode Kohonen, parameter vigilance untuk ART1 dan iterasi maksimum untuk proses pelatihan. Untuk rentang nilai yang dapat digunakan, pengguna dapat melihat menu bantuan pada halaman pelatihan (Gambar 4.19). Tombol pelatihan digunakan untuk memulai proses pelatihan. Pelatihan yang selesai akan menghasilkan bobot baru yang langsung disimpan pada basis data. Waktu pelatihan jaringan saraf tiruan (dalam detik) tersebut langsung ditampilkan pada halaman pelatihan.

Gambar 4.10 Proses pelatihan Waktu pelatihan ditampilkan setelah proses pelatihan selesai.


(79)

Gambar 4.11 Waktu proses pelatihan

4.1.1.3 Pengujian

Gambar 4.12 adalah tampilan awal saat menu pengujian pada halaman utama dipilih. Halaman pengujian memiliki lima tombol yang dapat digunakan. Tombol buka citra yang berfungsi membuka direktori penyimpanan citra. Citra yang dipilih akan ditampilkan pada panel citra uji dengan jumlah sesuai dengan jumlah citra uji yang dipilih. Tombol reset citra yang berfungsi menghapus citra yang telah ditampilkan pada panel citra uji. Tombol uji berfungsi melakukan proses pengujian pada citra uji. Hasil pengujian akan ditampilkan sesuai dengan jumlah citra uji yang dipilih. Hasil pengujian untuk satu citra uji akan ditampilkan pada panel hasil penelitian. Untuk pengujian citra banyak (dua puluh), hasil pengujian ditampilkan di tabel hasil pada panel hasil pengujian banyak. Tombol simpan data tabel berfungsi menyimpan data hasil pengujian pada tabel dalam bentuk file excel. Tombol grafik pengujian berfungsi menampilkan grafik waktu pengujian metode Kohonen dan ART1.


(80)

Gambar 4.12 Pengujian

Langkah pertama yang dilakukan pada halaman pengujian yaitu membuka file citra dengan memilih jumlah citra uji yang diinginkan.

4.1.1.3.1 Pengujian dengan Satu Citra Uji

Gambar 4.13 adalah tampilan saat citra uji dibuka.

Gambar 4.13 Citra uji

Setelah dilakukan proses pengujian. Hasil pengujian yang didapatkan ditampilkan pada panel hasil penelitian seperti pada gambar 4.14.


(81)

Gambar 4.14 Hasil pengujian satu citra uji

4.1.1.3.2 Pengujian dengan 20 (dua puluh) Citra Uji

Setelah memilih dua puluh citra uji pada direktori penyimpanan, maka citra uji ditampilkan pada panel citra uji. Langkah tersebut dapat dilihat pada gambar 4.15.


(82)

Setelah dilakukan proses pengujian maka hasil pengujian ditampilkan pada tabel hasil pada panel hasil pengujian banyak. Langkah tersebut dapat dilihat pada gambar 4.16.

Gambar 4.16 Hasil pengujian (dua puluh citra)

Grafik waktu hasil pengujian dengan metode Kohonen dan ART1 ditampilkan dengan menggunakan tombol grafik pengujian. Langkah tersebut dapat dilihat pada gambar 4.17.


(83)

Gambar 4.17 Grafik pengujian

Grafik waktu pengujian sesuai dengan dua puluh citra tanda tangan yang diuji. Keterangan grafik pengujian :

1. Sumbu x diberi label angka 1 sampai 20 sebagai representasi tanda tangan dengan keterangan keterangan pemilik tanda tangan sebagai berikut :

1. Abidah 11. Khairun nissa 2. Agung 12. Martina 3. Al Mizfar 13. Mawaddah 4. Anandhini 14. Nurkholija

5. Ema 15. Retri

6. Febri 16. Richard 7. Fikri 17. Ruth Mey 8. Ismail 18. Sengli

9. Ita 19. Susi

10.Joshua 20. Tifany 2. Sumbu y adalah waktu pengujian.


(84)

Halaman utama memiliki menu bantuan dengan tampilan seperti pada gambar 4.18.

Gambar 4.18 Bantuan halaman utama Gambar 4.19 adalah tampilan menu bantuan untuk halaman pelatihan.

Gambar 4.19 Bantuan pelatihan


(85)

Gambar 4.20 Bantuan pengujian

4.2 Pengujian dan Hasil Pengujian

Pengujian dilakukan untuk mengetahui apakah sistem dapat berjalan sesuai dengan tujuan yang diinginkan yaitu dapat mengenali pola tanda tangan. Metode yang digunakan dalam pengenalan pola tanda tangan tersebut adalah metode Kohonen dan ART1. Parameter yang dibandingkan dalam pengenalan pola tanda tangan tersebut adalah waktu pelatihan, waktu pengujian dan persentase akurasi (persentase citra yang benar saat diuji).

4.2.1 Waktu Pelatihan

Adapun parameter dan waktu pelatihan pada proses pelatihan metode Kohonen dan ART1. Dapat dilihat pada tabel 4.1 dan 4.2.

Tabel 4.1 Parameter dan waktu pelatihan Kohonen Kohonen

Ukuran Topolo

Fungsi Topolo

gi

Fungsi Jara k

Laju Pemahama

n

Iterasi Maksimu

m

Waktu Pelatiha


(86)

gi Layar

[5 5] randtop dist 0.5 1000 68.0842

detik

Tabel 4.2 Parameter dan waktu pelatihan ART1 ART1

Parameter Vigilance Iterasi Maksimum Waktu Pelatihan

0.5 1000 6.83757 detik

Berdasarkan hasil pelatihan pada tabel 4.1 dan 4.2, proses pelatihan metode Kohonen dengan topologi randtop, fungsi jarak dist, laju pemahaman 0.5 dan iterasi maksimum 1000 menghasilkan waktu 68.0842 detik. Untuk proses pelatihan metode ART1 dengan pelatihan cepat (fast learning) parameter vigilance 0.5 dan iterasi maksimum 1000 menghasilkan waktu 6.83757 detik. Berdasarkan hasil pelatihan tersebut, dapat disimpulkan bahwa proses pelatihan metode ART1 lebih cepat dibandingkan proses pelatihan metode Kohonen.

4.2.2 Waktu Pengujian dan Persentase Akurasi Pengujian

Proses pengujian dilakukan menggunakan metode Kohonen dan ART1. Pengujian dilakukan pada citra yang telah dilatih dan citra yang tidak dilatih.

4.2.2.1 Pengujian pada citra yang telah dilatih

Dua puluh citra yang telah dilatih sebelumnya menggunakan metode Kohonen dan ART1, diuji dengan hasil proses pengujian yang dapat dilihat pada tabel 4.3.

Tabel 4.3 Hasil pengujian pada citra yang telah dilatih No. Citra Uji Nama

Pemilik Citra Uji

Hasil

(Kohonen)

Waktu Pengujian (detik) (Kohonen)

Hasil (ART1)

Waktu

Pengujian (detik)


(87)

1. Abidah1 Abidah 0.0020137 detik

Abidah 0.001823 detik

2. Agung1 Agung 0.00034168

detik

Agung 0.00040839 detik 3. Al Mizfar1 Al Mizfar 0.00031431

detik

Al Mizfar 0.00040711 detik 4. Anandhini1 Anandhini 0.00031431

detik

Anandhini 0.00040668 detik

5. Ema1 Ema 0.00031175

detik

Ema 0.00040711 detik

6. Febri1 Febri 0.00031217

detik

Febri 0.00040754 detik

7. Fikri1 Fikri 0.00031217

detik

Fikri 0.00040668 detik

8. Ismail1 Ismail 0.00031217

detik

Ismail 0.00040796 detik

9. Ita1 Ita 0.00031132

detik

Ita 0.00040625 detik

10. Joshua1 Joshua 0.00031303

detik

Joshua 0.00040369 detik

11. Khairun

nisa1

Khairun nisa 0.00031132 detik

Khairun nisa

0.00040668 detik 12. Martina1 Martina 0.00031046

detik

Martina 0.00041224 detik 13. Mawaddah1 Mawaddah 0.00031175

detik

Mawaddah 0.00041053 detik 14. Nurkholija1 Nurkholija 0.00033013

detik

Nurkholija 0.00041438 detik


(1)

3.2.3 Diagram Urutan Aksi - aksi (Sequence Diagram) 50

3.3 Perancangan Flowchart 51

3.3.1 Flowchart Binerisasi Citra 51

3.3.2 Flowchart Thinning Citra 52

3.3.3 Flowchart Pemotongan Citra 54

3.3.4 Flowchart Ekstraksi Fitur 55

3.3.5 Flowchart Pelatihan Jaringan Saraf Tiruan (JST) 57 3.3.6 Flowchart Pengujian Jaringan Saraf Tiruan (JST) 62

3.4 Perancangan Arsitektur Jaringan 65

3.4.1 Jaringan Kohonen 66

3.4.2 Jaringan Adaptive Resonance Theory 1 (ART1) 66

3.5 Perancangan Antarmuka Sistem 67

3.5.1 Halaman Utama 67

3.5.2 Pengolahan Citra dan Pelatihan 68

3.5.3 Pengujian 70

3.5.4 Bantuan 72

Bab 4 Implementasi dan Pengujian Sistem

4.1 Implementasi Sistem 76

4.4.1 Tampilan Antarmuka Sistem 76

4.4.1.1 Halaman Utama 76

4.4.1.2 Pelatihan 77

4.1.1.2.1 Prapengolahan Citra dan Ekstraksi

Fitur 78 4.1.1.2.2 Pelatihan Jaringan Saraf Tiruan 83

4.4.1.3 Pengujian 84

4.1.1.3.1 Pengujian dengan Satu Citra Uji 85 4.1.1.3.2 Pengujian dengan 20 (dua puluh)

Citra Uji 86

4.4.1.4 Bantuan 89

4.2 Pengujian dan Hasil Pengujian 91

4.2.1 Waktu Pelatihan 91


(2)

4.2.2.1 Pengujian pada citra yang telah dilatih 92 4.2.2.2 Pengujian pada citra yang tidak dilatih 94 4.3 Analisis Penyebab Kesalahan dalam Mengenali Pola Tanda

Tangan 102

4.3.1 Analisis Penyebab Kesalahan dalam Mengenali Pola

Tanda Tangan Menggunakan Metode Kohonen 102 4.3.2 Analisis Penyebab Kesalahan dalam Mengenali Pola

Tanda Tangan Menggunakan Metode ART1 104 Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan 107

5.2 Saran 108

Daftar Pustaka 109

Lampiran Listing Program A-1 Lampiran Citra Tanda Tangan B-1 Lampiran Curriculum Vitae C-1


(3)

DAFTAR GAMBAR

Hal. Gambar 2.1 Model matematis dari jaringan saraf tiruan 7

Gambar 2.2 Jaringan saraf dengan lapisan tunggal 9

Gambar 2.3 Jaringan saraf dengan lapisan banyak 10

Gambar 2.4 Jaringan saraf dengan lapisan kompetitif 11

Gambar 2.5 Arsitektur jaringan kohonen 13

Gambar 2.6 Struktur sasar ART1 15

Gambar 2.7 Struktur sistem pengenalan pola 18

Gambar 2.8 Koordinat citra digital 19

Gambar 2.9 Ilustrasi digitalisasi citra 20

Gambar 2.10 Transformasi Wavelet 2D 1 level 24

Gambar 2.11 Skema hasil Transformasi Wavelet 2D 1 level 24

Gambar 3.1 Diagram Ishikawa 28

Gambar 3.2 Prapengolahan citra 30

Gambar 3.3 Ekstraksi fitur 31

Gambar 3.4 Diagram kasus penggunaan (Use case Diagram) 44 Gambar 3.5 Diagram aktivitas (Activity Diagram) pelatihan

sistem 48

Gambar 3.6 Diagram aktivitas (Activity Diagram) pengujian

sistem 49

Gambar 3.7 Diagram aktivitas (Activity Diagram) simpan data

tabel hasil 49

Gambar 3.8 Diagram aktivitas (Activity Diagram) menampilkan

grafik pengujian 50

Gambar 3.9 Diagram urutan aksi – aksi (Sequence Diagram)

Sistem 50

Gambar 3.10 Flowchart binerisasi citra 51

Gambar 3.11 Flowchart thinning citra 53


(4)

Gambar 3.13 Flowchart ekstraksi fitur 56

Gambar 3.14 Flowchart pelatihan Kohonen 58

Gambar 3.15 Flowchart pelatihan ART1 59

Gambar 3.16 Flowchart pengujian Kohonen 63

Gambar 3.17 Flowchart pengujian ART1 64

Gambar 3.18 Arsitektur jaringan saraf tiruan metode Kohonen

untuk pengenalan tanda tangan 66

Gambar 3.19 Arsitektur jaringan saraf tiruan metode ART1

untuk pengenalan tanda tangan 67

Gambar 3.20 Halaman utama 68

Gambar 3.21 Pengolahan citra dan pelatihan 69

Gambar 3.22 Pengujian 71

Gambar 3.23 Bantuan halaman utama 73

Gambar 3.24 Bantuan halaman pelatihan 74

Gambar 3.25 Bantuan halaman pengujian 75

Gambar 4.1 Halaman utama 77

Gambar 4.2 Pelatihan 78

Gambar 4.3 Buka citra 79

Gambar 4.4 Citra pelatihan 79

Gambar 4.5 Binerisasi citra asli 80

Gambar 4.6 Thinning pada citra 80

Gambar 4.7 Pemotongan citra 81

Gambar 4.8 Proses ekstraksi fitur 82

Gambar 4.9 Hasil ekstraksi fitur 82

Gambar 4.10 Proses pelatihan 83

Gambar 4.11 Waktu proses pelatihan 84

Gambar 4.12 Pengujian 85

Gambar 4.13 Citra uji 85

Gambar 4.14 Hasil pengujian satu citra uji 86

Gambar 4.15 Citra uji (dua puluh citra) 87

Gambar 4.16 Hasil pengujian (dua puluh citra) 87

Gambar 4.17 Grafik pengujian 88


(5)

Gambar 4.19 Bantuan pelatihan 90

Gambar 4.20 Bantuan Pengujian 90

Gambar 4.21 Grafik perbandingan waktu pengujian metode


(6)

DAFTAR TABEL

Hal. Tabel 3.1 Dokumentasi naratif kasus penggunaan (Use case)

pelatihan Kohonen dan ART1 45

Tabel 3.2 Dokumentasi naratif kasus penggunaan (Use case)

pengujian Kohonen dan ART1 46

Tabel 4.1 Parameter dan waktu pelatihan Kohonen 91

Tabel 4.2 Parameter dan waktu pelatihan ART1 91

Tabel 4.3 Hasil pengujian pada citra yang telah dilatih 92 Tabel 4.4 Hasil pengujian pada citra yang tidak dilatih 94 Tabel 4.5 Citra uji dengan target kelompok dan keluarannya

menggunakan metode Kohonen 103

Tabel 4.6 Citra uji dengan target kelompok dan keluarannya