Implementasi Jaringan Syaraf Tiruan Self Organizing Map Kohonen dalam Pengenalan Telapak Kaki Bayi

(1)

62

LISTING PROGRAM

1. Form Beranda

function varargout = beranda(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @beranda_OpeningFcn, ... 'gui_OutputFcn', @beranda_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 beranda_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

function varargout = beranda_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

function beranda_Callback(hObject, eventdata, handles) beranda;

close(gcbf);

function Latih_Callback(hObject, eventdata, handles) pelatihan;

close(gcbf);

function Uji_Callback(hObject, eventdata, handles) pengujian;

close(gcbf);

function Help_Callback(hObject, eventdata, handles) help;

function Exit_Callback(hObject, eventdata, handles) ask=questdlg('Anda ingin keluar dari aplikasi ini?',... 'Exit','Ya','Tidak','No');

switch ask case 'Ya'


(2)

close('all'); case 'Tidak' return end

function figure1_WindowButtonDownFcn(hObject, eventdata, handles) function text1_CreateFcn(hObject, eventdata, handles)

function axes3_CreateFcn(hObject, eventdata, handles) foto=imread('logo.jpg');

imshow(foto);

2. Form Pelatihan

function varargout = pelatihan(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @pelatihan_OpeningFcn, ... 'gui_OutputFcn', @pelatihan_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 pelatihan_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

function varargout = pelatihan_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

function pushbutton1_Callback(hObject, eventdata, handles) function beranda_Callback(hObject, eventdata, handles) beranda;

close(gcbf);

function Latih_Callback(hObject, eventdata, handles) pelatihan;

close(gcbf);

function Uji_Callback(hObject, eventdata, handles) pengujian;

close(gcbf);

function help_Callback(hObject, eventdata, handles) help;

function Exit_Callback(hObject, eventdata, handles) ask=questdlg('Anda ingin keluar dari aplikasi ini?',... 'Exit','Ya','Tidak','No'); switch ask case 'Ya' close('all'); case 'Tidak' return


(3)

64

end

function load_citra_Callback(hObject, eventdata, handles) gambar1=imread('b1.jpg'); gambar2=imread('b2.jpg'); gambar3=imread('b3.jpg'); gambar4=imread('b4.jpg'); gambar5=imread('b5.jpg'); gambar6=imread('b6.jpg'); gambar7=imread('b7.jpg'); gambar8=imread('b8.jpg'); gambar9=imread('b9.jpg'); gambar10=imread('b10.jpg'); gambar11=imread('b11.jpg'); gambar12=imread('b12.jpg'); gambar13=imread('b13.jpg'); gambar14=imread('b14.jpg'); gambar15=imread('b15.jpg'); gambar16=imread('b16.jpg'); gambar17=imread('b17.jpg'); gambar18=imread('b18.jpg'); gambar19=imread('b19.jpg'); gambar20=imread('b20.jpg'); gambar21=imread('b21.jpg'); gambar22=imread('b22.jpg'); gambar23=imread('b23.jpg'); gambar24=imread('b24.jpg'); gambar25=imread('b25.jpg'); gambar26=imread('b26.jpg'); gambar27=imread('b27.jpg'); gambar28=imread('b28.jpg'); gambar29=imread('b29.jpg'); gambar30=imread('b30.jpg'); axes(handles.axes1); imshow(gambar1); axes(handles.axes2); imshow(gambar2); axes(handles.axes3); imshow(gambar3); axes(handles.axes4); imshow(gambar4); axes(handles.axes5); imshow(gambar5); axes(handles.axes6); imshow(gambar6); axes(handles.axes7); imshow(gambar7); axes(handles.axes8); imshow(gambar8); axes(handles.axes9); imshow(gambar9); axes(handles.axes10); imshow(gambar10); axes(handles.axes11); imshow(gambar11); axes(handles.axes12); imshow(gambar12); axes(handles.axes13); imshow(gambar13); axes(handles.axes14); imshow(gambar14); axes(handles.axes15); imshow(gambar15); axes(handles.axes16); imshow(gambar16); axes(handles.axes17); imshow(gambar17); axes(handles.axes18); imshow(gambar18); axes(handles.axes19); imshow(gambar19); axes(handles.axes20); imshow(gambar20); axes(handles.axes21); imshow(gambar21); axes(handles.axes22); imshow(gambar22); axes(handles.axes23); imshow(gambar23); axes(handles.axes24); imshow(gambar24);


(4)

axes(handles.axes25); imshow(gambar25); axes(handles.axes26); imshow(gambar26); axes(handles.axes27); imshow(gambar27); axes(handles.axes28); imshow(gambar28); axes(handles.axes29); imshow(gambar29); axes(handles.axes30); imshow(gambar30); set(handles.resize,'Enable','On');

function resize_Callback(hObject, eventdata, handles) gambar1=getimage(handles.axes1); gambar2=getimage(handles.axes2); gambar3=getimage(handles.axes3); gambar4=getimage(handles.axes4); gambar5=getimage(handles.axes5); gambar6=getimage(handles.axes6); gambar7=getimage(handles.axes7); gambar8=getimage(handles.axes8); gambar9=getimage(handles.axes9); gambar10=getimage(handles.axes10); gambar11=getimage(handles.axes11); gambar12=getimage(handles.axes12); gambar13=getimage(handles.axes13); gambar14=getimage(handles.axes14); gambar15=getimage(handles.axes15); gambar16=getimage(handles.axes16); gambar17=getimage(handles.axes17); gambar18=getimage(handles.axes18); gambar19=getimage(handles.axes19); gambar20=getimage(handles.axes20); gambar21=getimage(handles.axes21); gambar22=getimage(handles.axes22); gambar23=getimage(handles.axes23); gambar24=getimage(handles.axes24); gambar25=getimage(handles.axes25); gambar26=getimage(handles.axes26); gambar27=getimage(handles.axes27); gambar28=getimage(handles.axes28); gambar29=getimage(handles.axes29); gambar30=getimage(handles.axes30); gambar1=imresize(gambar1,[100,50]); gambar2=imresize(gambar2,[100,50]); gambar3=imresize(gambar3,[100,50]); gambar4=imresize(gambar4,[100,50]); gambar5=imresize(gambar5,[100,50]); gambar6=imresize(gambar6,[100,50]); gambar7=imresize(gambar7,[100,50]); gambar8=imresize(gambar8,[100,50]); gambar9=imresize(gambar9,[100,50]); gambar10=imresize(gambar10,[100,50]); gambar11=imresize(gambar11,[100,50]); gambar12=imresize(gambar12,[100,50]); gambar13=imresize(gambar13,[100,50]); gambar14=imresize(gambar14,[100,50]); gambar15=imresize(gambar15,[100,50]); gambar16=imresize(gambar16,[100,50]); gambar17=imresize(gambar17,[100,50]); gambar18=imresize(gambar18,[100,50]);


(5)

66 gambar19=imresize(gambar19,[100,50]); gambar20=imresize(gambar20,[100,50]); gambar21=imresize(gambar21,[100,50]); gambar22=imresize(gambar22,[100,50]); gambar23=imresize(gambar23,[100,50]); gambar24=imresize(gambar24,[100,50]); gambar25=imresize(gambar25,[100,50]); gambar26=imresize(gambar26,[100,50]); gambar27=imresize(gambar27,[100,50]); gambar28=imresize(gambar28,[100,50]); gambar29=imresize(gambar29,[100,50]); gambar30=imresize(gambar30,[100,50]); axes(handles.axes1); imshow(gambar1); axes(handles.axes2); imshow(gambar2); axes(handles.axes3); imshow(gambar3); axes(handles.axes4); imshow(gambar4); axes(handles.axes5); imshow(gambar5); axes(handles.axes6); imshow(gambar6); axes(handles.axes7); imshow(gambar7); axes(handles.axes8); imshow(gambar8); axes(handles.axes9); imshow(gambar9); axes(handles.axes10); imshow(gambar10); axes(handles.axes11); imshow(gambar11); axes(handles.axes12); imshow(gambar12); axes(handles.axes13); imshow(gambar13); axes(handles.axes14); imshow(gambar14); axes(handles.axes15); imshow(gambar15); axes(handles.axes16); imshow(gambar16); axes(handles.axes17); imshow(gambar17); axes(handles.axes18); imshow(gambar18); axes(handles.axes19); imshow(gambar19); axes(handles.axes20); imshow(gambar20); axes(handles.axes21); imshow(gambar21); axes(handles.axes22); imshow(gambar22); axes(handles.axes23); imshow(gambar23); axes(handles.axes24); imshow(gambar24); axes(handles.axes25); imshow(gambar25); axes(handles.axes26); imshow(gambar26); axes(handles.axes27); imshow(gambar27); axes(handles.axes28); imshow(gambar28); axes(handles.axes29); imshow(gambar29); axes(handles.axes30); imshow(gambar30); set(handles.grayscale,'Enable','On');

function grayscale_Callback(hObject, eventdata, handles) gambar1=getimage(handles.axes1); gambar2=getimage(handles.axes2); gambar3=getimage(handles.axes3); gambar4=getimage(handles.axes4); gambar5=getimage(handles.axes5); gambar6=getimage(handles.axes6); gambar7=getimage(handles.axes7); gambar8=getimage(handles.axes8); gambar9=getimage(handles.axes9); gambar10=getimage(handles.axes10); gambar11=getimage(handles.axes11); gambar12=getimage(handles.axes12); gambar13=getimage(handles.axes13); gambar14=getimage(handles.axes14);


(6)

gambar15=getimage(handles.axes15); gambar16=getimage(handles.axes16); gambar17=getimage(handles.axes17); gambar18=getimage(handles.axes18); gambar19=getimage(handles.axes19); gambar20=getimage(handles.axes20); gambar21=getimage(handles.axes21); gambar22=getimage(handles.axes22); gambar23=getimage(handles.axes23); gambar24=getimage(handles.axes24); gambar25=getimage(handles.axes25); gambar26=getimage(handles.axes26); gambar27=getimage(handles.axes27); gambar28=getimage(handles.axes28); gambar29=getimage(handles.axes29); gambar30=getimage(handles.axes30); gambar1=rgb2gray(gambar1); gambar2=rgb2gray(gambar2); gambar3=rgb2gray(gambar3); gambar4=rgb2gray(gambar4); gambar5=rgb2gray(gambar5); gambar6=rgb2gray(gambar6); gambar7=rgb2gray(gambar7); gambar8=rgb2gray(gambar8); gambar9=rgb2gray(gambar9); gambar10=rgb2gray(gambar10); gambar11=rgb2gray(gambar11); gambar12=rgb2gray(gambar12); gambar13=rgb2gray(gambar13); gambar14=rgb2gray(gambar14); gambar15=rgb2gray(gambar15); gambar16=rgb2gray(gambar16); gambar17=rgb2gray(gambar17); gambar18=rgb2gray(gambar18); gambar19=rgb2gray(gambar19); gambar20=rgb2gray(gambar20); gambar21=rgb2gray(gambar21); gambar22=rgb2gray(gambar22); gambar23=rgb2gray(gambar23); gambar24=rgb2gray(gambar24); gambar25=rgb2gray(gambar25); gambar26=rgb2gray(gambar26); gambar27=rgb2gray(gambar27); gambar28=rgb2gray(gambar28); gambar29=rgb2gray(gambar29); gambar30=rgb2gray(gambar30); axes(handles.axes1); imshow(gambar1); axes(handles.axes2); imshow(gambar2); axes(handles.axes3); imshow(gambar3); axes(handles.axes4); imshow(gambar4); axes(handles.axes5); imshow(gambar5); axes(handles.axes6); imshow(gambar6); axes(handles.axes7); imshow(gambar7); axes(handles.axes8); imshow(gambar8); axes(handles.axes9); imshow(gambar9); axes(handles.axes10); imshow(gambar10); axes(handles.axes11); imshow(gambar11); axes(handles.axes12); imshow(gambar12);


(7)

68 axes(handles.axes13); imshow(gambar13); axes(handles.axes14); imshow(gambar14); axes(handles.axes15); imshow(gambar15); axes(handles.axes16); imshow(gambar16); axes(handles.axes17); imshow(gambar17); axes(handles.axes18); imshow(gambar18); axes(handles.axes19); imshow(gambar19); axes(handles.axes20); imshow(gambar20); axes(handles.axes21); imshow(gambar21); axes(handles.axes22); imshow(gambar22); axes(handles.axes23); imshow(gambar23); axes(handles.axes24); imshow(gambar24); axes(handles.axes25); imshow(gambar25); axes(handles.axes26); imshow(gambar26); axes(handles.axes27); imshow(gambar27); axes(handles.axes28); imshow(gambar28); axes(handles.axes29); imshow(gambar29); axes(handles.axes30); imshow(gambar30); set(handles.sharpening,'Enable','On');

function sharpening_Callback(hObject, eventdata, handles) gambar1=getimage(handles.axes1); gambar2=getimage(handles.axes2); gambar3=getimage(handles.axes3); gambar4=getimage(handles.axes4); gambar5=getimage(handles.axes5); gambar6=getimage(handles.axes6); gambar7=getimage(handles.axes7); gambar8=getimage(handles.axes8); gambar9=getimage(handles.axes9); gambar10=getimage(handles.axes10); gambar11=getimage(handles.axes11); gambar12=getimage(handles.axes12); gambar13=getimage(handles.axes13); gambar14=getimage(handles.axes14); gambar15=getimage(handles.axes15); gambar16=getimage(handles.axes16); gambar17=getimage(handles.axes17); gambar18=getimage(handles.axes18); gambar19=getimage(handles.axes19); gambar20=getimage(handles.axes20); gambar21=getimage(handles.axes21); gambar22=getimage(handles.axes22); gambar23=getimage(handles.axes23); gambar24=getimage(handles.axes24); gambar25=getimage(handles.axes25); gambar26=getimage(handles.axes26); gambar27=getimage(handles.axes27); gambar28=getimage(handles.axes28); gambar29=getimage(handles.axes29); gambar30=getimage(handles.axes30); Sharp=fspecial('unsharp'); gbr1=imfilter(gambar1,Sharp); gbr2=imfilter(gambar2,Sharp); gbr3=imfilter(gambar3,Sharp); gbr4=imfilter(gambar4,Sharp);


(8)

gbr5=imfilter(gambar5,Sharp); gbr6=imfilter(gambar6,Sharp); gbr7=imfilter(gambar7,Sharp); gbr8=imfilter(gambar8,Sharp); gbr9=imfilter(gambar9,Sharp); gbr10=imfilter(gambar10,Sharp); gbr11=imfilter(gambar11,Sharp); gbr12=imfilter(gambar12,Sharp); gbr13=imfilter(gambar13,Sharp); gbr14=imfilter(gambar14,Sharp); gbr15=imfilter(gambar15,Sharp); gbr16=imfilter(gambar16,Sharp); gbr17=imfilter(gambar17,Sharp); gbr18=imfilter(gambar18,Sharp); gbr19=imfilter(gambar19,Sharp); gbr20=imfilter(gambar20,Sharp); gbr21=imfilter(gambar21,Sharp); gbr22=imfilter(gambar22,Sharp); gbr23=imfilter(gambar23,Sharp); gbr24=imfilter(gambar24,Sharp); gbr25=imfilter(gambar25,Sharp); gbr26=imfilter(gambar26,Sharp); gbr27=imfilter(gambar27,Sharp); gbr28=imfilter(gambar28,Sharp); gbr29=imfilter(gambar29,Sharp); gbr30=imfilter(gambar30,Sharp); axes(handles.axes1); imshow(gbr1); axes(handles.axes2); imshow(gbr2); axes(handles.axes3); imshow(gbr3); axes(handles.axes4); imshow(gbr4); axes(handles.axes5); imshow(gbr5); axes(handles.axes6); imshow(gbr6); axes(handles.axes7); imshow(gbr7); axes(handles.axes8); imshow(gbr8); axes(handles.axes9); imshow(gbr9); axes(handles.axes10); imshow(gbr10); axes(handles.axes11); imshow(gbr11); axes(handles.axes12); imshow(gbr12); axes(handles.axes13); imshow(gbr13); axes(handles.axes14); imshow(gbr14); axes(handles.axes15); imshow(gbr15); axes(handles.axes16); imshow(gbr16); axes(handles.axes17); imshow(gbr17); axes(handles.axes18); imshow(gbr18); axes(handles.axes19); imshow(gbr19); axes(handles.axes20); imshow(gbr20); axes(handles.axes21); imshow(gbr21); axes(handles.axes22); imshow(gbr22); axes(handles.axes23); imshow(gbr23); axes(handles.axes24); imshow(gbr24); axes(handles.axes25); imshow(gbr25); axes(handles.axes26); imshow(gbr26); axes(handles.axes27); imshow(gbr27); axes(handles.axes28); imshow(gbr28); axes(handles.axes29); imshow(gbr29); axes(handles.axes30); imshow(gbr30);


(9)

70

set(handles.deteksi_tepi,'Enable','On');

function deteksi_tepi_Callback(hObject, eventdata, handles) gambar1=getimage(handles.axes1); gambar2=getimage(handles.axes2); gambar3=getimage(handles.axes3); gambar4=getimage(handles.axes4); gambar5=getimage(handles.axes5); gambar6=getimage(handles.axes6); gambar7=getimage(handles.axes7); gambar8=getimage(handles.axes8); gambar9=getimage(handles.axes9); gambar10=getimage(handles.axes10); gambar11=getimage(handles.axes11); gambar12=getimage(handles.axes12); gambar13=getimage(handles.axes13); gambar14=getimage(handles.axes14); gambar15=getimage(handles.axes15); gambar16=getimage(handles.axes16); gambar17=getimage(handles.axes17); gambar18=getimage(handles.axes18); gambar19=getimage(handles.axes19); gambar20=getimage(handles.axes20); gambar21=getimage(handles.axes21); gambar22=getimage(handles.axes22); gambar23=getimage(handles.axes23); gambar24=getimage(handles.axes24); gambar25=getimage(handles.axes25); gambar26=getimage(handles.axes26); gambar27=getimage(handles.axes27); gambar28=getimage(handles.axes28); gambar29=getimage(handles.axes29); gambar30=getimage(handles.axes30); gb1=edge(gambar1,'canny'); gb2=edge(gambar2,'canny'); gb3=edge(gambar3,'canny'); gb4=edge(gambar4,'canny'); gb5=edge(gambar5,'canny'); gb6=edge(gambar6,'canny'); gb7=edge(gambar7,'canny'); gb8=edge(gambar8,'canny'); gb9=edge(gambar9,'canny'); gb10=edge(gambar10,'canny'); gb11=edge(gambar11,'canny'); gb12=edge(gambar12,'canny'); gb13=edge(gambar13,'canny'); gb14=edge(gambar14,'canny'); gb15=edge(gambar15,'canny'); gb16=edge(gambar16,'canny'); gb17=edge(gambar17,'canny'); gb18=edge(gambar18,'canny'); gb19=edge(gambar19,'canny'); gb20=edge(gambar20,'canny'); gb21=edge(gambar21,'canny'); gb22=edge(gambar22,'canny'); gb23=edge(gambar23,'canny'); gb24=edge(gambar24,'canny'); gb25=edge(gambar25,'canny'); gb26=edge(gambar26,'canny');


(10)

gb27=edge(gambar27,'canny'); gb28=edge(gambar28,'canny'); gb29=edge(gambar29,'canny'); gb30=edge(gambar30,'canny'); 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); axes(handles.axes21); imshow(gb21); axes(handles.axes22); imshow(gb22); axes(handles.axes23); imshow(gb23); axes(handles.axes24); imshow(gb24); axes(handles.axes25); imshow(gb25); axes(handles.axes26); imshow(gb26); axes(handles.axes27); imshow(gb27); axes(handles.axes28); imshow(gb28); axes(handles.axes29); imshow(gb29); axes(handles.axes30); imshow(gb30); set(handles.train,'Enable','On');

function train_Callback(hObject, eventdata, handles) tic; gambar1=getimage(handles.axes1); gambar2=getimage(handles.axes2); gambar3=getimage(handles.axes3); gambar4=getimage(handles.axes4); gambar5=getimage(handles.axes5); gambar6=getimage(handles.axes6); gambar7=getimage(handles.axes7); gambar8=getimage(handles.axes8); gambar9=getimage(handles.axes9); gambar10=getimage(handles.axes10); gambar11=getimage(handles.axes11); gambar12=getimage(handles.axes12); gambar13=getimage(handles.axes13); gambar14=getimage(handles.axes14); gambar15=getimage(handles.axes15); gambar16=getimage(handles.axes16); gambar17=getimage(handles.axes17); gambar18=getimage(handles.axes18);


(11)

72 gambar19=getimage(handles.axes19); gambar20=getimage(handles.axes20); gambar21=getimage(handles.axes21); gambar22=getimage(handles.axes22); gambar23=getimage(handles.axes23); gambar24=getimage(handles.axes24); gambar25=getimage(handles.axes25); gambar26=getimage(handles.axes26); gambar27=getimage(handles.axes27); gambar28=getimage(handles.axes28); gambar29=getimage(handles.axes29); gambar30=getimage(handles.axes30); m1=double(reshape(gambar1,1,5000)); m2=double(reshape(gambar2,1,5000)); m3=double(reshape(gambar3,1,5000)); m4=double(reshape(gambar4,1,5000)); m5=double(reshape(gambar5,1,5000)); m6=double(reshape(gambar6,1,5000)); m7=double(reshape(gambar7,1,5000)); m8=double(reshape(gambar8,1,5000)); m9=double(reshape(gambar9,1,5000)); m10=double(reshape(gambar10,1,5000)); m11=double(reshape(gambar11,1,5000)); m12=double(reshape(gambar12,1,5000)); m13=double(reshape(gambar13,1,5000)); m14=double(reshape(gambar14,1,5000)); m15=double(reshape(gambar15,1,5000)); m16=double(reshape(gambar16,1,5000)); m17=double(reshape(gambar17,1,5000)); m18=double(reshape(gambar18,1,5000)); m19=double(reshape(gambar19,1,5000)); m20=double(reshape(gambar20,1,5000)); m21=double(reshape(gambar21,1,5000)); m22=double(reshape(gambar22,1,5000)); m23=double(reshape(gambar23,1,5000)); m24=double(reshape(gambar24,1,5000)); m25=double(reshape(gambar25,1,5000)); m26=double(reshape(gambar26,1,5000)); m27=double(reshape(gambar27,1,5000)); m28=double(reshape(gambar28,1,5000)); m29=double(reshape(gambar29,1,5000)); m30=double(reshape(gambar30,1,5000)); alpha=get(handles.alpha,'String');

input=[m1 ; m2 ; m3 ; m4 ; m5 ; m6 ; m7 ; m8; m9; m10; m11; m12; m13; m14; m15; m16; m17; m18; m19; m20;

m21; m22; m23; m24; m25; m26; m27; m28; m29; m30]; w= [m1; m2 ; m3 ; m4; m5; m6; m7; m8; m9; m10];

alpha= str2double(alpha); epoch=0;

tic;

while alpha > 0 && alpha <1 && epoch <=1000 for i=1:30

for j=1:10 d(j)=0; for k=1:5000


(12)

end end

for j=1:10

if d(j)== min(d) j_new = j; end

end

w(j_new,:)=w(j_new,:)+ alpha* (input(i,:)-w(j_new,:)); end alpha= 0.2*alpha; epoch=epoch+1; end t=toc; set(handles.time,'String',t); xlswrite('data.xls',w,'bobot_new','A1');

function pushbutton8_Callback(hObject, eventdata, handles) function alpha_Callback(hObject, eventdata, handles)

function alpha_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

function rad_Callback(hObject, eventdata, handles) function time_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

3. Form Pengujian

function varargout = pengujian(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @pengujian_OpeningFcn, ... 'gui_OutputFcn', @pengujian_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 pengujian_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;


(13)

74

function varargout = pengujian_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

function beranda_Callback(hObject, eventdata, handles) beranda;

close(gcbf);

function Latih_Callback(hObject, eventdata, handles) pelatihan;

close(gcbf);

function Uji_Callback(hObject, eventdata, handles) pengujian;

close(gcbf);

function help_Callback(hObject, eventdata, handles) help;

function Exit_Callback(hObject, eventdata, handles) ask=questdlg('Anda ingin keluar dari aplikasi ini?',... 'Exit','Ya','Tidak','No'); switch ask case 'Ya' close('all'); case 'Tidak' return end

function pilih_gambar_Callback(hObject, eventdata, handles)

[nama_file,nama_path] = uigetfile({'*.jpg','File jpeg (*.jpg)'},'Buka File Citra'); if ~isequal(nama_file,0) handles.citra=imread(fullfile(nama_path,nama_file)); guidata(hObject,handles); axes(handles.axes1); imshow(handles.citra); set(handles.testing,'Enable','On'); else return; end;

function testing_Callback(hObject, eventdata, handles) w=xlsread('data.xls','bobot_new'); citra_uji=getimage(handles.axes1); gambar=imresize(citra_uji,[100,50]); citra_uji_gray=rgb2gray(gambar); Sharp=fspecial('unsharp'); citra_uji2=imfilter(citra_uji_gray,Sharp); gb1=edge(citra_uji2,'canny'); uji1=double(reshape(gb1,1,5000)); for i=1:1 for k=1:10 d(k)=0; for j=1:5000 d(k)=d(k)+(w(k,j)- uji1(i,j)).^2;


(14)

end end end for k=1:10 if d(k)==min(d) cluster=k; end end if cluster==1;

set(handles.hasil,'String','Milik bayi 1'); elseif cluster==2;

set(handles.hasil,'String','Milik bayi 2'); elseif cluster==3;

set(handles.hasil,'String','Milik bayi 3'); elseif cluster==4;

set(handles.hasil,'String','Milik bayi 4'); elseif cluster==5;

set(handles.hasil,'String','Milik bayi 5'); elseif cluster==6;

set(handles.hasil,'String','Milik bayi 6'); elseif cluster==7;

set(handles.hasil,'String','Milik bayi 7'); elseif cluster==8;

set(handles.hasil,'String','Milik bayi 8'); elseif cluster==9;

set(handles.hasil,'String','Milik bayi 9'); elseif cluster==10;

set(handles.hasil,'String','Milik bayi 10'); end

function edit1_Callback(hObject, eventdata, handles) function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

4. Form Help

function varargout = help(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @help_OpeningFcn, ... 'gui_OutputFcn', @help_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


(15)

76

gui_mainfcn(gui_State, varargin{:}); end

function help_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

function varargout = help_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

function pushbutton1_Callback(hObject, eventdata, handles) close('help');


(16)

Bobot Baru Setelah Pelatihan dalam Ms. Excel


(17)

(18)

(19)

80


(20)

(21)

(22)

(23)

(24)

Curriculum Vitae

Full Name : Ita Sharonni Alemmina Sinaga Place and Date of Birth : Medan, 2nd June, 1993

Religion : Christian

Marital Status : Single

Current address : Perum Graha Blok D No 158 Tj Anom Pancurbatu Home Address : Perum Graha Blok D No 158 Tj Anom Pancurbatu

Phone Number : +6285261649505

Email : [email protected]

Identity Card Number : 1207054206930006 Formal Education

Year Institution Learning

Time

GPA/Final Exam Score 2011-2015

(Now)

Bachelor’s Degree in Computer Science, From the Faculty of Computer Science And Information Technology

Universitas Sumatera Utara, Indonesia Under Graduate Thesis:

4 Years 3.60 (From

4.00-Scale) 2008-2011 Negeri 1 Senior High School Pem.Raya 3 Years 54.55

(From 60.00-Scale) 2005-2008 Santo Yoseph Junior High School Medan 3 Years 34.30

(From 40.00-Scale) 1999-2005 Tunas Harapan Elementary School Medan 6 Years 55.97

(From 60.00-Scale) Workshop and Seminar

Year Organizer Workshop and Seminar

2014 Department of Computer Science, Faculty of Computer Science And Information Technology

Universitas Sumatera Utara, Indonesia

Workshop and Seminar: Nasional Literasi Informasi (SENARAI) 2014 Department of Computer Science,

Faculty of Computer Science And Information Technology

Universitas Sumatera Utara, Indonesia

Workshop and Seminar: IMILKOM Contest and Seminar Open BTS (ICONS)

2013 National Congress ILP2MI4 Comitee Workshop and Seminar:

Pencaplokan Budaya dalam rangka Kongres Nasional Ikatan Lembaga Penalaran dan Penelitian Mahasiswa Indonesia


(25)

86

2013 Ikatan Mahasiswa Teknik Elektro Universitas Sumatera Utara

Seminar : Menuju Teknologi 5G: Tantangan dan Peluang Bagi Perguruan Tinggi

2012 Department of Computer Science, Faculty of Computer Science And Information Technology

Universitas Sumatera Utara, Indonesia

Workshop and Seminar: Application IMILKOM Contest

2012 Department of Computer Science, Faculty of Computer Science And Information Technology

Universitas Sumatera Utara, Indonesia

Workshop and Seminar: How to Build Reality for Mobile

Application 2011 Department of Computer Science,

Faculty of Computer Science And Information Technology

Universitas Sumatera Utara, Indonesia

Workshop and Seminar: “Animation

for Fun by DreamArch” Artechno Festival

Comitee Experience

Year Organization Position

2014 Celebration of Oikumene’s Christmas and Easter Universitas Sumatera Utara

Leader of documentas ional and publication

2013 IMILKOM Contest Staff

2014 Seminar Nasional Literasi Informasi Fasilkom TI Staff

2013 Retreat KMKI Universitas Sumatera Utara Song

Leader 2012 Christian student community of computer science’s Christmas Vice leader 2011 Christian student community of computer science’s Christmas Song

Leader

2011 Dies Natalis Computer Science Co.

Secretary

2010 SmoePle Choir Coordina

tor Organizational Experience

Year Organization Position

2015 Ikatan Mahasiswa Ilmu Komputer Staff

2014-2015 Ikatan Mahasiswa Ilmu Komputer Staff of

society relationship

2013-2014 Ikatan Mahasiswa Ilmu Komputer Staff of

educational 2013-2014 Christian student community of Computer Science Treasurer


(26)

Working Experience

Year Organization Position

2011-2015 Private Les Teacher

Expertise

Expertise Description

of Capabilities

Internet & MS. Office Advanced

Programming language: c++, Java, C#, Pascal, PHP, Symphony Intermediate Graphic design & Photo editing: Adobe Photoshop CS Basic


(27)

Daftar Pustaka

Astuti,E.D. 2009. Pengantar Jaringan Syaraf Tiruan. Wonosobo: Star Publishing. Bilsel,R.U & Lin, D.K.J.L. 2012. Ishikawa Cause and Effect Diagrams Using Capture

Recapture Techniques. Quality Technology & Quantitative Management 9(2): 137-152. (Online) www.personal.psu.edu/users/.../2012_QTQM.pdf (28 Agustus 2015)

Bose, T.K. 2012. Application of Fishbone Analysis for Evaluating Supply Chain and Business Process- A Case Study On The St James Hospital. International Journal of Managing Value and Supply Chains 3(2): 17-24. (Online) airccse.org/journal/mvsc/papers/3212ijmvsc02.pdf (28 Agustus 2015). Darmawan,D.2010. Pengenalan Wajah dengan Metode Backpropagation

Menggunakan Kamera CCTV Inframerah.Skripsi. Universitas Indonesia. Haykin,S. 2005. Neural Network A Comprehensive Foundation. India: Pearson

Education.

Hermawati,F.A.2013.Pengolahan Citra Digital Konsep dan Teori.Yogyakarta: ANDI. Johandra, M.I. 2014. Implementasi Learning Vector Quantization Dan Deteksi Tepi

Robert Untuk Pengenalan Citrawajah. Skripsi. Universitas Sumatera Utara.

Kasabov,N.K. 1998. Foundation of Neural Networks, Fuzzy Systems, and Knowledge Engineering. Massachusets: The MIT Press.

Marbun,L.2014. Implementasi Jaringan Syaraf Tiruan Bidirectional Associative

Memory Untuk Pengidentifikasian Telapak Tangan

Manusia.Skripsi.Universitas Sumatera Utara.

Muis,S. 2009. Identifikasi Pola Sinyal dengan Menggunakan Teknik Neural Networks. Yogyakarta: Graha Ilmu.

Prabowo,A., Sarwoko,E.A. & Riyanto,D.E. 2006. Perbandingan Antara Metode Neural Network dengan Metode Learning Vector Quantization pada Pengenalan Pola Tandatangan. Jurnal Sains & Matematika.14(4):147-153.


(28)

Prasetyo, Eko. 2011. Pengolahan Citra Digital dan Aplikasinya menggunakan Matlab.Yogyakarta: Andi Offset

Pressman, R.S. 2010. Rekayasa Perangkat Lunak: Pendekatan Praktisi Edisi 7.Yogyakarta: Penerbit Andi.

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

Siang,J.J. 2009. Jaringan Syaraf Tiruan dan Pemrogramannya menggunakan MATLAB. Yogyakarta: ANDI.

Sinaga,J.R.2015. Implementasi Algoritma Self Organizing Maps (SOM) Untuk Mengidentifikasi Benih Jagung Hibrida. Skripsi. Universitas Sumatera Utara.

Siregar,T.R. 2013. Implementasi Jaringan Syaraf Metode Bidirectional Associative Memory Untuk Pengenalan Pola Wajah.Skripsi. Universitas Sumatera Utara. Suyanto.2011.Artificial Intelligence.Bandung:Informatika.

Wuryandari,M.D & Afrianto, I. 2012. Perbandingan Metode Jaringan Syaraf Tiruan Backpropagation dan Learning Vector Quantization Pada Pengenalan Wajah.Jurnal Komputer dan Informatika 1(1): 45-51.


(29)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Sebelum proses pembuatan suatu sistem, langkah awal yang harus dilakukan adalah menganalisis sistem yang akan dibuat. Analisis sistem ini bertujuan untuk mengetahui permasalahan-permasalahan, serta kebutuhan sistem tersebut. Dengan adanya analisis ini, akan memudahkan dalam proses perancangan model suatu sistem sehingga sistem yang dibuat menjadi tepat guna. Ada 3 jenis analisis yang dilakukan dalam penelitian ini yakni: analisis masalah, analisis kebutuhan dan analisis proses. 3.1.1 Analisis masalah

Untuk dapat menyelesaikan suatu masalah, maka harus diketahui dengan baik bagaimana masalah tersebut. Hal itu bisa didapatkan melalui penganalisaan masalah. Diagram Ishikawa merupakan suatu diagram yang efektif untuk mengidentifikasi penyebab-penyebab dari suatu masalah (Bilsel, 2012)

Diagram Ishikawa atau fishbone diagram berbentuk menyerupai tulang ikan yang terdiri dari kepala ikan dan tulang ikan. Pada diagram Ishikawa, terdapat tulang utama yang menghubungkan antara masalah utama dan penyebabnya. Masalah utama diletakkan pada kepala diagram dan penyebabnya diletakkan pada tulangnya. (Bose,2012).

Identifikasi masalah dari penelitian ini dijabarkan dalam bentuk diagram Ishikawa seperti Gambar 3.1:


(30)

Gambar 3.1 Diagram Ishikawa Pengenalan Telapak Kaki Bayi

Melalui Gambar 3.1 dapat diketahui masalah serta penyebabnya yang ditinjau dari 4 kategori yaitu manusia, lingkungan, mesin dan material. Dari kategori manusia, seringkali tanda pengenal, seperti dalam kasus yang berhubungan dalam penelitian ini, yaitu pita identifikasi bayi dapat tercecer atau tertukar. Sedangkan mengenali seorang bayi dari wajah, sangat sulit dilakukan. Padahal, dibutuhkan alat pengenal yang bersifat unik untuk membedakan yang satu dengan yang lainnya. Inilah penyebab dari kategori lingkungan. Adanya perkembangan ilmu teknologi dalam bidang jaringan syaraf tiruan yang dapat bekerja mengenali pola seperti kemampuan visual manusia serta alat pendukung komputer yang saat ini lazim digunakan, mendorong dibentuknya sebuah sistem yang dapat mengenali identitas melalui biometrika manusia.

3.1.2 Analisis kebutuhan

Analisis spesifikasi kebutuhan akan menghasilkan spesifikasi dari karakteristik operasional yang akan dimiliki oleh sistem yang akan dibuat, dimana hal ini mungkin mengindikasikan antarmuka perangkat lunak dengan elemen-elemen sistem yang lain. Analisis kebutuhan memungkinkan untuk menetapkan spesifikasi-spesifikasi dasar perangkat lunak. (Pressman,2010)


(31)

24

Analisis kebutuhan sistem pengidentifikasian telapak kaki bayi terdiri dari 2 yaitu analisis kebutuhan fungsional dan analisis kebutuhan non fungsional. Kebutuhan fungsional adalah kebutuhan yang harus dipenuhi dalam fungsi-fungsi aplikasi.

Dalam sistem pengenalan citra cap telapak kaki bayi ini, yang menjadi persyaratan fungsional adalah:

1. Sistem dapat melakukan proses prapengolahan citra sebelum melakukan proses pelatihan yakni proses grayscale, sharpening dan filtering.

2. Sistem dapat menyimpan bobot akhir dari proses pelatihan

3. Sistem dapat melakukan pengenalan terhadap citra telapak kaki bayi yang telah diuji

Untuk menjalankan sistem pengidentifikasian telapak kaki bayi ini, maka persyaratan non-fungsional yng dibutuhkan adalah:

1. Performa

Aplikasi yang dibangun dapat menjalankan fungsinya dengan baik yaitu dapat mengenali citra cap telapak kaki bayi.

2. Tampilan

Sistem memiliki tampilan muka yang user friendly sehingga pengguna dapat lebih mudah memahami dalam penggunaan sistem. Selain itu, pemberian menu bantuan juga membantu pengguna untuk bisa belajar menggunakan sistem. 3. Ekonomi

Aplikasi yang dibangun tidak membutuhkan biaya tambahan atau perangkat tambahan dalam penggunaannya sehingga menjadi hemat biaya.

4. Manajemen kualitas

Aplikasi yang dibangun memiliki kualitas yang baik dalam proses pengolahan citra, pelatihan maupun proses pengujian serta pengefisiensian waktu dalam melakukan tiap proses tersebut.

5. Dokumentasi

Dari serangkaian proses pengolahan citra akan dihasilkan vektor input yang berasal dari pixel-pixel citra dalam bentuk biner. Vektor input dan bobot baru hasil pelatihan akan disimpan di dalam komputer.


(32)

3.1.3 Analisis proses

Ada 3 proses yang dilewati dari sistem yang dibuat dalam penelitian. Ketiga proses tersebut secara berurut adalah pengolahan citra, pelatihan dan pengujian. Pada proses pengolahan citra yang dilakukan adalah proses pengubahan ukuran citra, pengubahan citra menjadi citra grayscale, sharpening citra dan deteksi tepi.

Citra yang dilatih terdiri dari 30 citra, dimana 10 citra berupa citra asli cap telapak kaki bayi dari 10 bayi berbeda sedangkan 20 lainnya merupakan citra dari ke-10 citra asli tadi yang telah diberi noise dengan persenan yang berbeda.

Untuk proses pengolahan citra untuk pelatihan, yang pertama kali dilakukan yakni proses resize citra. Hal ini dilakukan untuk memperkecil ukuran citra asli yang ukurannya mencapai 1536 x 2048 pixel. Resize citra yang dilakukan mengubah ukuran citra asli menjadi 100 x 50 pixel.

Selanjutnya dilakukan proses grayscale citra. Proses grayscale adalah proses pengubahan citra RGB menjadi citra skala abu. Setiap citra RGB yang diinput akan diubah menjadi citra yang hanya memiliki informasi intensitas warna putih dan hitam dalam setiap pixelnya sehingga citra berubah menjadi warna abu-abu.

Proses yang dilakukan setelah pengubahan citra RGB menjadi citra skala abu adalah proses filtering. Filtering yang digunakan dalam penelitian ini adalah high-pass filtering yang bertujuan untuk mempertajam citra. Sharpening citra ini dibutuhkan agar garis-garis halus pada citra cap telapak kaki bayi dapat terdeteksi lebih jelas.

Setelah proses sharpening, maka akan dilakukan deteksi tepi. Dalam penelitian ini digunakan deteksi tepi Canny. Deteksi tepi ini bertujuan untuk menandai yang menjadi detail citra. Hasil dari deteksi tepi ini nantinya berupa citra biner. Matriks piksel dari citra biner hanya memuat nilai 0 atau 1.

Ukuran matriks dari citra biner hasil dari deteksi tepi berukuran 100 x 50. Oleh sebab itu, dilakukan pengubahan ukuran matriks citra menjadi 1 x 5000 sehingga matriks inilah yang akan dijadikan vektor input pada proses pelatihan maupun proses pengujian.


(33)

26

Untuk memulai proses pelatihan, pertama kali yang dilakukan adalah inisialisasi bobot. Inisialisasi bobot ini dilakukan secara acak. Ukuran matriks bobot acak ini disesuaikan dengan banyaknya kelompok yang akan dibentuk dan jumlah elemen setiap vektor input. Dalam penelitian ini , citra akan dikelompokkan ke dalam 10 kelompok. Sedangkan elemen tiap vektor input berjumlah 5000 elemen. Sehingga matriks bobot acak yang dibuat berukuran 10 x 5000. Selanjutnya dilakukan proses pelatihan menggunakan metode Kohonen.

Berikut salah satu proses perhitungan menggunakan Kohonen: 1. Inisialisasi bobot acak :

2. Misalkan nilai alpha diset sebesar 0.5 dan 0.2*

Vektor input citra 1:

Selanjutnya dihitung jarak Euclidean untuk vektor input dengan rumus: D(j)=

D(1)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(0-0)2 + (1-1)2 +(1-1)2+...= 0.6787 D(2)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-0)2 + (1-1)2 +(1-1)2+...= 0.2785 D(3)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-0)2 + (1-1)2 +(1-1)2+...=0.1124 D(4)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(0-0)2 + (0-1)2 +(1-1)2+...= 0.4218 D(5)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-0)2 + (1-1)2 +(1-1)2+...= 0.4218


