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
function keluar_Callback(hObject, eventdata, handles)
Universitas Sumatera Utara
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);
Universitas Sumatera Utara
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);
Universitas Sumatera Utara
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);
p = str2double(get(handles.parameter, 'String'));
Universitas Sumatera Utara
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 = 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));
axes(handles.citrauji);
Universitas Sumatera Utara
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...');
steps = 1;
Universitas Sumatera Utara
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
Universitas Sumatera Utara
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
Universitas Sumatera Utara
nama =
case 5
nama =
case 6
nama =
case 7
nama =
case 8
nama =
case 9
nama =
case 10
nama =
case 11
nama =
case 12
nama =
case 13
nama =
case 14
nama =
case 15
nama =
case 16
nama =
case 17
nama =
case 18
nama =
case 19
nama =
case 20
nama =
otherwise
nama =
'Anandhini';
'Ema';
'Febri';
'Fikri';
'Ismail';
'Ita';
'Joshua';
'Khairun nisa';
'Martina';
'Mawaddah';
'Nurkholija';
'Retri';
'Richard';
'Ruth Mey';
'Sengli';
'Susi';
'Tifany';
'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
Universitas Sumatera Utara
nama1
case 3
nama1
case 4
nama1
case 5
nama1
case 6
nama1
case 7
nama1
case 8
nama1
case 9
nama1
case 10
nama1
case 11
nama1
case 12
nama1
case 13
nama1
case 14
nama1
case 15
nama1
case 16
nama1
case 17
nama1
case 18
nama1
case 19
nama1
case 20
nama1
otherwise
nama1
= 'Agung';
= 'Al Mizfar';
= 'Anandhini';
= 'Ema';
= 'Febri';
= 'Fikri';
= 'Ismail';
= 'Ita';
= 'Joshua';
= 'Khairun nisa';
= 'Martina';
= 'Mawaddah';
= 'Nurkholija';
= 'Retri';
= 'Richard';
= 'Ruth Mey';
= 'Sengli';
= 'Susi';
= 'Tifany';
= '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;
Universitas Sumatera Utara
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);
Universitas Sumatera Utara
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;
Universitas Sumatera Utara
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)
function varargout = Bantuanmenuutama(varargin)
Universitas Sumatera Utara
% --- 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. '...
Universitas Sumatera Utara
'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'...
'
dari tabel hasil pengujian'...
Universitas Sumatera Utara
'
ke file excel.'...
'2. Menampilkan grafik'...
'
pengujian'};
set(handles.isipeg3, 'String', isi3);
function keluar_Callback(hObject, eventdata, handles)
close
Pengujian
Universitas Sumatera Utara
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
Ema1
Febri1
Universitas Sumatera Utara
Ema2
Febri2
Ema3
Febri3
Ema4
Febri4
Ema5
Febri5
Fikri1
Ismail1
Fikri2
Ismail2
Fikri3
Ismail3
Fikri4
Ismail4
Fikri5
Ismail5
Ita1
Joshua1
Ita2
Joshua2
Ita3
Joshua3
Ita4
Joshua4
Universitas Sumatera Utara
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
Retri2
Richard2
Universitas Sumatera Utara
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
Susi5
Tifany5
Universitas Sumatera Utara
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)
Universitas Sumatera Utara
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]
[Martina Sipayung]
Universitas Sumatera Utara
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
function keluar_Callback(hObject, eventdata, handles)
Universitas Sumatera Utara
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);
Universitas Sumatera Utara
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);
Universitas Sumatera Utara
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);
p = str2double(get(handles.parameter, 'String'));
Universitas Sumatera Utara
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 = 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));
axes(handles.citrauji);
Universitas Sumatera Utara
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...');
steps = 1;
Universitas Sumatera Utara
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
Universitas Sumatera Utara
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
Universitas Sumatera Utara
nama =
case 5
nama =
case 6
nama =
case 7
nama =
case 8
nama =
case 9
nama =
case 10
nama =
case 11
nama =
case 12
nama =
case 13
nama =
case 14
nama =
case 15
nama =
case 16
nama =
case 17
nama =
case 18
nama =
case 19
nama =
case 20
nama =
otherwise
nama =
'Anandhini';
'Ema';
'Febri';
'Fikri';
'Ismail';
'Ita';
'Joshua';
'Khairun nisa';
'Martina';
'Mawaddah';
'Nurkholija';
'Retri';
'Richard';
'Ruth Mey';
'Sengli';
'Susi';
'Tifany';
'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
Universitas Sumatera Utara
nama1
case 3
nama1
case 4
nama1
case 5
nama1
case 6
nama1
case 7
nama1
case 8
nama1
case 9
nama1
case 10
nama1
case 11
nama1
case 12
nama1
case 13
nama1
case 14
nama1
case 15
nama1
case 16
nama1
case 17
nama1
case 18
nama1
case 19
nama1
case 20
nama1
otherwise
nama1
= 'Agung';
= 'Al Mizfar';
= 'Anandhini';
= 'Ema';
= 'Febri';
= 'Fikri';
= 'Ismail';
= 'Ita';
= 'Joshua';
= 'Khairun nisa';
= 'Martina';
= 'Mawaddah';
= 'Nurkholija';
= 'Retri';
= 'Richard';
= 'Ruth Mey';
= 'Sengli';
= 'Susi';
= 'Tifany';
= '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;
Universitas Sumatera Utara
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);
Universitas Sumatera Utara
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;
Universitas Sumatera Utara
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)
function varargout = Bantuanmenuutama(varargin)
Universitas Sumatera Utara
% --- 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. '...
Universitas Sumatera Utara
'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'...
'
dari tabel hasil pengujian'...
Universitas Sumatera Utara
'
ke file excel.'...
'2. Menampilkan grafik'...
'
pengujian'};
set(handles.isipeg3, 'String', isi3);
function keluar_Callback(hObject, eventdata, handles)
close
Pengujian
Universitas Sumatera Utara
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
Ema1
Febri1
Universitas Sumatera Utara
Ema2
Febri2
Ema3
Febri3
Ema4
Febri4
Ema5
Febri5
Fikri1
Ismail1
Fikri2
Ismail2
Fikri3
Ismail3
Fikri4
Ismail4
Fikri5
Ismail5
Ita1
Joshua1
Ita2
Joshua2
Ita3
Joshua3
Ita4
Joshua4
Universitas Sumatera Utara
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
Retri2
Richard2
Universitas Sumatera Utara
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
Susi5
Tifany5
Universitas Sumatera Utara
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
: 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)
Universitas Sumatera Utara
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]
[Martina Sipayung]
Universitas Sumatera Utara