vi
Universitas Kristen Maranatha
Pengelompokan Huruf Cetak
Menggunakan Algoritma Adaptive Resonance Theory 1
(ART 1)
Elisabeth Lany Oktorina/0222135
Email: geffen_ladi@yahoo.com
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha
Jln.Prof.Drg.Suria Sumantri 65, Bandung 40164, Indonesia
ABSTRAK
Sistem pengelompokan huruf adalah salah satu teknologi komputer yang dapat
membantu manusia. Pengelompokan huruf adalah suatu sistem data masukan berupa
huruf yang ada dalam lembaran kertas maupun yang ada dalam media tertentu yang
terdapat berbagai jenis huruf (
font
) yang dapat di-scan, yang akan menghasilkan
gambar pada komputer yang dikenali sebagai
bitmap
.
Pada algoritma ART 1 (
Adaptive Resonance Theory 1
) ini terdapat tiga lapisan
pada arsitekturnya. Lapisan pertama bagian masukan dan interface masukan,
sedangkan lapisan kedua terdiri dari sekelompok unit
cluster
, yang merupakan
lapisan kompetitif dan lapisan ketiga yang merupakan unit
reset
. Setiap masukan
dihitung sampai pelatihan (
epoch
) yang dinginkan dan tidak terjadinya perubahan
bobot lagi.
Pengelompokan huruf cetak menggunakan algoritma ART 1 berhasil
direalisasikan. Pengelompokan huruf cetak dapat terjadi berdasarkan dari pola yang
dihasilkan dari bobot akhir b
ij. Pada pengelompokan pelatihan huruf kapital yang
dilatih tidak ada pengelompokan yang mirip antar
font
. Sedangkan pada
pengelompokan pelatihan huruf kecil ada yang mirip antara
font
Arial, Microsoft
Sans Sherif dan Tahoma. Untuk tahap pengujian, huruf yang diuji adalah tulisan
tangan yang hampir mirip dengan
font
Calibri.
vii
Universitas Kristen Maranatha
Clustering Fonts Using Adaptive Resonance Theory 1
Algorithm ( ART 1 )
Elisabeth Lany Oktorina / 0222135
Email : geffen_ladi@yahoo.com
Department of Electrical Engineering Maranatha Christian University
Jln.Prof.Drg.Suria Sumantri 65, Bandung 40164, Indonesia
ABSTRACT
This clustering font system which is made in this final project is different
types of block letters written in microsoft word which then processed to produce
images on a computer will be recognized as a bitmap. This bitmap is then be
processed further using Adaptive Resonance Theory 1 algorithm (ART 1).
In the Adaptive Resonance Theory (ART 1) there are three lapisans in its
architecture. The first lapisan of the input and the input interface, while the second
lapisan consists of a group of units of the cluster, which is a competitive lapisan and
the third lapisan which is a unit reset. Where each input is calculated to training
(epoch) is cool and no weight change occurs again.
From this final project, clustering font software successfully realized.
The clustering font could happen based from the pattern of final weight b
ij. On the
clustering of the capital letter which being practiced, there is no similar clustering.
Mean while on the small letter practical, there are similarity between Arial,
Microsoft Sans Sherif and Tahoma font. For the test phase, the letter being test is
handwriting which almost similar with Calibri font.
Keywords : Bitmap, GUI, ART1, Adaptive Resonance Theory 1, reset, epoch,
viii
Universitas Kristen Maranatha
DAFTAR ISI
LEMBAR PENGESAHAN
... I
PERNYATAAN PUBLIKASI LAPORAN TUGAS AKHIR
... II
PERNYATAAN ORISINALITAS LAPORAN
... III
ABSTRAK
... VI
ABSTRACT
... VII
KATA PENGANTAR
... IV
DAFTAR ISI
... VIII
DAFTAR GAMBAR
... X
BAB I
PENDAHULUAN
... 1
1.1.
L
ATARB
ELAKANG... 1
1.2.
R
UMUSANM
ASALAH... 1
1.3.
T
UJUANP
EMBAHASAN... 2
1.4.
B
ATASAN–
BATASANM
ASALAH... 2
1.5.
S
ISTEMATIKAP
ENULISAN... 2
BAB II
LANDASAN TEORI
... 4
2.1.
J
ARINGANS
YARAFT
IRUAN[2]... 4
2.2.
J
ARINGANS
YARAFB
IOLOGI[7]... 4
2.3.
K
OMPONENJ
ARINGANS
YARAF[9]... 5
2.4.
A
RSITEKTURJ
ARINGAN[9]... 7
2.5.
P
ROSESP
EMBELAJARAN[9]... 9
2.6.
F
UNGSIA
KTIVASI[9]... 10
2.7.
ART
(
A
DAPTIVER
ESONANCET
HEORY)
[1]... 12
2.7.1.
Dasar Arsitektur ART
[4]... 13
2.7.2.
Operasi Dasar ART
[4]... 13
2.7.3.
Adaptive Resonance Theory 1 (ART 1)
[5]... 15
2.7.4.
Algoritma ART 1
[1]... 17
2.7.5.
Contoh Aplikasi ART 1
[5]... 20
2.7.6.
MATLAB
[8]... 28
2.7.7.
Kemampuan dan kegunaan MATLAB
[10]... 29
2.7.8.
Lingkup MATLAB
[3]... 30
2.7.9.
Variabel Matlab
[8]... 31
2.7.10.
Matriks
[3]... 32
2.7.11.
Fungsi
–
fungsi Perintah Pada Matlab
[3]... 33
ix
Universitas Kristen Maranatha
2.7.13.
Aturan dan Sifat
... 33
2.7.14.
Graphic User Interface (GUI) Matlab
[3]... 34
BAB III
PERANCANGAN SISTEM
... 39
3.1.
A
RSITEKTURART
1
PADAP
ENGELOMPOKANH
URUF... 39
3.2.
D
IAGRAMA
LIR... 41
3.2.1.
Diagram Alir Perangkat Lunak Secara Keseluruhan
... 41
3.2.2.
Diagram Alir Proses Awal Pada Citra
... 42
3.2.3.
Diagram Alir Pelatihan
... 45
3.2.4.
Diagram Alir Pengujian
... 52
3.3.
P
ERANCANGANA
NTARMUKAP
EMAKAI(U
SERI
NTERFACE)
... 53
BAB IV
DATA PENGAMATAN DAN ANALISA
... 57
4.1.
D
ATAP
ELATIHAN DANP
ENGUJIANU
NTUKP
ENGELOMPOKANH
URUF DENGANA
LGORITMAART
1
... 57
4.2.
P
ENGUJIANJ
ENISH
URUF... 72
4.3.
P
ENGUJIANP
ERANGKATL
UNAK... 73
4.4.
A
NALISAD
ATA... 74
BAB V
KESIMPULAN DAN SARAN
... 78
5.1.
K
ESIMPULAN... 78
5.2.
S
ARAN... 78
DAFTAR PUSTAKA
... 79
LAMPIRAN A PROGRAM MATLAB
... A
x
Universitas Kristen Maranatha
DAFTAR GAMBAR
G
AMBAR2.
1
S
USUNANS
YARAFM
ANUSIA... 5
G
AMBAR2.
2
S
TRUKTURN
EURONJ
ARINGANS
YARAF... 6
G
AMBAR2.
3
J
ARINGANL
APISANT
UNGGAL(
S
INGLEL
APISANN
ETWORK) ... 7
G
AMBAR2.
4
J
ARINGANL
APISANJ
AMAK(
M
ULTILAPISANN
ETWORK) ... 8
G
AMBAR2.
5
F
UNGSIT
HRESHOLDJ
ARINGANS
YARAFT
IRUAN... 11
G
AMBAR2.
6
F
UNGSIS
IGMOIDJ
ARINGANS
YARAFT
IRUAN... 11
G
AMBAR2.
7
A
RSITEKTURD
ASAR DARIART
1 ... 15
G
AMBAR2.
8
U
NITT
AMBAHAN UNTUKART
1 ... 16
G
AMBAR2.
9
T
AMPILANU
TAMAP
ADAM
ATLAB... 31
G
AMBAR2.
10
D
IAGRAMP
EMROGRAMANB
ERBASISO
BJEK... 35
G
AMBAR2.
11
J
ENDELAGUI
PADAMATLAB ... 36
G
AMBAR2.
12
T
AMPILANM-
FILEGUI
PADAMATLAB
(GUIDE) ... 37
G
AMBAR3.
1
A
RSITEKTURART
1 ... 39
G
AMBAR3.
2
D
IAGRAMA
LIRP
ERANGKATL
UNAKS
ECARAK
ESELURUHAN... 41
G
AMBAR3.
3
D
IAGRAMA
LIRP
ROSESA
WALP
ADAC
ITRA... 42
G
AMBAR3.
4
C
ONTOHH
URUFM
ASUKAN... 43
G
AMBAR3.
5
D
IAGRAMA
LIRP
ELATIHAN... 45
G
AMBAR3.
6
D
IAGRAMA
LIRP
ENGUJIAN... 52
G
AMBAR3.
7
T
AMPILANM
ENUU
TAMA... 53
G
AMBAR3.
8
R
ANCANGANT
AMPILANP
ROGRAMM
ENUP
ELATIHAN... 54
G
AMBAR3.
9
R
ANCANGANT
AMPILANP
ROGRAMM
ENUP
ENGUJIAN... 55
G
AMBAR4.
1
B
OBOTA
KHIRH
URUFK
APITALA
RIALD
ENGANV
P0.7………...62
G
AMBAR4.
2
M
ASUKAN HURUF KAPITAL A ARIAL………...
..63
G
AMBAR4.
3
MASUKAN HURUF KAPITAL E ARIAL………..63
G
AMBAR4.
4
MASUKAN HURUF KAPITAL C ARIAL………..64
G
AMBAR4.
5
MASUKAN HURUF KAPITAL F ARIAL………..64
G
AMBAR4.
6
MASUKAN HURUF KAPITAL S ARIAL………..70
xi
Universitas Kristen Maranatha
DAFTAR
TABEL
T
ABEL3.
1
T
ABELP
ENJELASANR
ANCANGANT
AMPILANM
ENUP
ELATIHAN... 55
T
ABEL3.
2
T
ABELP
ENJELASANR
ANCANGANT
AMPILANM
ENUP
ENGUJIAN... 56
T
ABEL4.
1
D
ATAP
ELATIHANH
URUFB
ESAR... 57
T
ABEL4.
2
D
ATAP
ELATIHANH
URUFK
ECIL... 59
T
ABEL4.
3
P
ELATIHANH
URUFK
APITALD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFA
RIAL... 62
T
ABEL4.
4
P
ELATIHANH
URUFK
APITALD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFB
ATANG... 67
T
ABEL4.
5
P
ELATIHANH
URUFK
APITALD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFC
ALIBRI... 68
T
ABEL4.
6
P
ELATIHANH
URUFK
APITALD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFM
ICROSOFTS
ANSS
HERIF... 68
T
ABEL4.
7
P
ELATIHANH
URUFK
APITALD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFT
AHOMA... 69
T
ABEL4.
8
P
ELATIHANH
URUFK
APITALD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFT
IMESN
EWR
OMAN... 69
T
ABEL4.
9
P
ELATIHANH
URUFK
ECILD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFA
RIAL... 70
T
ABEL4.
10
P
ELATIHANH
URUFK
ECILD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFB
ATANG... 70
T
ABEL4.
11
P
ELATIHANH
URUFK
ECILD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFC
ALIBRI... 70
T
ABEL4.
12
P
ELATIHANH
URUFK
ECILD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFM
ICROSOFTS
ANSS
HERIF... 71
T
ABEL4.
13
P
ELATIHANH
URUFK
ECILD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFT
AHOMA... 71
T
ABEL4.
14
P
ELATIHANH
URUFK
ECILD
ENGANE
POCH1000
DANV
IGILANCEP
ARAMETER(
VP)
0.7
U
NTUKH
URUFT
IMESN
EWR
OMAN... 72
xii
Universitas Kristen Maranatha
T
ABEL4.
16
P
ERSAMAAN POLA BOBOT AKHIR KELOMPOK4
HURUF BESAR VP0.7 ...
74
T
ABEL4.
17
P
ERSAMAAN POLA BOBOT AKHIR KELOMPOK1
HURUF KECIL VP0.7 ... 75
T
ABEL4.
18
P
ERSAMAAN PENGELOMPOKAN HURUF KAPITAL VP0.7 ... 76
A - 1
Program Membaca Huruf Kapital% Preprocessing citra huruf besar
clc; clear all; close all;
A{1}=imread('Aarial.bmp'); A{2}=imread('Abatang.bmp'); A{3}=imread('Acalibri.bmp'); A{4}=imread('Asans.bmp'); A{5}=imread('Atahoma.bmp'); A{6}=imread('Atimes.bmp');
for i1=1:6,
ubahukuran{1,i1}=imresize(A{i1},[20 20]); ubahwarna{1,i1}=im2bw(ubahukuran{1,i1}); ubahbentuk{1,i1}=ubahwarna{1,i1}'; ubahbentuk{1,i1}=ubahbentuk{1,i1}(:); ubahbentuk{1,i1}=ubahbentuk{1,i1}'; end
B{1}=imread('Barial.bmp'); B{2}=imread('Bbatang.bmp'); B{3}=imread('Bcalibri.bmp'); B{4}=imread('Bsans.bmp'); B{5}=imread('Btahoma.bmp'); B{6}=imread('Btimes.bmp');
for i2=1:6,
ubahukuran{2,i2}=imresize(B{i2},[20 20]); ubahwarna{2,i2}=im2bw(ubahukuran{2,i2}); ubahbentuk{2,i2}=ubahwarna{2,i2}'; ubahbentuk{2,i2}=ubahbentuk{2,i2}(:); ubahbentuk{2,i2}=ubahbentuk{2,i2}'; end
C{1}=imread('Carial.bmp'); C{2}=imread('Cbatang.bmp'); C{3}=imread('Ccalibri.bmp'); C{4}=imread('Csans.bmp'); C{5}=imread('Ctahoma.bmp'); C{6}=imread('Ctimes.bmp');
for i3=1:6,
ubahukuran{3,i3}=imresize(C{i3},[20 20]); ubahwarna{3,i3}=im2bw(ubahukuran{3,i3}); ubahbentuk{3,i3}=ubahwarna{3,i3}'; ubahbentuk{3,i3}=ubahbentuk{3,i3}(:); ubahbentuk{3,i3}=ubahbentuk{3,i3}'; end
D{1}=imread('Darial.bmp'); D{2}=imread('Dbatang.bmp'); D{3}=imread('Dcalibri.bmp'); D{4}=imread('Dsans.bmp'); D{5}=imread('Dtahoma.bmp'); D{6}=imread('Dtimes.bmp');
for i4=1:6,
ubahukuran{4,i4}=imresize(D{i4},[20 20]); ubahwarna{4,i4}=im2bw(ubahukuran{4,i4}); ubahbentuk{4,i4}=ubahwarna{4,i4}'; ubahbentuk{4,i4}=ubahbentuk{4,i4}(:); ubahbentuk{4,i4}=ubahbentuk{4,i4}'; end
E{1}=imread('Earial.bmp'); E{2}=imread('Ebatang.bmp'); E{3}=imread('Ecalibri.bmp'); E{4}=imread('Esans.bmp'); E{5}=imread('Etahoma.bmp'); E{6}=imread('Etimes.bmp');
for i5=1:6,
ubahukuran{5,i5}=imresize(E{i5},[20 20]); ubahwarna{5,i5}=im2bw(ubahukuran{5,i5}); ubahbentuk{5,i5}=ubahwarna{5,i5}'; ubahbentuk{5,i5}=ubahbentuk{5,i5}(:); ubahbentuk{5,i5}=ubahbentuk{5,i5}'; end
F{1}=imread('Farial.bmp'); F{2}=imread('Fbatang.bmp'); F{3}=imread('Fcalibri.bmp'); F{4}=imread('Fsans.bmp'); F{5}=imread('Ftahoma.bmp'); F{6}=imread('Ftimes.bmp');
for i6=1:6,
ubahukuran{6,i6}=imresize(F{i6},[20 20]); ubahwarna{6,i6}=im2bw(ubahukuran{6,i6}); ubahbentuk{6,i6}=ubahwarna{6,i6}'; ubahbentuk{6,i6}=ubahbentuk{6,i6}(:); ubahbentuk{6,i6}=ubahbentuk{6,i6}'; end
G{1}=imread('Garial.bmp'); G{2}=imread('Gbatang.bmp'); G{3}=imread('Gcalibri.bmp'); G{4}=imread('Gsans.bmp'); G{5}=imread('Gtahoma.bmp'); G{6}=imread('Gtimes.bmp');
for i7=1:6,
ubahukuran{7,i7}=imresize(G{i7},[20 20]); ubahwarna{7,i7}=im2bw(ubahukuran{7,i7}); ubahbentuk{7,i7}=ubahwarna{7,i7}'; ubahbentuk{7,i7}=ubahbentuk{7,i7}(:); ubahbentuk{7,i7}=ubahbentuk{7,i7}'; end
H{1}=imread('Harial.bmp'); H{2}=imread('Hbatang.bmp'); H{3}=imread('Hcalibri.bmp'); H{4}=imread('Hsans.bmp'); H{5}=imread('Htahoma.bmp'); H{6}=imread('Htimes.bmp');
for i8=1:6,
A - 1
ubahbentuk{8,i8}=ubahwarna{8,i8}'; ubahbentuk{8,i8}=ubahbentuk{8,i8}(:); ubahbentuk{8,i8}=ubahbentuk{8,i8}'; endI{1}=imread('Iarial.bmp'); I{2}=imread('Ibatang.bmp'); I{3}=imread('Icalibri.bmp'); I{4}=imread('Isans.bmp'); I{5}=imread('Itahoma.bmp'); I{6}=imread('Itimes.bmp');
for i9=1:6,
ubahukuran{9,i9}=imresize(I{i9},[20 20]); ubahwarna{9,i9}=im2bw(ubahukuran{9,i9}); ubahbentuk{9,i9}=ubahwarna{9,i9}'; ubahbentuk{9,i9}=ubahbentuk{9,i9}(:); ubahbentuk{9,i9}=ubahbentuk{9,i9}'; end
J{1}=imread('Jarial.bmp'); J{2}=imread('Jbatang.bmp'); J{3}=imread('Jcalibri.bmp'); J{4}=imread('Jsans.bmp'); J{5}=imread('Jtahoma.bmp'); J{6}=imread('Jtimes.bmp');
for i10=1:6,
ubahukuran{10,i10}=imresize(J{i10},[20 20]); ubahwarna{10,i10}=im2bw(ubahukuran{10,i10} ); ubahbentuk{10,i10}=ubahwarna{10,i10}'; ubahbentuk{10,i10}=ubahbentuk{10,i10}(:); ubahbentuk{10,i10}=ubahbentuk{10,i10}'; end
K{1}=imread('Karial.bmp'); K{2}=imread('Kbatang.bmp'); K{3}=imread('Kcalibri.bmp'); K{4}=imread('Ksans.bmp'); K{5}=imread('Ktahoma.bmp'); K{6}=imread('Ktimes.bmp');
for i11=1:6,
ubahukuran{11,i11}=imresize(K{i11},[20 20]); ubahwarna{11,i11}=im2bw(ubahukuran{11,i11} ); ubahbentuk{11,i11}=ubahwarna{11,i11}'; ubahbentuk{11,i11}=ubahbentuk{11,i11}(:); ubahbentuk{11,i11}=ubahbentuk{11,i11}'; end
L{1}=imread('Larial.bmp'); L{2}=imread('Lbatang.bmp'); L{3}=imread('Lcalibri.bmp'); L{4}=imread('Lsans.bmp'); L{5}=imread('Ltahoma.bmp'); L{6}=imread('Ltimes.bmp');
for i12=1:6,
ubahukuran{12,i12}=imresize(L{i12},[20 20]); ubahwarna{12,i12}=im2bw(ubahukuran{12,i12} ); ubahbentuk{12,i12}=ubahwarna{12,i12}'; ubahbentuk{12,i12}=ubahbentuk{12,i12}(:); ubahbentuk{12,i12}=ubahbentuk{12,i12}'; end
M{1}=imread('Marial.bmp'); M{2}=imread('Mbatang.bmp'); M{3}=imread('Mcalibri.bmp'); M{4}=imread('Msans.bmp'); M{5}=imread('Mtahoma.bmp'); M{6}=imread('Mtimes.bmp');
for i13=1:6,
ubahukuran{13,i13}=imresize(M{i13},[20 20]); ubahwarna{13,i13}=im2bw(ubahukuran{13,i13} ); ubahbentuk{13,i13}=ubahwarna{13,i13}'; ubahbentuk{13,i13}=ubahbentuk{13,i13}(:); ubahbentuk{13,i13}=ubahbentuk{13,i13}'; end
N{1}=imread('Narial.bmp'); N{2}=imread('Nbatang.bmp'); N{3}=imread('Ncalibri.bmp'); N{4}=imread('Nsans.bmp'); N{5}=imread('Ntahoma.bmp'); N{6}=imread('Ntimes.bmp');
for i14=1:6,
ubahukuran{14,i14}=imresize(N{i14},[20 20]); ubahwarna{14,i14}=im2bw(ubahukuran{14,i14} ); ubahbentuk{14,i14}=ubahwarna{14,i14}'; ubahbentuk{14,i14}=ubahbentuk{14,i14}(:); ubahbentuk{14,i14}=ubahbentuk{14,i14}'; end
O{1}=imread('Oarial.bmp'); O{2}=imread('Obatang.bmp'); O{3}=imread('Ocalibri.bmp'); O{4}=imread('Osans.bmp'); O{5}=imread('Otahoma.bmp'); O{6}=imread('Otimes.bmp');
for i15=1:6,
A - 2
ubahbentuk{15,i15}=ubahbentuk{15,i15}';
end
P{1}=imread('Parial.bmp'); P{2}=imread('Pbatang.bmp'); P{3}=imread('Pcalibri.bmp'); P{4}=imread('Psans.bmp'); P{5}=imread('Ptahoma.bmp'); P{6}=imread('Ptimes.bmp');
for i16=1:6,
ubahukuran{16,i16}=imresize(P{i16},[20 20]); ubahwarna{16,i16}=im2bw(ubahukuran{16,i16} ); ubahbentuk{16,i16}=ubahwarna{16,i16}'; ubahbentuk{16,i16}=ubahbentuk{16,i16}(:); ubahbentuk{16,i16}=ubahbentuk{16,i16}'; end
Q{1}=imread('Qarial.bmp'); Q{2}=imread('Qbatang.bmp'); Q{3}=imread('Qcalibri.bmp'); Q{4}=imread('Qsans.bmp'); Q{5}=imread('Qtahoma.bmp'); Q{6}=imread('Qtimes.bmp');
for i17=1:6,
ubahukuran{17,i17}=imresize(Q{i17},[20 20]); ubahwarna{17,i17}=im2bw(ubahukuran{17,i17} ); ubahbentuk{17,i17}=ubahwarna{17,i17}'; ubahbentuk{17,i17}=ubahbentuk{17,i17}(:); ubahbentuk{17,i17}=ubahbentuk{17,i17}'; end
R{1}=imread('Rarial.bmp'); R{2}=imread('Rbatang.bmp'); R{3}=imread('Rcalibri.bmp'); R{4}=imread('Rsans.bmp'); R{5}=imread('Rtahoma.bmp'); R{6}=imread('Rtimes.bmp');
for i18=1:6,
ubahukuran{18,i18}=imresize(R{i18},[20 20]); ubahwarna{18,i18}=im2bw(ubahukuran{18,i18} ); ubahbentuk{18,i18}=ubahwarna{18,i18}'; ubahbentuk{18,i18}=ubahbentuk{18,i18}(:); ubahbentuk{18,i18}=ubahbentuk{18,i18}'; end
S{1}=imread('Sarial.bmp'); S{2}=imread('Sbatang.bmp'); S{3}=imread('Scalibri.bmp'); S{4}=imread('Ssans.bmp');
S{5}=imread('Stahoma.bmp'); S{6}=imread('Stimes.bmp');
for i19=1:6,
ubahukuran{19,i19}=imresize(S{i19},[20 20]); ubahwarna{19,i19}=im2bw(ubahukuran{19,i19} ); ubahbentuk{19,i19}=ubahwarna{19,i19}'; ubahbentuk{19,i19}=ubahbentuk{19,i19}(:); ubahbentuk{19,i19}=ubahbentuk{19,i19}'; end
T{1}=imread('Tarial.bmp'); T{2}=imread('Tbatang.bmp'); T{3}=imread('Tcalibri.bmp'); T{4}=imread('Tsans.bmp'); T{5}=imread('Ttahoma.bmp'); T{6}=imread('Ttimes.bmp');
for i20=1:6,
ubahukuran{20,i20}=imresize(T{i20},[20 20]); ubahwarna{20,i20}=im2bw(ubahukuran{20,i20} ); ubahbentuk{20,i20}=ubahwarna{20,i20}'; ubahbentuk{20,i20}=ubahbentuk{20,i20}(:); ubahbentuk{20,i20}=ubahbentuk{20,i20}'; end
U{1}=imread('Uarial.bmp'); U{2}=imread('Ubatang.bmp'); U{3}=imread('Ucalibri.bmp'); U{4}=imread('Usans.bmp'); U{5}=imread('Utahoma.bmp'); U{6}=imread('Utimes.bmp');
for i21=1:6,
ubahukuran{21,i21}=imresize(U{i21},[20 20]); ubahwarna{21,i21}=im2bw(ubahukuran{21,i21} ); ubahbentuk{21,i21}=ubahwarna{21,i21}'; ubahbentuk{21,i21}=ubahbentuk{21,i21}(:); ubahbentuk{21,i21}=ubahbentuk{21,i21}'; end
V{1}=imread('Varial.bmp'); V{2}=imread('Vbatang.bmp'); V{3}=imread('Vcalibri.bmp'); V{4}=imread('Vsans.bmp'); V{5}=imread('Vtahoma.bmp'); V{6}=imread('Vtimes.bmp');
for i22=1:6,
ubahukuran{22,i22}=imresize(V{i22},[20 20]);
A - 3
ubahbentuk{22,i22}=ubahwarna{22,i22}'; ubahbentuk{22,i22}=ubahbentuk{22,i22}(:); ubahbentuk{22,i22}=ubahbentuk{22,i22}'; endW{1}=imread('Warial.bmp'); W{2}=imread('Wbatang.bmp'); W{3}=imread('Wcalibri.bmp'); W{4}=imread('Wsans.bmp'); W{5}=imread('Wtahoma.bmp'); W{6}=imread('Wtimes.bmp');
for i23=1:6,
ubahukuran{23,i23}=imresize(W{i23},[20 20]); ubahwarna{23,i23}=im2bw(ubahukuran{23,i23} ); ubahbentuk{23,i23}=ubahwarna{23,i23}'; ubahbentuk{23,i23}=ubahbentuk{23,i23}(:); ubahbentuk{23,i23}=ubahbentuk{23,i23}'; end
X{1}=imread('Xarial.bmp'); X{2}=imread('Xbatang.bmp'); X{3}=imread('Xcalibri.bmp'); X{4}=imread('Xsans.bmp'); X{5}=imread('Xtahoma.bmp'); X{6}=imread('Xtimes.bmp');
for i24=1:6,
ubahukuran{24,i24}=imresize(X{i24},[20 20]); ubahwarna{24,i24}=im2bw(ubahukuran{24,i24} ); ubahbentuk{24,i24}=ubahwarna{24,i24}'; ubahbentuk{24,i24}=ubahbentuk{24,i24}(:); ubahbentuk{24,i24}=ubahbentuk{24,i24}'; end
Y{1}=imread('Yarial.bmp'); Y{2}=imread('Ybatang.bmp'); Y{3}=imread('Ycalibri.bmp'); Y{4}=imread('Ysans.bmp'); Y{5}=imread('Ytahoma.bmp'); Y{6}=imread('Ytimes.bmp');
for i25=1:6,
ubahukuran{25,i25}=imresize(Y{i25},[20 20]); ubahwarna{25,i25}=im2bw(ubahukuran{25,i25} ); ubahbentuk{25,i25}=ubahwarna{25,i25}'; ubahbentuk{25,i25}=ubahbentuk{25,i25}(:); ubahbentuk{25,i25}=ubahbentuk{25,i25}'; end
Z{1}=imread('Zarial.bmp'); Z{2}=imread('Zbatang.bmp');
Z{3}=imread('Zcalibri.bmp'); Z{4}=imread('Zsans.bmp'); Z{5}=imread('Ztahoma.bmp'); Z{6}=imread('Ztimes.bmp');
for i26=1:6,
ubahukuran{26,i26}=imresize(Z{i26},[20 20]); ubahwarna{26,i26}=im2bw(ubahukuran{26,i26} ); ubahbentuk{26,i26}=ubahwarna{26,i26}'; ubahbentuk{26,i26}=ubahbentuk{26,i26}(:); ubahbentuk{26,i26}=ubahbentuk{26,i26}'; end ubahbentuk=ubahbentuk'; ubahbentuk=ubahbentuk(:); inputbesar=ubahbentuk save inputinputbesar;
Program Membaca Huruf Kecil
% Preprocessing citra
clc; clear all; close all;
a{1}=imread('aarial.bmp'); a{2}=imread('abatang.bmp'); a{3}=imread('acalibri.bmp'); a{4}=imread('asans.bmp'); a{5}=imread('atahoma.bmp'); a{6}=imread('atimes.bmp');
for i1=1:6,
ubahukuran{1,i1}=imresize(a{i1},[20 20]); ubahwarna{1,i1}=im2bw(ubahukuran{1,i1}); ubahbentuk{1,i1}=ubahwarna{1,i1}'; ubahbentuk{1,i1}=ubahbentuk{1,i1}(:); ubahbentuk{1,i1}=ubahbentuk{1,i1}'; end
b{1}=imread('barial.bmp'); b{2}=imread('bbatang.bmp'); b{3}=imread('bcalibri.bmp'); b{4}=imread('bsans.bmp'); b{5}=imread('btahoma.bmp'); b{6}=imread('btimes.bmp');
for i2=1:6,
A - 4
endc{1}=imread('carial.bmp'); c{2}=imread('cbatang.bmp'); c{3}=imread('ccalibri.bmp'); c{4}=imread('csans.bmp'); c{5}=imread('ctahoma.bmp'); c{6}=imread('ctimes.bmp');
for i3=1:6,
ubahukuran{3,i3}=imresize(c{i3},[20 20]); ubahwarna{3,i3}=im2bw(ubahukuran{3,i3}); ubahbentuk{3,i3}=ubahwarna{3,i3}'; ubahbentuk{3,i3}=ubahbentuk{3,i3}(:); ubahbentuk{3,i3}=ubahbentuk{3,i3}'; end
d{1}=imread('darial.bmp'); d{2}=imread('dbatang.bmp'); d{3}=imread('dcalibri.bmp'); d{4}=imread('dsans.bmp'); d{5}=imread('dtahoma.bmp'); d{6}=imread('dtimes.bmp');
for i4=1:6,
ubahukuran{4,i4}=imresize(d{i4},[20 20]); ubahwarna{4,i4}=im2bw(ubahukuran{4,i4}); ubahbentuk{4,i4}=ubahwarna{4,i4}'; ubahbentuk{4,i4}=ubahbentuk{4,i4}(:); ubahbentuk{4,i4}=ubahbentuk{4,i4}'; end
e{1}=imread('earial.bmp'); e{2}=imread('ebatang.bmp'); e{3}=imread('ecalibri.bmp'); e{4}=imread('esans.bmp'); e{5}=imread('etahoma.bmp'); e{6}=imread('etimes.bmp');
for i5=1:6,
ubahukuran{5,i5}=imresize(e{i5},[20 20]); ubahwarna{5,i5}=im2bw(ubahukuran{5,i5}); ubahbentuk{5,i5}=ubahwarna{5,i5}'; ubahbentuk{5,i5}=ubahbentuk{5,i5}(:); ubahbentuk{5,i5}=ubahbentuk{5,i5}'; end
f{1}=imread('farial.bmp'); f{2}=imread('fbatang.bmp'); f{3}=imread('fcalibri.bmp'); f{4}=imread('fsans.bmp'); f{5}=imread('ftahoma.bmp'); f{6}=imread('ftimes.bmp');
for i6=1:6,
ubahukuran{6,i6}=imresize(f{i6},[20 20]); ubahwarna{6,i6}=im2bw(ubahukuran{6,i6}); ubahbentuk{6,i6}=ubahwarna{6,i6}'; ubahbentuk{6,i6}=ubahbentuk{6,i6}(:); ubahbentuk{6,i6}=ubahbentuk{6,i6}'; end
g{1}=imread('garial.bmp'); g{2}=imread('gbatang.bmp'); g{3}=imread('gcalibri.bmp'); g{4}=imread('gsans.bmp'); g{5}=imread('gtahoma.bmp'); g{6}=imread('gtimes.bmp');
for i7=1:6,
ubahukuran{7,i7}=imresize(g{i7},[20 20]); ubahwarna{7,i7}=im2bw(ubahukuran{7,i7}); ubahbentuk{7,i7}=ubahwarna{7,i7}'; ubahbentuk{7,i7}=ubahbentuk{7,i7}(:); ubahbentuk{7,i7}=ubahbentuk{7,i7}'; end
h{1}=imread('harial.bmp'); h{2}=imread('hbatang.bmp'); h{3}=imread('hcalibri.bmp'); h{4}=imread('hsans.bmp'); h{5}=imread('htahoma.bmp'); h{6}=imread('htimes.bmp');
for i8=1:6,
ubahukuran{8,i8}=imresize(h{i8},[20 20]); ubahwarna{8,i8}=im2bw(ubahukuran{8,i8}); ubahbentuk{8,i8}=ubahwarna{8,i8}'; ubahbentuk{8,i8}=ubahbentuk{8,i8}(:); ubahbentuk{8,i8}=ubahbentuk{8,i8}'; end
i{1}=imread('iarial.bmp'); i{2}=imread('ibatang.bmp'); i{3}=imread('icalibri.bmp'); i{4}=imread('isans.bmp'); i{5}=imread('itahoma.bmp'); i{6}=imread('itimes.bmp');
for i9=1:6,
ubahukuran{9,i9}=imresize(i{i9},[20 20]); ubahwarna{9,i9}=im2bw(ubahukuran{9,i9}); ubahbentuk{9,i9}=ubahwarna{9,i9}'; ubahbentuk{9,i9}=ubahbentuk{9,i9}(:); ubahbentuk{9,i9}=ubahbentuk{9,i9}'; end
j{1}=imread('jarial.bmp'); j{2}=imread('jbatang.bmp'); j{3}=imread('jcalibri.bmp'); j{4}=imread('jsans.bmp'); j{5}=imread('jtahoma.bmp'); j{6}=imread('jtimes.bmp');
for i10=1:6,
A - 5
k{1}=imread('karial.bmp'); k{2}=imread('kbatang.bmp'); k{3}=imread('kcalibri.bmp'); k{4}=imread('ksans.bmp'); k{5}=imread('ktahoma.bmp'); k{6}=imread('ktimes.bmp');
for i11=1:6,
ubahukuran{11,i11}=imresize(k{i11},[20 20]); ubahwarna{11,i11}=im2bw(ubahukuran{11,i11} ); ubahbentuk{11,i11}=ubahwarna{11,i11}'; ubahbentuk{11,i11}=ubahbentuk{11,i11}(:); ubahbentuk{11,i11}=ubahbentuk{11,i11}'; end
l{1}=imread('larial.bmp'); l{2}=imread('lbatang.bmp'); l{3}=imread('lcalibri.bmp'); l{4}=imread('lsans.bmp'); l{5}=imread('ltahoma.bmp'); l{6}=imread('ltimes.bmp');
for i12=1:6,
ubahukuran{12,i12}=imresize(l{i12},[20 20]); ubahwarna{12,i12}=im2bw(ubahukuran{12,i12} ); ubahbentuk{12,i12}=ubahwarna{12,i12}'; ubahbentuk{12,i12}=ubahbentuk{12,i12}(:); ubahbentuk{12,i12}=ubahbentuk{12,i12}'; end
m{1}=imread('marial.bmp'); m{2}=imread('mbatang.bmp'); m{3}=imread('mcalibri.bmp'); m{4}=imread('msans.bmp'); m{5}=imread('mtahoma.bmp'); m{6}=imread('mtimes.bmp');
for i13=1:6,
ubahukuran{13,i13}=imresize(m{i13},[20 20]); ubahwarna{13,i13}=im2bw(ubahukuran{13,i13} ); ubahbentuk{13,i13}=ubahwarna{13,i13}'; ubahbentuk{13,i13}=ubahbentuk{13,i13}(:); ubahbentuk{13,i13}=ubahbentuk{13,i13}'; end
n{1}=imread('narial.bmp'); n{2}=imread('nbatang.bmp'); n{3}=imread('ncalibri.bmp'); n{4}=imread('nsans.bmp'); n{5}=imread('ntahoma.bmp'); n{6}=imread('ntimes.bmp');
for i14=1:6,
ubahukuran{14,i14}=imresize(n{i14},[20 20]); ubahwarna{14,i14}=im2bw(ubahukuran{14,i14} ); ubahbentuk{14,i14}=ubahwarna{14,i14}'; ubahbentuk{14,i14}=ubahbentuk{14,i14}(:); ubahbentuk{14,i14}=ubahbentuk{14,i14}'; end
o{1}=imread('oarial.bmp'); o{2}=imread('obatang.bmp'); o{3}=imread('ocalibri.bmp'); o{4}=imread('osans.bmp'); o{5}=imread('otahoma.bmp'); o{6}=imread('otimes.bmp');
for i15=1:6,
ubahukuran{15,i15}=imresize(o{i15},[20 20]); ubahwarna{15,i15}=im2bw(ubahukuran{15,i15} ); ubahbentuk{15,i15}=ubahwarna{15,i15}'; ubahbentuk{15,i15}=ubahbentuk{15,i15}(:); ubahbentuk{15,i15}=ubahbentuk{15,i15}'; end
p{1}=imread('parial.bmp'); p{2}=imread('pbatang.bmp'); p{3}=imread('pcalibri.bmp'); p{4}=imread('psans.bmp'); p{5}=imread('ptahoma.bmp'); p{6}=imread('ptimes.bmp');
for i16=1:6,
ubahukuran{16,i16}=imresize(p{i16},[20 20]); ubahwarna{16,i16}=im2bw(ubahukuran{16,i16} ); ubahbentuk{16,i16}=ubahwarna{16,i16}'; ubahbentuk{16,i16}=ubahbentuk{16,i16}(:); ubahbentuk{16,i16}=ubahbentuk{16,i16}'; end
q{1}=imread('qarial.bmp'); q{2}=imread('qbatang.bmp'); q{3}=imread('qcalibri.bmp'); q{4}=imread('qsans.bmp'); q{5}=imread('qtahoma.bmp'); q{6}=imread('qtimes.bmp');
for i17=1:6,
A - 6
r{1}=imread('rarial.bmp'); r{2}=imread('rbatang.bmp'); r{3}=imread('rcalibri.bmp'); r{4}=imread('rsans.bmp'); r{5}=imread('rtahoma.bmp'); r{6}=imread('rtimes.bmp');
for i18=1:6,
ubahukuran{18,i18}=imresize(r{i18},[20 20]); ubahwarna{18,i18}=im2bw(ubahukuran{18,i18} ); ubahbentuk{18,i18}=ubahwarna{18,i18}'; ubahbentuk{18,i18}=ubahbentuk{18,i18}(:); ubahbentuk{18,i18}=ubahbentuk{18,i18}'; end
s{1}=imread('sarial.bmp'); s{2}=imread('sbatang.bmp'); s{3}=imread('scalibri.bmp'); s{4}=imread('ssans.bmp'); s{5}=imread('stahoma.bmp'); s{6}=imread('stimes.bmp');
for i19=1:6,
ubahukuran{19,i19}=imresize(s{i19},[20 20]); ubahwarna{19,i19}=im2bw(ubahukuran{19,i19} ); ubahbentuk{19,i19}=ubahwarna{19,i19}'; ubahbentuk{19,i19}=ubahbentuk{19,i19}(:); ubahbentuk{19,i19}=ubahbentuk{19,i19}'; end
t{1}=imread('tarial.bmp'); t{2}=imread('tbatang.bmp'); t{3}=imread('tcalibri.bmp'); t{4}=imread('tsans.bmp'); t{5}=imread('ttahoma.bmp'); t{6}=imread('ttimes.bmp');
for i20=1:6,
ubahukuran{20,i20}=imresize(t{i20},[20 20]); ubahwarna{20,i20}=im2bw(ubahukuran{20,i20} ); ubahbentuk{20,i20}=ubahwarna{20,i20}'; ubahbentuk{20,i20}=ubahbentuk{20,i20}(:); ubahbentuk{20,i20}=ubahbentuk{20,i20}'; end
u{1}=imread('uarial.bmp'); u{2}=imread('ubatang.bmp'); u{3}=imread('ucalibri.bmp'); u{4}=imread('usans.bmp'); u{5}=imread('utahoma.bmp'); u{6}=imread('utimes.bmp');
for i21=1:6,
ubahukuran{21,i21}=imresize(u{i21},[20 20]); ubahwarna{21,i21}=im2bw(ubahukuran{21,i21} ); ubahbentuk{21,i21}=ubahwarna{21,i21}'; ubahbentuk{21,i21}=ubahbentuk{21,i21}(:); ubahbentuk{21,i21}=ubahbentuk{21,i21}'; end
v{1}=imread('varial.bmp'); v{2}=imread('vbatang.bmp'); v{3}=imread('vcalibri.bmp'); v{4}=imread('vsans.bmp'); v{5}=imread('vtahoma.bmp'); v{6}=imread('vtimes.bmp');
for i22=1:6,
ubahukuran{22,i22}=imresize(v{i22},[20 20]); ubahwarna{22,i22}=im2bw(ubahukuran{22,i22} ); ubahbentuk{22,i22}=ubahwarna{22,i22}'; ubahbentuk{22,i22}=ubahbentuk{22,i22}(:); ubahbentuk{22,i22}=ubahbentuk{22,i22}'; end
w{1}=imread('warial.bmp'); w{2}=imread('wbatang.bmp'); w{3}=imread('wcalibri.bmp'); w{4}=imread('wsans.bmp'); w{5}=imread('wtahoma.bmp'); w{6}=imread('wtimes.bmp');
for i23=1:6,
ubahukuran{23,i23}=imresize(w{i23},[20 20]); ubahwarna{23,i23}=im2bw(ubahukuran{23,i23} ); ubahbentuk{23,i23}=ubahwarna{23,i23}'; ubahbentuk{23,i23}=ubahbentuk{23,i23}(:); ubahbentuk{23,i23}=ubahbentuk{23,i23}'; end
x{1}=imread('xarial.bmp'); x{2}=imread('xbatang.bmp'); x{3}=imread('xcalibri.bmp'); x{4}=imread('xsans.bmp'); x{5}=imread('xtahoma.bmp'); x{6}=imread('xtimes.bmp');
for i24=1:6,
A - 7
y{1}=imread('yarial.bmp'); y{2}=imread('ybatang.bmp'); y{3}=imread('ycalibri.bmp'); y{4}=imread('ysans.bmp'); y{5}=imread('ytahoma.bmp'); y{6}=imread('ytimes.bmp');
for i25=1:6,
ubahukuran{25,i25}=imresize(y{i25},[20 20]); ubahwarna{25,i25}=im2bw(ubahukuran{25,i25} ); ubahbentuk{25,i25}=ubahwarna{25,i25}'; ubahbentuk{25,i25}=ubahbentuk{25,i25}(:); ubahbentuk{25,i25}=ubahbentuk{25,i25}'; end
z{1}=imread('zarial.bmp'); z{2}=imread('zbatang.bmp'); z{3}=imread('zcalibri.bmp'); z{4}=imread('zsans.bmp'); z{5}=imread('ztahoma.bmp'); z{6}=imread('ztimes.bmp');
for i26=1:6,
ubahukuran{26,i26}=imresize(z{i26},[20 20]); ubahwarna{26,i26}=im2bw(ubahukuran{26,i26} ); ubahbentuk{26,i26}=ubahwarna{26,i26}'; ubahbentuk{26,i26}=ubahbentuk{26,i26}(:); ubahbentuk{26,i26}=ubahbentuk{26,i26}'; end ubahbentuk=ubahbentuk'; ubahbentuk=ubahbentuk(:); inputkecil=ubahbentuk save inputinputkecil;
Program Pelatihan Huruf Kapital
% TAbesar
clc; clear all; vp =0.5; m=26; L=2; n= 400; epn=1000; b=zeros(n,m)+L/(L-1+n); t=zeros(m,n)+1; load inputinputbesar; input_final=[]; input3=[];
for jj=1:156,
input1=[]; input1=inputbesar{jj}; input4=[]; input3=[input3 ;input1]; end data=input3; s=data; c=length(s); con=1; epoch=0;
while con for I=1:156; x=s(I,:); y=zeros(1,m); ns=sum(x); for j=1:m; if y(j)~=-1; for i=1:400; y(j)=b(i,j)*x(i); end end end con1=1; while con1; for j=1:m; if y(j)==max(y); J=j;
break
end
end
if y(J)==-1; con1=0; else
for i=1:n; x(i)=s(I,i)*t(J,i); end
nx=sum(x); if nx/ns < vp; y(J)=-1; con1=1; else con1=0; end end end cl(I)=J;
for i = 1:n;
b(i,J)=L*x(i)/(L-1+nx); t(J,i)=x(i);
end
end
A - 8
for i=1:n;for j=1:m; if b(i,j)>0; pb(i,j)=1; else pb(i,j)=-1; end end end pb=pb'; save bb
save tb
Program Pelatihan Huruf Kecil
% TAbesar
clc; clear all; vp =0.5; m=26; L=2; n= 400; epn=100; b=zeros(n,m)+L/(L-1+n); t=zeros(m,n)+1; load inputinputkecil; input_final=[]; input31=[];
for jj1=1:156, input11=[]; input11=inputkecil{jj1}; input41=[]; input31=[input31 ;input11]; end data=input31; s=data; c=length(s); con=100; epoch=0;
while con for I=1:156; x=s(I,:); y=zeros(1,m); ns=sum(x); for j=1:m; if y(j)~=-1; for i=1:400; y(j)=b(i,j)*x(i); end end end con1=1; while con1; for j=1:m; if y(j)==max(y); J=j;
break
end
end
if y(J)==-1; con1=0; else
for i=1:n; x(i)=s(I,i)*t(J,i); end
nx=sum(x); if nx/ns < vp; y(J)=-1; con1=1; else con1=0; end end end cl(I)=J;
for i = 1:n;
b(i,J)=L*x(i)/(L-1+nx); t(J,i)=x(i); t1=t(1,:); end end epoch=epoch+1; if epoch==epn; con=0; end end for i=1:n; for j=1:m; if b(i,j)>0; pb(i,j)=1; else pb(i,j)=-1; end end end pb=pb'; save bk
A - 9
Program GUI untuk Pelatihangui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @latihbesar1_OpeningFcn, ...
'gui_OutputFcn', @latihbesar1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% TAbesar
clc; clear all; vp3=0.3; m=26; L=2; n= 400; epn=100; b=zeros(n,m)+L/(L-1+n); t=zeros(m,n)+1; load inputinputbesar; input_final=[]; input3=[];
for jj=1:156, input1=[]; input1=inputbesar{jj}; input4=[]; input3=[input3 ;input1]; end data=input3; s=data; c=length(s); con=1; epoch=0;
while con
for I=1:156; x=s(I,:); y=zeros(1,m); ns=sum(x); for j=1:m; if y(j)~=-1; for i=1:400; y(j)=b(i,j)*x(i); end end end con1=1; while con1; for j=1:m; if y(j)==max(y); J=j;
break
end
end
if y(J)==-1; con1=0; else
for i=1:n; x(i)=s(I,i)*t(J,i); end
nx=sum(x); if nx/ns < vp3; y(J)=-1; con1=1; else con1=0; end end end cl(I)=J;
for i = 1:n;
b(i,J)=L*x(i)/(L-1+nx); t(J,i)=x(i);
end
end
epoch=epoch+1; if epoch==epn; con=0; end end for i=1:n; for j=1:m; if b(i,j)>0; pb(i,j)=1; else pb(i,j)=-1; end end end pb=pb'; save bb3
A - 10
myform=guidata(gcbo); set(myform.edit2,'string',vp3); set(myform.edit1,'string',epn); set(myform.listbox2,'string',yall3);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
vp=str2num(get(edit2,'string'))
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
% --- Executes when entered data in editable cell(s) in uitable1.
function uitable1_CellEditCallback(hObject, eventdata, handles)
% hObject handle to uitable1 (see GCBO) % eventdata structure with the following fields (see UITABLE)
% Indices: row and column indices of the cell(s) edited
% PreviousData: previous data for the cell(s) edited
% EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
% Error: error string when failed to convert EditData to appropriate value for Data
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns listbox1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from listbox1
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
A - 11
function edit3_Callback(hObject, eventdata,handles)
% hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3 as a double
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
% --- Executes when entered data in editable cell(s) in uitable3.
function uitable3_CellEditCallback(hObject, eventdata, handles)
% hObject handle to uitable3 (see GCBO) % eventdata structure with the following fields (see UITABLE)
% Indices: row and column indices of the cell(s) edited
% PreviousData: previous data for the cell(s) edited
% EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
% Error: error string when failed to convert EditData to appropriate value for Data
% handles structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all properties.
function uitable3_CreateFcn(hObject, eventdata, handles)
% hObject handle to uitable3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes when selected cell(s) is changed in uitable6.
function uitable6_CellSelectionCallback(hObject, eventdata, handles)
% hObject handle to uitable6 (see GCBO) % eventdata structure with the following fields (see UITABLE)
% Indices: row and column indices of the cell(s) currently selecteds
% handles structure with handles and user data (see GUIDATA)
% --- Executes when entered data in editable cell(s) in uitable6.
function uitable6_CellEditCallback(hObject, eventdata, handles)
% hObject handle to uitable6 (see GCBO) % eventdata structure with the following fields (see UITABLE)
% Indices: row and column indices of the cell(s) edited
% PreviousData: previous data for the cell(s) edited
% EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
% Error: error string when failed to convert EditData to appropriate value for Data
% handles structure with handles and user data (see GUIDATA)
% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% --- Executes during object creation, after setting all properties.
function uitable6_CreateFcn(hObject, eventdata, handles)
% hObject handle to uitable6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
A - 12
Program GUI Untuk Pengujiangui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @latihbesar1_OpeningFcn, ...
'gui_OutputFcn', @latihbesar1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% TAbesar
clc; clear all; vp =0.3; m=26; L=2; n= 400; epn=1; load bb3
load tb3
A{1}=imread('Aarial.bmp');
for i1=1,
ubahukuran{1,i1}=imresize(A{i1},[20 20]); ubahwarna{1,i1}=im2bw(ubahukuran{1,i1}); ubahbentuk{1,i1}=ubahwarna{1,i1}'; ubahbentuk{1,i1}=ubahbentuk{1,i1}(:); ubahbentuk{1,i1}=ubahbentuk{1,i1}'; end ubahbentuk=ubahbentuk'; ubahbentuk=ubahbentuk(:); inputA1=ubahbentuk;
save inputinputA1
load inputinputA1; input_final=[];
input3=[];
for jj=1 input1=[]; input1=inputA1{jj}; input4=[]; input3=[input3 ;input1]; end data=input3; s=data; c=length(s); con=1; epoch=0;
while con for I=1; x=s(I,:); y=zeros(1,m); ns=sum(x); for j=1:m; if y(j)~=-1; for i=1:400; y(j)=b(i,j)*x(i); end end end con1=1; while con1; for j=1:m; if y(j)==max(y); J=j;
break
end
end
if y(J)==-1; con1=0; else
for i=1:n; x(i)=s(I,i)*t(J,i); end
nx=sum(x); if nx/ns < vp; y(J)=-1; con1=1; else con1=0; end end end cl(I)=J; end epoch=epoch+1; if epoch==epn; con=0; end end
yA1=y; save yA1
A - 13
set(myform.edit1,'string',epn); set(myform.listbox2,'string',yall3);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
vp=str2num(get(edit2,'string'))
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
% --- Executes when entered data in editable cell(s) in uitable1.
function uitable1_CellEditCallback(hObject, eventdata, handles)
% hObject handle to uitable1 (see GCBO) % eventdata structure with the following fields (see UITABLE)
% Indices: row and column indices of the cell(s) edited
% PreviousData: previous data for the cell(s) edited
% EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
% Error: error string when failed to convert EditData to appropriate value for Data
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns listbox1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from listbox1
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% TAbesar
A - 14
function edit3_Callback(hObject, eventdata,handles)
% hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3 as a double
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
% --- Executes when entered data in editable cell(s) in uitable3.
function uitable3_CellEditCallback(hObject, eventdata, handles)
% hObject handle to uitable3 (see GCBO) % eventdata structure with the following fields (see UITABLE)
% Indices: row and column indices of the cell(s) edited
% PreviousData: previous data for the cell(s) edited
% EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
% Error: error string when failed to convert EditData to appropriate value for Data
% handles structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all properties.
function uitable3_CreateFcn(hObject, eventdata, handles)
% hObject handle to uitable3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes when selected cell(s) is changed in uitable6.
function uitable6_CellSelectionCallback(hObject, eventdata, handles)
% hObject handle to uitable6 (see GCBO) % eventdata structure with the following fields (see UITABLE)
% Indices: row and column indices of the cell(s) currently selecteds
% handles structure with handles and user data (see GUIDATA)
% --- Executes when entered data in editable cell(s) in uitable6.
function uitable6_CellEditCallback(hObject, eventdata, handles)
% hObject handle to uitable6 (see GCBO) % eventdata structure with the following fields (see UITABLE)
% Indices: row and column indices of the cell(s) edited
% PreviousData: previous data for the cell(s) edited
% EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
% Error: error string when failed to convert EditData to appropriate value for Data
% handles structure with handles and user data (see GUIDATA)
% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% --- Executes during object creation, after setting all properties.
function uitable6_CreateFcn(hObject, eventdata, handles)
% hObject handle to uitable6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
B - 1
PengelompokanHurufKapital Arial Vp 0.3
Kelompok
Data Pelatihan
Kelompok 1
A, B, C, D, E, F, G, H, I, J, K, L, M,
N, O, P, Q, R, S, T, U, V, W, X, Y,
Z
PengelompokanHurufKapitalBatangVp 0.3
Kelompok
Data Pelatihan
Kelompok 1
A, B, C, D, E, F, G, H, I, J, K, L, M,
N, O, P, Q, R, S, T, U, V, W, X, Y,
Z
PengelompokanHurufKapital Calibri Vp 0.3
Kelompok
Data Pelatihan
Kelompok 1
A, B, C, D, E, F, G, H, I, J, K, L, M,
N, O, P, Q, R, S, T, U, V, W, X, Y,
Z
PengelompokanHurufKapital Microsoft SansSherifVp 0.3
Kelompok
Data Pelatihan
Kelompok 1
A, B, C, D, E, F, G, H, I, J, K, L, M,
B -2
PengelompokanHurufKapital Tahoma Vp 0.3
Kelompok
Data Pelatihan
Kelompok 1
A, B, C, D, E, F, G, H, I, J, K, L, M,
N, O, P, Q, R, S, T, U, V, W, X, Y,
Z
PengelompokanHurufKapital Times New Roman Vp 0.3
Kelompok
Data Pelatihan
1
Universitas Kristen Maranatha
BAB I
PENDAHULUAN
1.1.
Latar Belakang
Sistem pengelompokan huruf (
character recognition system
) adalah salah
satu teknologi komputer yang dapat membantu manusia. Pengelompokan huruf
adalah suatu sistem data masukan berupa huruf yang ada dalam lembaran kertas
maupun yang ada dalam media tertentu yang terdapat berbagai jenis huruf (
font
)
yang dapat di-scan, menggunakan scanner yang akan menghasilkan gambar yang
pada komputer yang akan dikenali sebagai titik-titik (
bitmap
),
bitmap
inilah yang
kemudian akan diproses lebih lanjut dengan menggunakan Jaringan Saraf Tiruan
(JST) agar menjadi karakter sehingga dapat dikenali dan dapat diolah menjadi
sebuah informasi.
Dalam Jaringan Saraf Tiruan (JST) terdapat banyak algoritma
clustering
(pengelompokan); antara lain: algoritma perceptron, algoritma hebb, algoritma
backpropagation, algoritma kohonen, dan salah satunya algoritma
Adaptive
Resonance Theory
( ART ).
Tugas Akhir ini akan merancang dan merealisasikan perangkat lunak untuk
pengelompokan huruf dengan menggunakan algoritma ART. Algoritma ART
adalah algoritma yang dikembangkan oleh Stephen Grossberg dan Carpenter.
Algoritma ART termasuk kategori metode
unsupervised learning
.
1.2.
Rumusan Masalah
Dalam pembuatan Tugas Akhir ini terdapat beberapa identifikasi masalah.
Adapun identifikasi masalah tersebut antara lain :
1.
Bagaimana merancang JST (Jaringan Saraf Tiruan) dengan menggunakan
algoritma ART 1 dalam matlab?
2
Universitas Kristen Maranatha
1.3.
Tujuan Pembahasan
Tujuan yang nantinya akan dicapai melalui Tugas Akhir ini adalah :
1.
Memahami dan menerapkan algoritma ART1 (
Adaptive Resonance
Theory 1
) untuk pengelompokan huruf.
2.
Merancang perangkat lunak yang dapat melakukan klasifikasi huruf
berbasis jaringan syaraf tiruan dengan menggunakan algoritma ART 1.
1.4.
Batasan
–
batasan Masalah
Batasan-batasan masalah dalam Tugas Akhir ini adalah :
1.
Huruf yang digunakan adalah huruf A-Z ; a-z.
2.
Huruf yang akan dikenali adalah huruf cetak dari 6 jenis huruf (
font
)
yaitu: Arial, Batang, Calibri, Microsoft Sans Sherif, Tahoma, Times
New Roman.
3.
Teknik pengelompokan pola yang digunakan adalah
Adaptive
Resonance Theory 1
(ART 1) .
4.
Citra huruf yang akan digunakan adalah 20x20
pixel/character
dengan
format bitmap
(
file
bmp).
1.5.
Sistematika Penulisan
Sistematika yang akan digunakan untuk menyusun laporan ini adalah
sebagai berikut :
Bab 1. Pendahuluan
Merupakan bab yang menjelaskan mengenai latar belakang
masalah, identifikasi masalah, batasan masalah, tujuan Tugas
Akhir, dan sistematika penulisan dari Tugas Akhir ini.
Bab 2. Landasan Teori
Merupakan bab yang disusun untuk memberikan penjelasan
mengenai jaringan saraf tiruan dan algoritma ART 1 (
Adaptive
3
Universitas Kristen Maranatha
Bab 3. Perancangan sistem
Bab ini berisi penjelasan desain yang akan dilakukan untuk
membuat software pengelompokan huruf dengan menggunakan
algoritma ART 1 (
Adaptive Resonance Theory 1).
Bab 4. Analisa
Bab ini berisi hasil yang diperoleh dari penelitian dan analisa data
yang diperoleh melalui Tugas Akhir ini.
Bab 5. Kesimpulan dan Saran
Berisi kesimpulan dan saran yang dapat diambil untuk melakukan
78
Universitas Kristen Maranatha
BAB V
KESIMPULAN DAN SARAN
5.1.
Kesimpulan
·
Pengelompokan huruf cetak menggunakan algoritma ART 1 (
Adaptive
Resonance Theory 1
) berhasil direalisasikan.
·
Dalam tahap pelatihan,
vigilance parameter
(vp) akan mempengaruhi jumlah
kelompok yang terbentuk. Semakin tinggi
vigilance parameter
(vp) , jumlah
kelompok yang terbentuk akan semakin banyak.
·
Pengelompokan huruf cetak ini dapat terjadi berdasarkan dari pola yang
dihasilkan dari bobot akhir b
ij
.
·
Pada pengelompokan huruf kapital yang dilatih tidak ada pengelompokan
yang mirip antara satu jenis
font
dengan
font
yang lain.
·
Pada pengelompokan huruf kecil yang dilatih ada pengelompokan yang mirip
antara
font
Arial,
font
Microsoft Sans Sherif dan
font
Tahoma.
·
Untuk tahap pengujian, huruf yang diuji adalah tulisan tangan yang hampir
mirip dengan
font
Calibri.
5.2.
Saran
Dalam Tugas Akhir ini ada beberapa saran untuk perbaikan, diantaranya
adalah:
·
Hasil pengelompokan akan lebih baik jika ditambahkan dengan metoda K-
Means.
·
Adaptive Resonance Theory 1 (ART 1) dapat digunakan juga untuk
79
Universitas Kristen Maranatha
DAFTAR PUSTAKA
1.
Artificial Neural network exclusive training 2007. STT Telkom, Bandung,hal.11.
2.
Carpenter G.A. y Grossberg S. “ART1:
Selforganizingof stable category
recognition codes for analog input patterns
”
. Applied Optics
,
Vol. 16,
N
23,
December, 1987.Walker, James S, “Wavelet and Their Scientific Applications
”
,
CRC Press, 1999.
3.
Drs.Jong Jek Siang,M.Sc,(Jaringan Syaraf Tiruan dan Pemogramannya
menggunakan Matlab),2005,hal. 25.
4.
Erick Paulus, Yessica Nataliani,
“GUI Matlab”
, Penerbit Andi Yogyakarta,
2007.
5.
Forum Teknik Jilid 21, No.2, Juli 1997.
6.
Laurene Fausett, (Fundamentals of neural networks).
7.
Saludin Muis, Teknik Jaringan Syaraf Tiruan, 2006, hal 235.
8.
Sri Kusumadewi,
Artificial Integence (Teknik dan Aplikasi),2003
, hal. 207.
9.
Sri Kusumadewi,
Membangun Jaringan Saraf Tiruan (Menggunakan MATLAB
dan ExcelLink),
2004, hal.1.
10.
S N Sivanandam, S Sumathi, S N Deepa, Introduction to Neural Netwoks using
MATLAB 6.0.
11.
Sugiharto,Aris.2006.pemrograman GUI dengan MATLAB.Yogyakarta:Andi.
12.
Talib Hashim Hasan,