(34)

D(6)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-0)2 + (1-1)2 +(1-1)2+...= 0.9706 D(7)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-0)2 + (1-1)2 +(1-1)2+...= 0.6948 D(8)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(0-0)2 + (1-1)2 +(1-1)2+...= 0.3816 D(9)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-0)2 + (1-1)2 +(1-1)2+...= 0.1576 D(10)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-0)2 + (1-1)2 +(1-1)2+...= 0.8235 Dari hasil D(j) yang diperoleh dapat dilihat D(j) minimum berada pada j=3, sehingga bobot acak pada baris 3 akan diubah dengan rumus:

Pengubahan bobot acak ini dilakukan untuk semua nilai i (1-5000), sehingga bobot baru adalah

Setelah itu dilakukan penghitungan untuk mencari D(j) minimum untuk vektor x2

dengan menggunakan bobot baru yang sudah diperoleh:


(35)

28

D(1)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(0-1)2 + (1-1)2 +(1-1)2+...= 1.6236 D(2)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.1589 D(3)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(0-1)2 + (0-1)2 +(0-1)2+...= 0.2345 D(4)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(0-1)2 + (0-1)2 +(1-1)2+...= 0.9878 D(5)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.2258 D(6)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.4359 D(7)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.3564 D(8)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(0-1)2 + (1-1)2 +(1-1)2+...= 0.3168 D(9)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.3544 D(10)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.5235 Dapat dilihat dari hasil perhitungan bahwa d(j) minimum terletak untuk j= 2, sehingga w akan diubah pada baris kedua dengan mencari menggunakan metode Kohonen


