IDENTIFIKASI TANDA TANGAN MENGGUNAKAN
GLOBAL FEATURE EXTRACTION, MOMEN INVARIAN DAN
ALGORITMA FORWARD-ONLY COUNTER PROPAGATION
ABSTRAK
Eka Putri Tambun (0722118)
Jurusan Teknik Elektro Universitas Kristen Maranatha
email : prinzessiny@gmail.com
Semakin berkembangnya komputer, para peneliti membuat representasi
buatan dari otak manusia agar komputer tersebut dapat mengerjakan tugas yang
sederhana bagi manusia.
Neural network
yang merupakan implementasi model
matematika dari proses pembelajaran seperti pada otak manusia, disimulasikan
pada komputer sehingga mampu menyelesaikan permasalahan-permasalahan yang
diberikan.
Artificial neural network
atau dalam bahasa Indonesia disebut Jaringan
Saraf Tiruan (JST) banyak digunakan dalam berbagai bidang salah satunya adalah
pengenalan pola.
Pada Tugas Akhir ini dirancang dan direalisasikan perangkat lunak untuk
mengidentifikasi kepemilikan tanda tangan 10 orang koresponden dengan
melakukan ekstraksi ciri
global feature extraction
dan momen invarian sebelum
data-data tersebut dilatih menggunakan salah satu algoritma pelatihan yaitu
Forward-only counter propagation
. Perangkat lunak ini direalisasikan
menggunakan MATLAB R2007a.
Tugas Akhir ini, perangkat lunak pengidentifikasi tanda tangan berhasil
direalisasikan dan diperoleh keberhasilan sebesar 100% untuk 40 data dari 10
koresponden (4 tanda tangan dari setiap orang) yang telah dilatih kemudian
diujikan kembali dan 100% untuk 20 data dari koresponden yang sama (2 tanda
tangan dari setiap orang) tetapi tidak dilatih.
FORWARD-ONLY COUNTER PROPAGATION ALGORITHM
ABSTRACT
Eka Putri Tambun (0722118)
Department of Electrical Engineering Maranatha Christian University
email : prinzessiny@gmail.com
As modern computers become ever more powerful, scientists provide a
method of representing human brain continue to be challenged to use machines
effectively for tasks are relatively simple for humans. Neural network which are
the implement from mathematical models of information processing as human
brain does, simulated on the computer to solve the problems given. Artificial
neural networks are of interest to researchers in many areas such as pattern
recognition.
This final project worked through design and realization of software to
identify the ownership of the 10 signatures by doing global feature extraction and
moment invariants as feature extraction before the data are trained using a training
algorithm that is Forward-Only Counter Propagation. The software is realized
using MATLAB R2007a.
Of this final project, a signature identifier software successfully realized and
obtained success rate of 100% for 40 data from 10 correspondents (4 signature of
each person) who has been trained then tested again and 100% to 20 data from the
same correspondent (2 signature of each person), but not trained.
LEMBAR PENGESAHAN
PERNYATAAN ORISINALITAS LAPORAN
PERNYATAAN PUBLIKASI LAPORAN TUGAS AKHIR
ABSTRAK
……….
...
ABSTRACT
………...
..
KATA PENGANTAR
………...
...
DAFTAR ISI
………...………...
..
DAFTAR GAMBAR
………...
..
DAFTAR TABEL
………..
..
i
ii
iii
v
vii
viii
I.
PENDAHULUAN
I.1
Latar Belakang……….
I.2
Identifikasi
Masalah………...…
..
I.3
Tujuan………..
I.4
Pembatasan Masalah………..
I.5
Sistematika Penulisan………..
II.
DASAR TEORI
II.1
Jaringan Saraf Tiruan………
II.1.1
Arsitektur Jaringan………
..
II.1.2
Algoritma Jaringan………
..
II.1.2.1
Algoritma Pelatihan………
...
II.1.2.2 Fungsi Aktivasi
………
II.1.2.3 Algoritma Pengujian
………
.
II.1.3 Sum Square Error dan Root Mean Square Error
……
..
II.1.4 Aplikasi Jaringan Saraf Tiruan
………
..
II.2
Algoritma
Forward-only Counter Propagation
………
...
II.2.1 Arsitektur
FOCP………
II.2.2 Algoritma
Pelatihan FOCP………
II.3
Citra Dijital dan Ekstraksi Ciri
………
.
1
2
2
2
3
4
7
8
8
II.3.3 Momen Invarian
………
II.4
Pengolahan Citra Dijital Menggunakan MATLAB
…………
..
III.
PERANCANGAN PERANGKAT LUNAK
III.1
Arsitektur Perancangan
………
.
III.2
Diagram Alir
………
.
III.3
Perancangan Antarmuka Pemakai
(User Interface)
…………
.
IV.
SIMULASI DAN ANALISA
IV.1
Proses Pelatihan
………
IV.2
Proses Pengujian
………...
IV.2.1 Pengujian I
……….
IV.2.2 Pengujian II
………
IV.3
Analisa
………..
V.
KESIMPULAN DAN SARAN
V.1 Kesimpulan
………...
V.2 Saran
……….
DAFTAR PUSTAKA
………..
LAMPIRAN A
……….
LAMPIRAN B
……….
20
22
26
27
36
37
35
36
43
52
53
53
54
A
Gambar 2.1 Struktur dasar jaringan syaraf tiruan
dan Struktur sederhana sebuah neuron
………..
Gambar 2.2 Struktur Neuron Jaringan Saraf
……….
Gambar 2.3 Jaringan syaraf dengan lapisan tunggal
……….
Gambar 2.4 Jaringan syaraf dengan banyak lapisan
……….
Gambar 2.5 Fungsi Aktivasi Pada Jaringan Saraf Sederhana
………
Gambar 2.6 Fungsi Tangga Biner
………..
Gambar 2.7 Fungsi
Linear
……….
Gambar 2.8 Fungsi Sigmoid Biner
………
Gambar 2.9 Fungsi Sigmoid Bipolar
………..
Gambar 2.10 Arsitektur
Forward-only counter propagation
………..
Gambar 2.11 Citra tanda tangan setelah
grayscaling
………...
Gambar 2.12 Citra tanda tangan setelah dilakukan binerisasi
………..
Gambar 2.13 Citra tanda tangan setelah ditipiskan
……….
Gambar 3.1 Arsitektur Perancangan
Forward-only Counter Propagation
....
Gambar 3.2 Diagram Alir Utama
………...
Gambar 3.3 Diagram Alir
Pre-Processing
……….
Gambar 3.4 Diagram Alir Ekstraksi Ciri
………...
Gambar 3.5 Tampilan Program Pengujian Identifikasi Tanda Tangan
…….
..
Gambar 3.6 Tampilan Program Pelatihan Identifikasi Tanda Tangan
………
Gambar 4.1 Grafik Hasil Pelatihan
………...
..
Gambar 4.2
Tampilah Hasil Pengujian Tanda Tangan “Lukas”…………...
..
5
6
7
8
9
10
11
11
12
16
24
25
26
27
28
29
30
37
36
39
Tabel 3.1 Inisialisasi Target
………
Tabel 3.2 Penjelasan Rancangan Menu Pelatihan
………..
Tabel 3.3 Penjelasan Rancangan Menu Pengujian
……….
Tabel 4.1 Pelatihan 40 Tanda Tangan
……….
Tabel 4.2 Hasil Ekstraksi Ciri Menggunakan
Global Feature Extraction
dan Momen Invarian
………
Tabel 4.3 Hasil Pengujian I
……….
Tabel 4.4 Hasil Pengujian II
………...
34
36
37
39
A-1
LAMPIRAN A
A-2
Program Pelatihan FOCP
clc clear all
A-3
e=sum(sum((target-yk).^2));error=sqrt(e/(bnydata*outputlayer)); a=0.7*a;
if error<0.0001 con=0; end
epoch=epoch+1; if epoch==200 con=0; end
plot(epoch,error,'m.-'); hold on;
grid on;
title('Grafik Error Terhadap Epoch'); xlabel('Epoch');
ylabel('Error'); end
Program Pengujian FOCP
clc clear all [c b]=size(x); clusterlayer=10; for i2=1:c
for cluster=1:clusterlayer
d(cluster)=sum((vsimpan1(cluster,:)-x(i2,:)).^2); if cluster==1
dmin=d(cluster); dwin=cluster; end
if (cluster>1)&&(dmin>d(cluster)) dmin=d(cluster);
dwin=cluster; end
end
A-4
Program GUI Untuk Pelatihan
function varargout = latih_focp(varargin) % LATIH_FOCP M-file for latih_focp.fig
% LATIH_FOCP, by itself, creates a new LATIH_FOCP or raises the existing % singleton*.
%
% H = LATIH_FOCP returns the handle to a new LATIH_FOCP or the handle to % the existing singleton*.
%
% LATIH_FOCP('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in LATIH_FOCP.M with the given input arguments. %
% LATIH_FOCP('Property','Value',...) creates a new LATIH_FOCP or raises the
% existing singleton*. Starting from the left, property value pairs are % applied to the GUI before latih_focp_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to latih_focp_OpeningFcn via varargin. %
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help latih_focp
% Last Modified by GUIDE v2.5 23-Apr-2012 09:41:52
% Begin initialization code - DO NOT EDIT gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @latih_focp_OpeningFcn, ... 'gui_OutputFcn', @latih_focp_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before latih_focp is made visible.
function latih_focp_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to latih_focp (see VARARGIN) % Choose default command line output for latih_focp
handles.output = hObject;
A-5
% UIWAIT makes latih_focp wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = latih_focp_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes on button press in Tombol_buka.
function Tombol_buka_Callback(hObject, eventdata, handles) % hObject handle to Tombol_buka (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.Tombol_buka,'Enable','off'); set(handles.pushbutton3,'Enable','on'); %Inisialisasi Bobot %--- input=x; [baris kolom]=size(input); bnydata=baris; jmlinput=kolom; clusterlayer=10; outputlayer=10; vweight=(0.5-(rand(clusterlayer,jmlinput)*(0.5-0))); wweight=(0.5-(rand(clusterlayer,outputlayer)*(0.5-0))); target=eye(clusterlayer,outputlayer); alpha=0.8; a=0.4; epoch=0; con=1; dmin=0; jwin=0;
% Forward-only Counter Propagation Algorithm
A-6
jwin=cluster; end if (cluster>1)&&(dmin>d(cluster)) dmin=d(cluster); jwin=cluster; end end vweight(jwin,:)=vweight(jwin,:)+(alpha*(input(jmlbaris,:)-vweight(jwin,:))); wweight(jwin,:)=wweight(jwin,:)+(a*(target(jwin,:)-wweight(jwin,:))); end wk=wweight; yk=wk; e=sum(sum((target-yk).^2)); error=sqrt(e/(bnydata*outputlayer)); a=0.7*a; if error<0.0001 con=0; end epoch=epoch+1; if epoch==200 con=0; end plot(epoch,error,'m.-');title('Grafik Error Terhadap Epoch'); xlabel('Epoch'); ylabel('Error'); hold on; grid on; axes(handles.axes1); end set(handles.text5,'String',error); set(handles.text6,'String',epoch); set(handles.Tombol_buka,'Enable','on'); set(handles.pushbutton4,'Enable','on');
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO)
A-7
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
close
% --- Executes during object creation, after setting all properties. function figure1_CreateFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
fig2=openfig('uji_focp.fig'); handles=guihandles(fig2); guidata(fig2,handles);
Program GUI Untuk Pengujian
A-8
% UJI_FOCP M-file for uji_focp.fig% UJI_FOCP, by itself, creates a new UJI_FOCP or raises the existing % singleton*.
%
% H = UJI_FOCP returns the handle to a new UJI_FOCP or the handle to % the existing singleton*.
%
% UJI_FOCP('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in UJI_FOCP.M with the given input arguments. %
% UJI_FOCP('Property','Value',...) creates a new UJI_FOCP or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before uji_focp_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to uji_focp_OpeningFcn via varargin. %
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text2 to modify the response to help uji_focp
% Last Modified by GUIDE v2.5 11-May-2012 14:58:31
% Begin initialization code - DO NOT EDIT gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @uji_focp_OpeningFcn, ... 'gui_OutputFcn', @uji_focp_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before uji_focp is made visible.
function uji_focp_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to uji_focp (see VARARGIN)
% Choose default command line output for uji_focp handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% UIWAIT makes uji_focp wait for user response (see UIRESUME) % uiwait(handles.figure1);
A-9
% --- Outputs from this function are returned to the command line. function varargout = uji_focp_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.pushbutton1,'Enable','off');
set(handles.pushbutton2,'Enable','on');
[nama_file1, nama_path1]=uigetfile({'*.bmp;*.jpg','File Citra(*.bmp,*.jpg)';'*.bmp','File Bitmap(*.bmp)';
'*.jpg','File jpeg(*.jpg)'; '*.*' , 'Semua File (*.*)'},'Buka File Citra Host/Asli');
if ~isequal(nama_file1,0) handles.data1=imread(fullfile(nama_path1,nama_file1)); guidata(hObject,handles); handles.current_data1=handles.data1; axes(handles.axes1); imshow(handles.current_data1); else return; end set(handles.text3,'String',nama_file1); set(handles.text4,'String',size(handles.data1,1)); set(handles.text8,'String',size(handles.data1,2));
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','on'); gambar1=handles.data1; %--- %Pre-Processing %--- gambar1=rgb2gray(gambar1); %ubah dr bentuk rgb ke gray
gambar1=im2bw(gambar1,graythresh(gambar1)); %ubah dr gray ke black&white citra1=discourser(~gambar1);
citra3=imresize(citra1,[100 100]); %resize ke bentuk 100x100
citra2=bwmorph(citra3,'thin',inf); %fungsi untuk mendapatkan skeleton [baris kolom]=size(citra2); axes(handles.axes2) set(handles.text11,'String',size(citra2,1)); set(handles.text13,'String',size(citra2,2)); imshow(~citra2); %--- %Global Feature Extraction
%--- %Luas Area
A-10
%Height-to-width ratio [height width]=size(citra1); ratio=height/width;
%Maximum vertikal histogram c=0;
for i=1:kolom for j=1:baris
if citra2 (j,i)==1 c=c+1;
if j==1 c=1; end
y(j,i)=[c]; else c=0; end end end
[baris1 kolom1]=size(y); maxver=0;
for k1=1:kolom1 for l1=1:baris1
if y(l1,k1)>maxver maxver=y(l1,k1); end
end end
%Maximum horizontal histogram c2=0;
for i2=1:baris for j2=1:kolom
if citra2 (i2,j2)==1 c2=c2+1;
if j2==1 c2=1; end
y(i2,j2)=[c2]; else c2=0;
end end end
[baris2 kolom2]=size(y); maxhor=0;
for k2=1:baris2 for l2=1:kolom2
if y(k2,l2)> maxhor maxhor=y(k2,l2); end
A-11
%Horizontal local maxima number[m n]=size(citra1); for i=1:m
for j=1:1:n
if citra1(i,j)== 1 imax(i)=i; end end end for i=m:-1:1 for j=n:-1:1 if citra1(i,j)==1 imin(i)=j; end end end h=(imax-imin)+1; [baris3 kolom3]=size(h); horlocal=h(1,1); for k=2:kolom3 if h(1,k)>horlocal horlocal=h(1,k); else horlocal; end end
%Vertical local maxima number [m n]=size(citra1);
for i=1:n for j=1:1:m
if citra1(j,i)== 1 imax2(i)=j; end end end for i=n:-1:1 for j=m:-1:1 if citra1(j,i)==1 imin2(i)=j; end end end v=(imax2-imin2)+1; [baris4 kolom4]=size(v); verticalocal=v(1,1); for k2=2:kolom4 if v(1,k2)>verticalocal verticalocal=v(1,k2); else verticalocal; end end
% Centre of image F=citra2;
A-12
[x, y] = meshgrid(1:N, 1:M);x = x(:); y = y(:); F = F(:); mm00 = sum(F); mm10 = sum(x .* F); mm01 = sum(y .* F); xbar = mm10 / mm00; ybar = mm01 / mm00;
gf=[a ratio maxver maxhor horlocal verticalocal xbar ybar]; gf=(gf)./100;
save dataciri gf;
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.pushbutton3,'Enable','off'); set(handles.pushbutton4,'Enable','on'); gambar1=handles.data1; %--- %Pre-Processing %--- gambar1=rgb2gray(gambar1); %ubah dr bentuk rgb ke gray
gambar1=im2bw(gambar1,graythresh(gambar1)); %ubah dr gray ke black&white citra1=discourser(~gambar1);
citra3=imresize(citra1,[100 100]); %resize ke bentuk 100x100
citra2=bwmorph(citra3,'thin',inf); %fungsi untuk mendapatkan skeleton %--- %Moment Invariant
%--- x=invmoments(citra2);
mi=[x];
save dataciri2 mi;
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) load dataciri gf;
A-13
output=round(wfinal(dwin,:));y=output;
if y== [1 0 0 0 0 0 0 0 0 0] y='TORANG';
elseif y== [0 1 0 0 0 0 0 0 0 0] y='YANIMI';
elseif y== [0 0 1 0 0 0 0 0 0 0] y='LUKAS';
elseif y== [0 0 0 1 0 0 0 0 0 0] y='HOTMA';
elseif y== [0 0 0 0 1 0 0 0 0 0] y='DWI';
elseif y== [0 0 0 0 0 1 0 0 0 0] y='BENNY';
elseif y== [0 0 0 0 0 0 1 0 0 0] y='TOGU';
elseif y== [0 0 0 0 0 0 0 1 0 0] y='FEBRU';
elseif y== [0 0 0 0 0 0 0 0 1 0] y='ELLA';
elseif y== [0 0 0 0 0 0 0 0 0 1] y='FEBRI'; else y='TIDAK DIKENALI'; end output=num2Str(output); set(handles.text15,'String',output); set(handles.text16,'String',y); set(handles.pushbutton1,'Enable','on'); set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','off');
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text2
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO)
A-14
% Hints: get(hObject,'String') returns contents of edit2 as text2
% str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles) % hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
B-1
LAMPIRAN B
B-2
Tabel Hasil Pengujian I
NO
CITRA
OUTPUT
DIKENALI
SEBAGAI
IDENTIFIKASI
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
YA
TIDAK
1
torang001 0.9982 0.0007 0.0009 0.0006 0.0007 0.0009 0.0008 0.0001 0.0007
0.0001
TORANG
√
torang002 0.9982 0.0007 0.0009 0.0006 0.0007 0.0009 0.0008 0.0001 0.0007
0.0001
TORANG
√
torang003 0.9982 0.0007 0.0009 0.0006 0.0007 0.0009 0.0008 0.0001 0.0007
0.0001
TORANG
√
torang004 0.9982 0.0007 0.0009 0.0006 0.0007 0.0009 0.0008 0.0001 0.0007
0.0001
TORANG
√
2
yanimi001 0.0008 0.9985 0.0006 0.0008
0.001
0.0008 0.0007
0
0.0002
0.0008
YANIMI
√
yanimi002 0.0008 0.9985 0.0006 0.0008
0.001
0.0008 0.0007
0
0.0002
0.0008
YANIMI
√
yanimi003 0.0008 0.9985 0.0006 0.0008
0.001
0.0008 0.0007
0
0.0002
0.0008
YANIMI
√
yanimi004 0.0008 0.9985 0.0006 0.0008
0.001
0.0008 0.0007
0
0.0002
0.0008
YANIMI
√
3
lukas001
0.0007 0.0007 0.9983 0.0011 0.0008 0.0008 0.0009 0.0011 0.0005
0.0007
LUKAS
√
lukas002
0.0007 0.0007 0.9983 0.0011 0.0008 0.0008 0.0009 0.0011 0.0005
0.0007
LUKAS
√
lukas003
0.0007 0.0007 0.9983 0.0011 0.0008 0.0008 0.0009 0.0011 0.0005
0.0007
LUKAS
√
lukas004
0.0007 0.0007 0.9983 0.0011 0.0008 0.0008 0.0009 0.0011 0.0005
0.0007
LUKAS
√
4
hotma001 0.0002 0.0006 0.0007 0.9985 0.0004 0.0008 0.0003
0.001
0.001
0.0004
HOTMA
√
hotma002 0.0002 0.0006 0.0007 0.9985 0.0004 0.0008 0.0003
0.001
0.001
0.0004
HOTMA
√
hotma003 0.0002 0.0006 0.0007 0.9985 0.0004 0.0008 0.0003
0.001
0.001
0.0004
HOTMA
√
hotma004 0.0002 0.0006 0.0007 0.9985 0.0004 0.0008 0.0003
0.001
0.001
0.0004
HOTMA
√
5
B-3
NO
CITRA
OUTPUT
DIKENALI
SEBAGAI
IDENTIFIKASI
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
YA
TIDAK
6
benny 001
0.0001 0.0001 0.0001 0.0001 0.0001 0.9998
0
0.0001 0.0001 0.0001
BENNY
√
benny 002
0.0001 0.0001 0.0001 0.0001 0.0001 0.9998
0
0.0001 0.0001 0.0001
BENNY
√
benny 003
0.0001 0.0001 0.0001 0.0001 0.0001 0.9998
0
0.0001 0.0001 0.0001
BENNY
√
benny 004
0.0001 0.0001 0.0001 0.0001 0.0001 0.9998
0
0.0001 0.0001 0.0001
BENNY
√
7
togu001
0.0001 0.0002 0.0005 0.0009 0.0007 0.0005 0.9982 0.0004 0.0008 0.0009
TOGU
√
togu002
0.0001 0.0002 0.0005 0.0009 0.0007 0.0005 0.9982 0.0004 0.0008 0.0009
TOGU
√
togu003
0.0001 0.0002 0.0005 0.0009 0.0007 0.0005 0.9982 0.0004 0.0008 0.0009
TOGU
√
togu004
0.0001 0.0002 0.0005 0.0009 0.0007 0.0005 0.9982 0.0004 0.0008 0.0009
TOGU
√
8
febru001
0.0011 0.0005 0.0005 0.0004 0.0004 0.0006 0.0005 0.9983
0.001
0.0005
FEBRU
√
febru002
0.0011 0.0005 0.0005 0.0004 0.0004 0.0006 0.0005 0.9983
0.001
0.0005
FEBRU
√
febru003
0.0011 0.0005 0.0005 0.0004 0.0004 0.0006 0.0005 0.9983
0.001
0.0005
FEBRU
√
febru004
0.0011 0.0005 0.0005 0.0004 0.0004 0.0006 0.0005 0.9983
0.001
0.0005
FEBRU
√
9
ella001
0.0002 0.0004 0.0001 0.0001 0.0002
0.001
0.0005 0.0006 0.9985 0.0008
ELLA
√
ella002
0.0002 0.0004 0.0001 0.0001 0.0002
0.001
0.0005 0.0006 0.9985 0.0008
ELLA
√
ella003
0.0002 0.0004 0.0001 0.0001 0.0002
0.001
0.0005 0.0006 0.9985 0.0008
ELLA
√
ella004
0.0002 0.0004 0.0001 0.0001 0.0002
0.001
0.0005 0.0006 0.9985 0.0008
ELLA
√
10
B-4
Tabel Hasil Pengujian II
NO
CITRA
OUTPUT
DIKENALI
SEBAGAI
IDENTIFIKASI
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
YA
TIDAK
1
torang005 0.9982 0.0007 0.0009 0.0006 0.0007 0.0009 0.0008 0.0001 0.0007 0.0001
TORANG
√
1
BAB I
PENDAHULUAN
I.1 Latar Belakang
Seiring dengan berkembangnya komputer modern, para peneliti mencoba
menantang komputer modern tersebut untuk mengerjakan tugas yang dianggap
sederhana bagi manusia. Contohnya seperti manusia dapat mengenali dengan
mudah huruf A atau membedakan antara kucing dan burung dari pengetahuan
yang diberikan oleh orang yang mengajarkannya. Dengan pembelajaran yang
berkelanjutan manusia dapat memperbaiki performansinya menjadi lebih baik
lagi. Bahkan tanpa adanya seorang guru pun ada kalanya tetap dapat
mengelompokkan pola-pola yang sama. Berangkat dari semua ini maka para
peneliti mencoba membuat representasi buatan dari otak manusia dan mencoba
untuk mensimulasikan proses pembelajaran otak manusia tersebut pada sebuah
komputer.
Neural
Network
merupakan implementasi model matematika dari
proses pembelajaran
[3]. Istilah
artificial
atau buatan digunakan karena
neural
network
(jaringan saraf) ini diimplementasikan menggunakan program komputer
yang mampu menyelesaikan sejumlah proses perhitungan selama proses
pembelajaran tersebut.
[7]Jaringan Saraf Tiruan (JST) banyak digunakan dalam berbagai bidang
salah satunya adalah pengenalan pola. Ada beberapa algoritma pelatihan yang
sering digunakan untuk mengidentifikasi suatu bentuk, diantaranya adalah
Backpropagation,
Jaringan Hebb,
Counter Propagation
dan yang lainnya.
Counter Propagation
adalah jaringan multilapis yang berdasarkan kombinasi dari
lapisan masukan, lapisan
cluster
, dan lapisan keluaran.
Pada Tugas Akhir ini
digunakan
Forward-Only Counter Propagation
(FOCP) sebagai algoritma
pembelajaran dan pengujian. Sedangkan pola yang akan diidentifikasi berupa
tanda tangan berbentuk data dijital dari hasil
scanning
. Sebelum memasukkan
Teknik Elektro
Universitas Kristen Maranatha
2
diambil dan dipakai hanya nilai-nilai spesifiknya saja sehingga proses pelatihan
bisa berjalan lebih cepat. Proses ekstraksi ciri sebuah citra dijital dapat dilakukan
dengan berbagai cara, salah satunya adalah dengan
global feature extraction
dan
momen invarian.
I.2 Identifikasi Masalah
Bagaimana merealisasikan JST untuk mengidentifikasi tanda tangan
menggunakan ekstraksi ciri
global feature extraction,
momen invarian dan
algoritma
Forward-Only Counter Propagation
dengan MATLAB ?
I.3 Tujuan
Merealisasikan perangkat lunak yang dapat mengidentifikasi kepemilikan
tanda tangan menggunakan ekstraksi ciri
global feature extraction,
momen
invarian dan algoritma
Forward-Only Counter Propagation.
I.4 Pembatasan Masalah
Pada Tugas Akhir ini dilakukan pembatasan masalah sebagai berikut :
a.
Data tanda tangan yang akan digunakan diambil dari 10 orang yang
berbeda, masing-masing mempunyai 6 buah tanda tangan, 4 digunakan
sebagai data latih dan 2 sebagai data uji.
b.
Citra tanda tangan didapat dari hasil
scanning. S
etiap tanda tangan
dibubuhkan di atas kertas putih dengan bantuan kotak 4x5cm sebagai batas
pada setiap tanda tangan.
c.
Gambar di
scan
menggunakan alat
scan
Canon Pixma MP258 dengan
resolusi 300 dpi dan komponen warna 24-bit color RGB.
d.
Citra tanda tangan yang akan diekstrak cirinya berukuran 100x100 piksel.
e.
Algoritma pelatihan yang digunakan adalah
Forward-Only Counter
Propagation
.
Teknik Elektro
Universitas Kristen Maranatha
3
g.
Ekstraksi ciri yang digunakan adalah momen invariant. Nilai momen
tersebut didapat dari fungsi MATLAB
invmoments
yang diperoleh dari
buku referensi Gonzalez (2004).
I.5 Sistematika Penelitian
Laporan Tugas Akhir ini terbagi menjadi lima bab utama. Untuk
memudahkan dalam membaca laporan ini, akan diuraikan secara singkat
sistematika beserta uraian dari masing-masing bab, yaitu:
BAB I. PENDAHULUAN
Bab ini menjelaskan yang melatarbelakangi penulisan laporan Tugas Akhir,
mengidentifikasi masalah yang akan diselesaikan dalam Tugas Akhir,
menjelaskan tujuan dari topik yang diangkat, memberikan batasan masalah
yang akan diteliti dan menguraikan sistematika penulisan laporan Tugas
Akhir.
BAB II. DASAR TEORI
Merupakan bab yang disusun untuk memberikan penjelasan mengenai
jaringan saraf tiruan, algoritma FOCP, dan sedikit mengenai citra dijital
beserta ekstraksi cirinya.
BAB III. PERANCANGAN SISTEM
Bab ini berisi penjelasan desain yang akan dilakukan untuk membuat software
pengidentifikasi pemilik tanda tangan dengan menggunakan algoritma FOCP
.
BAB IV. SIMULASI DAN ANALISA
Teknik Elektro
Universitas Kristen Maranatha
4
BAB V. KESIMPULAN DAN SARAN
Teknik Elektro
Universitas Kristen Maranatha
53
BAB V
KESIMPULAN DAN SARAN
Pada bab ini disimpulkan hasil pengamatan dan saran-saran untuk
perbaikan penelitian selanjutnya.
V.1 Kesimpulan
Identifikasi tanda tangan menggunakan algoritma
Forward-Only Counter
Propagation
dengan bantuan ekstraksi ciri
global feature
dan momen
invarian telah berhasil direalisasikan dengan eror yang didapat
0.000841676.
Hasil pengujian 2 buah tanda tangan dari 10 koresponden dengan
algoritma
Forward-Only Counter Propagation
adalah 100%. Dari
pengamatan diperoleh bahwa pelatihan JST dengan algoritma
Forward-Only Counter Propagation
memiliki kemampuan klasifikasi yang cepat
dibandingkan dengan algoritma
Backpropagation
terbukti dengan eror
pelatihan didapat 0.000841676 pada pelatihan ke 200.
V.2 Saran
Algoritma FOCP dapat dikembangkan dengan melakukan identifikasi tanda
tangan secara
online
juga untuk pengenalan pola selain tanda tangan, seperti
54
[1]. Away, Gunaidi Abdia. 2010.
The Shortcut Of MATLAB Programming
.
Bandung: Informatika.
[2].
Emre Özgündüz,Tül
in Şentürk and M. Elif Karslıgi.
Off-Line Signature
Verification And Recognition By Support Vector Machine
. Turkey
: Yıldız
.
[3].
Fausett, Laurene. 1994.
Fundamental Of Neural Networks (Architectures,
Algorithms, And Applications)
. New Jersey: Prentice Hall.
[4].
Gonzalez, Rafael C, Richard E. Woods and Steven L. 2004. Eddins.
Digital
Image Processing Using MATLAB.
New Jersey: Pearson Prentice-Hall.
[5].
Haykin, Simon. 2001.
Neural Networks, Second Edition
. India: Pearson
Education.
[6].
Hermawan, Arief, 2006,
Jaringan Saraf Tiruan, Teori dan Aplikasi
,
Yogyakarta: Andi.
[7].
Kusumadewi, Sri. 2004.
Membangun Jaringan Syaraf Tiruan (Menggunakan
MATLAB & Excel Link
. Yogyakarta: Graha Mulia.
[8].
Kusumaningtyas, Entin Martiana,S.Kom. 2010. Diktat Kuliah,
Bab 8
Jaringan Syaraf Tiruan.
Surabaya.
[9].
Purnomo, Mauridhi Hery and Arif Muntasa. 2010.
Konsep Pengolahan Citra
Digital dan Ekstraksi Fitur
. Yogyakarta: Graha Mulia.