Implementasi Jaringan Syaraf Tiruan Bidirectional Associative Memory Untuk Pengidentifikasian Telapak Tangan Manusia (Studi Kasus: Mahasiswa S1 Ilmu Komputer Usu Stambuk 2010 Kom A)
LAMPIRAN LISTING PROGRAM 1. depan.m (Antarmuka Home)
function varargout = depan(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @depan_OpeningFcn, ... 'gui_OutputFcn', @depan_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.
function depan_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = depan_OutputFcn(hObject, eventdata, handles)
a=imread('fak.jpg');
axes(handles.axes3); imshow(a) varargout{1} = handles.output;
function Train_Callback(hObject, eventdata, handles) proses
delete(handles.figure1);
% ---
function Test_Callback(hObject, eventdata, handles) Test
delete(handles.figure1);
% ---
function help_Callback(hObject, eventdata, handles) help
delete(handles.figure1);
(2)
% ---
function about_Callback(hObject, eventdata, handles) about
delete(handles.figure1);
% ---
function Exit_Callback(hObject, eventdata, handles) respon=keluar('Title','Konfirmasi Keluar'); switch lower(respon) case 'tidak' case 'ya' close end
% --- Executes during object creation, after setting all properties.
function axes_CreateFcn(hObject, eventdata, handles)
2. proses.m (Antarmuka Train)
function varargout = proses(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @proses_OpeningFcn, ... 'gui_OutputFcn', @proses_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
% --- Executes just before proses is made visible.
function proses_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject; guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = proses_OutputFcn(hObject, eventdata, handles)
(3)
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles) gb1=imread('yayang1.jpg'); gb2=imread('reni1.jpg'); gb3=imread('danny1.jpg'); gb4=imread('angga1.jpg'); gb5=imread('hayatun1.jpg'); gb6=imread('intan1.jpg'); gb7=imread('janwandi1.jpg'); gb8=imread('rasyid1.jpg'); gb9=imread('agus1.jpg'); gb10=imread('umri1.jpg'); gb11=imread('nurhennida1.jpg'); gb12=imread('rivai1.jpg'); gb13=imread('singgih1.jpg'); gb14=imread('teguh1.jpg'); gb15=imread('teti1.jpg'); gb16=imread('fajrul1.jpg'); gb17=imread('amalya1.jpg'); gb18=imread('vito1.jpg'); gb19=imread('sunfirst1.jpg'); gb20=imread('johanes1.jpg'); axes(handles.axes1); imshow(gb1) axes(handles.axes2); imshow(gb2) axes(handles.axes3); imshow(gb3) axes(handles.axes4); imshow(gb4) axes(handles.axes5); imshow(gb5) axes(handles.axes6); imshow(gb6) axes(handles.axes7); imshow(gb7) axes(handles.axes8); imshow(gb8) axes(handles.axes9); imshow(gb9) axes(handles.axes10); imshow(gb10) axes(handles.axes11); imshow(gb11) axes(handles.axes12); imshow(gb12) axes(handles.axes13); imshow(gb13) axes(handles.axes14); imshow(gb14) axes(handles.axes15); imshow(gb15) axes(handles.axes16); imshow(gb16) axes(handles.axes17); imshow(gb17) axes(handles.axes18); imshow(gb18) axes(handles.axes19); imshow(gb19) axes(handles.axes20); imshow(gb20)
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles) gb1 =getimage(handles.axes1);
(4)
gb2 =getimage(handles.axes2); gb3 =getimage(handles.axes3); gb4 =getimage(handles.axes4); gb5 =getimage(handles.axes5); gb6 =getimage(handles.axes6); gb7 =getimage(handles.axes7); gb8 =getimage(handles.axes8); gb9 =getimage(handles.axes9); gb10 =getimage(handles.axes10); gb11 =getimage(handles.axes11); gb12 =getimage(handles.axes12); gb13 =getimage(handles.axes13); gb14 =getimage(handles.axes14); gb15 =getimage(handles.axes15); gb16 =getimage(handles.axes16); gb17 =getimage(handles.axes17); gb18 =getimage(handles.axes18); gb19 =getimage(handles.axes19); gb20 =getimage(handles.axes20);
gb1= imresize(gb1,[200 300]); gb2= imresize(gb2,[200 300]); gb3= imresize(gb3,[200 300]); gb4= imresize(gb4,[200 300]); gb5= imresize(gb5,[200 300]); gb6= imresize(gb6,[200 300]); gb7= imresize(gb7,[200 300]); gb8= imresize(gb8,[200 300]); gb9= imresize(gb9,[200 300]); gb10= imresize(gb10,[200 300]); gb11= imresize(gb11,[200 300]); gb12= imresize(gb12,[200 300]); gb13= imresize(gb13,[200 300]); gb14= imresize(gb14,[200 300]); gb15= imresize(gb15,[200 300]); gb16= imresize(gb16,[200 300]); gb17= imresize(gb17,[200 300]); gb18= imresize(gb18,[200 300]); gb19= imresize(gb19,[200 300]); gb20= imresize(gb20,[200 300]); axes(handles.axes1); imshow(gb1) axes(handles.axes2); imshow(gb2) axes(handles.axes3); imshow(gb3) axes(handles.axes4); imshow(gb4) axes(handles.axes5); imshow(gb5) axes(handles.axes6); imshow(gb6) axes(handles.axes7); imshow(gb7) axes(handles.axes8); imshow(gb8) axes(handles.axes9); imshow(gb9)
(5)
axes(handles.axes10); imshow(gb10) axes(handles.axes11); imshow(gb11) axes(handles.axes12); imshow(gb12) axes(handles.axes13); imshow(gb13) axes(handles.axes14); imshow(gb14) axes(handles.axes15); imshow(gb15) axes(handles.axes16); imshow(gb16) axes(handles.axes17); imshow(gb17) axes(handles.axes18); imshow(gb18) axes(handles.axes19); imshow(gb19) axes(handles.axes20); imshow(gb20)
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles) gb1 =getimage(handles.axes1); gb2 =getimage(handles.axes2); gb3 =getimage(handles.axes3); gb4 =getimage(handles.axes4); gb5 =getimage(handles.axes5); gb6 =getimage(handles.axes6); gb7 =getimage(handles.axes7); gb8 =getimage(handles.axes8); gb9 =getimage(handles.axes9); gb10 =getimage(handles.axes10); gb11 =getimage(handles.axes11); gb12 =getimage(handles.axes12); gb13 =getimage(handles.axes13); gb14 =getimage(handles.axes14); gb15 =getimage(handles.axes15); gb16 =getimage(handles.axes16); gb17 =getimage(handles.axes17); gb18 =getimage(handles.axes18); gb19 =getimage(handles.axes19); gb20 =getimage(handles.axes20); citra_double1=double(gb1); citra_double2=double(gb2); citra_double3=double(gb3); citra_double4=double(gb4); citra_double5=double(gb5); citra_double6=double(gb6); citra_double7=double(gb7); citra_double8=double(gb8); citra_double9=double(gb9); citra_double10=double(gb10); citra_double11=double(gb11); citra_double12=double(gb12); citra_double13=double(gb13); citra_double14=double(gb14);
(6)
citra_double15=double(gb15); citra_double16=double(gb16); citra_double17=double(gb17); citra_double18=double(gb18); citra_double19=double(gb19); citra_double20=double(gb20);
[b k c]=size(citra_double1); for x=1:b for y=1:k semua_elemen1=citra_double1(x,y,1)+citra_double1(x,y,2)+ citra_double1(x,y,3); gray_mean1(x,y)=semua_elemen1/3; semua_elemen2=citra_double2(x,y,1)+citra_double2(x,y,2)+ citra_double2(x,y,3); gray_mean2(x,y)=semua_elemen2/3; semua_elemen3=citra_double3(x,y,1)+citra_double3(x,y,2)+ citra_double3(x,y,3); gray_mean3(x,y)=semua_elemen3/3; semua_elemen4=citra_double4(x,y,1)+citra_double4(x,y,2)+ citra_double4(x,y,3); gray_mean4(x,y)=semua_elemen4/3; semua_elemen5=citra_double5(x,y,1)+citra_double5(x,y,2)+ citra_double5(x,y,3); gray_mean5(x,y)=semua_elemen5/3; semua_elemen6=citra_double6(x,y,1)+citra_double6(x,y,2)+ citra_double6(x,y,3); gray_mean6(x,y)=semua_elemen6/3; semua_elemen7=citra_double7(x,y,1)+citra_double7(x,y,2)+ citra_double7(x,y,3); gray_mean7(x,y)=semua_elemen7/3; semua_elemen8=citra_double8(x,y,1)+citra_double8(x,y,2)+ citra_double8(x,y,3); gray_mean8(x,y)=semua_elemen8/3; semua_elemen9=citra_double9(x,y,1)+citra_double9(x,y,2)+ citra_double9(x,y,3); gray_mean9(x,y)=semua_elemen9/3; semua_elemen10=citra_double10(x,y,1)+citra_double10(x,y,2)+ citra_double10(x,y,3);
(7)
gray_mean10(x,y)=semua_elemen10/3; semua_elemen11=citra_double11(x,y,1)+citra_double11(x,y,2)+ citra_double11(x,y,3); gray_mean11(x,y)=semua_elemen11/3; semua_elemen12=citra_double12(x,y,1)+citra_double12(x,y,2)+ citra_double12(x,y,3); gray_mean12(x,y)=semua_elemen12/3; semua_elemen13=citra_double13(x,y,1)+citra_double13(x,y,2)+ citra_double13(x,y,3); gray_mean13(x,y)=semua_elemen13/3; semua_elemen14=citra_double14(x,y,1)+citra_double14(x,y,2)+ citra_double14(x,y,3); gray_mean14(x,y)=semua_elemen14/3; semua_elemen15=citra_double15(x,y,1)+citra_double15(x,y,2)+ citra_double15(x,y,3); gray_mean15(x,y)=semua_elemen15/3; semua_elemen16=citra_double16(x,y,1)+citra_double16(x,y,2)+ citra_double16(x,y,3); gray_mean16(x,y)=semua_elemen16/3; semua_elemen17=citra_double17(x,y,1)+citra_double17(x,y,2)+ citra_double17(x,y,3); gray_mean17(x,y)=semua_elemen17/3; semua_elemen18=citra_double18(x,y,1)+citra_double18(x,y,2)+ citra_double18(x,y,3); gray_mean18(x,y)=semua_elemen18/3; semua_elemen19=citra_double19(x,y,1)+citra_double19(x,y,2)+ citra_double19(x,y,3); gray_mean19(x,y)=semua_elemen19/3; semua_elemen20=citra_double20(x,y,1)+citra_double20(x,y,2)+ citra_double20(x,y,3); gray_mean20(x,y)=semua_elemen20/3; end end gb1=uint8(gray_mean1); gb2=uint8(gray_mean2); gb3=uint8(gray_mean3); gb4=uint8(gray_mean4); gb5=uint8(gray_mean5);
(8)
gb6=uint8(gray_mean6); gb7=uint8(gray_mean7); gb8=uint8(gray_mean8); gb9=uint8(gray_mean9); gb10=uint8(gray_mean10); gb11=uint8(gray_mean11); gb12=uint8(gray_mean12); gb13=uint8(gray_mean13); gb14=uint8(gray_mean14); gb15=uint8(gray_mean15); gb16=uint8(gray_mean16); gb17=uint8(gray_mean17); gb18=uint8(gray_mean18); gb19=uint8(gray_mean19); gb20=uint8(gray_mean20); axes(handles.axes1); imshow(gb1) axes(handles.axes2); imshow(gb2) axes(handles.axes3); imshow(gb3) axes(handles.axes4); imshow(gb4) axes(handles.axes5); imshow(gb5) axes(handles.axes6); imshow(gb6) axes(handles.axes7); imshow(gb7) axes(handles.axes8); imshow(gb8) axes(handles.axes9); imshow(gb9) axes(handles.axes10); imshow(gb10) axes(handles.axes11); imshow(gb11) axes(handles.axes12); imshow(gb12) axes(handles.axes13); imshow(gb13) axes(handles.axes14); imshow(gb14) axes(handles.axes15); imshow(gb15) axes(handles.axes16); imshow(gb16) axes(handles.axes17); imshow(gb17) axes(handles.axes18); imshow(gb18) axes(handles.axes19); imshow(gb19) axes(handles.axes20); imshow(gb20)
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles) gb1 =getimage(handles.axes1); gb2 =getimage(handles.axes2); gb3 =getimage(handles.axes3); gb4 =getimage(handles.axes4); gb5 =getimage(handles.axes5); gb6 =getimage(handles.axes6); gb7 =getimage(handles.axes7); gb8 =getimage(handles.axes8); gb9 =getimage(handles.axes9); gb10 =getimage(handles.axes10); gb11 =getimage(handles.axes11);
(9)
gb12 =getimage(handles.axes12); gb13 =getimage(handles.axes13); gb14 =getimage(handles.axes14); gb15 =getimage(handles.axes15); gb16 =getimage(handles.axes16); gb17 =getimage(handles.axes17); gb18 =getimage(handles.axes18); gb19 =getimage(handles.axes19); gb20 =getimage(handles.axes20); h=fspecial('unsharp'); h1=imfilter(gb1,h); h2=imfilter(gb2,h); h3=imfilter(gb3,h); h4=imfilter(gb4,h); h5=imfilter(gb5,h); h6=imfilter(gb6,h); h7=imfilter(gb7,h); h8=imfilter(gb8,h); h9=imfilter(gb9,h); h10=imfilter(gb10,h); h11=imfilter(gb11,h); h12=imfilter(gb12,h); h13=imfilter(gb13,h); h14=imfilter(gb14,h); h15=imfilter(gb15,h); h16=imfilter(gb16,h); h17=imfilter(gb17,h); h18=imfilter(gb18,h); h19=imfilter(gb19,h); h20=imfilter(gb20,h); axes(handles.axes1); imshow(h1) axes(handles.axes2); imshow(h2) axes(handles.axes3); imshow(h3) axes(handles.axes4); imshow(h4) axes(handles.axes5); imshow(h5) axes(handles.axes6); imshow(h6) axes(handles.axes7); imshow(h7) axes(handles.axes8); imshow(h8) axes(handles.axes9); imshow(h9) axes(handles.axes10); imshow(h10) axes(handles.axes11); imshow(h11) axes(handles.axes12); imshow(h12) axes(handles.axes13); imshow(h13) axes(handles.axes14); imshow(h14) axes(handles.axes15); imshow(h15) axes(handles.axes16); imshow(h16) axes(handles.axes17); imshow(h17) axes(handles.axes18); imshow(h18)
(10)
axes(handles.axes19); imshow(h19) axes(handles.axes20); imshow(h20)
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles) gb1 =getimage(handles.axes1); gb2 =getimage(handles.axes2); gb3 =getimage(handles.axes3); gb4 =getimage(handles.axes4); gb5 =getimage(handles.axes5); gb6 =getimage(handles.axes6); gb7 =getimage(handles.axes7); gb8 =getimage(handles.axes8); gb9 =getimage(handles.axes9); gb10 =getimage(handles.axes10); gb11 =getimage(handles.axes11); gb12 =getimage(handles.axes12); gb13 =getimage(handles.axes13); gb14 =getimage(handles.axes14); gb15 =getimage(handles.axes15); gb16 =getimage(handles.axes16); gb17 =getimage(handles.axes17); gb18 =getimage(handles.axes18); gb19 =getimage(handles.axes19); gb20 =getimage(handles.axes20); gb1=(edge(gb1,'canny',0.17)); gb2=(edge(gb2,'canny',0.17)); gb3=(edge(gb3,'canny',0.17)); gb4=(edge(gb4,'canny',0.17)); gb5=(edge(gb5,'canny',0.17)); gb6=(edge(gb6,'canny',0.17)); gb7=(edge(gb7,'canny',0.17)); gb8=(edge(gb8,'canny',0.17)); gb9=(edge(gb9,'canny',0.17)); gb10=(edge(gb10,'canny',0.17)); gb11=(edge(gb11,'canny',0.17)); gb12=(edge(gb12,'canny',0.17)); gb13=(edge(gb13,'canny',0.17)); gb14=(edge(gb14,'canny',0.17)); gb15=(edge(gb15,'canny',0.17)); gb16=(edge(gb16,'canny',0.17)); gb17=(edge(gb17,'canny',0.17)); gb18=(edge(gb18,'canny',0.17)); gb19=(edge(gb19,'canny',0.17)); gb20=(edge(gb20,'canny',0.17)); [b k]=size(gb1); for x=1:b for y=1:k if gb1(x,y)==0
(11)
gb1(x,y)=1; elseif gb1(x,y)>0 gb1(x,y)=0; end end end [b k]=size(gb2); for x=1:b for y=1:k if gb2(x,y)==0 gb2(x,y)=1; elseif gb2(x,y)>0 gb2(x,y)=0; end end end [b k]=size(gb3); for x=1:b for y=1:k if gb3(x,y)==0 gb3(x,y)=1; elseif gb3(x,y)>0 gb3(x,y)=0; end end end [b k]=size(gb4); for x=1:b for y=1:k if gb4(x,y)==0 gb4(x,y)=1; elseif gb4(x,y)>0 gb4(x,y)=0; end end end [b k]=size(gb5); for x=1:b for y=1:k if gb5(x,y)==0 gb5(x,y)=1; elseif gb5(x,y)>0 gb5(x,y)=0; end end end
(12)
[b k]=size(gb6); for x=1:b for y=1:k if gb6(x,y)==0 gb6(x,y)=1; elseif gb6(x,y)>0 gb6(x,y)=0; end end end [b k]=size(gb7); for x=1:b for y=1:k if gb7(x,y)==0 gb7(x,y)=1; elseif gb7(x,y)>0 gb7(x,y)=0; end end end [b k]=size(gb8); for x=1:b for y=1:k if gb8(x,y)==0 gb8(x,y)=1; elseif gb8(x,y)>0 gb8(x,y)=0; end end end [b k]=size(gb9); for x=1:b for y=1:k if gb9(x,y)==0 gb9(x,y)=1; elseif gb9(x,y)>0 gb9(x,y)=0; end end end [b k]=size(gb10); for x=1:b for y=1:k if gb10(x,y)==0 gb10(x,y)=1; elseif gb10(x,y)>0
(13)
gb10(x,y)=0; end end end [b k]=size(gb11); for x=1:b for y=1:k if gb11(x,y)==0 gb11(x,y)=1; elseif gb11(x,y)>0 gb11(x,y)=0; end end end [b k]=size(gb12); for x=1:b for y=1:k if gb12(x,y)==0 gb12(x,y)=1; elseif gb12(x,y)>0 gb12(x,y)=0; end end end [b k]=size(gb13); for x=1:b for y=1:k if gb13(x,y)==0 gb13(x,y)=1; elseif gb13(x,y)>0 gb13(x,y)=0; end end end [b k]=size(gb14); for x=1:b for y=1:k if gb14(x,y)==0 gb14(x,y)=1; elseif gb14(x,y)>0 gb14(x,y)=0; end end end [b k]=size(gb15); for x=1:b
(14)
for y=1:k if gb15(x,y)==0 gb15(x,y)=1; elseif gb15(x,y)>0 gb15(x,y)=0; end end end [b k]=size(gb16); for x=1:b for y=1:k if gb16(x,y)==0 gb16(x,y)=1; elseif gb16(x,y)>0 gb16(x,y)=0; end end end [b k]=size(gb17); for x=1:b for y=1:k if gb17(x,y)==0 gb17(x,y)=1; elseif gb17(x,y)>0 gb17(x,y)=0; end end end [b k]=size(gb18); for x=1:b for y=1:k if gb18(x,y)==0 gb18(x,y)=1; elseif gb18(x,y)>0 gb18(x,y)=0; end end end [b k]=size(gb19); for x=1:b for y=1:k if gb19(x,y)==0 gb19(x,y)=1; elseif gb19(x,y)>0 gb19(x,y)=0; end
(15)
end end [b k]=size(gb20); for x=1:b for y=1:k if gb20(x,y)==0 gb20(x,y)=1; elseif gb20(x,y)>0 gb20(x,y)=0; end end end axes(handles.axes1);imshow(gb1) axes(handles.axes2);imshow(gb2) axes(handles.axes3);imshow(gb3) axes(handles.axes4);imshow(gb4) axes(handles.axes5);imshow(gb5) axes(handles.axes6);imshow(gb6) axes(handles.axes7);imshow(gb7) axes(handles.axes8);imshow(gb8) axes(handles.axes9);imshow(gb9) axes(handles.axes10);imshow(gb10) axes(handles.axes11);imshow(gb11) axes(handles.axes12);imshow(gb12) axes(handles.axes13);imshow(gb13) axes(handles.axes14);imshow(gb14) axes(handles.axes15);imshow(gb15) axes(handles.axes16);imshow(gb16) axes(handles.axes17);imshow(gb17) axes(handles.axes18);imshow(gb18) axes(handles.axes19);imshow(gb19) axes(handles.axes20);imshow(gb20)
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles) gb1 =getimage(handles.axes1); gb2 =getimage(handles.axes2); gb3 =getimage(handles.axes3); gb4 =getimage(handles.axes4); gb5 =getimage(handles.axes5); gb6 =getimage(handles.axes6); gb7 =getimage(handles.axes7); gb8 =getimage(handles.axes8); gb9 =getimage(handles.axes9); gb10 =getimage(handles.axes10); gb11 =getimage(handles.axes11); gb12 =getimage(handles.axes12);
(16)
gb13 =getimage(handles.axes13); gb14 =getimage(handles.axes14); gb15 =getimage(handles.axes15); gb16 =getimage(handles.axes16); gb17 =getimage(handles.axes17); gb18 =getimage(handles.axes18); gb19 =getimage(handles.axes19); gb20 =getimage(handles.axes20); gb1=double(reshape(gb1,1,60000)); gb2=double(reshape(gb2,1,60000)); gb3=double(reshape(gb3,1,60000)); gb4=double(reshape(gb4,1,60000)); gb5=double(reshape(gb5,1,60000)); gb6=double(reshape(gb6,1,60000)); gb7=double(reshape(gb7,1,60000)); gb8=double(reshape(gb8,1,60000)); gb9=double(reshape(gb9,1,60000)); gb10=double(reshape(gb10,1,60000)); gb11=double(reshape(gb11,1,60000)); gb12=double(reshape(gb12,1,60000)); gb13=double(reshape(gb13,1,60000)); gb14=double(reshape(gb14,1,60000)); gb15=double(reshape(gb15,1,60000)); gb16=double(reshape(gb16,1,60000)); gb17=double(reshape(gb17,1,60000)); gb18=double(reshape(gb18,1,60000)); gb19=double(reshape(gb19,1,60000)); gb20=double(reshape(gb20,1,60000));
t1=[1 0 1 0 1 0 0 1 0 1 1]; t2=[0 0 0 1 0 1 0 0 0 0 0]; t3=[1 1 1 0 1 1 1 1 1 1 1]; t4=[0 1 0 1 0 0 1 0 1 0 1]; t5=[0 1 1 0 1 0 0 1 0 1 0]; t6=[0 1 0 1 0 1 0 0 0 0 0]; t7=[1 0 1 0 1 1 1 1 1 1 1]; t8=[0 0 0 1 0 0 1 0 1 0 0]; t9=[1 0 1 0 1 1 0 1 0 1 1]; t10=[0 0 0 1 0 0 0 0 0 0 1]; t11=[1 1 1 0 1 1 1 1 1 1 0]; t12=[0 1 0 1 0 0 1 0 1 0 0]; t13=[1 1 1 0 1 0 0 1 0 1 1]; t14=[1 1 0 1 0 1 0 0 0 0 1]; t15=[1 0 1 0 1 0 1 1 1 1 1]; t16=[0 0 0 1 0 1 1 0 1 0 0]; t17=[1 0 1 0 1 1 0 1 0 1 0]; t18=[0 0 0 1 0 0 0 0 0 0 0]; t19=[1 1 1 0 1 0 1 1 1 1 1]; t20=[0 1 0 1 0 1 1 0 1 0 0];
(17)
t=[t1;t2;t3;t4;t5;t6;t7;t8;t9;t10;t11;t12;t13;t14;t15;t16;t17; t18;t19;t20]; s =[gb1;gb2;gb3;gb4;gb5;gb6;gb7;gb8;gb9;gb10;gb11;gb12;gb13;gb14 ;gb15;gb16;gb17;gb18;gb19;gb20]; ya=2*t-1; xa=2*s-1; w=zeros(60000,11); xlswrite('pelatihan.xlsx',w,'bobot','A1:K60000'); nilai_y = xa*w;
[r k]=size(nilai_y); for i=1:r for j=1:k if nilai_y(i,j)<=0; nilai_y(i,j)=-1; else nilai_y(i,j)>0; nilai_y(i,j)=1; end end end disp(nilai_y)
h=msgbox('Train finish and weight is saved','Information');
function Home_Callback(hObject, eventdata, handles) depan
delete(handles.figure1);
% ---
function Train_Callback(hObject, eventdata, handles) proses
delete(handles.figure1);
% ---
function Test_Callback(hObject, eventdata, handles) Test
delete(handles.figure1);
% ---
function Help_Callback(hObject, eventdata, handles) help
delete(handles.figure1);
% ---
(18)
about
delete(handles.figure1);
% ---
function Exit_Callback(hObject, eventdata, handles) respon=keluar('Title','Konfirmasi Keluar'); switch lower(respon) case 'tidak' case 'ya' close end
3. test.m (Antarmuka Test)
function varargout = Test(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Test_OpeningFcn, ... 'gui_OutputFcn', @Test_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
function Test_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject; guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = Test_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles) [nama_file,nama_path] = uigetfile({'*.jpg','File jpeg
(19)
if ~isequal(nama_file,0) gbr=imread(fullfile(nama_path,nama_file)) axes(handles.axes1); imshow(gbr); else return; end;
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles) citra=getimage(handles.axes1);
citra=imresize(citra,[200 300]); citra_double=double(citra);
[b k c]=size(citra_double); for x=1:b for y=1:k semua_elemen1=citra_double(x,y,1)+citra_double(x,y,2)+ citra_double(x,y,3); gray_mean1(x,y)=semua_elemen1/3; end end gbr=uint8(gray_mean1); h=fspecial('unsharp'); m=imfilter(gbr,h); m1=imfilter(m,h); m2=imfilter(m1,h); %m3=imfilter(m2,h); %m4=imfilter(m3,h); gb1=(edge(m2,'canny',0.17)); [b k]=size(gb1); for x=1:b for y=1:k if gb1(x,y)==0 gb1(x,y)=1; elseif gb1(x,y)>0 gb1(x,y)=0; end end end gbr=double(reshape(gb1,1,60000)); palm=2*gbr-1;
t1=[1 0 1 0 1 0 0 1 0 1 1]; t2=[0 0 0 1 0 1 0 0 0 0 0]; t3=[1 1 1 0 1 1 1 1 1 1 1]; t4=[0 1 0 1 0 0 1 0 1 0 1]; t5=[0 1 1 0 1 0 0 1 0 1 0]; t6=[0 1 0 1 0 1 0 0 0 0 0]; t7=[1 0 1 0 1 1 1 1 1 1 1]; t8=[0 0 0 1 0 0 1 0 1 0 0]; t9=[1 0 1 0 1 1 0 1 0 1 1];
(20)
t10=[0 0 0 1 0 0 0 0 0 0 1]; t11=[1 1 1 0 1 1 1 1 1 1 0]; t12=[0 1 0 1 0 0 1 0 1 0 0]; t13=[1 1 1 0 1 0 0 1 0 1 1]; t14=[1 1 0 1 0 1 0 0 0 0 1]; t15=[1 0 1 0 1 0 1 1 1 1 1]; t16=[0 0 0 1 0 1 1 0 1 0 0]; t17=[1 0 1 0 1 1 0 1 0 1 0]; t18=[0 0 0 1 0 0 0 0 0 0 0]; t19=[1 1 1 0 1 0 1 1 1 1 1]; t20=[0 1 0 1 0 1 1 0 1 0 0];
t=[t1;t2;t3;t4;t5;t6;t7;t8;t9;t10;t11;t12;t13;t14;t15;t16;t17; t18;t19;t20;];
y=2*t-1;
w=xlsread('pelatihan.xlsx','bobot','A1:K60000'); nilai = palm*w;
[r k]=size(nilai); for i=1:r for j=1:k if nilai(i,j)<=0; nilai_y(i,j)=0; else nilai(i,j)>0; nilai_y(i,j)=1; end end end disp(nilai_y); hasil=''; hasil2=''; if nilai_y==t1;
hasil='Yayang Kurniati '; hasil2='101401057'; gb1=imread('fyayang.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t2; hasil='Reni Ramadhani'; hasil2='101401017'; gb1=imread('freni.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t3; hasil='Danny Rizky'; hasil2='101401037'; gb1=imread('fdanny.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t4; hasil='Angga Wiranda' hasil2='101401073'; gb1=imread('fangga.jpg');
(21)
axes(handles.axes2); imshow(gb1) elseif nilai_y==t5; hasil='Hayatun Nufus' hasil2='101401013'; gb1=imread('fhayatun.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t6
hasil='Intan PS Mat' hasil2='101401021'; gb1=imread('fintan.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t7; hasil='Janwandi Sinaga' hasil2='101401095'; gb1=imread('fjanwandi.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t8; hasil='Ahmad Rasyidi' hasil2='101401001'; gb1=imread('cantik.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t9; hasil='Agus Prabowo' hasil2='101401019'; gb1=imread('fagus.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t10; hasil='Umri Herdiansyah' hasil2='101401033'; gb1=imread('fumri.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t11; hasil='Nurhennida Sitepu'; hasil2='101401097'; gb1=imread('fnurhennida.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t12;
hasil='Rivai H Purba' hasil2='101401047'; gb1=imread('frivai.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t13; hasil='Singgih Trimukti' hasil2='101401075'; gb1=imread('fsinggih.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t14;
hasil='Teguh Arif F' hasil2='101401063';
(22)
axes(handles.axes2); imshow(gb1) elseif nilai_y==t15;
hasil='Tetti Sinaga ' hasil2='101401067'; gb1=imread('fteti.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t16; hasil='Fajrul Falah' hasil2='101401041'; gb1=imread('ffajrul.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t17;
hasil='Amalya Chairy ' hasil2='101401085'; gb1=imread('famalya.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t18; hasil='Vito Erpindo' hasil2='101401087'; gb1=imread('fvito.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t19;
hasil='Sunfirst Lady JeanFera Nababan' hasil2='101401083';
gb1=imread('fsunfirst.jpg'); axes(handles.axes2); imshow(gb1) elseif nilai_y==t20;
hasil='Johanes Prima saragih' hasil2='101401049'; gb1=imread('fjohanes.jpg'); axes(handles.axes2); imshow(gb1) else hasil='Tidak Dikenali'; hasil2='0'; gb1=imread('tidak.jpg'); axes(handles.axes2); imshow(gb1) end set(handles.edit1,'String',hasil); set(handles.edit2,'String',hasil2);
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in reset.
(23)
guidata(hObject,handles); handles.reset=handles.axes2; set(handles.edit1,'string',''); set(handles.edit2,'string',''); handles.reset=handles.axes1; imshow(handles.reset); % ---
function Home_Callback(hObject, eventdata, handles) depan
delete(handles.figure1);
% ---
function Preprocessing_Callback(hObject, eventdata, handles) proses
delete(handles.figure1);
% ---
function Train_Callback(hObject, eventdata, handles) Train
delete(handles.figure1);
% ---
function Help_Callback(hObject, eventdata, handles) help
delete(handles.figure1);
% ---
function About_Callback(hObject, eventdata, handles) about
delete(handles.figure1);
% ---
function Exit_Callback(hObject, eventdata, handles) respon=keluar('Title','Konfirmasi Keluar'); switch lower(respon) case 'tidak' case 'ya' close end
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in pushbutton4.
(24)
a = getimage(handles.axes1);
nilai=str2num(get(handles.edit3,'string')); b = imnoise(a,'gaussian',nilai*0.01);
axes(handles.axes1) imshow(b);
function edit3_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
(25)
CURRICULUM VITAE
Nama : LennoraMarbun
Alamat Sekarang : Jl. Pintu Air IV Gg Inpres, Medan Alamat Orang Tua : Jl. Veteran No. 20 A, Doloksanggul Telp/ Hp ☎ : 0819-7305-3319
Email :
Pendidikan
1998 –2004 : SD Negeri173394 Doloksanggul 2004 – 2007 : SMP Negeri1Doloksanggul 2007 – 2010 : SMA Negeri1Doloksanggul
2010 – 2014 : Universitas Sumatera Utara (FasilkomTI –Ilmu Komputer) Keahlian
Database : MySQL
Bahasa : Indonesia, Inggris, Batak Toba.
(26)
Daftar Pustaka
[1] Ahmad, Usman. 2005. Pengolahan Citra Digital & Teknik Pemrogramannya. Graha Ilmu:
Yogyakarta.
[2] Arifin, Z. 2009. Jaringan syaraf tiruan Bidirectional Associative Memory (BAM)
sebagai
identifikasi pola sidik jari manusia. Jurnal Informatika Mulawarman 4(1): 21-26.
[3] Desiani, A & Arhami, M. 2006. Konsep Kecerdasan Buatan. Andi Offset: Yogyakarta. [4] Dulimarta, H. S. 1997. Diktat Kuliah Pengolahan Citra. Jurusan Teknik Informatika ITB.
[5] Ginting, E. D. 2012. Deteksi tepi menggunakan metode canny dengan Matlab untuk
membedakan uang asli dan uang Palsu. Skripsi. Universitas Gunadarma.
[6] Hastawan, A. F. 2013. Deteksi sudut menggunakan kode rantai untuk pengenalan
bangun
datar dua dimensi.Transmisi 15(1): 4.
[7] Haykin, S. 2009. Neural Network and Learning Machines. 3�ℎedition.Pearson
International
Edition: New Jersey.
[8] Hermawan, A. 2006. Jaringan Saraf Tiruan: Teori dan Aplikasinya. Andi: Yogyakarta. [9] Kurniadi, R. 2011. Pengembangan sistem identifikasi telapak tangan dengan
menggunakan
filter bank gabor. Skripsi. Institut Teknologi Sepuluh Nopember Surabaya.
[10] Kusumadewi, S. 2003. Artificial intelligence. Graha Ilmu: Yogyakarta. [11] Munir, R. 2004. Pengolahan Citra Digital.(online)
(25 September 2013).
[12] Pandjaitan, L. W. 2007. Dasar-dasar Komputasi Cerdas. Andi Offset: Yogyakarta.
[13] Putra, I. K. G. D. 2009. Sistem Biometrika Teori dan Aplikasi. Andi Offset: Yogyakarta, pp 121.
[14] Putra, I. K. G. D., Bhuana, W. & Erdiawan. 2011. Pembentukan Kode Telapak Tangan
(Palm Code) Berbasis Metode Gabor 2d. Makara Teknologi 15(2): 161 - 167.
[15] Putra, I. K. G. D. 2009. Sistem Verifikasi Biometrika Telapak Tangan Dengan Metode
(27)
[16] Sihotang, S. J. A. 2010. Implementasi jaringan saraf tiruan untuk pengenalan tanda
tangan. Skripsi. Universitas Sumatera Utara.
[17] Siregar, T. R. 2013. Implementasi jaringan syaraf metode bidirectional associative
memory untuk pengenalan wajah. Skripsi. Universitas Sumatera Utara.
[18] Soraya, F. 2009. Pengidentifikasian Sidik Telapak Kaki Bayi Menggunakan Jaringan
(28)
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1Analisis Permasalahan
Pengenalan identitas seseorang masih banyak digunakan sistem tradisional, dimana mengenali dengan pin, password, kata sandi yang banyak menimbulkan permasalahan yaitu lupa dengan kata sandi, hilang, dicuri dan dibajak. Sehingga, solusi yang digunakan dengan menggunakan sistem biometrika. Dalam sistem biometrika, pola biometrik yang ada dalam tubuh manusia sendiri dapat digunakan untuk mengenali identitas seseorang dengan tingkat keamanan yang lebih baik dibandingkan dengan sistem tradisional.
Gambar 3.1 Diagram Ishikawa Analisis Permasalahan 3.2 Analisis Kebutuhan Sistem
Analisis kebutuhan sistem meliputi analisis kebutuhan fungsional dan analisis kebutuhan
non-fungsional sistem.
3.2.1 Analisis Kebutuhan Fungsional Sistem
Kebutuhan fungsional yang harus dimiliki oleh sistem Identifikasi telapak tangan manusia dengan Jaringan Syaraf Tiruan metode Bidirectional Associative Memory adalah:
1. Sistem dapat menerima inputan citra telapak tangan kanan dengan format JPEG. 2. Sistem dapat melakukan pemrosesan gambar sebelum dilatih.
3. Sistem dapat mengubah citra menjadi citra bipolar.
4. Sistem dapat mengenali identitas seseorang dengan citra telapak tangan kanan yang sudah dilatih .
5. Sistem dapat menyimpan pola dalam bentuk *.xls.
Pengidentifikasian seseorang kurang akurat People
Machine / tools
Methods
Materials kemampuan kurang
baik
Mengenali identitas Sistim tradisional
tidak ada tanda duplikasi
pin kartu kunci
password
Dapat diduplikasi
(29)
3.2.2 Analisis Kebutuhan Non-Fungsional Sistem
Kebutuhan non-fungsional yang harus dimiliki oleh sistem Identifikasi telapak tangan manusia dengan Jaringan Syaraf Tiruan metode Bidirectional Associative Memory adalah: 1. Tampilan antarmuka sistem yang menarik dan mudah dimengerti oleh pengguna
sistem.
2. Waktu pemrosesan dan pelatihan pola tangan yang lebih cepat. 3.3 Pemodelan Sistem
Pada penelitian ini digunakan UML(Unified Modelling Language) sebagai bahasa pemodelan untuk mendesain dan merancang sistem Implementasi Jaringan Syaraf Tiruan
Bidirectional Associative memory untuk pengidentifikasian telapak tangan manusia. Model
UML yang digunakan adalah use case diagram, activity diagram, dan sequence diagram. 3.3.1 Pemodelan dengan Menggunakan Use Case Diagram
Use Case adalah diagram yang menunjukkan fungsionalitas suatu sistem atau kelas dan
bagaimana sistem tersebut berinteraksi dengan dunia luar dan menjelaskan sistem secara fungsional yang terlihat user.
Dalam pemodelan ini terdapat aktor yaitu user dan programmer. Programmer dapat melakukan pelatihan dan pengujian jaringan syaraf tiruan dengan metode bidirectional
associative memory untuk mengidentifikasi pola telapak tangan, sedangkan user dapat
(30)
Sistem Implementasi Jaringan Syaraf Tiruan untuk pengidentifikasian telapak tangan manusia
Pelatihan BAM
Pengujian BAM
Programmer
Metode BAM
User
<< include >>
<< include >>
Gambar 3.2 Use Case Diagram Sistem Identifikasi Telapak Tangan 3.3.1.1 Use case Pelatihan Jaringan Syaraf Tiruan (JST)
Use case Pelatihan JST ini menjelaskan dokumentasi naratif dari pelatihan JST sistem yang akan dibangun seperti pada Tabel 3.1.
Tabel 3.1 Dokumentasi Naratif Use Case Pelatihan Jaringan Syaraf Tiruan Nama Use Case Pelatihan Jaringan Syaraf Tiruan
Aktor Programmer dan user
Deskripsi Use Case ini mendeskripsikan proses pelatihan Jaringan Syaraf Tiruan
Prakondisi Berada pada interface menu Train
Alur Dasar Kegiatan User Respon System
1. Tekan Button load 1. Menampilkan semua citra yang akan dilatih pada axes yang tersedia di interface 2. Tekan button Train 2. Melakukan proses Pelatihan
JST pada citra yang disimpan dimana, sebelumnya citra sudah diproses yaitu
mengubah ukuran citra pada tiap axes sebesar 200 x 300
pixel, diubah Grayscale,
diproses dengan Sharpening dan mendeteksi tepi citra dengan metode Canny
(31)
Alur Alternatif Tidak ada
Post-Kondisi Sistem telah menyimpan bobot hasil proses pelatihan Jaringan Syaraf Tiruan
3.3.1.2 Use case Pengujian Jaringan Syaraf Tiruan (JST)
Use case pengujian JST ini menjelaskan dokumentasi naratif dari pengujian JST
sistem yang akan dibangun seperti pada Tabel 3.2.
Tabel 3.2 Dokumentasi Naratif Use Case Pengujian Jaringan Syaraf Tiruan Nama UseCase Pengujian Jaringan Syaraf Tiruan
Aktor Programmer dan user
Deskripsi Use Case ini mendeskripsikan proses pengujian Jaringan Syaraf Tiruan
Prakondisi Berada pada interface menu Test
Alur Dasar Kegiatan User Respon System
1. Tekan tombol Buka File Gambar
1. Menampilkan antarmuka pemilihan citra telapak tangan yang akan dikenali
2. Pilih citra yang akan dikenali 2. Menampilkan citra telapak tangan yang akan dikenali pada axes 3. Tekan tombol Test 3. Proses Identifikasi Pengenalan
pola telapak tangan dan informasi pemilik pola telapak tangan
Alur Alternatif 1. Tekan tombol Reset 1. Sistem membersihkan axes dan
static text pada antarmuka Test
Post-Kondisi Sistem menampilkan hasil proses identifikasi telapak tangan, nama, dan nim si pemilik citra telapak tangan
3.3.2 Pemodelan dengan Menggunakan Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang
dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi dan bagaimana mereka berakhir.
(32)
Pelatihan
B A M
=latih !=latih
Pengujian
Simpan bobot hasil pelatihan
Browse Citra
Pilih Citra
Tekan tombol kenali
Informasi hasil identifikasi Load citra yang akan dilatih
Tekan tombol Latih
Gambar 3.3 Activity Diagram Proses Pelatihan dan Pengenalan JST BAM
3.3.3 Pemodelan dengan Menggunakan Sequence Diagram
Sequence Diagram (diagram urutan) adalah suatu diagram yang memperlihatkan atau
menampilkan interaksi-interaksi antar objek di dalam sistem yang disusun pada sebuah urutan atau rangkaian waktu. Interaksi antar objek tersebut termasuk pengguna, display, dan sebagainya berupa pesan/message.
(33)
3.3.3.1Sequence Diagram proses pelatihan Jaringan Syaraf Tiruan
Pada sistem, akan dilakukan proses pelatihan, dimana terjadi interaksi pada objek kontrol pelatihan citra. Citra telapak tangan akan dijadikan pola dan diproses sebelum dilatih. Ukuran citra telapak tangan yang merupakan jenis citra RGB akan diubah menjadi ukuran 200 x 300 pixel, diproses menjadi citra grayscale dan di-sharpening filter.
Selanjutnya dilakukan deteksi tepi dengan metode Canny untuk mendapatkan tepi citra sekaligus mengubahnya ke dalam bentuk citra biner. Citra biner kemudian akan diubah kedalam citra bipolar untuk mendapatkan elemen matriks citra bernilai 1 dan -1. Kemudian, pola akan dilatih dengan metode BAM untuk mendapatkan bobot dari pola yang sudah dilatih sebelumnya seperti pada gambar 3.4.
Kontrol Pelatihan
Resize
Imread(citra telapak tangan)
Grayscale Sharpen Filtering Deteksi Tepi Canny BAM
Resize(citra telapak)
Grayscale(Matriks)
Imfilter(Matriks)
Edge Detection(Matriks)
Pelatihan
Simpan(bobot)
(34)
3.3.3.2Diagram sequence proses Pengujian Jaringan Syaraf Tiruan
Pada sistem, akan dilakukan proses pengujian terhadap citra telapak tangan yang sudah dilatih dan citra telapak tangan baru yang belum dilatih seperti pada sequence
diagram pada gambar 3.5.
Kontrol Pengujian Metode BAM
Imread (citra telapak tangan)
pengujian
Set String (data identitas pemilik Telapak tangan)
(35)
3.4 Flowchart Gambaran umum Sistem
Flowchart merupakan gambaran- gambaran umum aliran sistem. Gambaran umum
sistem ini dapat dilihat pada flowchart gambar 3.12 .
(36)
Pengenalan pola telapak tangan diawali dengan memanggil citra pola telapak tangan kanan yang akan dilatih dengan menggunakan metode bidirectional associative memory yang merupakan citra RGB sebanyak 20 sampel citra. Citra RGB yang dipanggil akan diubah ukurannya. Agar setiap citra memiliki ukuran yang sama yaitu 200 x 300. Kemudian citra yang sudah di-resize yang masih merupakan citra RGB di ubah menjadi citra Grayscale dan untuk memperkuat garis tepi dari citra telapak tangan maka akan dilakukan sharpening filter agar informasi dari garis telapak tangan semakin jelas dan kemudian citra akan dideteksi tepinya dengan menggunakan deteksi tepi canny. Pendeteksian tepi ini dilakukan untuk mendapatkan garis-garis utama dari citra telapak tangan dan mengubah citra menjadi citra biner. Pola citra biner diubah menjadi citra bipolar. Selanjutnya, pola-pola akan dilakukan pelatihan dengan menggunakan metode BAM. Dengan melakukan proses encoding, bobot dari pola akan dihitung dan disimpan. Selanjutnya, pada proses pengujian citra akan yang diuji dipanggil kemudian diuji apakah mengenali atau tidak. Jika dikenali maka akan dihasilkan output identitas pemilik citra telapak tangan, jika tidak dikenali maka akan didapat informasi bahwasanya pemilik citra tidak dikenali.
3.5 Perancangan Arsitektur Jaringan
Pada penelitian ini, menggunakan arsitektur jaringan Bidirectional Associative
Memory yang memiliki dua lapisan yaitu lapisan input yang terdiri dari 20 neuron dan
lapisan output yang terdiri dari 20 neuron. Tiap neuron pada lapisan input merupakan pola citra telapak tangan kanan yang sudah di-prepocessing. Tiap neuron pada lapisan output ditentukan terdiri 11 bit seperti berikut:
Vector output target 1 = 1 -1 1 -1 1 -1 -1 1 -1 1 1 Vector output target 2 = -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 Vector output target 3 = 1 1 1 -1 1 1 1 1 1 1 1 Vector output target 4 = -1 1 -1 1 -1 -1 1 -1 1 -1 1 Vector output target 5 = -1 1 1 -1 1 -1 -1 1 -1 1 -1 Vector output target 6 = -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 Vector output target 7 = 1 -1 1 -1 1 1 1 1 1 1 1 Vector output target 8 = -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 Vector output target 9 = 1 -1 1 -1 1 1 -1 1 -1 1 1 Vector output target 10 = -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 Vector output target 11 = 1 1 1 -1 1 1 1 1 1 1 -1 Vector output target 12 = -1 1 -1 1 -1 -1 1 -1 1 -1 -1
(37)
Vector output target 13 = 1 1 1 -1 1 -1 -1 1 -1 1 1 Vector output target 14 = 1 1 -1 1 -1 1 -1 -1 -1 -1 1 Vector output target 15 = 1 -1 1 -1 1 -1 1 1 1 1 1 Vector output target 16 = -1 -1 -1 1 -1 1 1 -1 1 -1 -1 Vector output target 17 = 1 -1 1 -1 1 1 -1 1 -1 1 -1 Vector output target 18 = -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 Vector output target 19 = 1 1 1 -1 1 -1 1 1 1 1 1 Vector output target 20 = -1 1 -1 1 -1 1 1 -1 1 -1 -1
Sehingga dapat digambarkan bahwasanya arsitektur jaringan dari sistim ini seperti pada gambar 3.13
Gambar 3.7 Arsitektur Jaringan Syaraf tiruan Metode BAM untuk pengenalan pola telapak tangan
3.6 Perancangan Antarmuka Sistem
Sistem yang akan dibangun menggunakan bahasa pemrograman Matlab R2007b untuk memberi kemudahan kepada user menggunakan sistem. Dalam rancangan antar muka sistem ini ada 6 menu yaitu menu home, train, test, help, about dan exit.
y1 y2 y3 y4 y20
x1 x2 x3 x4 x20
Lapisan output
Lapisan input …………
(38)
3.6.1 Antarmuka Form Home
Form home merupakan form tampilan awal dan sebagai cover pada saat aplikasi ini
dijalankan. Form home antarmuka dari aplikasi ini seperti pada gambar 3.6.
Gambar 3.8 Tampilan Rancangan Antarmuka Form Home Keterangan:
1. Menu Train
Menu untuk menghubungkan form home dengan form train 2. Menu Test
Menu untuk menghubungkan form home dengan form test 3. Menu Help
Menu untuk menghubungkan form home dengan form help 4. Menu About
Menu untuk menghubungkan form home dengan form about 5. Menu Exit
Menu untuk menghubungkan form home dengan form exit 3.6.2 Antarmuka Form Train
(39)
Form Train merupakan form tampilan untuk memproses citra yang akan dilatih, melatih
pola citra yang sudah diolah dan menyimpan bobot. Form Train antarmuka dari aplikasi ini seperti pada gambar 3.7.
Gambar 3.9 Tampilan Rancangan Antarmuka Form Train Keterangan:
1. Menu Home
Menu untuk menghubungkan form Train dengan form home 2. Menu Test
Menu untuk menghubungkan form Train dengan form test 3. Menu Help
Menu untuk menghubungkan form Train dengan form help 4. Menu About
Menu untuk menghubungkan form Train dengan form about 5. Menu Exit
Menu untuk menghubungkan form Train dengan form exit 6. Axes1 sampai axes 20
1 2 3 4 5
6
7
(40)
Tempat untuk menampilkan citra telapak tangan yang akan proses 7. Button Load
Untuk memanggil citra yang tersimpan dalam folder yang disimpan 8. Button Reshape
Untuk mengubah ukuran citra menjadi 200 x300 pixel pada axes 1sampai axes 20 9. Button Grayscale
Untuk mengubah citra RGB menjadi citra grayscale pada axes 1 sampai axes 20 10. Button Sharpening
Untuk melakukan sharpening filter pada citra grayscale dalam axes 1 sampai dengan
axes 20
11. Button Deteksi Tepi Canny
Untuk mendeteksi tepi citra yang sudah di-sharpening filter dengan metode Canny pada
axes 1 sampai dengan axes 20
12. Button Train
Untuk melatih citra yang sudah diolah dan menyimpan matriks bobot citra dalam format *.xls.
(41)
3.6.3 Antarmuka Form Test
Form Test merupakan form tampilan untuk melakukan pengujian sistem atau
pengenalan pola yang sudah dilatih sebelumnya. Form Test antarmuka dari aplikasi ini seperti pada gambar 3.9.
Gambar 3.10 Tampilan Rancangan Antarmuka Form Test Keterangan:
1. Menu Home
Menu untuk menghubungkan form test dengan form home 2. Menu Train
Menu untuk menghubungkan form test dengan form train 3. Menu Help
Menu untuk menghubungkan form test dengan form help 4. Menu About
Menu untuk menghubungkan form test dengan form about 5. Menu Exit
Menu untuk menghubungkan form test dengan form exit 6. Axes 1
Tempat untuk menampilkan citra telapak tangan yang akan diuji 7. Button Buka File Citra
Untuk membuka citra yang akan diuji 1 2 3 4 5
6
7
8
9
10
11
(42)
8. Button Test
Untuk melakukan pengenalan atau pengujian dengan metode BAM pada citra di axes1. 9. Axes 2
Tempat untuk menampilkan citra pemilik pola telapak tangan yang diuji. 10. Edit text1
Menampilkan informasi nama pemilik pola telapak tangan yang diuji dengan menggunakan metode BAM
11. Edit text2
Menampilkan informasi nim pemilik pola telapak tangan yang diuji dengan menggunakan metode BAM
12. Button Reset
(43)
3.6.4 Antarmuka Form Help
Form Help merupakan form tampilan untuk menjelaskan cara penggunaan aplikasi.
Form Help antarmuka dari aplikasi ini seperti pada gambar 3.9.
Gambar 3.11 Tampilan Rancangan Antarmuka Form Help Keterangan:
1. Menu Home
Menu untuk menghubungkan form Help dengan form home 2. Menu Train
Menu untuk menghubungkan form Help dengan form Train 3. Menu Test
Menu untuk menghubungkan form Help dengan form Test 4. Menu About
Menu untuk menghubungkan form Help dengan form About 5. Menu Exit
Menu untuk menghubungkan form Help dengan form exit 6. Static text
Sebagai tempat teks cara penggunaan aplikasi. 1 2 3 4 5
(44)
3.6.5 Antarmuka Form About
Form About merupakan form tampilan untuk melatih pola yang sudah diproses
sebelumnya. Form About antarmuka dari aplikasi ini seperti pada gambar 3.10
Gambar 3.12 Tampilan Rancangan Antarmuka Form About Keterangan:
1. Menu Home
Menu untuk menghubungkan form About dengan form Home 2. Menu Train
Menu untuk menghubungkan form About dengan form Train
3. Menu Test
Menu untuk menghubungkan form About dengan form Test 4. Menu Help
Menu untuk menghubungkan form About dengan form Help 5. Menu Exit
Menu untuk menghubungkan form About dengan form Exit 6. Axes 1
Tempat untuk menampilkan gambar programmer
7. Static text
Sebagai tempat teks profil pembuat aplikasi (nama, nim, alamat). 1 2 3 4 6
7
(45)
3.6.6 Antarmuka Form Exit
Form Exit merupakan form tampilan untuk meminta konfirmasi user apakah akan
menutup aplikasi atau tidak. Form Exit antarmuka dari aplikasi ini seperti pada gambar 3.11.
Gambar 3.13 Tampilan Rancangan Antarmuka Form Exit Keterangan:
1. Button “ya”
Memberi konfirmasi user kepada sistem untuk menutup aplikasi. 2. Button “tidak”
Memberi konfirmasi user kepada sistem untuk tidak menutup aplikasi.
(46)
BAB IV
IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi Sistem
Implementasi sistem pengenalan identitas dengan pola telapak tangan menggunakan
Bidirectional Associative Memory (BAM) ini menggunakan bahasa pemrograman Matlab
R2007b. Penerapan sistem ini dilakukan dengan dengan perangkat keras yang memilki spesifikasi notebook dengan prosessor intel(R) Atom(TM), CPU N570, 1,67 GHz dan RAM 1GB.
4.1.1 Tampilan Antarmuka Sistem
Sistem pengidentifikasian telapak tangan manusia diimplementasikan dalam beberapa tampilan antarmuka untuk memberi kemudahan memahami proses identifikasi dengan 6 antarmuka yaitu antarmuka home, train, test, help, about, dan exit.
4.1.1.1Antarmuka Home
Antarmuka Home merupakan antarmuka yang ditampilkan pertama kali ketika aplikasi dijalankan. Dalam antarmuka home terdapat menu-menu yang dapat menghubungkan menu
(47)
Tampilan antarmuka home ditunjukkan pada Gambar 4.1.
Gambar 4.1 Tampilan Antarmuka Home
4.1.1.2Antarmuka Train
Antarmuka Train merupakan antarmuka dimana tempat pola-pola citra telapak tangan yang akan dilatih ditampilkan yaitu terdiri dari 20 sampel citra. Button Load diklik untuk menampilkan semua pola citra telapak tangan kanan yang akan diolah terlebih dahulu sebelum dilatih. Pada antarmuka train juga terdapat menu lain untuk dapat menghubungkan antarmuka train dengan antarmuka lain seperti menu home, menu test, menu help, menu
(48)
Gambar 4.2 Tampilan antarmuka Train
Tampilan antarmuka train pada saat button Load diklik ditunjukkan pada Gambar 4.3
Gambar 4.3 Tampilan antarmuka Train setelah button Load diklik
Pada antarmuka Train terdapat panel preprocessing yang berisi 4 button yaitu button
(49)
tersebut merupakan proses pre-processing untuk mengolah pola citra telapak tangan sebelum diolah. Keempat button digunakan secara berurutan dimulai dari button Reshape kemudian ke button Grayscale selanjutnya ke button Sharpening dan akhirnya ke button Deteksi Tepi Canny. Button Reshape berfungsi untuk mengubah ukuran seluruh pola citra telapak tangan pada 20 axes menjadi 200 x 300 piksel. Tampilan antarmuka setelah button
Reshape di klik ditunjukkan pada gambar 4.4.
Gambar 4.4 Tampilan antarmuka train setelah button Reshape diklik
Button Grayscale berfungsi untuk mengubah seluruh pola citra telapak tangan RGB pada 20 axes yang sudah di-Reshape menjadi grayscale. Tampilan antarmuka setelah button Graycale di klik ditunjukkan pada gambar 4.5.
(50)
Gambar 4.5 Tampilan antarmuka setelah button Graycale diklik
Selanjutnya, pola citra telapak tangan yang sudah di grayscale akan di sharpening dengang
button Shapening sebanyak 3 kali untuk menajamkan garis tepi pada pola citra telapak
tangan. Tampilan antarmuka train pada saat di-sharpening pertama kali ditunjukkan pada Gambar 4.6.
(51)
Tampilan antarmuka train pada saat di-sharpening kedua kali ditunjukkan pada Gambar 4.7.
Gambar 4.7 Tampilan antarmuka train pada saat di-sharpening kedua kali
Tampilan antarmuka train pada saat di-sharpening ketiga kali ditunjukkan pada Gambar 4.8.
Gambar 4.8 Tampilan antarmuka train pada saat di-sharpening ketiga kali
Pola citra telapak tangan yang sudah di-sharpening selanjutnya akan diproses dengan mengklik deteksi tepi Canny seperti yang ditunjukkan pada Gambar 4.9.
(52)
Gambar 4.9 Tampilan antarmuka train pada saat di deteksi tepi Canny
Pola yang sudah siap diolah akan di latih dengan mengklik button train, maka pola citra telapak tangan kanan akan diolah dan akan menghasilkan bobot yang disimpan dalam pelatihan.xls. Setelah siap disimpan bobot disimpan, maka diberi informasi seperti tampilan antarmuka Gambar 4.10.
Gambar 4.10 Tampilan Antarmuka setelah selesai dilatih
4.1.1.3Antarmuka Test
Antarmuka test merupakan tampilan antarmuka untuk melakukan pengujian terhadap pola citra telapak tangan yang sudah dilatih sebelumnya dan pola citra telapak tangan kanan yang baru. Dalam tampilan antarmuka test terdapat juga menu-menu yang dapat menghubungkan antarmuka test dengan tampilan antarmuka yang lain seperti menu home, train, help, about, dan exit. Tampilan antarmuka test ditunjukkan pada Gambar 4.11.
(53)
Gambar 4.11 Tampilan antarmuka Test
Untuk melakukan pengujian terhadap pola citra telapak tangan kanan, klik button Buka File Gambar, maka akan muncul tampilan buka file gambar seperti ditunjukkan pada Gambar 4.12.
(54)
Gambar 4.12 Tampilan Buka File Gambar
Setelah gambar dipilih maka citra pola telapak tangan kanan akan ditampilkan pada axes 1 seperti pada Gambar 4.13.
Gambar 4.13 Tampilan Antarmuka Test Pola yang Akan Diuji Ditampilkan Untuk menguji pola citra, klik button test, maka akan dilatih dan hasilnya akan ditampilkan. Jika pola citra telapak tangan kanan dikenali, maka akan ditampilkan gambar pemilik telapak tangan pada axes 2 dan informasi nama serta nim pemilik telapak tangan seperti yang ditunjukkan pada gambar 4.14.
(55)
(56)
Jika dalam pengujian tidak dikenali, maka akan diberi informasi bahwasanya pola citra telapak tangan kanan tidak dikenali seperti yang ditunjukkan pada gambar 4.15.
(57)
Jika dalam pengujian salah mengenali, maka akan diberi informasi bahwasanya pola citra telapak tangan kanan dengan data yang tidak sesuai dengan pemilik telapak tangan sebenarnya seperti yang ditunjukkan pada gambar 4.16
. Gambar 4.16 Tampilan Antarmuka Test Hasil Uji Salah Mengenali
4.1.1.4Antarmuka Help
Antarmuka help merupakan tampilan antarmuka memuat teks informasi bagaimana menggunakan aplikasi. Dalam antarmuka help juga terdapat menu-menu lain yang dapat menghubungkan antarmuka help dengan antarmuka lain seperti antarmuka
home, train, test, about, dan exit. Tampilan antarmuka help ditunjukkan pada Gambar
(58)
Gambar 4.17 Gambar Antarmuka Help
4.1.1.5Antarmuka About
Antarmuka About merupakan tampilan antarmuka yang memuat teks dan gambar tentang informasi pembuat aplikasi. Dalam antarmuka about juga terdapat menu-menu lain yang dapat menghubungkan antarmuka about dengan antarmuka lain seperti antarmuka home, train, test, help, dan exit. Tampilan antarmuka about ditunjukkan pada Gambar 4.18.
(59)
Gambar 4.18 Tampilan Antarmuka About
4.1.1.6Antarmuka Exit
Antarmuka Exit merupakan tampilan antarmuka untuk konfirmasi keluar dari aplikasi atau tidak. Jika ingin keluar dari aplikasi, maka klik button “ya”, jika tidak klik button “tidak”. Tampilan antarmuka exit ditunjukkan pada Gambar 4.17.
Gambar 4.18 Tampilan Antarmuka Exit
4.2 Pengujian Sistem
Pengujian dilakukan untuk membuktikan bahwa jaringan syaraf tiruan dengan metode
Bidirectional Associative Memory dapat digunakan untuk pengenalan pola telapak
tangan. Pengujian dibatasi pada pola citra telapak tangan kanan yang sudah tersedia pada sistem. Pada penelitian ini ada 2 pengujian yang dilakukan. Pertama pengujian
(60)
terhadap pola telapak tangan kanan yang sudah dilatih dan kedua pengujian terhadap pola telapak tangan kanan yang baru yang belum dilatih.
4.2.1 Pengujian terhadap Citra Telapak Tangan Kanan yang Sudah Dilatih
Pada pengujian ini, data masukan yang digunakan adalah citra telapak tangan kanan yang sudah dilatih sebelumnya, dimana terdiri dari 20 citra telapak tangan dengan format .jpg atau .jpeg berukuran 200 x 300 piksel. Setiap citra diambil dengan posisi telapak tangan terbuka dan melintang. Target dari pola telapak tangan tersebut yaitu,
y1 = (1 -1 1 1 -1 -1 -1 1 1 -1 1),
y2 = ( -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1)
y3 = ( 1 1 1 -1 1 1 1 1 1 1 1)
y4 = ( -1 1 -1 1 -1 -1 1 -1 1 -1 1)
y5 = ( -1 1 1 -1 1 -1 -1 1 -1 1 -1)
y6 = ( -1 1 -1 1 -1 1 -1 -1 -1 -1 -1)
y7 = ( 1 -1 1 -1 1 1 1 1 1 1 1)
y8 = ( -1 -1 -1 1 -1 -1 1 -1 1 -1 -1)
y9 = ( 1 -1 1 -1 1 1 -1 1 -1 1 1)
y10= ( -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1)
y11= ( 1 1 1 -1 1 1 1 1 1 1 -1)
y12= ( -1 1 -1 1 -1 -1 1 -1 1 -1 -1)
y13= ( 1 1 1 -1 1 -1 -1 1 -1 1 1)
y14= ( 1 1 -1 1 -1 1 -1 -1 -1 -1 1)
y15= ( 1 -1 1 -1 1 -1 1 1 1 1 1)
y16= ( -1 -1 -1 1 -1 1 1 -1 1 -1 -1)
y17= ( 1 -1 1 -1 1 1 -1 1 -1 1 -1)
y18= ( -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1)
y19= ( 1 1 1 -1 1 -1 1 1 1 1 1)
y20= ( -1 1 -1 1 -1 1 1 -1 1 -1 -1)
Hasil pengujian sistem ditunjukkan pada tabel 4.1. Setiap baris dalam tabel menunjukkan nomor urut pengujian, citra telapak tangan kanan yang diuji, nama pemilik citra telapak tangan, target terhadap telapak tangan yang dilatih dan hasil pengenalan.
(61)
Tabel 4.1 Pengujian citra telapak tangan kanan yang sudah dilatih
No Pola telapak tangan
Nama pemilik Telapak Tangan
Target Hasil
Pengenalan
1 Yayang ��=(1 -1 1 1 -1 -1 -1 1 1
-1 1)
Yayang
2 Reni ��=( 1 1 1 1 1 1
-1 --1 --1 --1 --1)
Reni
3 Danny ��=( 1 1 1 -1 1 1 1 1
1 1 1)
Danny
4 Angga ��=( -1 1 -1 1 -1 -1 1
-1 1 -1 1)
Angga
5 Hayatun ��=( -1 1 1 -1 1 -1 -1
1 -1 1 -1)
Hayatun
6 Intan ��=( -1 1 -1 1 -1 1 -1
-1 -1 -1 -1)
Intan
7 Janwandi ��=( 1 -1 1 -1 1 1 1 1
1 1 1)
Janwandi
8 Rasyid ��=( -1 -1 -1 1 -1 -1
1 -1 1 -1 -1)
(62)
9 Agus ��=( 1 -1 1 -1 1 1 -1 1 -1 1 1)
Agus
10 Umri ���=( -1 -1 -1 1 -1 -1
-1 -1 -1 -1 1)
Umri
11 Nurhennida ���=( 1 1 1 -1 1 1 1
1 1 1 -1)
Nurhennida
12 Rivai ���=( -1 1 -1 1 -1 -1
1 -1 1 -1 -1)
Rivai
13 Singgih ���=( 1 1 1 -1 1 -1 -1
1 -1 1 1)
Singgih
14 Teguh ���=( 1 1 -1 1 -1 1 -1
-1 -1 -1 1)
Teguh
15 Teti ���=( 1 -1 1 -1 1 -1 1
1 1 1 1)
Teti
16 Fajrul ���=( -1 -1 -1 1 -1 1
1 -1 1 -1 -1)
Fajrul
17 Amalya ���=( 1 -1 1 -1 1 1 -1
1 -1 1 -1)
(63)
18 Vito ���=( -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1)
Vito
19 Sunfirst ���=( 1 1 1 -1 1 -1 1
1 1 1 1)
Sunfirst
20 Johanes ���=( -1 1 -1 1 -1 1 1
-1 1 -1 -1)
Johanes
Dari pengujian yang dilakukan terhadap 20 citra pola telapak tangan kanan yang sudah dilatih, telapak tangan yang dikenali sesuai dengan target adalah 20 telapak tangan. Dari hasil tersebut menunjukkan bahwasanya keakuratan metode Bidirectional Associative
Memory dalam mengenali pola telapak tangan yang sudah dilatih sebesar 100%.
4.2.2 Pengujian terhadap Citra Telapak Tangan Kanan yang Belum Dilatih
Pengujian terhadap pola citra baru telapak tangan kanan yang belum dilatih dilakukan untuk membuktikan berapa besar tingkat keakuratan dan layak pakai dari aplikasi yang menggunakan metode Bidirectional Associative Memory untuk digunakan. Citra baru merupakan citra yang diambil kembali dari 20 objek yang sudah dilatih, dimana tiap objek terdiri dari 2 citra sehingga jumlah citranya adalah 40 citra. Dimana citra baru ini, akan diolah citranya seperti citra yang sudah dilatih, kemudian untuk melakukan pengujian, citra yang sudah diolah akan diubah ke bipolar dan dikalikan dengan bobot pola citra telapak tangan kanan yang sudah dilatih. Hasil pengujiannya ditunjukkan pada Tabel 4.2.
(64)
Tabel 4.2 Pengujian citra baru telapak tangan kanan yang belum dilatih
No Pola telapak tangan
Nama pemilik Telapak Tangan
Target Hasil
Pengenalan
1 Yayang1 ��=(1 -1 1 1 -1 -1 -1 1 1
-1 1)
Yayang
2 Yayang2 ��=(1 -1 1 1 -1 -1 -1 1 1
-1 1)
Tidak dikenali
3 Reni1 ��=( 1 1 1 1 1 1
-1 --1 --1 --1 --1)
Reni
4 Reni2 ��=( 1 1 1 1 1 1
-1 --1 --1 --1 --1)
Reni
5 Danny1 ��=( 1 1 1 -1 1 1 1 1
1 1 1)
Danny
6 Danny2 ��=( 1 1 1 -1 1 1 1 1
1 1 1)
Tidak dikenali
7 Angga1 ��=( -1 1 -1 1 -1 -1 1
-1 1 -1 1)
Angga
8 Angga2 ��=( -1 1 -1 1 -1 -1 1
-1 1 -1 1)
(65)
9 Hayatun1 ��=( -1 1 1 -1 1 -1 -1 1 -1 1 -1)
Hayatun
10 Hayatun2 ��=( -1 1 1 -1 1 -1 -1
1 -1 1 -1)
Hayatun
11 Intan1 ��=( -1 1 -1 1 -1 1 -1
-1 -1 -1 -1)
Intan
12 Intan2 ��=( -1 1 -1 1 -1 1 -1
-1 -1 -1 -1)
Tidak dikenali
13 Janwandi1 ��=( 1 -1 1 -1 1 1 1 1
1 1 1)
Janwandi
14 Janwandi2 ��=( 1 -1 1 -1 1 1 1 1
1 1 1)
Vito
15 Rasyid1 ��=( -1 -1 -1 1 -1 -1
1 -1 1 -1 -1)
Rasyid
16 Rasyid2 ��=( -1 -1 -1 1 -1 -1
1 -1 1 -1 -1)
Rasyid
17 Agus1 ��=( 1 -1 1 -1 1 1 -1
1 -1 1 1)
(66)
18 Agus2 ��=( 1 -1 1 -1 1 1 -1 1 -1 1 1)
Vito
19 Umri1 ���=( -1 -1 -1 1 -1 -1
-1 -1 -1 -1 1)
Vito
20 Umri2 ���=( -1 -1 -1 1 -1 -1
-1 -1 -1 -1 1)
Vito
21 Nurhennida1 ���=( 1 1 1 -1 1 1 1
1 1 1 -1)
Nurhennida
22 Nurhennida2 ���=( 1 1 1 -1 1 1 1
1 1 1 -1)
Tidak dikenali
23 Rivai1 ���=( -1 1 -1 1 -1 -1
1 -1 1 -1 -1)
Vito
24 Rivai2 ���=( -1 1 -1 1 -1 -1
1 -1 1 -1 -1)
Tidak dikenali
25 Singgih1 ���=( 1 1 1 -1 1 -1 -1
1 -1 1 1)
Tidak dikenali
26 Singgih2 ���=( 1 1 1 -1 1 -1 -1
1 -1 1 1)
(67)
27 Teguh1 ���=( 1 1 -1 1 -1 1 -1 -1 -1 -1 1)
Teguh
28 Teguh2 ���=( 1 1 -1 1 -1 1 -1
-1 -1 -1 1)
Rasyid
29 Teti1 ���=( 1 -1 1 -1 1 -1 1
1 1 1 1)
Vito
30 Teti2 ���=( 1 -1 1 -1 1 -1 1
1 1 1 1)
Vito
31 Fajrul1 ���=( -1 -1 -1 1 -1 1
1 -1 1 -1 -1)
Fajrul
32 Fajrul2 ���=( -1 -1 -1 1 -1 1
1 -1 1 -1 -1)
Vito
33 Amalya1 ���=( 1 -1 1 -1 1 1 -1
1 -1 1 -1)
Tidak dikenali
34 Amalya2 ���=( 1 -1 1 -1 1 1 -1
1 -1 1 -1)
Amalya
35 Vito1 ���=( -1 -1 -1 1 -1 -1
-1 -1 -1 -1 -1)
(68)
36 Vito2 ���=( -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1)
Vito
37 Sunfirst1 ���=( 1 1 1 -1 1 -1 1
1 1 1 1)
Tidak dikenali
38 Sunfirst2 ���=( 1 1 1 -1 1 -1 1
1 1 1 1)
Tidak dikenali
39 Johanes1 ���=( -1 1 -1 1 -1 1 1
-1 1 -1 -1)
Tidak dikenali
40 Johanes2 ���=( -1 1 -1 1 -1 1 1
-1 1 -1 -1)
Johanes
Hasil pengujian seperti Tabel 4.2 dilakukan terhadap 40 citra telapak tangan kanan yang diambil kembali citranya dengan menggunakan scanner dari printer dokumen. Citra telapak tangan yang baru ini tidak dilatih. Hasil pengenalannya adalah 21 pola dikenali, 10 pola tidak dikenali, dan 9 pola salah mengenali. Berdasarkan hasil tersebut, kemampuan metode bidirectional associative memory dalam mengenali pola citra telapak tangan kanan yang belum dilatih adalah sebesar 52,5 %.
Hasil pengujian yang dilakukan terhadap pola telapak tangan dengan menggunakan metode bidirectional associative memory dipengaruhi oleh tingkat keakurasian ciri dari citra pola telapak tangan. Ciri telapak tangan seperti dijelaskan dalam Bab 2 yaitu ciri geometri, minusi, garis utama, dan garis-garis kusut. Dalam penelitian ini, ciri yang digunakan adalah ciri geometri dan garis utama sehingga menyebabkan tingkat pengenalan dengan metode bidirectional associative memory tergolong sulit untuk
(69)
diidentifikasi dikarenakan ciri geometri dan garis-garis utama telapak tangan mempunyai gambaran yang relatif mirip antara pola telapak tangan yang satu dengan yang lain.
Disamping itu, tingkat pengenalan dengan metode bidirectional associative memory ini juga dipengaruhi oleh alat pengambilan citra pola. Dalam penelitian ini alat pengambilan citra masih sangat sederhana yaitu dengan menggunakan scanner dari printer dokumen sehingga menyebabkan resolusi citra yang rendah mempengaruhi tingkat keakurasian ciri pola telapak tangan.
(70)
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan hasil analisis, implementasi dan pengujian pada bab sebelumnya, maka diperoleh kesimpulan sebagai berikut:
1. Hasil pengenalan pola telapak tangan kanan dengan menggunakan ciri geometri dan garis-garis utama telapak tangan sebagai data uji yang sudah dilatih dalam metode
Bidirectional Associative Memory adalah sebesar 100 % dan pengenalan terhadap
pola yang belum dilatih adalah sebesar 52,5%. 2. Citra telapak tangan yang di-scan harus bersih.
(71)
5.2 Saran
Berikut ini adalah saran-saran untuk pengembangan dan perbaikan penelitian ini :
1. Untuk penelitian selanjutnya, sistem dapat dikembangkan dengan banyak pola telapak tangan.
2. Untuk penelitian selanjutnya, sistem ini dapat dikembangkan dengan program yang lebih dinamis agar memungkinkan untuk input data baru.
3. Untuk penelitian selanjutnya, sistem ini dapat dikembangkan dengan menggunakan ciri minusi dan garis-garis kusut telapak tangan sebagai pola citra yang akan diuji. 4. Untuk penelitian selanjutnya, sistem ini dapat dikembangkan dengan menggunakan
alat pengambilan citra dengan resolusi yang tinggi misalnya dengan menggunakan kamera digital atau scanner yang beresolusi lebih besar dari 5 MP dan menangkap citra telapak tangan tanpa perlu dipotong secara manual.
5. Perlu dilakukan penelitian untuk pengenalan pola telapak tangan dengan metode lain selain metode BAM , misalnya dengan metode linear discriminant analysis, metode JST self organizing map (SOM), algoritma genetika kemudian dibandingakan agar didapat metode terbaik dalam pengenalan pola telapak tangan.
(72)
BAB II
TINJAUAN PUSTAKA
2.1 Pola Telapak Tangan
Kode telapak tangan (palm code) adalah kode unik yang diperoleh melalui ekstraksi fitur telapak tangan seseorang. Kode ini dapat digunakan untuk mewakili pemilik telapak tangan bersangkutan dan dapat digunakan sebagai identitas pembeda dengan orang lain. Kode telapak tangan mirip dengan kode sidik jari (finger code) atau kode iris (iris code)[14].
Sistem biometrika menggunakan karakteristik fisiologi atau perilaku untuk melakukan otentifikasi secara otomatis terhadap identitas seseorang dengan membandingkannya dengan identitas yang terdaftar sebelumnya [13-15].
Sistem biometrika beroperasi pada dua model, yaitu: 1. Sistem verifikasi
a. Bertujuan untuk menerima atau menolak identitas yang diklaim oleh seseorang.
b. Menjawab pertanyaan “Apakah identitas saya sama dengan identitas yang saya sebutkan?”.
c. Lebih sederhana karena hanya mencocokkan satu masukan dengan satu acuan (one to one matching).
2. Sistem identifikasi
a. Bertujuan untuk memecahkan identitas seseorang. b. Menjawab pertanyaan “identitas siapakah ini?”.
c. Terjadi pencocokan satu masukan dengan banyak acuan (one to many
matching).
Berbeda dengan sidik jari, iris, wajah, geometri tangan, dan lain-lainnya yang merupakan biometrika yang sudah cukup lama dikenal, telapak tangan
(73)
(palmprint) merupakan biometrika fisiologi yang masih relatif baru[14].
Gambar 2.1 Pola Telapak Tangan
Pada Gambar 2.1 ciri-ciri yang dimiliki oleh telapak tangan: 1. Ciri geometri
2. Ciri garis-garis utama 3. Ciri garis-garis kusut 4. Ciri minusi
Telapak tangan kaya akan fitur-fitur unik, seperti fitur geometri (lebar, panjang dan luas area telapak tangan), fitur garis-garis utama (principle lines), fitur garis-garis lemah (wrinkle lines), fitur delta points dan fitur minusi (minutiae). Telapak tangan memiliki beberapa kelebihan dibandingkan dengan biometrika lainnya, yaitu dapat menggunakan citra resolusi rendah, biaya alat akuisisi relatif rendah, sulit untuk dipalsu dan bersifat unik dan stabil [14,15].
2.2Perbaikan kualitas citra
Perbaikan kualitas citra dilakukan untuk menghasilkan citra guna memperkuat informasi khusus pada citra hasil pengolahan sesuai dengan tujuan pengolahannya. Misalnya citra yang mempunyai variasi intensitas yang kurang seragam, lemah dalam hal kontras sehingga obyek sulit dipisahkan dari latar belakangnya melalui proses binerisasi karena terlalu banyak noise. Maka, diperlukan pengolahan citra untuk
(74)
meningkatkan kualitas citra dengan menggunakan teknik pengolahan antara lain dengan modifikasi histogram, penggunaan filter, analisis frekuensi dan lain-lain[1]. Proses-proses yang termasuk ke dalam perbaikan kualitas citra[11]:
1. Pengubahan kecerahan gambar (image brightness) 2. Peregangan kontras (contrast stretching)
3. Pengubahan histogram citra
4. Pelembutan citra (image smoothing) 5. Penajaman (sharpening) tepi (edge) 6. Pewarnaan semu (pseudocolouring) 7. Pengubahan geometrik
2.2.1 Sharpen Filtering
Citra sharpen digunakan untuk menegaskan garis tepi pada citra, sehingga kelihatan lebih tajam pada citra yang kabur (blur). Operasi penajaman dilakukan dengan melewatkan citra pada penapis tinggi (high-pass filter). Penapis lolos-tinggi akan meloloskan (memperkuat) komponen yang berfrekuensi lolos-tinggi (misalnya tepi atau pinggiran objek) dan akan menurunkan komponen berfrekuensi rendah. Akibatnya, pinggiran objek telihat lebih tajam dibandingkan sekitarnya. Karena penajaman citra lebih berpengaruh pada tepi (edge) objek, maka penajaman citra sering disebut juga penajaman tepi (edge sharpening) atau peningkatan kualitas tepi (edge enhancement) [11]. Efek sharpen diperoleh dengan mengalikan matriks bertetangga yang menjadi sampel dengan sebuah matriks filter tertentu[1].
Contoh matriks filter yang akan digunakan adalah sebagai berikut:
Selain untuk mempertajam gambar, penapis lolos-tinggi juga digunakan untuk mendeteksi keberadaan tepi (edge detection). Dalam hal ini, piksel-piksel tepi ditampilkan lebih terang (highlight) sedangkan piksel-piksel bukan tepi dibuat gelap (hitam)[11].
(75)
Gbr 2. 2(a) Citra Semula (b) Citra Gray Semula (c) Citra Setelah Penajaman
2.2.2 Deteksi tepi (edge detection)
Suatu citra dapat dapat diketahui apa yang menjadi obyeknya ketika perbedaan antara latar belakang citra dengan objek terlihat jelas. Objek yang berada dalam bidang citra dan tidak bersinggungan dengan batas bidang citra, berarti objek tersebut dikelilingi oleh daerah yang bukan objek yaitu latar belakang.
Pertemuan antara objek dengan latar belakang disebut dengan tepi objek. Tepi dapat mewakili informasi yang penting dari obyek. Tepi ditandai dengan adanya perubahan intensitas yang bersifat lokal di dalam citra dan dapat dilacak berdasarkan perubahan intensitas ini. Deteksi tepi banyak digunakan untuk pengembangan algoritma untuk analisis fitur-fitur citra, segmentasi citra dan analisis pergerakan[1].
Edge detection memiliki beberapa algoritma, diantaranya: metode Sobel,
Prewitt, Roberts, Laplacian of Gaussian, zero-cross dan Canny. 2.2.3 Deteksi tepi Canny
Metode Canny adalah salah satu algoritma deteksi tepi modern. Deteksi tepi Canny ditemukan oleh Marr dan Hildreth yang meneliti pemodelan persepsi visual manusia.
Ada beberapa kriteria pendeteksi tepian paling optimum yang dapat dipenuhi oleh algoritma Canny:
a. Mendeteksi dengan baik (kriteria deteksi)
Kemampuan untuk meletakkan dan menandai semua tepi yang ada sesuai dengan pemilihan parameter-parameter konvolusi yang dilakukan. Sekaligus juga
(76)
memberikan fleksibilitas yang sangat tinggi dalam hal menentukan tingkat deteksi ketebalan tepi sesuai yang diinginkan.
b. Melokalisasi dengan baik (kriteria lokalisasi)
Dengan Canny dimungkinkan dihasilkan jarak yang minimum antara tepi yang dideteksi dengan tepi yang asli.
c. Respon yang jelas (kriteria respon)
Hanya ada satu respon untuk tiap tepi. Sehingga mudah dideteksi dan tidak menimbulkan kerancuan pada pengolahan citra selanjutnya[5].
Dalam proses pendeteksian tepi terhadap citra yang dilakukan dengan menggunakan metode Canny dapat menggunakan function di Matlab, sehingga cukup menggunakan function edge dalam pengkodean[6]. Citra grayscale sesudah proses deteksi tepi dapat dilihat pada Gambar 3.
Gambar 2.3 (a) Citra Semula (b) Citra Gray sharpening (c) Citra setelah dektesi tepi canny
2.3 Pengenalan pola (pattern recognition)
Pengenalan pola merupakan suatu proses yang dilakukan untuk mengelompokkan atau mengklasifikasikan data numerik dan simbol. Banyak teknik statistik dan sintaksis yang telah dikembangkan untuk keperluan klasifikasi pola dan teknik-teknik ini dapat memainkan peran yang penting dalam sistem visual untuk pengenalan obyek yang biasanya memerlukan banyak teknik. Bentuk-bentuk obyek tertentu dalam dunia nyata yang sangat kompleks dapat dibandingkan dengan pola-pola dasar di dalam citra sehingga penggolongan obyek yang bersangkutan dapat dilakukan lebih mudah[1].
(77)
Gambar 2.4 Skema Pengenalan Pola[11]
2.4 Jaringan Syaraf Tiruan
Jaringan syaraf tiruan (artificial neural network) atau disingkat dengan JST merupakan suatu sistem komputasi dimana arsitektur dan operasi diilhami dari pengetahuan tentang sel syaraf biologis di dalam otak, yang merupakan salah satu presentasi buatan dari otak manusia yang selalu mencoba menstimulasi proses pembelajaran pada otak manusia tersebut. JST dapat digambarkan sebagai model matematis dan komputasi untuk simulasi dari koleksi model syaraf biologi [10].
Gambar 2.5 Sistem Syaraf Otak Manusia[2]
Model syaraf ditunjukkan dengan kemampuannya dalam emulasi, analis, prediksi dan asosiasi. Kemampuan yang dimiliki oleh JST dapat digunakan untuk
(1)
IMPLEMENTATION OF NEURAL NETWORK BIDIRECTIONAL ASSOCIATIVE MEMORY FOR PALM HUMAN PATTERN RECOGNITION
ABSTRACT
Identity recognition system can be implemented by biometric system. Biometric system has better security grade than traditional identity recognition system because biometric system cannot be duplicated, stolen, lost, and forgotten. Palm is one of biometric system which pattern can be used to recognize identity. This Pattern can be identified by Artificial Neural Network (ANN). ANN is a computational system where the architecture and operation inspired by knowledge about biological neural cells in the brain. One method in artificial neural networks is Bidirectional Associative Memory (BAM) which is a type of neural network with hetero-associative memory by using two layers, that is the input layer and output layer which has the ability to identify pattern after reaching a stable state. In this research, the pattern used as the input pattern is the image of the palm of the right hand with the characteristic geometry and principle lines taken by scanner to produce image of transverse right palm, then processed to obtain a regular image with the size 200 x 300 pixels and converted to obtain bipolar patterns with values 1 and -1. This pattern will be used for training to produce a weight matrix which serve as a benchmark for testing the right palm pattern. This research has two tests, first testing on the right palm image pattern that was used for training with the result of identification is 100% and second testing on the image of right palm pattern not previously scanned with the identification result of 52,5%. The conclusion of the research the Bidirectional Associative Memory method is able to identify pattern by utilizing characteristic geometry and principle lines of the palm.
Keywords: Artificial Neural Network, Bidirectional Associative Memory, Palms pattern, Weight matrix, Bipolar patterns.
(2)
DAFTAR ISI
Hal
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Gambar x
Daftar Tabel xi
Bab I Pendahuluan
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 2
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 3
1.7 Sistematika Penulisan 4
Bab II Tinjauan Pustaka
2.1 Pola Telapak Tangan 6
2.2 Perbaikan Kualitas Citra 7
2.2.1 Sharpen Filtering 8
2.2.2 Deteksi tepi (edge detection) 9
2.2.3 Deteksi tepi Canny 10
2.3 Pengenalan pola (pattern recognition) 11
2.4 Jaringan Syaraf Tiruan 11
2.4.1 Karakteristik Jaringan Saraf Tiruan 12
2.4.1.1 Algoritma Pembelajaran 13
2.4.2 Bidirectional Associative Memory 15
2.4.2.1 BAM Diskret 16
2.4.2.2 BAM Kontinyu 18
2.4.2.3 BAM Connections matrice 19
(3)
Hal 3.3.2 Pemodelan dengan Menggunakan Activity Diagram 29 3.3.3 Pemodelan dengan Menggunakan Sequence Diagram 29 3.3.3.1 Sequence Diagram proses pelatihan Jaringan Syaraf Tiruan 30 3.3.3.2 Sequence Diagram proses Pengujian Jaringan Syaraf Tiruan 31
3.4 Flowchart Gambaran Umum Sistem 32
3.5 Perancangan Arsitektur Jaringan 33
3.6 Rancangan Antarmuka Sistem 34
3.6.1 Antarmuka Form Home 35
3.6.2 Antarmuka Form Train 36
3.6.3 Antarmuka Form Test 38
3.6.4 Antarmuka Form Help 40
3.6.5 Antarmuka Form About 41
3.6.6 Antarmuka Form Exit 42
Bab IV Implementasi dan Pengujian
4.1 Implementasi Sistem 43
4.1.1 Tampilan Antarmuka Sistem 43
4.1.1.1 Antarmuka Home 43
4.1.1.2 Antarmuka Train 44
4.1.1.3 Antarmuka Test 49
4.1.1.4 Antarmuka Help 54
4.1.1.5 Antarmuka About 55
4.1.1.6 Antarmuka Exit 56
4.2 Pengujian Sistem 56
4.2.1 Pengujian terhadap Citra Telapak Tangan Kanan yang Sudah Dilatih 57 4.2.2 Pengujian terhadap Citra Telapak Tangan Kanan yang belum Dilatih 60 Bab V Kesimpulan dan Saran
5.1 Kesimpulan 67
5.2 Saran 68
Daftar Pustaka 69
Lampiran Listing Program A-1
(4)
DAFTAR GAMBAR
Gambar 2.1 Pola Telapak Tangan 7
Gambar 2.2 (A) Citra Semula 9
(B) Citra Gray Semula 9
(C) Citra Setelah Penajaman 9
Gambar 2.3 (A) Citra Semula 10
(B) Citra Gray Sharpening 10
(C) Citra Setelah Dektesi Tepi Canny 10
Gambar 2.4 Skema Pengenalan Pola 11
Gambar 2.5 Sistem Syaraf Otak Manusia 12
Gambar 2.6 Struktur Neuron Jaringan Syaraf 13
Gambar 2.7 Proses Pembelajaran Suatu JST 14
Gambar 2.8 Arsitektur Jaringan Bidirectional Associative Memory 15
Gambar 3.1 Diagram Ishikawa Analisis Permasalahan 25
Gambar 3.2 Use Case Diagram Sistem Identifikasi Telapak Tangan 27 Gambar 3.3 Activity Diagram Proses Pelatihan dan Pengujian JST BAM 29
Gambar 3.4 Sequence Diagram Proses Pelatihan JST BAM 30
Gambar 3.5 Sequence Diagram Proses Pelatihan JST BAM 31
Gambar 3.6 Flowchart Gambaran Umum Aplikasi 32
Gambar 3.7 Arsitektur Jaringan Syaraf Tiruan Metode BAM Untuk
Pengenalan Pola Telapak Tangan 34
Gambar 3.8 Tampilan Rancangan Antarmuka Form Home 35
Gambar 3.9 Tampilan Rancangan Antarmuka Form Train 36
Gambar 3.10 Tampilan Rancangan Antarmuka Form Test 38
Gambar 3.11 Tampilan Rancangan Antarmuka Form Help 40
Gambar 3.12 Tampilan Rancangan Antarmuka Form About 41
Gambar 3.13 Tampilan Rancangan Antarmuka Form Exit 42
Gambar 4.1 Tampilan Antarmuka Home 44
Gambar 4.2 Tampilan Antarmuka Train 45
Gambar 4.3 Tampilan Antarmuka Train Setelah Button Load Diklik 45 Gambar 4.4 Tampilan Antarmuka Train Setelah Button Reshape Diklik 46 Gambar 4.5 Tampilan Antarmuka Setelah Button Graycale Diklik 47 Gambar 4.6 Tampilan Antarmuka Train Pada Saat di-Sharpening Pertama Kali 47 Gambar 4.7 Tampilan Antarmuka Train Pada Saat di-Sharpening Kedua Kali 48 Gambar 4.8 Tampilan Antarmuka Train Pada Saat di-Sharpening Ketiga Kali 48 Gambar 4.9 Tampilan Antarmuka Train Pada Saat Dideteksi Tepi Canny 49
(5)
DAFTAR TABEL
Hal Tabel 3.1 Dokumentasi Naratif Use Case Pelatihan Jaringan Syaraf Tiruan 27 Tabel 3.2 Dokumentasi Naratif Use Case Pengujian Jaringan Syaraf Tiruan 28
Tabel 4.1 Pengujian Citra Telapak Tangan Kanan yang Sudah Dilatih 58 Tabel 4.2 Pengujian Citra Baru Telapak Tangan Kanan yang Belum Dilatih 61
(6)
DAFTAR LAMPIRAN
Halaman
A. Listing Program A-1