(36)

Hal ini dilakukan untuk semua nilai vektor input hingga iterasi ke 1000 sehingga pada akhirnya adalah sebagai berikut:

Gambar 3.2 Bobot baru dalam Ms.Excel Setelah dihasilkan, bobot tersebut akan disimpan.

Pada proses pengujian, citra yang dipilih akan terlebih dahulu mengalami proses pengolahan citra seperti pada proses pelatihan. Citra akan di resize, diubah ke skala abu , difilter dan dideteksi tepi sehingga menghasilkan citra biner. Matriks citra biner ini kemudian dikelompokkan berdasarkan jarak terdekatnya dengan bobot baru hasil pelatihan. Misalkan citra 1 dengan vektor input :

D(1)= (0-0)2 + ( 0-0)2 + (0-0)2 +... +(0.7233-1)2 + (1-1)2 +(1-1)2+...= 0.1253 D(2)= (0-0)2 + ( 0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(0.7233-1)2+...= 0.8156


(37)

30

D(3)= (0-0)2 + ( 0-0)2 + (0-0)2 +... +(0.2679-1)2 + (0.2679-1)2 +(0-1)2+...= -0.5883 D(4)= (0-0)2 + ( 0-0)2 + (0-0)2 +... +(0.7233-1)2 + (0.7233-1)2 +(1-1)2+...= 0.6145 D(5)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.3803 D(6)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.3524 D(7)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.1765 D(8)= (0-0)2 + ( 0-0)2 + (0-0)2 +... +(0.7233-1)2 + (0.7233-1)2 +(1-1)2+...= 0.2213 D(9)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= -0.1254 D(10)= (0-0)2 + ( 0-0)2 + (0-0)2 + (0-0)2 +... +(1-1)2 + (1-1)2 +(1-1)2+...= 0.3564 Dapat dilihat D(j) minimum untuk j= 3, sehingga citra 1 dikelompokkan/ teridentifikasi ke dalam bayi 3.

3.2 Perancangan Sistem 3.2.1 Diagram use-case

Use case menggambarkan bagaimana seorang pengguna akhir yang berinteraksi dengan sistem yang berada di bawah sejumlah situasi dan kondisi yang sifatnya spesifik. Use case selalu didefenisikan dari sudut pandang aktor-aktor yang berinteraksi dengan sistem/perangkat lunak yang sedang dikembangkan (Pressman, 2010). Diagram use case untuk sistem pengenalan telapak kaki bayi dapat dilihat seperti pada Gambar 3.3:


(38)

Gambar 3.3 Use case Sistem Pengenalan Telapak Kaki Bayi

Selanjutnya tiap use case yang terdapat pada Gambar 3. 2 dijelaskan pada dokumentasi naratif pada Tabel 3.1 dan 3.2

Tabel 3.1 Dokumentasi naratif dari use case pelatihan Nama Use case Pelatihan

Aktor Programmer dan user

Deskripsi Use case ini mendekripsikan pelatihan dengan metode SOM Kohonen

Pra Kondisi Sudah masuk dalam tampilan antarmuka Pelatihan

Bidang Khas Aksi Aktor Respon Sistem

1. Aktor menekan tombol Load Citra

2. Sistem menampilan citra cap telapak kaki bayi

3. Aktor menekan tombol Resize citra

4. Sistem mengubah ukuran citra dan menampilkan citra hasil resize

5. Aktor menekan tombol Grayscale

6. Sistem mengubah citra asli menjadi citra grayscale


(39)

32

7. Aktor menekan tombol sharpening

8. Sistem melakukan penajaman citra dan menampilkannya dalam axes 9. Aktor menekan tombol

deteksi tepi

10. Sistem mendeteksi tepi citra 11. Aktor menekan

tombol Train

12. Sistem mengubah ukuran matriks citra dan melakukan Pelatihan Kohonen

Bidang Alternatif

1. Aktor memilih menu Exit

2. Keluar dari aplikasi

Post Kondisi Sistem menyimpan bobot baru

Tabel 3.2 Dokumentasi naratif dari use case pengujian Nama Use case Pengujian

Aktor Programmer dan user

Deskripsi Use case mendeskripsikan proses pengujian dengan metode Kohonen

Pra Kondisi Sudah masuk dalam tampilan antarmuka Pengujian

Bidang Khas Aksi Aktor Respon Sistem

1. Aktor menekan tombol Pilih Gambar

2. Sistem menampilan dialog memilih file citra

3. Aktor memilih citra yang akan diuji

4. Sistem menampilkan citra yang akan diuji ke dalam axes

6. Sistem mengubah ukuran citra 7. Sistem mengubah citra mengubah citra menjadi citra grayscale

8. Sistem melakukan penajaman citra dan deteksi tepi serta pengujian dengan metode Kohonen

Bidang Alternatif

1. Aktor memilih menu Exit

2. Keluar dari aplikasi


(40)

3.2.2 Diagram sekuensial

Diagram sekuensial atau sequence diagram adalah diagram yang menunjukkan model logika dari sebuah use case dengan menggambarkan interaksi pesan diantara objek-objek dalam urutan-urutan waktu (Whitten, 2007). Oleh sebab itu, perlu diketahui objek-objek yang dimiliki oleh suatu proses. Sequence diagram dari proses pelatihan seperti pada Gambar 3.3 berikut:

Gambar 3.4 Sequence diagram untuk pelatihan

Gambar 3.5 Sequence diagram untuk pengujian

3.2.3 Diagram aktivitas

Diagram aktivitas (activity diagram) melengkapi use case yang telah dibuat sebelumnya dengan memberikan representasi grafis dari aliran-aliran interaksi di


(41)

34

dalam suatu skenario yang sifatnya spesifik. Mirip dengan diagram alir, suatu diagram aktivitas menggunakan sebuah kotak bersisi lengkung untuk menggambarkan fungsi tertentu yang ada dalam suatu sistem, sedangkan tanda panah menggambarkan aliran di dalam sistem, bentuk intan digunakan untuk menggambarkan keputusan-keputusan bercabang, dan garis horizontal tebal mengindikasikan bahwa aktivitas- aktivitas paralel dalam perangkat lunak sedang terjadi (Pressman, 2010).

Diagram aktivitas untuk use case pelatihan dan pengujian dapat dilihat seperti pada Gambar 3.6 dan Gambar 3.7:


(42)

Gambar 3.7 Diagram aktivitas use case pengujian

3.2.4 Pseudocode

Pseudocode adalah salah satu bentuk penulisan algoritma dengan menggunakan bahasa yang dapat dimengerti oleh manusia. Pseudocode tidak dapat dijalankan atau dibaca oleh mesin. Tidak ada aturan baku dalam penulisan pseudocode.

a) Pseudocode proses pelatihan

