BAB V KESIMPULAN DAN SARAN
5.2. Saran
Beberapa saran yang dapat diuraikan dalam pengenalan motif batik Yogyakarta yang didapati pada penelitian ini, yaitu:
1. Penelitian tentang pengenalan motif batik Yogyakarta ini masih sebatas pada pengenalan 20 motif batik Yogyakarta, sehingga diperlukan studi lanjut untuk menangani beberapa motif batik Yogyakarta dan terlebih lagi untuk menangani batik luar Yogyakarta.
2. Pengambilan data citra motif batik Yogyakarta yang kurang maksimal menjadi salah satu penyebab nilai akurasi tidak tinggi. Dalam pengolahan data motif batik tidak ada proses image enhancement, yaitu proses perbaikkan peningkatan warna kontras suatu image. Warna citra motif batik yang diambil cenderung gelap, sehingga nilai yang dihasilkan dalam proses pengolahan feature sebagian besar
mendekati antara motif batik yang satu dan yang lainnya. Oleh karena itu, proses image enhancement dan proses cropping yang pas sangat penting dalam proses pengambilan data citra motif batik.
3. Hasil akurasi yang tidak tinggi (sekitar 30%) juga karena feature yang digunakan masih kurang tepat dalam menangani pengenalan motif batik Yogyakarta ini. Seluruh kemungkinan feature harus dicoba untuk menghasilkan akurasi LDA yang terbaik.
DAFTAR PUSTAKA
Abdullah. (2007). Pengembangan Sistem Identifikasi Buah-Buahan Menggunakan Ciri Bentuk. Mean dan Standar Deviasi Warna. Jurnal Teknologi industry Vol. XI: 237-244.
Hamzahan, A., Santosa, G., dan Widiarto, W. (2002), Klasifikasi Objek dalam Visi Komputer dengan Analisis Diskriminan, 1 – 3.
Hariani, Meika P. (2007), Pengenalan Wajah Manusia Menggunakan Transformasi Wavelet dan LDA (Linear Discriminant Analysis),1.
Indira, Merly., dkk. (2008). Perbandingan Metode Pendeteksi tepi Studi Kasus: Citra USG Janin, 2 - 3.
Ginting, Elias Dianta. (2009). Deteksi Tepi Menggunakan metode Canny dengan Matlab untuk Membedakan Uang Asli dan Uang Palsu, 1 – 5.
Johnson, R. A. and Wichern, D. W. (1998), Applied Multivariate Statistical Analysis, Prentice Hall, Fourth Edition.
Li, C., Cao, Q., dan Guo, F. 2009. A Method for Color Classification of FruitsBased on Machine Vision. Shanghai: Shanghai Jiao Tong University.
Lim, Resmana. (2002), Pengenalan Karakter Tulisan Tangan Menggunakan Ekstrasi Fitur PCA dan LDA, 1 – 2.
Mei Chan, L., Tan, R., dan Thio, G. 2007. Design of Visual-based Color Classification System, School of Engineering, UCSI.
RiyNto Sigit, dkk. (2002), Aplikasi Neural Network pada Pengenalan Pola Tanda Tangan, Institut Teknologi Sepuluh November, Surabaya, Indonesia.
Santosa, Budi. (2007), Data Mining Teknik Pemanfaatan Data untuk Keperluan Bisnis, Graha Ilmu, Yogyakarta, 57 – 66.
Surahman, Adhi, (2006). Penyembunyian Teks pada Citra Dua Warna Menggunakan Steganografi, Politeknik Elektronika Negeri, Surabaya, Indonesia.
Wastu, Phalita Nari. (2009), Pengenalan Aksara Jawa Menggunakan Metode Hidden Markov Models.
Witten, Frank. (2005), Data Mining: Practical machine learning Tools and Techinigues.
Wongtapan, C., Theeramunkong, T., and Sinthupinyo, S. 2001. Off-line Isolated Handwritten Thai OCR Using Islandbased Projection with N-gram Models and HMM. IEE.
http://people.revoledu.com/kardi/tutorial/LDA/LinearDiscriminantAnalysis(LDA) Tutorial.html. Diakses pada tanggal: 31 Mei 2010.
LAMPIRAN I
1. Listing program hal_fase_pengenalan.m
function varargout = hal_fase_pengenalan(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @hal_fase_pengenalan_OpeningFcn, ... 'gui_OutputFcn', @hal_fase_pengenalan_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 hal_fase_pengenalan_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject; guidata(hObject, handles);
function varargout = hal_fase_pengenalan_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function button_browse_Callback(hObject, eventdata, handles) set(handles.textFeature,'string',''); set(handles.text6,'string',''); set(handles.text7,'string',''); set(handles.text10,'string',''); set(handles.text11,'string',''); set(handles.text8,'string',''); set(handles.text12,'string',''); set(handles.text13,'string',''); set(handles.textDikenal,'string','');
[filename, pathname] = uigetfile({'*.jpg'}, 'File Selector'); charfilename = char(filename);
if isequal(filename,0)|isequal(pathname,0) errordlg('File not found.','Warning');
end;
image_file = get(handles.edit_browse,'String'); % Get the string inputs in the inEdit
current_data1=imread(char(image_file)); %read the image
if ~isequal(filename, 0)
handles.data1 = imread(fullfile(pathname, filename)); guidata(hObject, handles); handles.current_data1=handles.data1; axes(handles.gambar); imshow(handles.current_data1); else return; end
function edit_browse_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit_browse_Callback(hObject, eventdata, handles)
function pushbutton_proses_Callback(hObject, eventdata, handles) set(handles.textFeature,'string',''); set(handles.text6,'string',''); set(handles.text7,'string',''); set(handles.text8,'string',''); set(handles.text10,'string',''); set(handles.text11,'string',''); set(handles.text12,'string',''); set(handles.text13,'string',''); set(handles.textDikenal,'string','');
image_file=get(handles.edit_browse,'String'); %Get the string inputs in the inEdit
nama_file=char(image_file); display(nama_file);
if ~isempty(image_file)
set(handles.textFeature,'string','Sedang membentuk feature...');
createFeatureTest(nama_file); test2;
set(handles.text6,'string','Mencocokan dengan model...'); LDA_test;
2. Listing program hal_ pengujian.m
function varargout = hal_pengujian(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @hal_pengujian_OpeningFcn, ... 'gui_OutputFcn', @hal_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 hal_pengujian_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject; guidata(hObject, handles);
function varargout = hal_pengujian_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function popupmenuFeature_Callback(hObject, eventdata, handles) set(handles.text23,'string',''); set(handles.text40,'string',''); set(handles.textFeature,'string',''); set(handles.textProses,'string',''); set(handles.textProses2,'string',''); set(handles.textProses3,'string',''); set(handles.textProses4,'string',''); set(handles.textJumData,'string',''); set(handles.textDikenal,'string',''); set(handles.textTakDikenal,'string',''); set(handles.textAkurasi,'string','');
function popupmenuFeature_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
function pushbuttonUjiLDA_Callback(hObject, eventdata, handles) set(handles.text40,'string',''); set(handles.textFeature,'string',''); set(handles.textProses,'string',''); set(handles.textProses2,'string',''); set(handles.textProses3,'string',''); set(handles.textProses4,'string',''); set(handles.textJumData,'string',''); set(handles.textDikenal,'string',''); set(handles.textTakDikenal,'string',''); set(handles.textAkurasi,'string','');
selected_cmd = get(handles.popupmenuFeature,'Value');
set(handles.text23,'string','Sedang membentuk feature, mohon tunggu...');
pause (1);
switch selected_cmd;
case 1 % user selected feature 1x64
tic createFeature1x64; toc waktu = toc; array=[num2str(waktu) 'detik']; pause (1);
set(handles.text40,'string',array); pause (1);
set(handles.textFeature,'string','Feature rata-rata edge berhasil dibuat.');
readSemuaDirektori_1x64;
set(handles.textProses,'string','Sedang memproses fase pengujian...');
pause (1);
TrainingLDA_1x64; jumlahTotalConfusion; pause (1);
set(handles.textProses3,'string','Seluruh training selesai...');
set(handles.textProses4,'string','Proses fase pengujian selesai.');
case 2 % user selected feature 1x8 Horizontal (H)
tic createFeature1x8_H; toc waktu = toc; array=[num2str(waktu) 'detik']; pause (1);
set(handles.text40,'string',array); pause (1);
set(handles.textFeature,'string','Feature rata-rata edge Horizontal (H) berhasil dibuat.');
readSemuaDirektori_1x8H;
set(handles.textProses,'string','Sedang memproses fase pengujian...');
pause (1);
TrainingLDA_Horizontal; jumlahTotalConfusion; pause (1);
set(handles.textProses3,'string','Seluruh training selesai...');
set(handles.textProses4,'string','Proses fase pengujian selesai.');
case 3 % user selected feature 1x8 Vertikal (V)
tic createFeature1x8_V; toc waktu = toc; array=[num2str(waktu) 'detik']; pause (1);
set(handles.text40,'string',array); pause (1);
set(handles.textFeature,'string','Feature rata-rata edge Vertikal (V) berhasil dibuat.');
pause (1);
readSemuaDirektori_1x8V;
set(handles.textProses,'string','Sedang memproses fase pengujian...');
pause (1);
TrainingLDA_Vertikal; jumlahTotalConfusion; pause (1);
set(handles.textProses3,'string','Seluruh training selesai...');
set(handles.textProses4,'string','Proses fase pengujian selesai.');
case 4 % user selected feature 1x8H_1x8V
tic createFeature1x8_V_H(); toc waktu = toc; array=[num2str(waktu) 'detik']; pause (1);
set(handles.text40,'string',array); pause (1);
set(handles.textFeature,'string','Feature rata-rata vertikal dan horizontal berhasil dibuat.');
pause (1);
readSemuaDirektori_1x8VH;
set(handles.textProses,'string','Sedang memproses fasepengujian...');
pause (1); TrainingLDA_VH;
jumlahTotalConfusion; pause (1);
set(handles.textProses3,'string','Seluruh training selesai...');
set(handles.textProses4,'string','Proses fase pengujian selesai.');
case 5 % user selected feature 1x64_1x8H_1x8V
tic createFeature1x64_H_V(); toc waktu = toc; array=[num2str(waktu) 'detik']; pause (1);
set(handles.text40,'string',array); pause (1);
set(handles.textFeature,'string','Feature gabungan rata-rata edge dan rata-rata-rata-rata vertikal horizontal berhasil dibuat.'); pause (1);
readSemuaDirektori_1x64_1x8VH;
set(handles.textProses,'string','Sedang memproses fase pengujian...');
pause (1);
TrainingLDA_1x64_VH; jumlahTotalConfusion; pause (1);
set(handles.textProses3,'string','Seluruh training selesai...');
set(handles.textProses4,'string','Proses fase pengujian selesai.');
case 6 % user selected feature Warna_1x8H_1x8V_1x64
tic createFeatureWarna_H_V(); toc waktu = toc; array=[num2str(waktu) 'detik']; pause (1);
set(handles.text40,'string',array); pause (1);
set(handles.textFeature,'string','Feature warna,rata-rata edge,dan rata-rata vertikal horizontal berhasil dibuat.');
pause (1);
readSemuaDirektori_warna_1x64_1x8VH;
set(handles.textProses,'string','Sedang memproses fase pengujian...');
pause (1);
TrainingLDA_warna1x64_VH; jumlahTotalConfusion;
pause (1);
set(handles.textProses3,'string','Seluruh training selesai...');
set(handles.textProses4,'string','Proses fase pengujian selesai.');
end
3. Listing program createFeature1x64.m
function createFeature1x64()
dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ... 'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ... 'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ... 'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};
for m=1:length(dirData)
%masuk ke direktori dan membaca file cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg jum_jpg = length(fileJpg); for n=1:length(fileJpg) batik = imread(fileJpg(n).name); info=[]; gray=rgb2gray(batik);
motif = edge(gray, 'canny'); %deteksi tepi menggunakan canny tinggi=size(motif,1);
lebar=size(motif,2);
%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0; sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0; sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0; sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0; sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0; sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0; sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0; sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0; sum64=0; obyek = 1; for i=1:25 for j=1:25
menemukan obyek end end for i=1:25 for j=26:50
if (motif(i,j)==obyek) sum2=sum2+1; end end
end for i=1:25 for j=51:75
if (motif(i,j)==obyek) sum3=sum3+1; end end
end for i=1:25 for j=76:100
if (motif(i,j)==obyek) sum4=sum4+1; end end
end for i=1:25
for j=101:125
if (motif(i,j)==obyek) sum5=sum5+1; end end
end for i=1:25
for j=126:150
if (motif(i,j)==obyek) sum6=sum6+1; end end
end for i=1:25
for j=151:175
if (motif(i,j)==obyek) sum7=sum7+1; end end
end for i=1:25
for j=176:200
if (motif(i,j)==obyek) sum8=sum8+1; end end
end
mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625; mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625;
for i=26:50 for j=1:25
if (motif(i,j)==obyek) sum9=sum9+1; end %tambahkan 1 tiap menemukan obyek end end for i=26:50 for j=26:50
if (motif(i,j)==obyek) sum10=sum10+1; end end end for i=26:50 for j=51:75
if (motif(i,j)==obyek) sum11=sum11+1; end end
end
for i=26:50 for j=76:100
if (motif(i,j)==obyek) sum12=sum12+1; end end
end
for i=26:50 for j=101:125
if (motif(i,j)==obyek) sum13=sum13+1; end end
end
for i=26:50 for j=126:150
if (motif(i,j)==obyek) sum14=sum14+1; end end
end
for i=26:50 for j=151:175
if (motif(i,j)==obyek) sum15=sum15+1; end end
end
for i=26:50 for j=176:200
if (motif(i,j)==obyek) sum16=sum16+1; end end
end
mean9=sum9/625; mean10=sum10/625; mean11=sum11/625; mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625; mean16=sum16/625;
for i=51:75 for j=1:25
if (motif(i,j)==obyek) sum17=sum17+1; end %tambahkan 1 tiap menemukan obyek end end ... for i=51:75 for j=176:200
end end
mean17=sum17/625; mean18=sum18/625; mean19=sum19/625; mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625; mean24=sum24/625;
for i=76:100 for j=1:25
if (motif(i,j)==obyek) sum25=sum25+1; end %tambahkan 1 tiap menemukan obyek end end ... for i=76:100 for j=176:200
if (motif(i,j)==obyek) sum32=sum32+1; end end
end
mean25=sum25/625; mean26=sum26/625; mean27=sum27/625; mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625; mean32=sum32/625;
for i=101:125 for j=1:25
if (motif(i,j)==obyek) sum33=sum33+1; end %tambahkan 1 tiap menemukan obyek end end ... for i=101:125 for j=176:200
if (motif(i,j)==obyek) sum40=sum40+1; end end
end
mean33=sum33/625; mean34=sum34/625; mean35=sum35/625; mean36=sum36/625;
mean37=sum37/625; mean38=sum38/625; mean39=sum39/625; mean40=sum40/625;
for i=126:150 for j=1:25
if (motif(i,j)==obyek) sum41=sum41+1; end end
end ...
for i=126:150 for j=176:200
if (motif(i,j)==obyek) sum48=sum48+1; end end
end
mean41=sum41/625; mean42=sum42/625; mean43=sum43/625; mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625; mean48=sum48/625;
for i=151:175 for j=1:25
if (motif(i,j)==obyek) sum49=sum49+1; end end end ... for i=151:175 for j=176:200
if (motif(i,j)==obyek) sum56=sum56+1; end end
end
mean49=sum49/625; mean50=sum50/625; mean51=sum51/625; mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625; mean56=sum56/625;
for i=176:200 for j=1:25
if (motif(i,j)==obyek) sum57=sum57+1; end end end ... for i=176:200 for j=176:200
if (motif(i,j)==obyek) sum64=sum64+1; end end
end
mean57=sum57/625; mean58=sum58/625; mean59=sum59/625; mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625; mean64=sum64/625;
%hasil rata-rata dimasukkan dalam variabel info
info = [info, mean1, mean2, mean3, mean4, mean5, mean6, mean7, mean8, mean9, mean10,...
mean11, mean12, mean13, mean14, mean15, mean16, mean17, mean18, mean19, mean20,...
mean21, mean22, mean23, mean24, mean25, mean26, mean27, mean28, mean29, mean30,...
mean31, mean32, mean33, mean34, mean35, mean36, mean37, mean38, mean39, mean40,...
mean41, mean42, mean43, mean44, mean45, mean46, mean47, mean48, mean49, mean50,...
mean51, mean52, mean53, mean54, mean55, mean56, mean57, mean58, mean59, mean60,...
mean61, mean62, mean63, mean64];
%hasil feature ke dalam .nw
nama_file =[num2str(m) '_' num2str(n) '.a']; fid1=fopen(nama_file,'w'); fwrite(fid1, [num2str(info)]); fclose(fid1); end cd ..; end
4. Listing program createFeature_1x64_H_V.m
function createFeature1x64_H_V(jum)
dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ... 'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ... 'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ... 'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};
for m=1:length(dirData)
%masuk ke direktori dan membaca file cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg jum_jpg = length(fileJpg); for n=1:length(fileJpg) batik = imread(fileJpg(n).name); info=[]; gray=rgb2gray(batik);
motif = edge(gray, 'canny'); %deteksi tepi menggunakan canny tinggi=size(motif,1);
lebar=size(motif,2);
%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0; sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0; sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0; sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0; sum32=0;
sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0; sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0; sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0; sum64=0; obyek = 1; for i=1:25 for j=1:25
if (motif(j,i)==obyek) sum1=sum1+1; end %tambahkan 1 tiap menemukan obyek end end for i=1:25 for j=26:50
if (motif(j,i)==obyek) sum2=sum2+1; end end
end for i=1:25 for j=51:75
if (motif(j,i)==obyek) sum3=sum3+1; end end
end for i=1:25 for j=76:100
if (motif(j,i)==obyek) sum4=sum4+1; end end
end for i=1:25
for j=101:125
if (motif(j,i)==obyek) sum5=sum5+1; end end
end for i=1:25
for j=126:150
if (motif(j,i)==obyek) sum6=sum6+1; end end
end for i=1:25
for j=151:175
if (motif(j,i)==obyek) sum7=sum7+1; end end
end for i=1:25
for j=176:200
if (motif(j,i)==obyek) sum8=sum8+1; end end
mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625; mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625; meanTotV1=(mean1+mean2+mean3+mean4+mean5+mean6+mean7+mean8)/8;
for i=26:50 for j=1:25
if (motif(j,i)==obyek) sum9=sum9+1; end end end ... for i=26:50 for j=176:200
if (motif(j,i)==obyek) sum16=sum16+1; end end
end
mean9=sum9/625; mean10=sum10/625; mean11=sum11/625; mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625; mean16=sum16/625; meanTotV2=(mean9+mean10+mean11+mean12+mean13+mean14+mean15+mean16)/8; for i=51:75 for j=1:25
if (motif(j,i)==obyek) sum17=sum17+1; end end end ... for i=51:75 for j=176:200
if (motif(j,i)==obyek) sum24=sum24+1; end end
end
mean17=sum17/625; mean18=sum18/625; mean19=sum19/625; mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625; mean24=sum24/625; meanTotV3=(mean17+mean18+mean19+mean20+mean21+mean22+mean23+mean24)/8; for i=76:100 for j=1:25
if (motif(j,i)==obyek) sum25=sum25+1; end end end ... for i=76:100 for j=176:200
end end
mean25=sum25/625; mean26=sum26/625; mean27=sum27/625; mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625; mean32=sum32/625; meanTotV4=(mean25+mean26+mean27+mean28+mean29+mean30+mean31+mean32)/8; for i=101:125 for j=1:25
if (motif(j,i)==obyek) sum33=sum33+1; end end end ... for i=101:125 for j=176:200
if (motif(j,i)==obyek) sum40=sum40+1; end end
end
mean33=sum33/625; mean34=sum34/625; mean35=sum35/625; mean36=sum36/625;
mean37=sum37/625; mean38=sum38/625; mean39=sum39/625; mean40=sum40/625; meanTotV5=(mean33+mean34+mean35+mean36+mean37+mean38+mean39+mean40)/8; for i=126:150 for j=1:25
if (motif(j,i)==obyek) sum41=sum41+1; end end end ... for i=126:150 for j=176:200
if (motif(j,i)==obyek) sum48=sum48+1; end end
end
mean41=sum41/625; mean42=sum42/625; mean43=sum43/625; mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625; mean48=sum48/625; meanTotV6=(mean41+mean42+mean43+mean44+mean45+mean46+mean47+mean48)/8; for i=151:175 for j=1:25
if (motif(j,i)==obyek) sum49=sum49+1; end end
end
...
for i=151:175 for j=176:200
if (motif(j,i)==obyek) sum56=sum56+1; end end
end
mean49=sum49/625; mean50=sum50/625; mean51=sum51/625; mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625; mean56=sum56/625; meanTotV7=(mean49+mean50+mean51+mean52+mean53+mean54+mean55+mean56)/8; for i=176:200 for j=1:25
if (motif(j,i)==obyek) sum57=sum57+1; end end end ... for i=176:200 for j=176:200
if (motif(j,i)==obyek) sum64=sum64+1; end end
end
mean57=sum57/625; mean58=sum58/625; mean59=sum59/625; mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625; mean64=sum64/625;
meanTotV8=(mean57+mean58+mean59+mean60+mean61+mean62+mean63+mean64)/8;
%rata-rata untuk 1x8 horizontal meanTotH1=(mean1+mean9+mean17+mean25+mean33+mean41+mean49+mean57)/8; meanTotH2=(mean2+mean10+mean18+mean26+mean34+mean42+mean50+mean58)/8; meanTotH3=(mean3+mean11+mean19+mean27+mean35+mean43+mean51+mean59)/8; meanTotH4=(mean4+mean12+mean20+mean28+mean36+mean44+mean52+mean60)/8; meanTotH5=(mean5+mean13+mean21+mean29+mean37+mean45+mean53+mean61)/8; meanTotH6=(mean6+mean14+mean22+mean30+mean38+mean46+mean54+mean62)/8; meanTotH7=(mean7+mean15+mean23+mean31+mean39+mean47+mean55+mean63)/8; meanTotH8=(mean8+mean16+mean24+mean32+mean40+mean48+mean56+mean64)/8;
info = [info, mean1, mean2, mean3, mean4, mean5, mean6, mean7, mean8, mean9, mean10,...
mean11, mean12, mean13, mean14, mean15, mean16, mean17, mean18, mean19, mean20,...
mean21, mean22, mean23, mean24, mean25, mean26, mean27, mean28, mean29, mean30,...
mean31, mean32, mean33, mean34, mean35, mean36, mean37, mean38, mean39, mean40,...
mean41, mean42, mean43, mean44, mean45, mean46, mean47, mean48, mean49, mean50,...
mean51, mean52, mean53, mean54, mean55, mean56, mean57, mean58, mean59, mean60,...
mean61, mean62, mean63, mean64, meanTotV1, meanTotV2, meanTotV3, meanTotV4, meanTotV5, meanTotV6,...
meanTotV7, meanTotV8, meanTotH1, meanTotH2, meanTotH3, meanTotH4, meanTotH5, meanTotH6, meanTotH7, meanTotH8];
%hasil feature ke dalam .nw
nama_file =[num2str(m) '_' num2str(n) '.avh']; fid1=fopen(nama_file,'w'); fwrite(fid1, [num2str(info)]); fclose(fid1); end cd ..; end
5. Listing program createFeature_1x8H.m
function createFeature1x8_H()
dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ... 'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ... 'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ... 'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};
for m=1:length(dirData)
%masuk ke direktori dan membaca file cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg jum_jpg = length(fileJpg);
for n=1:length(fileJpg)
batik = imread(fileJpg(n).name); %baca citra
info=[];
gray=rgb2gray(batik); motif=edge(gray,'canny');
tinggi=size(motif,1); %hitung tinggi citra lebar=size(motif,2); %hitung lebar citra
%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0; sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0; sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0; sum24=0;
sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0; sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0; sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0; sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0; sum64=0; obyek = 1; for i=1:25 for j=1:25
if (motif(i,j)==obyek) sum1=sum1+1; end %tambahkan 1 tiap menemukan obyek end end for i=1:25 for j=26:50
if (motif(i,j)==obyek) sum2=sum2+1; end end
end for i=1:25 for j=51:75
if (motif(i,j)==obyek) sum3=sum3+1; end end
end for i=1:25 for j=76:100
if (motif(i,j)==obyek) sum4=sum4+1; end end
end for i=1:25
for j=101:125
if (motif(i,j)==obyek) sum5=sum5+1; end end
end for i=1:25
for j=126:150
if (motif(i,j)==obyek) sum6=sum6+1; end end
end for i=1:25
for j=151:175
if (motif(i,j)==obyek) sum7=sum7+1; end end
end for i=1:25
for j=176:200
end end
mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625; mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625; meanTot1=(mean1+mean2+mean3+mean4+mean5+mean6+mean7+mean8)/8;
for i=26:50 for j=1:25
if (motif(i,j)==obyek) sum9=sum9+1; end end end ... for i=26:50 for j=176:200
if (motif(i,j)==obyek) sum16=sum16+1; end end
end
mean9=sum9/625; mean10=sum10/625; mean11=sum11/625; mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625; mean16=sum16/625; meanTot2=(mean9+mean10+mean11+mean12+mean13+mean14+mean15+mean16)/8; for i=51:75 for j=1:25
if (motif(i,j)==obyek) sum17=sum17+1; end end end ... for i=51:75 for j=176:200
if (motif(i,j)==obyek) sum24=sum24+1; end end
end
mean17=sum17/625; mean18=sum18/625; mean19=sum19/625; mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625; mean24=sum24/625; meanTot3=(mean17+mean18+mean19+mean20+mean21+mean22+mean23+mean24)/8; for i=76:100 for j=1:25
if (motif(i,j)==obyek) sum25=sum25+1; end end end ... for i=76:100
for j=176:200
if (motif(i,j)==obyek) sum32=sum32+1; end end
end
mean25=sum25/625; mean26=sum26/625; mean27=sum27/625; mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625; mean32=sum32/625; meanTot4=(mean25+mean26+mean27+mean28+mean29+mean30+mean31+mean32)/8; for i=101:125 for j=1:25
if (motif(i,j)==obyek) sum33=sum33+1; end end end ... for i=101:125 for j=176:200
if (motif(i,j)==obyek) sum40=sum40+1; end end
end
mean33=sum33/625; mean34=sum34/625; mean35=sum35/625; mean36=sum36/625;
mean37=sum37/625; mean38=sum38/625; mean39=sum39/625; mean40=sum40/625; meanTot5=(mean33+mean34+mean35+mean36+mean37+mean38+mean39+mean40)/8; for i=126:150 for j=1:25
if (motif(i,j)==obyek) sum41=sum41+1; end end end ... for i=126:150 for j=176:200
if (motif(i,j)==obyek) sum48=sum48+1; end end
end
mean41=sum41/625; mean42=sum42/625; mean43=sum43/625; mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625; mean48=sum48/625; meanTot6=(mean41+mean42+mean43+mean44+mean45+mean46+mean47+mean48)/8; for i=151:175 for j=1:25
if (motif(i,j)==obyek) sum49=sum49+1; end end
end ... for i=151:175 for j=176:200
if (motif(i,j)==obyek) sum56=sum56+1; end end
end
mean49=sum49/625; mean50=sum50/625; mean51=sum51/625; mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625; mean56=sum56/625; meanTot7=(mean49+mean50+mean51+mean52+mean53+mean54+mean55+mean56)/8; for i=176:200 for j=1:25
if (motif(i,j)==obyek) sum57=sum57+1; end end end ... for i=176:200 for j=176:200
if (motif(i,j)==obyek) sum64=sum64+1; end end
end
mean57=sum57/625; mean58=sum58/625; mean59=sum59/625; mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625; mean64=sum64/625;
meanTot8=(mean57+mean58+mean59+mean60+mean61+mean62+mean63+mean64)/8;
%hasil rata-rata dimasukkan dalam variabel nfo
info = [info, meanTot1, meanTot2, meanTot3, meanTot4, meanTot5, meanTot6, meanTot7, meanTot8];
%hasil feature ke dalam .nw
nama_file =[num2str(m) '_' num2str(n) '.h']; fid1=fopen(nama_file,'w'); fwrite(fid1, [num2str(info)]); fclose(fid1); end cd ..; end
6. Listing program createFeature_1x8_V.m
function createFeature1x8_V()
dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ... 'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ... 'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ... 'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};
for m=1:length(dirData)
%masuk ke direktori dan membaca file cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg jum_jpg = length(fileJpg);
for n=1:length(fileJpg)
batik = imread(fileJpg(n).name); %baca citra
info=[]; % matriks info kepadatan gray=rgb2gray(batik); motif=edge(gray,'canny'); tinggi=size(motif,1); lebar=size(motif,2); %penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0; sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0; sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0; sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0; sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0; sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0; sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0; sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0; sum64=0;
meanTot1=0; meanTot2=0; meanTot3=0; meanTot4=0; meanTot5=0; meanTot6=0; meanTot7=0; meanTot8=0;
obyek = 1; for i=1:25 for j=1:25
if (motif(j,i)==obyek) sum1=sum1+1; end %tambahkan 1 tiap menemukan obyek end end for i=1:25 for j=26:50
if (motif(j,i)==obyek) sum2=sum2+1; end end
end for i=1:25 for j=51:75
end end for i=1:25 for j=76:100
if (motif(j,i)==obyek) sum4=sum4+1; end end
end for i=1:25
for j=101:125
if (motif(j,i)==obyek) sum5=sum5+1; end end
end for i=1:25
for j=126:150
if (motif(j,i)==obyek) sum6=sum6+1; end end
end for i=1:25
for j=151:175
if (motif(j,i)==obyek) sum7=sum7+1; end end
end for i=1:25
for j=176:200
if (motif(j,i)==obyek) sum8=sum8+1; end end
end
mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625; mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625; meanTot1=(mean1+mean2+mean3+mean4+mean5+mean6+mean7+mean8)/8;
for i=26:50 for j=1:25
if (motif(j,i)==obyek) sum9=sum9+1; end end end ... for i=26:50 for j=176:200
if (motif(j,i)==obyek) sum16=sum16+1; end end
end
mean9=sum9/625; mean10=sum10/625; mean11=sum11/625; mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625; mean16=sum16/625;
meanTot2=(mean9+mean10+mean11+mean12+mean13+mean14+mean15+mean16)/8;
for i=51:75 for j=1:25
if (motif(j,i)==obyek) sum17=sum17+1; end end end ... for i=51:75 for j=176:200
if (motif(j,i)==obyek) sum24=sum24+1; end end
end
mean17=sum17/625; mean18=sum18/625; mean19=sum19/625; mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625; mean24=sum24/625; meanTot3=(mean17+mean18+mean19+mean20+mean21+mean22+mean23+mean24)/8; for i=76:100 for j=1:25
if (motif(j,i)==obyek) sum25=sum25+1; end end end ... for i=76:100 for j=176:200
if (motif(j,i)==obyek) sum32=sum32+1; end end
end
mean25=sum25/625; mean26=sum26/625; mean27=sum27/625; mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625; mean32=sum32/625; meanTot4=(mean25+mean26+mean27+mean28+mean29+mean30+mean31+mean32)/8; for i=101:125 for j=1:25
if (motif(j,i)==obyek) sum33=sum33+1; end end end ... for i=101:125 for j=176:200
if (motif(j,i)==obyek) sum40=sum40+1; end