Implementasi dan Perbandingan Pengenalan Pola Tanda Tangan Menggunakan Metode Kohonen dan Metode Adaptive Resonance Theory (ART)
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