citra_latih  read(nama_file)

citra_latih2  resize(citra_Latih [100,50])

citra_gray  rgb2gray(citra_Latih2)

citra_sharp  sharpening (citra_gray)


(43)

36

vek_input  reshape_matriks (citra biner [1,5000])

set : matriks bobot_acak[10,5000]

epoch  0;

input: double (alpha)

while alpha>0 and alpha < 1 and epoch<=1000 loop

for i  1 to 30

for j 1 to 10

d(j)0;

for k  1:5000

d(j)= d(j)+(bobot_acak [j k]-vek_input [i k]))^2

endfor endfor

for j  1 to 10

if d(j)== nilai_min(d);

change j value to j_new; endif

endfor

bobot[j_new ; allcoulumns)=bobot (j_new; allcooulumns)+ alpha*

(vek_input [i; allcoulumns] – bobot [j_new; allcoulumns])

endfor

alpha  alpha* 0,2;

epoch  epoch +1;

endwhile


(44)

b) Pseudocode proses pengujian Read bobot_new

citra_uji  openfile(citra)

gambar  imresize(citra_uji,[100,50]);

citra_uji_gray  rgb2gray(gambar);

citra_uji2  filter(citra_uji_gray,Sharp);

gb1  edge(citra_uji2,'canny');

uji1 double(reshape(gb1,1,5000));

for i  1 to 1

for k  1 to 9

d(k)0;

for j  1 to 5000

d(k)  d(k)+(bobot_new(k,j)- uji1(i,j)).^2;

endfor endfor endfor

for k  1 to 9

if d(k)==value_min(d)

made cluster value from k; endif

endfor


(45)

38

3.2.5 Flowchart sistem

Adapun flowchart sistem baik proses pelatihan maupun pengujian dapat dilihat pada Gambar 3.8 dan 3.9 :


(46)

(47)

40

3.2.6 Perancangan antarmuka sistem

Gambar 3.10 Rancangan antarmuka beranda

Keterangan untuk gambar rancangan antarmuka beranda dijelaskan pada tabel 3.3: Tabel 3.3 Keterangan rancangan antarmuka beranda

NO Keterangan

1 Menu beranda

2 Menu Pelatihan untuk memasuki antarmuka proses pelatihan 3 Menu Pengujian untuk menuju antarmuka proses pengujian

4 Menu Help untuk menampilkan bantuan serta petunjuk kepada pengguna 5 Menu Exit untuk keluar dari aplikasi

6 Label yang berfungsi menampilkan nama aplikasi

7 Axes yang berfungsi menampilkan logo fakultas

8 Label yang berfungsi untuk menampilkan nama dan nim pembuat aplikasi


(48)

Gambar 3.11 Rancangan antarmuka pelatihan

Penjelasan tiap elemen pada Gambar 3.11 terdapat pada tabel 3.4 dibawah ini:

Tabel 3.4 Keterangan rancangan antarmuka pelatihan

NO Keterangan

1. Label nama form pelatihan

2. Axes untuk menampilkan citra yang akan dilatih

3. Text box untuk menginputkan nilai learning rate

4 Text box untuk menampilkan lama proses training

5 Button untuk membaca dan menampilkan citra yang akan dilatih

6 Button untuk mengubah Ukuran citra menjadi 100 x 50 pixel

7 Button untuk mengubah citra menjadi citra grayscale

8 Button untuk memfilter citra (penajamaan citra)

9 Button untuk melakukan deteksi tepi pada citra


(49)

42

Gambar 3.12 Rancangan antarmuka pengujian

Keterangan dari rancangan antarmuka pengujian dijelaskan dalam tabel 3.5 Tabel 3.5 Keterangan Rancangan Antarmuka Pengujian

NO Keterangan

1 Label untuk menampilkan nama form pelatihan 2 Axes untuk menampilkan citra uji

3 Button untuk memilih gambar citra yang akan diuji 4 Button untuk memulai proses identifikasi/ menguji citra 5 Label untuk menampilkan nama pemilik cap telapak kaki


(50)

Gambar 3.13 Rancangan antarmuka help

Untuk penjelasan dari gambar rancangan form help dapat dilihat dalam Tabel 3.6 Tabel 3.6 Keterangan gambar rancangan antarmuka help

No Keterangan

1 Label untuk menampilkan nama form help

2 Label berisi yang memberisi informasi cara menggunakan sistem


(51)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi Sistem

Tahap implementasi dilakukan setelah tahap perancangan. Implementasi yang dilakukan menggunakan Matlab R2007b.

4.1.1 Implementasi form beranda

Form beranda merupakan form awal sistem ini. Pada form beranda, terdapat beberapa menu pilihan yakni menu Pelatihan, Pengujian, Help dan Exit. Menu Help berisi petunjuk untuk membantu user dalam menggunakan aplikasi ini. Sedangkan menu Exit berfungsi untuk keluar dari aplikasi. Form beranda dapat dilihat seperti pada Gambar 4.1


(52)

4.1.2 Implementasi form pelatihan

Gambar 4.2 menunjukkan form Pelatihan. Dalam form inilah dilakukan pelatihan terhadap citra. User harus mengisikan nilai learning rate untuk memulai proses pelatihan. Tombol Load Citra berfungsi untuk menampilkan citra yang akan dilatih dan selanjutnya yang perlu dilakukan adalah menekan tombol yang aktif secara berurut.

Gambar 4.2 Form pelatihan 4.1.3 Implementasi form pengujian

Sebagai kelanjutan dari pelatihan pada form pelatihan, pada form pengujian akan diuji citra yang telah dilatih maupun yang belum dilatih. User dapat memilih citra yang akan diuji atau diidentifikasi dengan menekan tombol Pilih Gambar dan melanjutkan dengan proses identifikasi. Gambar 4.3 mmerupakan tampilan form pelatihan.


(53)

46

Gambar 4.3 Form pengujian 4.1.4 Implementasi form help

Form Help berfungsi untuk memberikan informasi atau bantuan dalam menggunakan aplikasi ini. Gambar 4.4 merupakan tampilan dari form help.


(54)

4.2 Pengujian

Pentingnya pengujian perangkat lunak dan implikasinya mengacu pada kualitas perangkat lunak.

Spesifikasi perangkat keras yang digunakan untuk proses pengujian sistem ini adalah: 1. Intel(R) core(TM) i5 CPU M460@ 2,53GHz (4CPUs),~2.5 Ghz

2. Memory ( RAM) 2 GB

3. Resolusi display monitor 1366 x 768 (32bit)

Sedangkan spesifikasi perangkat lunak yang digunakan adalah: 1. Sistem Operasi Windows 7 Ultimate 32 Bit

2. Matlab R2007b 3. Microsoft Excel 2007

Setelah berada pada form pelatihan maka, user menginputkan nilai learning rate dan menekan tombol Load Citra sehingga akan tampak seperti pada Gambar 4.5.

Gambar 4.5 Pelatihan load citra

Gambar yang akan dilatih merupakan gambar telapak kaki 10 bayi berbeda dan 20 gambar lainnya merupakan gambar yang telah diberi noise dengan persenan noise yang berbeda. Setelah gambar berhasil di tampilkan, maka tombol Resize akan aktif


(55)

48

dan user dapat menekan tombol Resize untuk mengubah citra menjadi berukuran 100 x 50 piksel. Gambar 4.6 merupakan tampilan ketika citra sudah di resize.

Gambar 4.6 Tampilan citra setelah di resize

Tombol Grayscale akan otomatis aktif setelah semua citra selesai di ubah ukurannya. Selanjutnya adalah proses mengubah citra menjadi citra grayscale dengan menekan tombol grayscale seperti yang terlihat pada Gambar 4.7 berikut:


(56)

Setelah citra selesai diubah menjadi citra grayscale, maka tombol sharpening akan aktif secara otomatis. Untuk mempertajam citra, maka pengguna dapat menekan tombol ini sekali atau lebih. Sewaktu proses pengujian ini, penulis menekan tombol Sharpening sebanyak 2 kali. Tampilan setelah citra di sharpening dapat dilihat pada Gambar 4.8

Gambar 4.8 Proses filter citra dengan high-pass filter

Setelah selesai di filter, maka tombol Deteksi Tepi akan aktif secara otomatis dan pengguna dapat menekan tombol tersebut untuk mendapatkan citra hasil deteksi tepi. Gambar 4.9 merupakan tampilan form Pelatihan setelah melakukan proses deteksi tepi pada citra.


(57)

50

Gambar 4.9 Citra latih hasil deteksi tepi

Apabila proses deteksi tepi telah selasai maka, tombol Train akan aktif sehingga user dapat memulai proses pelatihan. Dalam fungsi pelatihan ini, sistem akan mengelompokkan 30 citra tersebut ke dalam 10 kelompok, dimana tiap kelompok merupakan gambar dari 1 telapak kaki bayi yang sama. Setelah pelatihan dengan metode Kohonen dilakukan, maka akan menghasilkan bobot baru yang disimpan dalam Ms Excel untuk dipakai dalam proses pengujian. Selain itu, sistem juga akan menampilkan lama waktu proses pelatihan yang dibutuhkan seperti terlihat pada Gambar 4.10.


(58)

Gambar 4.10 Tampilan pelatihan telah selesai

Setelah proses pelatihan selesai , maka akan dilanjutkan pada proses pengujian.Untuk menguji citra telapak kaki bayi, maka user harus masuk ke form pengujian dengan memilih menu Pengujian.

Pada form pengujian, user akan menginputkan gambar yang akan diuji. Setelah itu, user menekan tombol identifikasi dan sistem akan mengidentifikasi file citra yang dipilih. Outputnya berupa pemilik citra telapak kaki bayi. Berikut tampilan form pengujian setelah dijalankan:


(59)

52

Gambar 4.11 Form Pengujian setelah dijalankan 4.2.1 Pengujian terhadap citra yang telah dilatih

Adapun proses pengujian yang dilakukan terdiri dari 2 bagian yaitu pengujian terhadap citra yang telah dilatih dan pengujian terhadap citra yang belum dilatih. Tabel 4.1 adalah tabel hasil pengujian terhadap citra yang telah dilatih.

Tabel 4.1 Hasil Pengujian Terhadap Citra yang Telah Dilatih NO Citra Uji Teridentifikasi Keterangan

1 Bayi 1 Benar


(60)

3 Bayi 3 Benar

4 Bayi 4 Benar

5 Bayi 5 Benar

6 Bayi 6 Benar

7 Bayi 7 Benar

8 Bayi 8 Benar

9 Bayi 9 Benar


(61)

54

11 Bayi 1 Benar

12 Bayi 2 Benar

13 Bayi 3 Benar

14 Bayi 4 Benar

15 Bayi 5 Benar

16 Bayi 6 Benar


(62)

18 Bayi 8 Benar

19 Bayi 9 Benar

20 Bayi 2 Salah

21 Bayi 1 Benar

22 Bayi 2 Benar

23 Bayi 3 Benar


(63)

56

25 Bayi 5 Benar

26 Bayi 6 Benar

27 Bayi7 Benar

28 Bayi 8 Benar

29 Bayi 9 Benar

30 Bayi 2 Salah

Dari hasil pengujian terhadap 30 citra yang telah dilatih maka perhitungan akurasi yang didapat diperoleh dari rumus persentase adalah:


(64)

Dapat disimpulkan bahwa untuk ke 30 citra dimana 20 citra diantaranya adalah citra bernoise dengan persentase 50 % dan 60 %, dengan menggunakan metode Kohonen dapat mengelompokkan dan mengenali citra telapak kaki bayi hingga .

4.2.2 Pengujian terhadap citra yang tidak dilatih

Selanjutnya adalah proses pengujian citra yang tidak dilatih. Dalam pengujian ini digunakan citra dengan tingkat noise 80%, 90 % dan 100 %

Tabel 4.2 Pengujian Terhadap Citra yang Tidak Dilatih No Citra telapak

kaki

Persentase Noise

80 % 90 % 100%

1 Bayi 1 Benar Benar Salah

2 Bayi 2 Benar Benar Salah

3 Bayi 3 Benar Benar Salah

4 Bayi 4 Benar Benar Salah

5 Bayi 5 Benar Benar Benar

6 Bayi 6 Benar Benar Salah

7 Bayi 7 Benar Benar Salah

8 Bayi 8 Benar Benar Benar

9 Bayi 9 Benar Benar Salah

10 Bayi 10 Salah Salah Salah

Dari hasil pengujian terhadap citra yang tidak dilatih, maka persentase akurasi yang diperoleh adalah


(65)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Pengidentifikasian bayi melalui telapak kaki bayi menggunakan metode SOM Kohonen dapat dilakukan dan diperoleh tingkat akurasi sebesar 90% untuk citra yang telah dilatih sebelumnya.

2. Pengidentifikasian citra cap telapak kaki bayi menggunakan metode SOM Kohonen juga dapat dilakukan untuk citra yang belum dilatih dengan tingkat akurasi identifikasi sebesar 66.7 %

3. Pada pengujian citra telapak kaki bayi, metode SOM Kohonen akan selalu mengelompokkan citra ke kelompok terdekat berdasarkan nilai matriks citra biner. Hal ini berarti, dalam pengenalan pola, penggunaan metode ini tidak menghasilkan output tidak dikenali. Sehingga apapun inputnya akan selalu dikelompokkan ke dalam kelompok yang terdekat.

5.2 Saran

Untuk pengembangan sistem yang telah dibangun ini, penulis menyarankan:

1. Sistem ini dikembangkan dengan menambah lebih banyak citra telapak kaki dari bayi yang berbeda serta ukuran citra yang berbeda dari penelitian ini. 2. Untuk proses pengujian, hendaknya mengunakan citra telapak kaki bayi yang

sama namun diambil dalam waktu yang berbeda.

3. Sistem ini dapat dikembangkan dengan mengambil citra menggunakan webcam, atau media lainnya yang memungkinkan pengambilan citra secara real time.


(66)

(67)

BAB 2

LANDASAN TEORI

2.1 Pengenalan Pola

Pengenalan pola (pattern recognition) adalah suatu ilmu untuk mengklasifikasikan atau menggambarkan sesuatu berdasarkan pengukuran kuantitatif fitur atau sifat utama dari suatu obyek (Putra,2010).

Seperti halnya kemampuan manusia yang dapat mengenali dan membedakan objek yang dilihatnya, demikian pula suatu komputer diharapkan mampu meniru kemampuan visual manusia dalam mengenali suatu citra. Komputer menerima input berupa citra objek yang akan diidentifikasi, memproses citra tersebut dan memberikan output berupa deskripsi objek di dalam citra (Siregar, 2013).

Gambar 2.1 Skema Pengenalan Pola (Marbun,2014) 2.2 Deteksi Tepi

Tepi adalah sebuah himpunan dari piksel-piksel yang terhubung yang berada pada batas (boundary) diantara dua region. Defenisi tepi membutuhkan kemampuan untuk mengukur transisi gray-level dengan cara yang tepat (Fajar,2013). Tepian dari


(68)

suatu citra mengandung informasi penting dari citra bersangkutan. Tepian citra dapat merepresentasikan objek-objek yang terkandung dalam citra, bentuk, dan ukurannya serta terkadang juga informasi tentang tekstur (Johandra,2014). Oleh karena itu, tepi berguna untuk proses segmentasi dan identifikasi objek di dalam citra.

Ketebalan dari tepi ditentukan oleh panjang dari ramp, yang merupakan transisi dari gray level awal sampai gray level akhir. Panjang ramp ditentukan oleh slope, yang ditentukan juga oleh tingkat kekaburan. Berarti bahwa tepi yang kabur cenderung tebal dan tepi yang tajam cenderung tipis.(Hermawati, 2013)

Deteksi tepi adalah proses untuk menemukan perubahan intensitas yang berbeda nyata dalam sebuah bidang citra. Deteksi tepi merupakan langkah pertama untuk melingkupi informasi di dalam citra (Putra,2010). Setelah dilakukan deteksi tepi akan dihasilkan citra biner. Citra biner merupakan citra yang hanya memiliki dua nilai yaitu hitam dan putih atau dalam bentuk nilai yaitu 0 dan 1 (Marbun, 2014).

Deteksi tepi pada suatu citra memiliki tujuan sebagai berikut (Johandra, 2014): 1. Menandai bagian yang menjadi detail citra.

2. Memperbaiki detail citra yang kabur karena error atau adanya efek dari proses akuisisi citra.

Beberapa jenis deteksi tepi adalah deteksi tepi Robert, Prewitt, Log dan Canny. 2.2.1 Deteksi tepi Canny

Deteksi tepi Canny dapat mendeteksi tepian yang sebenarnya dengan tingkat kesalahan minimum (Marbun, 2014). Dengan kata lain, operator Canny didesain untuk menghasilkan citra tepian yang optimal. Operator ini diformulasikan dengan 3 tujuan utama (Hermawati, 2013):

a. Optimal detection, dengan tidak adanya respon yang salah

b. Good localization, dengan jarak minimal antara posisi tepi sebenarnya dengan

posisi yang terdeteksi

c. Single response, dengan mengelimasi multiple response menjadi satu garis tepi


(69)

7

Berikut adalah langkah-langkah dalam melakukan deteksi tepi Canny (Putra,2010): 1. Menghilangkan derau yang ada pada citra dengan mengimpelementasikan tapis

Gaussian. Proses ini akan menghasilkan citra yang tampak sedikit buram. 2. Melakukan deteksi tepi dengan salah satu operator deteksi tepi seperti Roberts,

Prewitt, atau Sobel dengan melakukan pencarian secara horisontal (Gx ) dan

secara vertikal (Gy).

3. Menentukan arah tepian yang ditemukan dengan menggunakan rumus sebagai berikut:

Selanjutnya membagi ke dalam 4 warna sehingga garis dengan arah berbeda dan memiliki warna yang berbeda. Pembagiannya adalah 0-22,5 dan 157,5-180 derajat berwarna kuning, 22,5-67,5 berwarna hijau dan derajat 67,5-157,5 berwarna merah.

4. Memperkecil garis tepi yang muncul dengan menerapkan nonmaximum suppresion.

5. Menerapkan dua buah tresholding

Dalam proses pendeteksian tepi terhadap citra yang dilakukan dengan metode Canny dapat menggunakan function di Matlab, sehingga cukup menggunakan function edge dalam pengkodean (Marbun, 2014). Gambar 2.3 merupakan contoh deteksi tepi menggunakan operator Canny:


(70)

Gambar 2.3 Citra Hasil Deteksi Tepi Canny 2.3 Perbaikan Citra (Image Enhancement)

Perbaikan citra bertujuan meningkatkan kualitas tampilan citra untuk pandangan manusia atau untuk mengkonversi suatu citra agar memiliki format yang lebih baik sehingga citra tersebut menjadi lebih mudah diolah dengan mesin.

Perbaikan suatu citra dapat dilakukan dengan operasi titik (point operation), operasi spasial (spatial operation), dan operasi aritmatik (arithmatic operation) (Putra, 2010).

2.3.1 Operasi spasial (filtering)

Pada proses filtering, nilai pixel baru dari suatu citra umumnya dihitung berdasarkan pixel tetangga. Berdasarkan cara penghitungan nilai pixel baru tersebut, proses filtering dapat dikelompokkan menjadi 2, yaitu tapis linier dan tapis non linier. 2.3.2 High-pass filtering

High-pass filtering merupakan salah satu jenis dari linier filtering. High-pass filtering merupakan kebalikan dari low-pass filtering yaitu mempertajam komponen frekuensi tinggi dan menghilangkan (mengurangi) komponen frekuensi rendah, sehingga filter ini sangat cocok untuk penajaman tepi citra. Nilai koefisien filter pada koordinat pusat bernilai positif dan koefisien kelilingnya bernilai negatif. Bila proses pentapisan dilakukan diatas area yang nilai intensitasnya konstan atau mengalami perubahan yang lamban maka nilai pixel keluaran adalah nol atau sangat kecil.


(71)

9

Adapun prosedur untuk menapis citra dalam kawasan frekuensi adalah sebagai berikut:

1. Input citra digital berupa citra *.jpg dengan ukuran lebar = ukuran tinggi.

2. Lakukan proses transformasi fourier dari citra input dengan menggunakan FFT 2D untuk mendapatkan F(u,v) yang merupakan nilai kompleks dari transformasi fourier. 3. Hitung filter mask H(u,v) dengan ukuran lebar dan tinggi sama dengan ukuran citra input.

4. Kalikan F(u,v) dengan H(u,v) untuk mendapatkan G(u,v) yang merupakan hasil perkalian antara transformasi dengan filter mask.

5. Lakukan proses invers transformasi fourier dari G(u,v) menggunakan invers DFT (Descrete Fourier Transformation ) 2D sehingga diperolehlah citra hasil g(x,y). ( Eko, 2011)

Dimana untuk transformasi Fourier diskrit dua dimensi dari sebuah fungsi diskrit f(x,y) dinyatakan sebagai berikut:

Dan inversnya:

Untuk u = 1,2,....M−1; x = 1,2,....M−1; v = 1,2,....N−1 y = 1,2,....N−1. Fungsi filter untuk High Pass filter adalah:

Dimana,

H(u,v) : fungsi filter

Do : konstanta positif (cutoff frekuensi)/titik pusat transformasi

D(u,v): jarak antara titik (u,v) dalam domain frekuensi dan pusat persegi panjang frekuensi.

Salah satu contoh matriks filternya dapat dilihat seperti gambar dibawah ini (Putra, 2010).


(72)

Gambar 2.4 Contoh Matriks High Pass Filtering Contoh hasil dari highpass filtering dapat dilihat seperti Gambar 2.5:

(a) (b) (c) Gambar 2.5 (a) Citra asli (b) Citra Grayscale (c) Citra hasil highpass

filtering

2.4Jaringan Syaraf Tiruan

Jaringan syaraf tiruan adalah sistem pembelajaran berbentuk jaringan yang terinspirasi berdasarkan jaringan syaraf manusia. Jaringan syaraf tiruan merupakan sistem adaptasi yang dapat merubah strukturnya untuk memecahkan masalah berdasarkan informasi yang masuk dan keluar melalui jaringan tersebut (Darmawan,2010). Jaringan syaraf tiruan tercipta sebagai suatu generalisasi model matematis dari pemahaman manusia ( human cognition ) yang didasarkan pada (Wuryandari & Afrianto, 2012):

1. Pemrosesan informasi terjadi pada elemen sederhana yang disebut neuron 2. Sinyal mengalir diantara sel syaraf/neuron melalui suatu sambungan

penghubung

3. Setiap sambungan penghubung memiliki bobot yang bersesuaian. Bobot ini akan digunakan untuk menggandakan/mengalikan sinyal yang dikirim melaluinya.


(73)

11

4. Setiap sel syaraf akan menerapkan fungsi aktivasi terhadap sinyal hasil penjumlahan berbobot yang masuk kepadanya untuk menentukan sinyal keluarannya.

Gambar 2.6 Contoh Model Neuron Jaringan Syaraf Tiruan (Siang, 2009) Jaringan syaraf tiruan mempunyai struktur tersebar paralel yang sangat besar dan mempunyai kemampuan belajar sehingga bisa melakukan generalisasi yaitu bisa menghasilkan output yang benar untuk input yang belum pernah dilatihkan. Defenisi belajar dalam jaringan syaraf tiruan adalah suatu proses dimana parameter-parameter bebas jaringan syaraf tiruan diadaptasikan melalui suatu proses perangsangan berkelanjutan oleh lingkungan dimana jaringan berada (Suyanto, 2011). Pembelajaran pada jaringan syaraf tiruan pada dasarnya dideskripsikan lewat perubahan bobot w antara neuron, tujuan akhir pembelajaran terhadap variabel masukan x adalah nilai keluaran output Y sedekat mungkin dengan nilai keluaran yang ditargetkan (beda nilai antara keluaran terhadap masukan disebut error value) (Muis,2009).

Jaringan syaraf tiruan dapat digunakan untuk (Siang, 2009): 1. Pengenalan pola (Pattern Recognition)

Jaringan syaraf tiruan dapat dipakai untuk mengenali pola ( huruf, angka, suara atau tanda tangan) yang sudah sedikit berubah. Hal ini mirip dengan otak manusia yang masih mampu mengenali orang yang sudah beberapa waktu tidak dijumpainya (mungkin wajah/bentuk tubuhnya yang sudah sedikit berubah).

2. Signal Processing

Jaringan syaraf tiruan (model Adaline) dapat dipakai untuk menekan noise dalam saluran telpon.


(74)

3. Peramalan

Jaringan syaraf tiruan juga dapat dipakai untuk meramalkan apa yang akan terjadi di masa yang akan datang berdasarkan pola kejadian yang ada di masa yang lampau. Peramalan ini dapat dilakukan mengingat kemampuan jaringan syaraf tiruan dapat membuat generalisasi dari apa yang sudah ada sebelumnya. Jaringan syaraf tiruan juga dapat menyelesaikan masalah dalam bidang kontrol dan kedokteran.

3. Menyelesaikan persoalan optimasi terbatas (Darmawan ,2010)

Meskipun banyak aplikasi menjanjikan yang dapat dilakukan oleh jaringan syaraf tiruan, namun jaringan syaraf tiruan juga memiliki beberapa keterbatasan umum. Salah satunya adalah ketidakakuratan hasil yang diperoleh(Siang,2009).

Karakteristik dari jaringan syaraf tiruan adalah (Darmawan,2010): 1. Arsitektur jaringan : pola keterhubungan antar neuron

2. Algoritma jaringan (pelatihan,pembelajaran) metode menentukan nilai bobot hubungan

3. Fungsi aktivasi : menentukan nilai keluaran berdasarkan nilai total masukannya.

2.4.1 Arsitektur jaringan

Pada jaringan syaraf tiruan, neuron-neuron akan dikumpulkan dalam lapisan-lapisan (layer) yang disebut dengan lapisan-lapisan neuron (neuron layers). Neuron-neuron pada satu lapisan akan dihubungkan dengan lapisan-lapisan sebelum dan sesudahnya. Informasi yang diberikan pada jaringan syaraf akan dirambatkan lapisan ke lapisan, mulai dari lapisan masukan sampai ke lapisan keluaran melalui lapisan tersembunyi (hidden layer).

Pola dimana neuron-neuron pada jaringan syaraf tiruan disusun berhubungan erat dengan algoritma belajar yang digunakan untuk melatih jaringan. Secara umum, arsitektur jaringan syaraf tiruan dibagi 4, yaitu ( Suyanto,2011):


(75)

13

1. Single-Layer feedforward networks

Bentuk jaringan berlapis yang paling sederhana yaitu lapis tunggal, hanya terdapat input layer dengan node sumber yang terproyeksi ke dalam output layer dari neuron, tetapi tidak sebaliknya.

Gambar 2.7 Single Layer Network

2. Multi-layer feedforward network

Arsitektur jaringan ini memiliki satu atau lebih lapis tersembunyi (hidden layer). Jaringan dengan banyak lapisan ini dapat menyelesaikan permasalahan yang kompleks, namun cenderung membutuhkan waktu yang lebih lama. Contoh jaringan yang menerapkan arsitektur ini adalah backpropagation.


(76)

3. Recurrent network

Recurrent network adalah jaringan yang mempunyai minimal satu feeedback loop. Feedback loop mempengaruhi kemampuan belajar dan kinerja jaringan.

Gambar 2.9 Recurrent Network dengan hidden neuron

4. Lattice structure

Sebuah lattice terdiri dari satu dimensi, dua dimensi, atau lebih array neuron dengan himpunan node sumber yang bersesuaian yang memberikan sinyal input ke array;dimensi lattice mengacu pada jumlah dimensi ruang dimana graph berada.


(77)

15

Berdasarkan paradigma pembelajarannya, jaringan syaraf tiruan terbagi 2 yakni supervised dan unsupervised learning ( Suyanto,2011):

1. Supervised learning

Supervised atau active learning adalah jenis jaringan syaraf tiruan dimana dalam proses belajar membutuhkan sampel input-output. Sampel input-output ini akan membangun pengetahuan dengan memberikan respon yang diinginkan jaringan syaraf tiruan. Respon yang diinginkan tersebut mereperesentasikan aksi optimum yang diinginkan oleh jaringan syaraf tiruan. Parameter-parameter jaringan berubah-ubah berdasarkan vektor latih dan sinyal kesalahan.

2. Unsupervised learning

Unsupervised learning atau self-organized learning tidak membutuhkan sampel input-output untuk memantau proses belajar. Salah satu contoh jenis jaringan syaraf yang tergolong unsupervised learning adalah self-organizing map.

Jenis jaringan ini didasarkan pada competitive learning; neuron output dari jaringan ini bersaing satu sama lain untuk diaktifkan , dengan hasil hanya satu neuron output yang memenangkan persaingan. Salah satu model self organizing maps ini adalah self organizing map Kohonen (SOM Kohonen).

2.4.2 Self organizing map Kohonen

Ada dua kemungkinan dalam menggunakan Self Organizing Maps. Pertama, adalah menggunakannya hanya untuk model unsupervised learning, dimana vektor input tidak diketahui. Kedua adalah menggunakannya untuk unsupervised learning dan diikuti dengan supervised learning. Algoritma LVQ (Learning Vector Quantization) dikembangkan untuk tujuan kedua ini. (Kasabov,1998)

Teknik self-organizing map (SOM) Kohonen pertama kali diperkenalkan oleh Touvo Kohonen, merupakan sistem jaringan neural berbasis kompetisi yang mampu melakukan pembelajaran tanpa terbimbing karena memiliki kemampuan mengatur dirinya sendiri (self-organizing) (Sinaga, 2015).


(78)

Jaringan Kohonen merupakan salah satu jaringan yang dipakai untuk membagi pola masukan kedalam beberapa kelompok (cluster), dimana semua pola yang berada dalam satu kelompok merupakan pola yang mirip satu dengan lainnya.

Arsitektur jaringan Kohonen mirip dengan model lain. Hanya saja jaringan Kohonen tidak menggunakan perhitungan net (hasil kali vektor masukan dengan bobot) maupun fungsi aktivasi (Siang, 2009).

Gambar 2.11 Arsitektur Jaringan Kohonen

Prinsip kerja dari algoritma SOM adalah pengurangan node-node tetangganya (neighbor), sehingga pada akhirnya hanya ada satu node output yang terpilih (winner node) (Astuti,2009).

Algoritma pengelompokan pola jaringan Kohonen adalah sebagai berikut (Siang,2009):

0. Inisialisasi

 Bobot wji (acak)

Laju pemahaman (learning rate) awal dan faktor penurunannya  Bentuk dan jari-jari (=R) topologi sekitarnya

1. Selama kondisi penghentian bernilai salah, lakukan langkah 2-7 2. Untuk setiap vektor masukan x, lakukan langkah 3-5

3. Hitung D(j)= ... (1) untuk semua j


(79)

17

4. Tentukan indeks J sedemikian hingga d(J) minimum 5. Untuk setiap unit j disekitar J modifikasi bobot:

...(2) 6. Modifikasi learning rate

7. Uji kondisi penghentian Keterangan:

D(j)= jarak Euclidean = nilai bobot

= laju pembelajaran/learning rate

Dalam inisialisasi bobot acak awal, selain membuat vektor bobot secara acak ada cara lain yang dapat digunakan yakni dengan memilih vektor bobot dari vektor input yang ditentukan secara acak. (Haykin, 1999).

Kondisi penghentian iterasi adalah selisih antara saat itu dengan pada iterasi sebelumnya. Apabila semua hanya berubah sedikit saja, berarti iterasi sudah mencapai konvergensi sehingga dapat dihentikan (Siang,2009).

Proses pembelajaran SOM Kohonen bersifat kompetitif atau bersaing. Untuk setiap pelatihan terdapat satu neuron keluaran dalam kondisi firing (neuron keluaran yang paling besar). Bobot yang terkoneksi pada neuron keluaran tersebut akan disesuaikan sehingga nilainya lebih kuat pada latihan berikutnya.

Dalam perubahan bobot yang terjadi, hal yang paling menentukan adalah atau learning rate. Learning rate adalah faktor pengali pada perubahan bobot yang berubah terhadap perubahan error. Perubahan ini sesuai dengan banyaknya input yang masuk dan akan selalu berkurang bila tidak ada perubahan error (Astuti,2009).

Contoh penggunaan algoritma Kohonen dalam mengelompokkan 4 buah vektor ke dalam maksimum 2 kelompok:

Diketahui 4 buah vektor x(1)=(1,1,0,0), x(2)=(0,0,0,1), x(3)=(1,0,0,0) dan x(4)=(0,0,1,1). Laju pemahaman awal dan . Jari-jari


(80)

vektor sekitar yang dimodifikasi=0 (berarti hanya vektor pemenang yang dimodifikasi bobotnya pada setiap langkah).

Langkah awal untuk meyelesaikan kasus diatas adalah dengan menentukan bobot awal. Kolom matriks bobot menyatakan jumlah komponen dalam sebuah vektor (dalam kasus ini=4) dan baris menyatakan jumlah maksimum kelompok yang akan dibentuk ( dalam kasus ini=2). Misalkan bobot awal secara acak:

Pelatihan untuk tiap vektor:

Untuk vektor x(1)=(1,1,0,0):

D(1) = (0.2-1)2 + (0.6-1)2 + (0.5-0)2 + (0.9-0)2 = 1.86 D(2) = (0.8-1)2 + (0.4-1)2 + ( 0.7-0)2 + (0.3-0)2 = 0.98

Karena D(j) minimum untuk j=2, maka vektor bobot baris 2 yang diubah sesuai aturan

w21 = 0.8 + 0.6 (1-0.8) = 0.92

w22 = 0.4 + 0.6 (1-0.4) = 0.76

w23 = 0.7 + 0.6 ( 0-0.7) = 0.28

w24 = 0.3 + 0.6(0- 0.3) = 0.12

Vektor bobot baru:

Untuk vektor x(2) = (0,0,0,1):

D(1)= (0.2-0)2 + ( 0.6-0)2 + (0.5-0)2 + (0.9-1)2 = 0.66 D(2)= (0.92-0)2 + ( 0.76-0)2 + (0.28-0)2 + (0.12-1)2 = 2.28

D(j) minimum untuk j=1, maka vektor bobot di baris 1 yang dimodifikasi. Maka bobot baru:


(1)

DAFTAR ISI

Hal. Persetujuan

Pernyataan

Ucapan Terima Kasih Abstrak

Abstract Daftar Isi Daftar Tabel Daftar Gambar Daftar Lampiran

ii iii iv vi vii viii x xi xiii Bab 1

Bab 2

Pendahuluan

1.1. Latar Belakang 1.2. Rumusan Masalah 1.3. Batasan Masalah 1.4. Tujuan Penelitian 1.5. Manfaat Penelitian 1.6. Metodologi Penelitian 1.7. Sistematika Penulisan Landasan Teori

2.1.Pengenalan Pola 2.2.Deteksi Tepi

2.2.1 Deteksi tepi Canny 2.3.Perbaikan Citra

2.3.1 Operasi spasial (filtering) 2.3.2 High pass filter

2.4.Jaringan Syaraf Tiruan 2.4.1 Arsitektur jaringan

2.4.2 Self Organizing Map Kohonen

1 2 2 2 3 3 3

5 5 6 8 8 8 10 12 15


(2)

Bab 3

Bab 4

Bab 5

Analisis dan Perancangan 3.1 Analisis Sistem

3.1.1 Analisis masalah 3.1.2 Analisis kebutuhan 3.1.3 Analisis proses 3.2 Perancangan Sistem

3.2.1 Diagram use case 3.2.2 Diagram sekuensial 3.2.3 Diagram aktivitas

3.2.4 Pseudocode

3.2.5 Flowchart sistem

3.2.6 Perancangan antarmuka sistem Implementasi dan Pengujian

4.1 Implementasi

4.1.1 Implementasi form beranda 4.1.2 Implementasi form pelatihan 4.1.3 Implementasi form pengujian 4.1.4 Implementasi form help 4.2 Pengujian

4.2.1. Pengujian terhadap citra yang dilatih 4.2.2. Pengujian terhadap citra yang tidak dilatih Kesimpulan dan Saran

5.1. Kesimpulan 5.2. Saran

22 22 23 25 30 30 33 33 35 38 40

44 44 45 45 46 47 52 57

58 58

Daftar Pustaka 60


(3)

DAFTAR TABEL

Tabel 3.1 Tabel 3.2 Tabel 3.3 Tabel 3.4 Tabel 3.5 Tabel 3.6 Tabel 4.1 Tabel 4.2

Dokumentasi naratif dari use case pelatihan Dokumentasi naratif dari use case pengujian Keterangan rancangan antarmuka beranda Keterangan rancangan antarmuka pelatihan Keterangan rancangan antarmuka pengujian Keterangan rancangan antarmuka help

Hasil pengujian terhadap citra yang telah dilatih Hasil pengujian terhadap citra yang tidak dilatih

31 32 40 41 42 43 52 57


(4)

DAFTAR GAMBAR Gambar 2.1 Gambar 2.2 Gambar 2.3 Gambar 2.4 Gambar 2.5 Gambar 2.6 Gambar 2.7 Gambar 2.8 Gambar 2.9 Gambar 2.10 Gambar 2.11 Gambar 3.1 Gambar 3.2 Gambar 3.3 Gambar 3.4 Gambar 3.5 Gambar 3.6 Gambar 3.7 Gambar 3.8 Gambar 3.9 Gambar 3.10 Gambar 3.11 Gambar 3.12 Gambar 3.13 Gambar 4.1 Gambar 4.2 Gambar 4.3 Gambar 4.4 Gambar 4.5

Skema pengenalan pola Citra asli

Citra hasil deteksi tepi Canny Contoh matriks high pass filtering

Citra asli, grayscale, hasil high pass filter Contoh model neuron jaringan syaraf tiruan Single layer network

Multi layer network

Recurrent network dengan hidden neuron Lattice 1 dimensi dengan 3 neuron

Arsitektur jaringan kohonen

Diagram Ishikawa pengenalan telapak kaki bayi Bobot baru dalam Ms.Excel

Use case sistem pengenalan telapak kaki bayi Sequence diagram untuk pelatihan

Sequence diagram untuk pengujian Diagram aktivitas use case pelatihan Diagram aktivitas use case pengujian Flowchart pelatihan

Flowchart pengujian

Rancangan antarmuka beranda Rancangan antarmuka pelatihan Rancangan antarmuka pengujian Rancangan antarmuka help Form beranda

Form pelatihan Form pengujian Form help

Pelatihan load citra

5 7 8 10 10 11 13 13 14 15 16 23 29 31 33 33 34 35 38 39 40 41 42 43 44 45 45 46 47


(5)

Gambar 4.6 Gambar 4.7 Gambar 4.8 Gambar 4.9 Gambar 4.10 Gambar 4.11

Tampilan citra setelah di resize Proses grayscale pada citra

Proses filter citra dengan high pass filter Citra hasil deteksi tepi

Tampilan pelatihan telah selesai Form pengujian setelah dijalankan

48 48 49 50 51 52


(6)

DAFTAR LAMPIRAN

Listing Program 62

Bobot Baru Setelah Pelatihan dalam MsExcel 77

Vektor Input Citra Latih dalam Ms Excel 80

Curriculum Vitae 85