Anda di halaman 1dari 154

SKRIPSI

IDENTIFIKASI TEKSTUR CITRA JENIS TEPUNG DENGAN


METODE LEARNING VECTOR QUANTIZATION

Disusun Oleh :

Nama : ARIS TRIYANTO


NIM : 11111073

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS MERCU BUANA YOGYAKARTA
2016
IDENTIFIKASI TEKSTUR CITRA JENIS TEPUNG DENGAN
METODE LEARNING VECTOR QUANTIZATION

Nama : ARIS TRIYANTO


NIM : 11111073

Skripsi ini diajukan untuk memenuhi persyaratan akademik sarjana pada


Program Studi Teknik Informatika, Fakultas Teknologi Informasi,
Universitas Mercu Buana Yogyakarta.

Yogyakarta, 3 Maret 2016


Menyetujui Pembimbing

Indah Susilawati, ST., M.Eng.


NIDN: 0006127201

ii
HALAMAN PENGESAHAN

IDENTIFIKASI TEKSTUR CITRA JENIS TEPUNG DENGAN


METODE LEARNING VECTOR QUANTIZATION

Oleh:
ARIS TRIYANTO
11111073

Telah dipertanggungjawabkan dan diterima


oleh Tim Penguji pada tanggal
15 Februari 2016

Mengetahui Dekan Dosen Pembimbing

Supatman, S.T., M.T. Indah Susilawati, ST., M.Eng.


NIDN. 050905720 NIDN: 0006127201

Dosen Penguji

1. Supatman, S.T., M.T.


NIDN. 050905720

2. A. Sidik Purnomo, S.Kom., M.Eng.


NIDN. 0511078701

3. Anief Fauzan Rozi, S.Kom., M.Eng.


NIDN. 0522088601

iii
HALAMAN PERNYATAAN PERSETUJUAN
PUBLIKASI SKRIPSI UNTUK KEPENTINGAN AKADEMIS

Sebagai mahasiswa Universitas Mercu Buana Yogyakarta, saya yang


bertanda tangan di bawah ini:

Nama Lengkap : Aris Triyanto


NIM : 11111073
Program Studi : Teknik Informatika
Fakultas : Teknologi Informasi
Jenis Karya : Skripsi

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan


kepada Universitas Mercu Buana Yogyakarta Hak Bebas Royalti Noneksklusif
(None-exclusive Royalty Free Right) atas karya ilmiah saya yang berjudul:

Identifikasi Tekstur Citra Jenis Tepung dengan


Metode Learning Vector Quantization.

Beserta perangkat yang ada (jika diperlukan). Dengan hak bebas royalti
noneksklusif ini Universitas Mercu Buana Yogyakarta berhak menyimpan,
mengalih-media-kan, mengelola dalam bentuk pangkalan data (database),
merawat dan mempublikasikan skripsi saya selama tetap mencantumkan nama
saya sebagai penulis dan sebagai pemilik hak cipta.
Demikian pernyataan ini saya buat dengan sebenarnya.

Dibuat di : Yogyakarta
Pada tanggal : 20 Februari 2016
Yang menyatakan

Aris Triyanto

iv
HALAMAN PERNYATAAN ORISINALITAS KARYA

Skripsi ini adalah hasil karya saya sendiri, dan semua sumber baik yang
dikutip maupun yang dirujuk, telah saya nyatakan dengan benar.

Nama Lengkap : Aris Triyanto


Nim : 11111073
Judul Skripsi : Identifikasi Tekstur Citra Jenis Tepung dengan Metode
Learning Vector Quantization

Program Studi : Teknik Informatika


Tanggal : 20 Februari 2016
Tanda tangan

Aris Triyanto

v
HALAMAN PERSEMBAHAN

Puji syukur kepada Allah SWT atas segala rahmat dan hidayah-Nya yang
telah memberikan kekuatan, kesehatan dan kesabaran dalam mengerjakan skripsi
ini. Skripsi ini saya persembahkan kepada:
1. Keluarga saya tercinta, istriku tersayang, yang telah menjadi motivasi dan
inspirasi dan tiada henti memberikan dukungan do'anya. “Tanpa keluarga,
manusia sendiri di dunia, gemetar dalam dingin.”
2. Terima kasih yang tak terhingga untuk para dosen, terutama dosen
pembimbingku yang tak pernah lelah dan sabar memberikan bimbingan dan
arahan kepadaku.
3. Terima kasih juga kupersembahkan kepada para sahabatku “Team Solid”
yang senantiasa menjadi penyemangat dan menemani disetiap hariku.
“Sahabat merupakan salah satu sumber kebahagiaan dikala kita merasa
tidak bahagia”.
4. Teruntuk teman-teman adik dan kakak angkatanku yang selalu membantu,
berbagi keceriaan dan melewati setiap suka dan duka selama menempuh
studi, terimakasih banyak. "Tiada hari yang indah tanpa kalian semua"
5. Untuk ribuan tujuan yang harus dicapai, untuk jutaan impian yang akan
dikejar, untuk sebuah pengharapan, agar hidup jauh lebih bermakna, hidup
tanpa mimpi ibarat arus sungai. Mengalir tanpa tujuan. Teruslah belajar,
berusaha, dan berdoa untuk menggapainya. Jatuh berdiri lagi, kalah mencoba
lagi, gagal bangkit lagi.

Hanya sebuah karya kecil dan untaian kata-kata ini yang dapat
kupersembahkan kepada kalian semua, terima kasih beribu terima kasih
kuucapkan atas segala kekhilafan salah dan kekuranganku, kurendahkan hati serta
diri menjabat tangan meminta beribu-ribu kata maaf tercurah.

vi
HALAMAN MOTTO

Tuntutlah ilmu pengetahuan itu mulai dari buaian,

sampai ke liang lahat

Ilmu pengetahuan tanpa agama lumpuh, agama tanpa ilmu

pengetahuan buta

Ilmu adalah cahaya yang menerangi jalan kehidupan yang gelap.

Barang siapa yang tidak tahu nikmatnya waktu belajar,

Maka ia akan merugi sepanjang hidupnya

vii
KATA PENGANTAR

Puji syukur kepada Tuhan Yang Maha Esa, sehingga penulis dapat
menyelesaikan skripsi yang berjudul : IDENTIFIKASI TEKSTUR CITRA JENIS
TEPUNG DENGAN METODE LEARNING VECTOR QUANTIZATION. Skripsi
ini disusun sebagai salah satu persyaratan untuk mencapai derajat strata satu di
Fakultas Teknologi Informasi di Universitas Mercu Buana Yogyakarta.
Dalam penelitian dan penyusunan skripsi ini, peneliti banyak didukung oleh
berbagai pihak. Pada kesempatan ini dengan peneliti sangat ingin mengucapkan
terima kasih yang sebesar-besarnya kepada:
1. Dr. Alimatus Sahrah, M.Si., MM., selaku Rektor Universitas Mercu Buana
Yogyakarta.
2. Supatman, ST., MT., selaku Dekan Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta.
3. Indah Susilawati, ST., M.Eng., selaku dosen pembimbing yang telah
memberikan bimbingan, koreksi, arahan serta saran dalam penulisan
skripsi ini.
4. Seluruh dosen Fakultas Teknologi Informasi yang telah membina dan
mengajar peneliti dengan wawasan dan penuh kesabaran.
5. Tim Penguji yang membantu peneliti dalam kelancaran ujian skripsi ini.
6. Keluarga yang selalu memberikan segala bentuk dorongan dan mendoakan
untuk kelancaran penelitian ini.
7. Teman-teman FTI UMBY yang selalu memberi semangat untuk
menyelesaikan penelitian ini.
8. Semua pihak yang telah membantu penyusunan skripsi ini yang tidak bisa
disebutkan satu per satu
Terima kasih atas semua bantuan dan dukungan yang diberikan. Dengan
segala kerendahan hati, penulis menyadari bahwa dalam penyusunan skripsi ini
masih memiliki kekurangan baik dari segi materi maupun dari segi
penyusunannya mengingat terbatasnya pengetahuan dan kemampuan penulis.

viii
Untuk itu, penulis mohon maaf dan penyusun sangat mengharapkan segala saran
dan kritik yang membangun agar dapat membantu agar dalam penyusunan
selanjutnya bisa lebih baik lagi. Ibarat Tak ada gading yang tak retak, tak ada
bisul yang tak bengkak, tak ada gundul yang tak botak, Akhir kata, penulis
berharap semoga skripsi ini bermanfaat dan menjadi bahan masukan bagi rekan-
rekan yang sedang dalam proses menyusun skripsi.

Yogyakarta, 20 Februari 2016

Aris Triyanto

ix
ABSTRAK

Tepung sering digunakan dalam pembuatan roti, kue, bakso, dan lain-lain. Bahan ini
dipakai karena banyaknya konsumen yang menyukai produk-produk makanan berbahan
tepung, selain harganya murah, makanan dari jenis ini kaya akan karbohidrat yang akan
membantu tubuh menghasilkan energi. Orang yang awam pengetahuan tentang tepung
akan sangat sulit membedakan jenis tepung apa asalnya, apakah dari beras, gandum,
ketela, atau yang lainya. Cara membedakan jenis tepung bisa dilakukan dengan melihat
tekstur tepung, bahan tepung beras cenderung lebih kasar dan tidak terlalu putih,
sedangkan tepung gandum lebih halus dan tidak terlalu putih, akan tetapi pada tepung
yang berasal dari ketela teksturnya lebih halus dan berwarna putih, ini dikarenakan
tepung ini terbuat dari saripati ketela, atau orang sering menyebutnya dengan kanji.
Penelitian ini bertujuan untuk membuat perangkat lunak yang berfungsi untuk
mengidentifikasi jenis tepung menggunakan Learning Vector Quantization dan alihragam
gelombang singkat (Tranformation Wavelet). Jumlah data pelatihan yang digunakan
dalam penelitian ini terdiri dari 3 kelas, dan masing-masing kelas berjumlah 20 data
pelatihan, jadi total data berjumlah 60 data pelatihan. Sedangkan untuk data uji
menggunakan 30 data citra.
Pada proses pelatihan menggunakan parameter LVQ terdapat 6 persentase terbaik
sebesar 98,33%, yaitu pada alfa 0,1 dengan dec alfa 0,1, alfa 0,01 dengan dec alfa 0,1,
alfa 0,1 dengan dec alfa 0,25, alfa 0,01 dengan dec alfa 0,25, alfa 0,1 dengan dec alfa
0,5, dan alfa 0,1 dengan dec alfa 0,75. Bobot akhir yang diperoleh dari parameter tersebut
kemudian digunakan untuk melakukan pengenalan data uji. Pelatihan dengan parameter
tersebut mempunyai persentase yang sama, akan tetapi memiliki iterasi yang berbeda.
Iterasi yang paling sedikit akan digunakan sebagai data pelatihan. Pengenalan yang
dilakukan dengan bobot akhir dari alfa 0,1 dan dec alfa 0,75 memiliki tingkat akurasi
98,33% dengan iterasi 7.
Unjuk kerja terbaik dari 30 data uji menggunakan perangkat lunak ini adalah
dengan alfa 0,1 dan dec alfa 0,75 mencapai 86,66%.

Kata Kunci : Tekstur Citra Tepung, Learning Vector Quantization (LVQ), Wavelet,
Neural Network, jaringan syaraf tiruan, alihragam gelombang singkat

x
DAFTAR ISTILAH

No. Istilah Keterangan

1 CA Coefficients Approximation

2 CD Coefficients Diagonal

3 CH Coefficients Horizontal

8 JPEG Joint Photographic Experts Group

4 CV Coefficients Vertical

5 LVQ Learning Vector Quantization

6 RGB Red Green Blue

xi
DAFTAR ISI

Contents
HALAMAN PENGESAHAN ................................................................................ iii
HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI UNTUK
KEPENTINGAN AKADEMIS ............................................................................. iv
HALAMAN PERNYATAAN ORISINALITAS KARYA .................................... v
HALAMAN PERSEMBAHAN ............................................................................ vi
HALAMAN MOTTO ........................................................................................... vii
KATA PENGANTAR ......................................................................................... viii
ABSTRAK .............................................................................................................. x
DAFTAR ISTILAH ............................................................................................... xi
DAFTAR ISI ......................................................................................................... xii
DAFTAR TABEL ................................................................................................ xiv
DAFTAR GAMBAR ............................................................................................ xv
DAFTAR LAMPIRAN ........................................................................................ xvi
BAB I PENDAHULUAN ...................................................................................... 1
1.1 Latar Belakang ......................................................................................... 1
1.2 Rumusan Masalah .................................................................................... 2
1.3 Batasan Masalah ....................................................................................... 2
1.4 Tujuan ....................................................................................................... 2
1.5 Manfaat ..................................................................................................... 2
BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI .............................. 3
2.1 Tinjauan Pustaka ...................................................................................... 3
2.2 Landasan Teori ......................................................................................... 4
2.2.1 Tepung............................................................................................... 4
2.2.2 Citra Digital ....................................................................................... 6
2.2.3 Pra-Proses .......................................................................................... 8
2.2.4 Wavelet ............................................................................................. 9
2.2.5 Jaringan Syaraf Tiruan .................................................................... 12

xii
2.2.6 Learning Vector Quantization ......................................................... 13
BAB III METODOLOGI ..................................................................................... 15
3.1 Bahan Penelitian ..................................................................................... 15
3.2 Alat Penelitian ........................................................................................ 15
3.3 Jalan Penelitian ....................................................................................... 15
3.3.1 Akuisisi Data ................................................................................... 16
3.3.2 Data ................................................................................................. 17
3.3.3 Pra-Proses ........................................................................................ 17
3.3.4 Wavelet ........................................................................................... 21
3.3.5 Ekstraksi Ciri................................................................................... 22
3.3.6 Fitur Vector ..................................................................................... 23
3.3.7 Learning Vector Quantization ......................................................... 23
3.3.8 Perancangan Antarmuka Perangkat Lunak ..................................... 27
BAB IV ANALISIS DAN PEMBAHASAN ........................................................ 29
4.1 Hasil Penelitian....................................................................................... 29
4.1.1 Akuisisi Data Citra .......................................................................... 29
4.1.2 Pra-Proses ........................................................................................ 30
4.1.3 Wavelet ........................................................................................... 31
4.1.4 Ekstraksi Ciri................................................................................... 32
4.1.5 Learning Vector Quantization ......................................................... 35
4.1.6 Unjuk Kerja ..................................................................................... 36
4.1.7 Analisis dan Pembahasan ................................................................ 56
BAB V PENUTUP ................................................................................................ 67
5.1 Kesimpulan ............................................................................................. 67
5.2 Saran ....................................................................................................... 67
DAFTAR PUSTAKA ........................................................................................... 68
LAMPIRAN ........................................................................................................ xvii

xiii
DAFTAR TABEL

Tabel 3. 1 Alat Penelitian ...................................................................................... 15


Tabel 4.1 Hasil Ekstraksi Ciri Data Pelatihan ....................................................... 32
Tabel 4.2 Hasil Ekstraksi Ciri Data Uji ................................................................ 34
Tabel 4.3 Parameter LVQ ..................................................................................... 35
Tabel 4.4 Bobot Awal ........................................................................................... 35
Tabel 4.5 Unjuk Kerja Identifikasi Jenis Tepung ................................................. 36
Tabel 4.6 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,1 .................................. 37
Tabel 4.7 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,01 ................................ 39
Tabel 4.8 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,25 ................................ 41
Tabel 4.9 Hasil Pelatihan dengan alfa 0,01 dan dec alfa 0,25 .............................. 43
Tabel 4.10 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,5 ................................ 45
Tabel 4.11 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,75 .............................. 47
Tabel 4.12 Hasil Pengenalan Data Uji dengan alfa 0,1 dan dec alfa 0,1 .............. 50
Tabel 4.13 Hasil Pengenalan Data Uji dengan alfa 0,01 dan dec alfa 0,1 ............ 51
Tabel 4.14 Hasil Pengenalan Data Uji dengan alfa 0,1 dan dec alfa 0,25 ............ 52
Tabel 4.15 Hasil Pengenalan Data Uji dengan alfa 0,01 dan dec alfa 0,25 .......... 53
Tabel 4.16 Hasil Pengenalan Data Uji dengan alfa 0,1 dan dec alfa 0,5 .............. 54
Tabel 4.17 Hasil Pengenalan Data Uji dengan alfa 0,1 dan dec alfa 0,75 ............ 55
Tabel 4.18 Jarak Terdekat Data Uji Dengan alfa 0,1 dan dec alfa 0,1 ................. 59
Tabel 4.19 Jarak Terdekat Pengujian Dengan alfa 0,01 dan dec alfa 0,1 ............. 60
Tabel 4.20 Jarak Terdekat Pengujian Dengan alfa 0,1 dan dec alfa 0,25 ............. 61
Tabel 4.21 Jarak Terdekat Pengujian Dengan alfa 0,001 dan dec alfa 0,25 ......... 62
Tabel 4.22 Jarak Terdekat Pengujian Dengan alfa 0,1 dan dec alfa 0,5 ............... 63
Tabel 4.23 Jarak Terdekat Pengujian Dengan alfa 0,1 dan dec alfa 0,75 ............. 64

xiv
DAFTAR GAMBAR

Gambar 2.1 Tepung beras, tepung gandum, dan tepung tapioka ............................ 5
Gambar 2.2 Koordinat Citra Digital (Putra, 2010) ................................................. 7
Gambar 2.3 Proses Pembentukan Citra (Putra, 2010)............................................. 8
Gambar 2.4 Contoh Transformasi Wavelet Level 2 (Putra, 2010) ........................ 10
Gambar 2.5 Transformasi Wavelet (Putra, 2010) ................................................. 11
Gambar 2.6 Skema Transformasi Wavelet (Putra, 2010)...................................... 12
Gambar 2.7 Perceptron (Siang, 2005) .................................................................. 12
Gambar 2.8 Jaringan Syaraf Tiruan (Kusumadewi, 2004) ................................... 13
Gambar 2.9 Arsitektur Learning Vector Quantization (Kusumadewi, 2004)....... 14
Gambar 3.1 Blok Diagram Penelitian ................................................................... 16
Gambar 3.2 Akuisisi data citra tepung .................................................................. 16
Gambar 3.3 Diagram Alir Proses Cropping Citra................................................. 18
Gambar 3.4 Diagram Alir Proses Grayscale......................................................... 19
Gambar 3.5 Diagram Alir Proses Masking ........................................................... 20
Gambar 3.6 Diagram Alir Proses Wavelet ............................................................ 21
Gambar 3.7 Topologi Jaringan LVQ .................................................................... 24
Gambar 3.8 Diagram Alir dari Learning Vector Quantization ............................. 26
Gambar 3.9 Desain Antar Muka Menu Utama ..................................................... 27
Gambar 3.10 Perancangan Antar Muka Menu Pelatihan ...................................... 27
Gambar 3.11 Perancangan Antar Muka Menu Pengujian ..................................... 28
Gambar 3.12 Perancangan Antar Muka Menu Tentang........................................ 28
Gambar 4.1 Citra Jenis Tepung ............................................................................. 29
Gambar 4.2 Citra Hasil Cropping ......................................................................... 30
Gambar 4.3 Data Citra Hasil Grayscale ............................................................... 30
Gambar 4.4 Data Citra Hasil Masking .................................................................. 31
Gambar 4.5 Data Citra Hasil Tranformasi Wavelet Level 1, 2, dan 3 ................... 31
Gambar 4.6 Kinerja Pelatihan ............................................................................... 65
Gambar 4.7 Jumlah Iterasi Pada Pelatihan ............................................................ 65
Gambar 4.8 Kinerja Pengujian .............................................................................. 66

xv
DAFTAR LAMPIRAN

Lampiran A Biodata Peneliti .............................................................................. xvii


Lampiran B Data Pelatihan ............................................................................... xviii
Lampiran C Data Uji .......................................................................................... xxii
Lampiran D Pengkodean (Coding) ................................................................... xxiv
Lampiran E Antar Muka Perangkat Lunak .................................................... lxxxiv

xvi
BAB I
PENDAHULUAN

1.1 Latar Belakang


Perkembangan teknologi di bidang pangan mengharuskan pihak produsen
untuk bisa memenuhi kebutuhan konsumen. Indonesia merupakan negara agraris
yang mempunyai banyak aneka tanaman yang bisa tumbuh. Mulai tanaman padi,
tebu, kacang, pepohonan, tanaman buah, sayur mayur, dan sebagainya. Dengan
dua musim yang ada di negara ini, yaitu musim hujan dan kemarau, menjadikan
bangsa ini dapat mengembangkan berbagai jenis tanaman pangan.
Konsumsi makanan penduduk Indonesia sangat beragam, dari makanan
pokok, makanan ringan, makanan pendamping, dan lain sebagainya. Sebagai
makanan pokok sebagian besar masyarakat mengkonsumsi nasi/beras, walaupun
di beberapa wilayah ada yang mengkonsumsi ubi, jagung, atau sagu sebagai
makanan pokoknya.
Makanan pokok kedua setelah nasi adalah roti yang dapat dibuat aneka
macam olahan makanan. Ada yang menggabungkannya dengan bahan lainnya
sehingga tercipta roti dengan berbagai rasa. Bahan utama pembuat roti adalah
tepung, ada tepung terigu, tepung maizena, tepung tapioka, tepung sagu, tepung
beras, tepung beras, tepung singkong, dan lain-lain.
Sebagian orang dengan mudah bisa membedakan jenis-jenis tepung tersebut,
dengan cara melihat tekstur tepung. Cara ini pun masih sulit dikarenakan hanya
menggunakan indra perasa (tangan) dan indra penglihatan. Akan tetapi sebagian
besar kesulitan untuk membedakan jenis-jenis tepung, terutama tepung yang
mempunyai ciri warna dan tekstur yang sangat mirip.
Berdasarkan uraian tersebut penulis mengambil penelitian dengan judul
“Identifikasi Tekstur Citra Jenis Tepung Menggunakan Metode Learning
Vector Quantization” dengan harapan bisa mengembangkan aplikasi untuk
mengidentifikasi jenis-jenis tepung.

1
2

1.2 Rumusan Masalah


Pemecahan masalah untuk mengidentifikasi tekstur jenis tepung dengan cara
membuat aplikasi untuk memudahkan mengidentifikasinya. Untuk mewujudkan
aplikasi tersebut ada beberapa langkah rumusan masalahnya:

a. Bagaimana akuisisi citra tepung?


b. Bagaimana pra-proses citra tepung?
c. Bagaimana algoritmanya?
d. Bagaimana ekstraksi ciri tepung?
e. Bagaimana unjuk kerja perangkat lunak LVQ dalam mengidentifikasi tekstur
jenis tepung?

1.3 Batasan Masalah


Bagian ini sangat erat dengan identifikasi masalah yang terjadi di
masyarakat terutama dengan identifikasi jenis tepung. Dengan keterbatasan
peneliti baik waktu, dana dan yang lainnya maka peneliti disini hanya meneliti
identifikasi tekstur jenis tepung beras, tepung gandum, dan tepung tapioka, yang
mempunyai tekstur dan warna yang mirip, agar hasil penelitian lebih fokus dan
meminimalkan kesalahan.

1.4 Tujuan
Penelitian ini bertujuan untuk menghasilkan sebuah aplikasi komputer yang
dapat membantu orang awam membedakan jenis tepung, dan mengidentifikasi
jenis tepung.

1.5 Manfaat
Perangkat lunak identifikasi ini diharapkan dapat meminimalkan kesalahan
dalam mengidentifikasi jenis tepung dengan tingkat keakuratan yang baik.
Dengan aplikasi ini diharapkan bisa membantu orang awam untuk membantu
membedakan jenis tepung beras, gandum, dan tapioka.
BAB II
TINJAUAN PUSTAKA DAN LANDASAN TEORI

2.1 Tinjauan Pustaka


Supatman, (2008) melakukan penelitian untuk memprediksi keaslian produk
bubuk susu dengan menggunakan metode wavelet. Identifikasi awal produk susu
bubuk dilakukan dengan melihat kemasan dan tanggal kedaluwarsa, proses
tersebut lebih mudah dan sederhana. Untuk menentukan keaslian susu bubuk yang
dicampur dengan susu bubuk dari produk lain yaitu dengan tes laboratorium.
Selain kedua teknik tersebut, untuk mengidentifikasi produk susu bubuk adalah
dengan melihat butiran bubuk susu yang dipandang sebagai tekstur dalam citra
digital. sistem mampu mengidentifikasi tiga jenis model perbedaan tekstur bubuk
susu yaitu susu asli 93.94%, susu campuran 93.10% dan susu lain 84.62%.
R. Rizal Isnanto, (2009), melakukan penelitian untuk mengenali seseorang
melalui iris mata dengan menggunakan Tapis Gabor Wavelet dan Jaringan Syaraf
Tiruan Learning Vector Quantization (LVQ). Citra diambil dengan ukuran 200 x
200 piksel untuk data uji dan database pengetahuan. Penelitian ini menggunakan
jarak Euclidian. Keberhasilan sistem dalam identifikasi iris mata dipengaruhi oleh
akuisisi citra dan proses pengolahan awal citra. Akuisisi citra yang tidak tepat, dan
proses pengolahan awal yang buruk menyebabkan sistem tidak mampu mengolah
citra tersebut serta terjadi kesalahan pengenalan citra. Hasil pengujian dengan
perhitungan nilai jarak Euclidean ternyata program dapat mengenali semua berkas
citra yang diujikan. Berdasarkan pengujian diperoleh bahwa program ini memiliki
kinerja keberhasilan sebesar 100%.
Sutarno, (2010), melakukan penelitian untuk mengetahui tingkat
keberhasilan sistem identifikasi citra menggunakan transformasi wavelet,
mengetahui pengaruh transformasi dengan berbagai metode wavelet citra
masukan terhadap unjuk kerja sistem identifikasi citra. Citra untuk pengujian
diambil di lapangan menggunakan kamera digital. Pada pengujian awal proses
transformasi citra masukan menggunakan wavelet Haar hingga level-3. Pada

3
4

proses pengujian selanjutnya transformasi citra masukan akan menggunakan


keluarga wavelet Daubechies (db2) dan Coiflets (coif).
Abdul Fadlil, (2012), melakukan penelitian untuk mengidentifikasi tekstil
berbasis komputer dengan memasukkan informasi dari citra kain ke dalam
komputer. Selanjutnya komputer menerjemahkan serta mengidentifikasi jenis kain
tersebut. Pada pengembangan sistem ini terdiri 2 yaitu tahap penentuan pola
standar referensi dan pengujian. Data yang digunakan sebagai standar referensi
sebanyak 5 sampel untuk masing-masing jenis kain yaitu blacu, finished dan rajut.
Sedangkan untuk pengujian unjuk kerja sistem menggunakan 100 sampel untuk
masing-masing jenis kain. Pengujian unjuk kerja sistem dilakukan dengan
melakukan variasi ukuran citra dan metode matriks jarak. Hasil pengujian sistem
identifikasi citra kain menunjukkan tingkat akurasi yang tinggi sebesar 93% untuk
ukuran citra asli 600x800 dengan metode ekstraksi ciri histogram dan teknik
klasifikasi matriks jarak Squared Chi Squared.
Secara umum konsep yang dipaparkan hampir sama dengan beberapa
penelitian sebelumnya, yang berbeda adalah penelitian ini adalah mengidentifikasi
jenis-jenis tepung menggunakan metode Learning Vector Quantization.

2.2 Landasan Teori


2.2.1 Tepung
Tepung adalah partikel padat yang berbentuk butiran halus atau sangat halus
tergantung proses penggilingannya. Biasanya digunakan untuk keperluan
penelitian, rumah tangga, dan bahan baku industri. Tepung bisa berasal dari bahan
nabati misalnya tepung terigu dari gandum, tapioka dari singkong, maizena dari
jagung atau hewani misalnya tepung tulang dan tepung ikan.
Tepung beras adalah tepung yang dibuat dari beras yang ditumbuk atau
digiling. Tepung beras tidak sama dengan pati beras yang dibuat dengan
merendam beras dalam larutan alkali. Tepung beras merupakan salah satu tepung
yang sering dipakai masayakat Indonesia. Biasanya dipakai untuk membuat
berbagai jenis jajanan pasar. Tepung beras merupakan tepung rendah protein yang
tidak mengandung gluten, yang membuat tepung beras menjadi bahan yang sering
5

digunakan dalam pembuatan makanan (baked goods) yang tanpa gluten (gluten
free). Tepung beras banyak digunakan dalam pembuatan makanan dan kue
tertentu terutama di etnis Timur Tengah dan produk Asia dan salah satunya adalah
Indonesia yang banyak memakai tepung beras dalam pembuatan kue-kue
tradisional yang biasanya bertekstur basa seperti kue lapis. Dalam beberapa tahun
terakhir, tepung beras digunakan dalam beberapa jenis novel food (makanan yang
dimodifikasi) seperti tortilla, minuman, processedmeats, puding, salad dressing,
dan roti bebas gluten.
Tepung terigu/gandum merupakan salah satu bahan makanan yang sangat
dibutuhkan di Indonesia dan terus bertambah konsumsinya dari tahun ke tahun.
tepung terigu adalah butiran halus yang terbuat dari gandum. Konsumsi tepung
tersebar luas dimulai dari Timur Tengah sekitar 10.000 tahun yang lalu, saat
pertanian dimulai. Di saat itu gandum mulai ditanam dan dibudidayakan.
Sekarang ini, ribuan variasi dari terigu berkembang di seluruh dunia. Terigu
adalah jenis tepung yang paling populer dalam pembuatan jenis makanan yang
dipanggang. Popularitasnya terutama berasal dari gluten yang terbentuk ketika
tepung tercampur dengan air. Tanpa gluten, roti susah untuk mengembang. Terigu
juga disukai karna rasanya yang ringan.

Gambar 2.1 Tepung beras, tepung gandum, dan tepung tapioka

Tepung tapioka atau juga sering di sebut tepung kanji atau tepung aci adalah
tepung yang bahan bakunya 100 persen terbuat dari singkong/ubi kayu. Tepung
tapioka/tepung kanji banyak sekali kegunaanya, dalam kehidupan sehari-hari
tepung tapioka/tepung kanji banyak digunakan untuk membuat aneka makanan
ringan, krupuk, adonan kue dan pengenyal makanan seperti bakso, dan lain-lain.
6

Di dunia industri tepung tapioka banyak digunakan untuk bahan dasar pasta gigi,
bahan baku perekat kertas, bahan dasar perekat lem, cat tembok dan masih banyak
lagi.

2.2.2 Citra Digital


Citra adalah gambar dua dimensi yang dihasilkan dari gambar analog dua
dimensi yang continue menjadi gambar diskrit melalui proses sampling. Gambar
analog dibagi menjadi N baris dan M kolom sehingga menjadi gambar diskrit.
Persilangan antara baris dan kolom tertentu disebut dengan piksel. Suatu citra
dapat didefinisikan sebagai fungsi f(x,y) berukuran M baris dan N kolom, dengan
x dan y adalah koordinat spasial, dan amplitudo f di titik koordinat (x,y)
dinamakan intensitas atau tingkat keabuan dari citra pada titik tersebut. Apabila
nilai x,y dan nilai amplitudo f secara keseluruhan berhingga (finite) dan bernilai
diskrit maka dapat dikatakan bahwa citra tersebut adalah citra digital.
Sebuah citra mengandung informasi tentang obyek yang presentasikan,
kemiripan, atau imitasi dari suatu obyek atau benda. Citra dapat dikelompokkan
menjadi citra tampak dan citra tak tampak. Untuk dapat dilihat mata manusia,
citra tidak tampak harus dirubah menjadi citra tampak, misalnya dengan
menampilkannya di monitor, dicetak di kertas dan sebagainya. Salah satu contoh
citra tidak tampak adalah citra digital. citra digital ditunjukkan pada Gambar 2.2.
7

Gambar 2.2 Koordinat Citra Digital (Putra, 2010)

Citra digital agar dapat diolah dengan dengan komputer, maka harus
direpresentasikan secara numerik dengan nilai-nilai diskrit. Representasi citra dari
fungsi malar (kontinu) menjadi nilai-nilai diskrit disebut digitalisasi (Munir,
2004). Ada beberapa tahapan yang dilakukan dalam pembentukan citra digital
yaitu akuisisi citra, sampling dan kuantisasi. Tahapan pertama yaitu proses
akuisisi citra adalah pemetaan suatu pandangan (scene) menjadi citra kontinu
dengan menggunakan sensor. Ada beberapa macam sensor untuk akuisisi citra,
yaitu sensor tunggal, sensor garis dan sensor larik.
Tahap selanjutnya setelah menjadi citra kontinu yaitu proses sampling, yang
merupakan proses untuk menentukan warna pada piksel tertentu pada citra dari
sebuah gambar yang kontinu. Pada proses sampling biasanya dicari warna rata-
rata dari gambar analog yang kemudian dibulatkan. Proses sampling sering juga
disebut proses digitisasi. Kemudian tahap terakhir adalah proses kuantisasi,yang
merupakan perubahan nilai amplitudo kontinu menjadi nilai baru yang berupa
8

nilai diskrit. Nilai amplitudo yang dikuantisasi adalah nilai-nilai pada koordinat
diskrit hasil proses sampling.
Terjadinya proses citra berawal dari sumber cahaya menerangi obyek, obyek
memantulkan kembali sebagian dari berkas cahaya tersebut. Pantulan cahaya ini
ditangkap oleh alat-alat optik, misalnya mata pada manusia, kamera, pemindai
(scanner), dan sebagainya, sehingga bayangan obyek yang disebut citra tersebut
terekam. Seperti yang ditunjukkan pada Gambar 2.3.

Gambar 2.3 Proses Pembentukan Citra (Putra, 2010)


2.2.3 Pra-Proses
Pra-proses adalah proses pengolahan data citra asli sebelum data tersebut
diproses berikutnya. Beberapa pra-proses yang sering digunakan adalah proses
cropping dan proses grayscale (aras keabuan).
Cropping adalah proses pemotongan citra pada koordinat tertentu pada area
citra. Proses ini dilakukan untuk mengambil bagian yang dirasa penting atau
bagian yang mempunyai paling banyak informasi untuk diolah menggunakan
jaringan syaraf tiruan. Selain itu proses ini juga dapat mengubah ukuran citra
menjadi lebih kecil, sehingga akan mempercepat proses komputasi.
Selain dengan melakukan cropping, untuk mempercepat proses komputasi
dapat melakukan proses grayscale. Grayscale adalah warna-warna piksel yang
berada pada rentang gradasi hitam dan putih yang akan menghasilkan efek warna
abu-abu. Pada citra ini warna dinyatakan dengan intensitas, dimana intensitas
berkisar antara 0 sampai dengan 225, dimana 0 dinyatakan warna hitam dan 225
9

dinyatakan warna putih (Kadir & Susanto, 2013). Proses grayscale dilakukan
dengan mengubah citra 3 layer citra yaitu: red, green dan blue (RGB) menjadi
citra 1 layer gray.
Citra dapat diperbaiki kualitasnya dan dapat diperhalus dengan melakukan
beberapa cara, salah satunya adalah dengan menggunakan masking dengan filter
median. Pada filter median, suatu “jendela” (windows) memuat sejumlah piksel
(ganjil). Jendela digeser titik demi titik pada seluruh daerah citra. Pada setiap
pergeseran dibuat jendela baru. Titik tengah dari jendela ini diubah dengan nilai
median dari jendela tersebut (Munir, 2004).

2.2.4 Wavelet
Wavelet diartikan sebagai small wave atau gelombang singkat. Gelombang
singkat tersebut merupakan fungsi basis yang terletak pada waktu berbeda.
Alihragam wavelet merupakan alihragam yang membawa citra (signal) ke versi
pergeseran (shifted) dan penskalaan (scaled) dari gelombang singkat yang asli
(mother wavelet). Alihragam gelombang singkat diskrit dapat dilakukan dengan
suatu pentapisan bertingkat (cascading filter), yang diikuti dengan pencuplikan
(subsampling) dengan pembagian 2 (Putra, 2010).
Transformasi wavelet merupakan perbaikan dari transformasi fourier. Pada
transformasi fourier hanya dapat menentukan frekuensi yang muncul pada satu
sinyal, namun tidak dapat menentukan kapan frekuensi itu muncul. Dengan kata
lain, transformasi fourier tidak memberikan informasi tentang domain waktu (time
domain). Kelemahan lain dari transformasi fourier adalah perubahan sedikit
terhadap sinyal pada posisi tertentu akan berdampak atau mempengaruhi sinyal
pada posisi lainnya. Hal ini disebabkan karena transformasi fourier berbasis sin-
cos yang bersifat periodik dan kontinu.
Proses wavelet selain mampu memberikan informasi frekuensi yang
muncul, juga dapat memberikan informasi tentang skala atau durasi waktu.
Wavelet dapat digunakan untuk menganalisa suatu bentuk gelombang sebagai
kombinasi dari waktu dan frekuensi. Selain itu perubahan sinyal pada suatu posisi
tertentu tidak akan berdampak banyak terhadap sinyal pada posisi-posisi yang
10

lainnya. Dengan wavelet suatu sinyal dapat disimpan lebih efisien dibandingkan
dengan fourier dan lebih baik lagi dalam hal melakukan aproksimasi terhadap
real-word sinyal.
Transformasi wavelet secara konsep memang sederhana. Citra yang semula
ditransformasikan kemudian dibagi (didekomposisi) menjadi 4 sub-image baru
untuk menggantikanya. Setiap sub-image berukuran seperempat kali dari citra
asli. Satu sub-image bagian kiri atas tampak seperti citra asli dan tampak lebih
halus (smooth) karena berisi komponen frekuensi rendah dari citra asli. Berbeda
dengan 3 sub-image yang lain tampak lebih kasar kerena berisi komponen
frekuensi tinggi dari citra asli. Sub-image tersebut dapat dibagi lagi menjadi 4 sub-
image baru. Proses demikian dapat diulang seterusnya sesuai dengan level
(tingkatan) proses transformasi yang diinginkan. Untuk lebih jelasnya contoh
wavelet level 2 ditunjukkan pada Gambar 2.4.

Gambar 2.4 Contoh Transformasi Wavelet Level 2 (Putra, 2010)

Proses transformasi wavelet dilakukan pada baris terlebih dulu, kemudian


dilanjutkan transformasi pada kolom. Untuk melihat gambar bagan transformasi
wavelet ditunjukkan pada Gambar 2.5.
11

Gambar 2.5 Transformasi Wavelet (Putra, 2010)

H dan L berturut-turut menyatakan tapis yang meneruskan frekuensi tinggi


(high pass) dan tapis yang meneruskan frekuensi rendah (low pass) 2 menyatakan
pencuplikan dengan pembagian 2. Pada Gambar 2.5 LL menyatakan bagian
koefisien yang diperoleh melalui proses tapis low pass dilanjutkan dengan low
pass. Citra bagian ini mirip dan merupakan versi lebih halus dari citra aslinya
sehingga koefisien pasa bagian LL sering disebut dengan komponen aproksimasi.
LH menyatakan bagian koefisien yang diperoleh melalui proses tapis low pass
kemudian dilanjutkan dengan high pass. Koefisien pada bagian ini menunjukkan
citra tepi dalam arah horisontal. Bagian HL diperoleh dari proses tapis high pass
kemudian dilanjutkan dengan low pass. Koefisien pada bagian ini menunjukkan
citra tepi dalam arah vertikal. Bagian HH menunjukkan proses tapis yang diawal
dengan high pass kemudian dilanjutkan dengan high pass. Koefisien pada bagian
ini menunjukkan citra tepi dalam arah diagonal. Ketiga komponen LH, HL dan
HH disebut juga komponen detail. Hasil transformasi wavelet level 1, sering
dibuat dalam bentuk skema seperti pada Gambar 2.6 sebagai berikut.
12

Gambar 2.6 Skema Transformasi Wavelet (Putra, 2010)

2.2.5 Jaringan Syaraf Tiruan


Jaringan syaraf tiruan (neural network) adalah sebuah alat pemodelan data
statistik nonlinier. Neural network dapat digunakan untuk memodelkan hubungan
yang kompleks antara input dan output untuk menemukan pola-pola pada data
(Widodo, 2005).
Neural network sebenarnya mengadopsi dari kemampuan otak manusia
yang mampu memberikan stimulasi/rangsangan, melakukan proses, dan
memberikan output. Output diperoleh dari variasi stimulasi dan proses yang
terjadi di dalam otak manusia. Kemampuan manusia dalam memproses informasi
merupakan hasil kompleksitas proses di dalam otak. Misalnya, yang terjadi pada
anak-anak, mereka mampu belajar untuk melakukan pengenalan meskipun mereka
tidak mengetahui algoritma apa yang digunakan. Kekuatan komputasi yang luar
biasa dari otak manusia ini merupakan sebuah keunggulan di dalam kajian ilmu
pengetahuan.
Terdapat two layer network dalam jaringan syaraf tiruan, yang disebut
sebagai perceptron (Siang, 2005). Perceptron memungkinkan untuk pekerjaan
klasifikasi pembelajaran tertentu dengan penambahan bobot pada setiap koneksi
antar network. Untuk lebih jelasnya ditunjukkan pada Gambar 2.7.

Gambar 2.7 Perceptron (Siang, 2005)


13

Keberhasilan perceptron dalam pengklasifikasian pola tertentu ini tidak


sepenuhnya sempurna, masih ditemukan juga beberapa keterbatasan di dalamnya.
Perceptron tidak mampu untuk menyelesaikan permasalahan XOR (exclusive-
OR). Namun demikian, perceptron berhasil menjadi sebuah dasar untuk
penelitian-penelitian selanjutnya di bidang neural network. Saat ini neural
network dapat diterapkan pada beberapa task, diantaranya classification,
recognition, approximation, prediction, clusterization, memory simulation dan
banyak task-task berbeda yang lainnya, dimana jumlahnya semakin bertambah
seiring berjalannya waktu.
Learning Vector Quantization (LVQ) merupakan salah satu terapan dari
neural network. LVQ melakukan proses pemetaan vektor yang berjumlah banyak
menjadi vektor dengan jumlah tertentu (Kusumadewi, 2004). Pada pengenalan
citra, berupa vektor ciri dari masing-masing citra, yang diperoleh dari proses
ekstraksi ciri. Untuk lebih jelasnya ditunjukkan pada Gambar 2.8.

Gambar 2.8 Jaringan Syaraf Tiruan (Kusumadewi, 2004)

2.2.6 Learning Vector Quantization


Learning Vector Quantization adalah suatu metode untuk melakukan
pembelajaran pada lapisan kompetitif yang terawasi. Suatu lapisan kompetitif
akan secara otomatis belajar untuk mengklasifikasikan vektor-vektor input. Kelas-
kelas yang didapatkan sebagai hasil dari lapisan kompetitif ini hanya tergantung
pada jarak antara vektor-vektor input. Jika dua vektor input mendekati sama,
14

maka lapisan kompetitif akan meletakkan kedua vektor input tersebut ke dalam
kelas yang sama (Kusumadewi, 2003).
Dalam hal ini diberikan sehimpunan pola yang klasifikasinya diketahui
diberikan bersama distribusi awal vektor referensi. Setelah pelatihan jaringan
LVQ mengklasifikasikan vektor masukan dalam kelas yang sama dengan unit
keluaran yang memiliki vektor bobot (referensi) yang paling dekat dengan vektor
masukan. Arsitektur dari LVQ ditunjukkan pada Gambar 2.9.

Gambar 2.9 Arsitektur Learning Vector Quantization (Kusumadewi, 2004)

Keterangan:
X = Vektor masukan (X1, X2, ..., Xn)
F = Lapisan Kompetitif
y_in = Masukan lapisan kompetitif
y = Keluaran
W = Vektor bobot untuk unit keluaran
||X-W|| = Selisih nilai jarak Euclidean antara vektor input
BAB III
METODOLOGI

3.1 Bahan Penelitian


Bahan atau obyek citra yang digunakan dalam melakukan penelitian ini
adalah citra tepung beras, tepung gandum, dan tepung tapioka. Dari citra tersebut
kemudian dilakukan ekstraksi fitur dari citra.

3.2 Alat Penelitian


Alat yang digunakan dalam melakukan penelitian ini adalah sebuah kamera
dan satu set komputer dengan spesifikasi yang ditunjukan pada Tabel 3.1.

Tabel 3.1 Alat Penelitian


No Nama Keterangan

1 Kamera Digital Fujifilm finePix S4300

2 Processor Intel core i3-321M CPU @ 2.1


GHz

3 Memory DDR3 4 GB

4 Sistem Operasi Windows 7 Home Premiun 32 bit

5 Aplikasi Matlab Versi 2009a

3.3 Jalan Penelitian


Jalan penelitian identifikasi tekstur jenis tepung merupakan serangkaian
proses yang dilakukan dalam penelitian. Mulai studi kepustakaan yang
menemukan masalah yaitu banyak masyarakat yang tidak mengetahui cara untuk
membedakan jenis tepung beras, tepung terigu dan tepung tapioka, sehingga untuk
membantu mengenali jenis tepung maka dimulai dengan mencari studi
kepustakaan untuk mendukung pemecahan masalah tersebut. Setelah melakukan
studi kepustakaan selanjutnya adalah mengembangkan sebuah perangkat lunak

15
16

yang dapat mengidentifikasi jenis tepung, yang dimulai dari akuisisi data, sampai
dengan output yang dikeluarkan oleh sistem. Untuk lebih jelasnya jalan dari
penelitian ditunjukkan pada Gambar 3.1.

Gambar 3.1 Blok Diagram Penelitian

3.3.1 Akuisisi Data


Akuisisi data merupakan tahapan awal yang dilakukan dalam
pengidentifikasian citra tepung. Alat yang digunakan berupa kamera Fujifilm
FinePix S4300. Data citra tepung yang diambil (capture) diupayakan memiliki
pencahayaan yang normal dan jarak pengambilan yang sama. Alur dari akuisisi
data ditunjukkan pada Gambar 3.2.

Gambar 3.2 Akuisisi data citra tepung


17

3.3.2 Data
Tahap selanjutnya dari proses akuisisi data yang dilakukan maka akan
dihasilkan data berupa citra jenis tepung. Citra ini selanjutnya akan dilakukan
pemrosesan pada tahap berikutnya.

3.3.3 Pra-Proses
Tahapan pra-proses ini meliputi cropping, grayscale dan masking.
Cropping merupakan teknik pemotongan gambar yang digunakan untuk
menentukan secara tepat bagian yang ingin dipotong dan diolah. Fungsi cropping
pada gambar yaitu dapat menghilangkan bagian gambar yang dirasa tidak
dipentingkan atau tidak sesuai dengan pesan yang disampaikan (point of interest)
dalam pengolahan citra. Pada proses cropping dilakukan untuk memotong ukuran
citra menjadi 1000x1000 piksel. Sehingga akan mempercepat proses komputasi
pada tahap selanjutnya. Proses cropping ditunjukkan pada Gambar 3.3.
18

Gambar 3.3 Diagram Alir Proses Cropping Citra

Keterangan:
citra input : citra yang dihasikan dari proses akuisisi
baris : banyaknya piksel baris
kolom : banyaknya piksel kolom
layer : layer RGB pada citra input
citra crop : citra yang sudah diproses cropping
19

Setelah citra dipotong, proses selanjutnya adalah dengan mengubah citra


dari tiga layer menjadi satu layer gray. Proses dari grayscale ditunjukkan pada
Gambar 3.4.

Gambar 3.4 Diagram Alir Proses Grayscale


Keterangan:
Citra crop : Citra yang didapat dari proses crop
Layer R : Layer merah dari citra crop
Layer G : Layer hijau dari citra crop
Layer B : Layer biru dari citra crop
baris : banyaknya piksel baris dari citra crop
kolom : banyaknya piksel kolom dari citra crop
citra gray : citra yang dihasilkan dari proses grayscale
20

Selanjutnya agar citra semakin halus dan noise yang terdapat pada citra
gray hilang maka dilakukan masking atau pemberian filter. Filter yang dipakai
adalah median filter. Proses dari filter median ditunjukkan pada Gambar 3.5.

Gambar 3.5 Diagram Alir Proses Masking

Keterangan:
citra gray : citra yang didapat dari proses grayscale
baris : banyaknya piksel baris dari citra gray
kolom : banyaknya piksel kolom dari cita gray
gray(x,y) : matriks 3x3 yang didapat dari citra masking
urutan(x,y) : mengurutkan matriks 3x3 menjadi vector baris
citra masking : citra yang dihasilkan dari proses masking
21

3.3.4 Wavelet
Setelah dilakukan pra-proses tahap berikutnya adalah transformasi
wavelet. Citra yang sudah menjadi grayscale ditransformasikan yang kemudian
dibagi menjadi 4 sub-image baru yaitu citra approximation (CA), citra horizontal
(CH), citra vertical (CV) dan citra diagonal (CD) untuk menggantikanya. Setiap
sub-image berukuran seperempat kali dari citra asli. Diagram alir dari
transformasi wavelet ditunjukkan pada Gambar 3.6.

Gambar 3.6 Diagram Alir Proses Wavelet

Keteragan:
citra masking : citra yang didapat dari proses masking
baris : banyaknya piksel baris dari citra masking
kolom : banyaknya piksel kolom dari citra masking
ca : citra approximation
ch : citra horizontal
cv : citra vertical
cd : citra diagonal
22

3.3.5 Ekstraksi Ciri


Ekstraksi ciri (feature extraction) merupakan langkah awal dalam
melakukan klasifikasi dan pengenalan citra. Proses ini berkaitan dengan kuantisasi
karakteristik citra ke dalam sekelompok nilai ciri yang sesuai. Sehingga
mendapatkan informasi kuantitatif dari ciri yang dapat membedakan kelas-kelas
suatu obyek. Dalam penelitian ini menggunakan 6 ciri yaitu mean (rerata), standar
deviasi (std) dan entropi yang diambil dari CA dan CH wavelet level 3.
Mean adalah nilai rata-rata dari beberapa buah data. Nilai mean dapat
ditentukan dengan membagi jumlah data dengan banyaknya data. Rumus untuk
mencari mean sebagai berikut:

∑𝑁
𝑖=1 𝑋1
𝜇= ........................................... (3.1)
𝑁

Keterangan:
µ : rata-rata
N : banyaknya data
X : jumlah data

Standar deviasi adalah nilai statistik yang digunakan untuk menentukan


bagaimana sebaran data dalam sampel, dan seberapa dekat titik data ke mean atau
rata-rata nilai sampel. Rumus untuk mencari standar deviasi sebagai berikut:

𝑛
∑ (𝑋 −𝑋) ̅ 2
𝜎 = √ 𝑖=1 𝑖 ........................................ (3.2)
𝑛−1

Keterangan:
𝜎 : standar deviasi
Xi : nilai x ke-i
𝑋̅ : rata-rata (mean)
n : jumlah data
23

Nilai entropi menunjukkan keteracakan distribusi derajat keabuan suatu


citra. Semakin acak distribusi derajat keabuannya, semakin tinggi nilai entropi
yang dihasilkan. Menghitung nilai Entropi dengan persamaan sebagai berikut:

𝐻 = − ∑𝑛𝑖=1 𝑝(𝑋𝑖) log 2 𝑃(𝑋𝑖) ……….……. (3.3)

Keterangan:
H : entropi
n : banyaknya data
X : jumlah data

3.3.6 Fitur Vector


Setelah melakukan ekstraksi ciri dari citra tepung maka akan diperoleh
sebuah ciri dalam bentuk vektor. Ciri tersebut kemudian disimpan dalam database
yang digunakan sebagai acuan untuk proses pelatihan. Dari proses pelatihan akan
diperoleh bobot akhir. Pengenalan data uji dilakukan dengan membandingkan
bobot akhir dengan ciri data uji, kemudian mencari jarak terdekat untuk
menentukan kelasnya.

3.3.7 Learning Vector Quantization


Learning Vector Quantization adalah sebuah metode klasifikasi dimana
setiap unit output mempresentasikan sebuah kelas. Learning Vector Quantization
digunakan untuk pengelompokan, dimana jumlah kelompok sudah ditentukan
arsitekturnya (target/kelas sudah ditentukan). Sehingga dapat melakukan proses
identifikasi untuk mengetahui jenis tepung beras, tepung gandum dan tepung
tapioka. Berikut adalah topologi jaringan LVQ yang ditunjukkan pada Gambar
3.7.
24

Gambar 3.7 Topologi Jaringan LVQ

Keterangan:
X : Vekor input
W : Bobot awal
y : Output

Berdasarkan topologi jaringan tersebut, LVQ melakukan pembelajaran pada


lapisan kompetitif yang terawasi. Lapisan kompetitif akan secara otomatis belajar
untuk mengklasifikasikan vektor-vektor input. Kelas-kelas yang didapat sebagai
hasil dari lapisan kompetitif ini hanya tergantung pada jarak antara vektor-vektor
input. Jika vektor input mendekati sama maka lapisan kompetitif akan
mengklasifikasikan kedua vektor input tersebut ke dalam kelas yang sama.
Dalam pengenalan jenis tepung, sistem sudah mengetahui bentuk atau fitur
jenis tepung tertentu, dan LVQ digunakan untuk mengenali dengan
mengklasifikasi fitur jenis tepung tersebut (identifikasi/verifikasi). Diagram alir
dari LVQ ditunjukkan pada Gambar 3.8.
25
26

Gambar 3.8 Diagram Alir dari Learning Vector Quantization

Keterangan:
W(lama) : bobot awal
W(baru) : bobot akhir
m,n : baris dan kolom matriks data pelatihan
m1,n1 : baris dan kolom matriks bobot awal
idx : jarak terdekat
27

3.3.8 Perancangan Antarmuka Perangkat Lunak


Desain perancangan antarmuka dari perangkat lunak identifikasi jenis
tepung terdapat 4 menu yaitu menu utama, menu pelatihan, menu pengujian,
menu tentang, dan menu keluar. Perancangan dari antar muka menu utama
ditunjukkan pada Gambar 3.9.

Gambar 3.9 Desain Antar Muka Menu Utama

Desain perancangan antar muka pada menu pelatihan ditunjukkan pada


Gambar 3.10.

Gambar 3.10 Perancangan Antar Muka Menu Pelatihan


28

Desain untuk perancangan antar muka pada menu pengujian yang


ditunjukkan pada Gambar 3.11.

Gambar 3.11 Perancangan Antar Muka Menu Pengujian

Desain untuk perancangan antar muka pada menu tentang yang


ditunjukkan pada Gambar 3.12.

Gambar 3.12 Perancangan Antar Muka Menu Tentang


BAB IV
ANALISIS DAN PEMBAHASAN

4.1 Hasil Penelitian


Hasil penelitian yang telah dilakukan dalam proses identifikasi jenis tepung
untuk mengetahui tepung beras, tepung gandum dan tepung tapioka,
menggunakan 90 citra tepung, dengan rincian 60 citra dijadikan sebagai data
pelatihan dan 30 citra dijadikan sebagai data uji. Sedangkan untuk target/kelas
terdapat tiga kelas, yaitu tepung beras, tepung gandum dan tepung tapioka.
Metode yang digunakan dalam penelitian ini untuk mengidentifikasi jenis tepung
menggunakan jaringan syaraf tiruan Learning Vector Quantification (LVQ).

4.1.1 Akuisisi Data Citra


Citra diambil menggunakan kamera digital. Citra yang diambil adalah citra
tepung beras, tepung gandum dan tepung tapioka. Hasil akuisisi berupa citra
digital dengan format .jpg dipindakan ke komputer untuk dijadikan data dalam
penelitian. Contoh citra tepung dalam penelitian ditunjukkan pada Gambar 4.1.

Tepung Beras Tepung Gandum Tepung Tapioka

Gambar 4.1 Citra Jenis Tepung

29
30

4.1.2 Pra-Proses
Tahap selanjutnya adalah pra-proses dan tahap ini dilakukan beberapa
tahapan, yaitu cropping, grayscale dan masking. Cropping dilakukan agar area
data citra yang diproses menjadi lebih spesifik. Data citra di-cropping dengan
dimensi 1000x1000 piksel. Contoh data citra yang sudah diproses cropping
ditunjukkan pada Gambar 4.2.

Tepung Beras Tepung Gandum Tepung Tapioka

Gambar 4.2 Citra Hasil Cropping

Proses selanjutnya mengubah data citra ke grayscale dengan membagi


citra tiga layer RGB menjadi satu layer gray. Data citra gray ditunjukkan pada
Gambar 4.3.

Tepung Beras Tepung Gandum Tepung Tapioka

Gambar 4.3 Data Citra Hasil Grayscale


31

Proses terakhir dalam pra-proses ini adalah masking, yaitu dengan memberi
filter pada citra gray agar citra semakin halus dan derau yang terdapat pada citra
hilang. Gambar 4.4 menunjukkan data citra gray yang diberi filter median.

Tepung Beras Tepung Gandum Tepung Tapioka

Gambar 4.4 Data Citra Hasil Masking

4.1.3 Wavelet
Proses selanjutnya data citra diolah dengan algoritma wavelet. Wavelet
yang digunakan level 1, level 2, dan level 3. Data citra setelah melalui pra-proses
dibagi menjadi 4 yaitu CA (Coefficients Approximation), CH (Coefficients
Horizontal), CV (Coefficients Vertical) dan CD (Coefficients Diagonal) level 1.
Kemudian diproses wavelet level 2, citra CA dari level 1 dibagi lagi menjadi CA,
CH, CV, dan CD. Pada wavelet level 3 caranya seperti pada level 2 dengan
mengambil CA level 2 kemudian dibagi menjadi CA, CH, CV dan CD. Data citra
setelah dilakukan proses wavelet ditunjukkan pada Gambar 4.5.

Gambar 4.5 Data Citra Hasil Tranformasi Wavelet Level 1, 2, dan 3


32

4.1.4 Ekstraksi Ciri


Data citra yang sudah diproses wavelet kemudian dilakukan ekstraksi
berdasrkan ciri statistik menggunakan mean, standard deviation (std) dan entropi
pada citra CA dan CH level 3. Semua ciri dimasukkan ke dalam matriks yang
berdimensi 1x6, dan disimpan sebagai ciri dari data citra tersebut. Berikut ini hasil
ekstraksi ciri 60 data citra yang terdapat dalam data pelatihan pada Tabel 4.1.

Tabel 4.1 Hasil Ekstraksi Ciri Data Pelatihan

No Data Meanca3 Stdca3 Entca3 Meanch3 Stdch3 Entch3


1 b01 0.9601 0.0249 45.402 0.6788 0.0207 44.011
2 b02 0.9632 0.0231 44.262 0.6808 0.0194 43.034
3 b03 0.9631 0.0234 44.419 0.6810 0.0195 43.016
4 b04 0.9649 0.0249 44.573 0.6820 0.0212 44.273
5 b05 0.9688 0.0237 43.509 0.6848 0.0200 43.447
6 b06 0.9676 0.0232 43.571 0.6841 0.0191 42.938
7 b07 0.9703 0.0208 42.175 0.6859 0.0174 41.588
8 b08 0.9665 0.0316 45.690 0.6833 0.0240 45.958
9 b09 0.9420 0.0201 43.929 0.6660 0.0172 41.630
10 b10 0.9751 0.0220 41.241 0.6894 0.0167 40.874
11 b11 0.9623 0.0202 43.047 0.6802 0.0171 41.635
12 b12 0.9611 0.0196 42.830 0.6795 0.0165 41.145
13 b13 0.9742 0.0251 42.270 0.6888 0.0193 42.821
14 b14 0.9634 0.0218 43.652 0.6811 0.0186 42.858
15 b15 0.9614 0.0203 43.240 0.6795 0.0175 41.976
16 b16 0.9642 0.0204 42.890 0.6816 0.0173 41.875
17 b17 0.9600 0.0212 43.809 0.6786 0.0179 42.354
18 b18 0.9524 0.0242 45.966 0.6733 0.0203 44.033
19 b19 0.9231 0.0238 46.389 0.6525 0.0202 43.980
20 b20 0.9680 0.0231 43.413 0.6843 0.0194 43.295
21 g01 0.9797 0.0404 40.188 0.6924 0.0325 50.293
22 g02 0.9773 0.0378 41.337 0.6908 0.0310 49.666
23 g03 0.9774 0.0364 41.254 0.6908 0.0299 49.234
24 g04 0.9765 0.0424 41.745 0.6902 0.0341 50.988
25 g05 0.9818 0.0390 39.035 0.6938 0.0321 50.036
26 g06 0.9825 0.0395 38.630 0.6943 0.0326 50.298
27 g07 0.9837 0.0344 38.043 0.6953 0.0287 48.576
33

Tabel 4.1 Hasil Ekstraksi Ciri Data Pelatihan (Lanjutan)


No Data Meanca3 Stdca3 Entca3 Meanch3 Stdch3 Entch3
28 g08 0.9874 0.0413 36.082 0.6980 0.0335 50.603
29 g09 0.9861 0.0424 36.721 0.6971 0.0338 50.619
30 g10 0.9815 0.0393 39.506 0.6938 0.0317 50.000
31 g11 0.9748 0.0330 42.532 0.6892 0.0269 47.635
32 g12 0.9736 0.0353 43.038 0.6882 0.0273 48.005
33 g13 0.9700 0.0431 44.370 0.6855 0.0343 51.085
34 g14 0.9695 0.0386 44.743 0.6854 0.0307 49.229
35 g15 0.9710 0.0372 44.202 0.6863 0.0299 48.861
36 g16 0.9731 0.0380 43.426 0.6879 0.0298 49.114
37 g17 0.9767 0.0353 41.651 0.6904 0.0284 48.308
38 g18 0.9764 0.0361 41.785 0.6902 0.0286 48.443
39 g19 0.9729 0.0338 43.546 0.6877 0.0275 47.985
40 g20 0.9737 0.0330 43.141 0.6882 0.0270 47.811
41 t01 0.9843 0.0236 37.395 0.6959 0.0176 41.526
42 t02 0.9816 0.0205 37.993 0.6940 0.0153 39.430
43 t03 0.9704 0.0215 41.750 0.6860 0.0166 39.677
44 t04 0.9745 0.0207 40.305 0.6890 0.0160 39.005
45 t05 0.9758 0.0242 40.666 0.6898 0.0186 41.512
46 t06 0.9793 0.0185 38.759 0.6923 0.0151 39.335
47 t07 0.9776 0.0215 40.087 0.6912 0.0172 41.077
48 t08 0.9761 0.0212 40.404 0.6901 0.0165 40.630
49 t09 0.9759 0.0207 40.485 0.6900 0.0161 40.075
50 t10 0.9746 0.0206 40.877 0.6890 0.0161 40.071
51 t11 0.9709 0.0183 40.711 0.6865 0.0144 38.698
52 t12 0.9746 0.0192 40.520 0.6890 0.0150 39.345
53 t13 0.9734 0.0202 41.289 0.6883 0.0157 40.000
54 t14 0.9751 0.0180 39.974 0.6895 0.0140 38.299
55 t15 0.9749 0.0212 41.334 0.6892 0.0164 40.438
56 t16 0.9763 0.0179 39.611 0.6903 0.0139 38.204
57 t17 0.9774 0.0235 40.981 0.6910 0.0182 41.820
58 t18 0.9786 0.0208 39.791 0.6919 0.0157 39.335
59 t19 0.9790 0.0198 39.231 0.6922 0.0150 39.063
60 t20 0.9796 0.0217 39.563 0.6926 0.0163 40.078
34

Hasil proses ekstraksi ciri dari 30 citra yang terdapat dalam data uji
ditunjukkan pada Tabel 4.2.

Tabel 4.2 Hasil Ekstraksi Ciri Data Uji

No Data Uji Meanca3 Stdca3 Entca3 Meanch3 Stdch3 Entch3


1 uji_b01 0.9749 0.0225 41.363 0.6893 0.0171 41.225
2 uji_b02 0.9743 0.0238 41.935 0.6888 0.0184 42.123
3 uji_b03 0.9758 0.0210 40.995 0.6898 0.0162 40.656
4 uji_b04 0.9632 0.0231 44.262 0.6808 0.0194 43.034
5 uji_b05 0.9632 0.0231 44.262 0.6808 0.0194 43.034
6 uji_b06 0.9709 0.0213 42.301 0.6862 0.0184 42.633
7 uji_b07 0.9656 0.0234 43.559 0.6825 0.0201 43.673
8 uji_b08 0.9695 0.0220 42.532 0.6855 0.0193 43.275
9 uji_b09 0.9738 0.0178 39.901 0.6884 0.0148 39.321
10 uji_b10 0.9708 0.0247 42.968 0.6864 0.0216 44.817
11 uji_g01 0.9755 0.0399 42.112 0.6894 0.0329 50.171
12 uji_g02 0.9745 0.0385 42.640 0.6886 0.0322 50.025
13 uji_g03 0.9694 0.0431 44.690 0.6851 0.0347 51.094
14 uji_g04 0.9570 0.0381 48.667 0.6764 0.0313 49.842
15 uji_g05 0.9715 0.0386 43.874 0.6866 0.0315 49.901
16 uji_g06 0.9477 0.0371 50.526 0.6699 0.0300 49.285
17 uji_g07 0.9671 0.0390 45.604 0.6836 0.0318 50.042
18 uji_g08 0.9676 0.0398 45.435 0.6839 0.0325 50.334
19 uji_g09 0.9671 0.0404 45.546 0.6832 0.0329 50.490
20 uji_g10 0.9594 0.0384 48.137 0.6782 0.0308 49.548
21 uji_t01 0.9843 0.0236 37.395 0.6959 0.0176 41.526
22 uji_t02 0.9816 0.0205 37.993 0.6940 0.0153 39.430
23 uji_t03 0.9859 0.0182 35.476 0.6971 0.0131 37.348
24 uji_t04 0.9742 0.0230 41.348 0.6888 0.0183 41.389
25 uji_t05 0.9819 0.0272 39.141 0.6943 0.0210 43.768
26 uji_t06 0.9836 0.0283 38.402 0.6954 0.0218 44.326
27 uji_t07 0.9766 0.0284 41.760 0.6905 0.0225 44.321
28 uji_t08 0.9826 0.0272 38.933 0.6947 0.0215 43.683
29 uji_t09 0.9840 0.0283 38.149 0.6958 0.0225 44.672
30 uji_t10 0.9785 0.0277 40.227 0.6917 0.0216 41.952
35

4.1.5 Learning Vector Quantization


Proses pelatihan pada jaringan Learning Vector Quantization (LVQ)
menggunakan parameter untuk mengetahui persentase keberhasilan tertinggi.
Pelatihan dilakukan untuk mencari bobot akhir yang digunakan dalam proses
pengujian. Parameter LVQ dalam pelatihan ditunjukkan pada Tabel 4.3.

Tabel 4.3 Parameter LVQ

Parameter Nilai
Jumlah Data Pelatihan 60
Jumlah Data uji 30
Jumlah Pola Target 3
Variasi Laju Pelatihan (α) 0,1; 0,01; 0,001;
Update Laju Pelatihan α = α-α (dec α)
Variasi Penurunan Laju Pelatihan (dec α) 0,1; 0,25; 0,5; 0,75
Minimum Laju Pelatihan yang Diharapkan 0,00001
Maksimum Iterasi 1000

Proses selanjutnya melakukan pelatihan dengan menggunakan parameter


tersebut. Pada penelitian ini seluruh data citra pelatihan sebanyak 60 data. Untuk
data yang digunakan sebagai bobot awal adalah data yang mewakili masing-
masing kelas (target), data tersebut diambil secara acak pada masing-masing kelas
pada data yang ada. Bobot awal yang digunakan dalam penelitian ini ditunjukkan
pada Tabel 4.4.

Tabel 4.4 Bobot Awal

No Data Meanca3 Stdca3 Entca3 Meanch3 Stdch3 Entch3


1 b11 0.9623 0.0202 43.047 0.6802 0.0171 41.635
2 g11 0.9748 0.0330 42.532 0.6892 0.0269 47.635
3 t11 0.9709 0.0183 40.711 0.6865 0.0144 38.698
36

Tabel 4.4 menunjukkan bobot yang pertama untuk kelas 1 menerangkan


sebagai kategori jenis tepung beras, yang kedua untuk kelas 2 menerangkan
sebagai kategori tepung gandum, dan yang ketiga untuk kelas 3 menerangkan
sebagai kategori tepung tapioka.

4.1.6 Unjuk Kerja


Unjuk kerja data pelatihan dimaksudkan untuk mengetahui seberapa akurat
database yang telah dibuat, terhadap data citra uji pelatihan yang akan dijadikan
proses pengujian pelatihan. Setelah ciri data pelatihan dijadikan database dan
bobot awal sudah ditentukan, proses selanjutnya adalah melakukan pelatihan
menggunakan data pelatihan. Dalam menentukan hasil kinerja identifikasinya bisa
dilakukan dengan mengubah parameter laju pelatihan awal (alfa) dan penurunan
laju pelatihan (decalfa). Untuk target ada 3 kelas, nilai minimum laju pelatihan
(min alfa) adalah 0,001, dan maksimal iterasi (epoch) nilainya 1000.
Kinerja dari pelatihan identifikasi citra jenis tepung dengan menggunakan
ciri statistik dan jaringan LVQ seperti ditunjukkan pada Tabel 4.5.

Tabel 4.5 Unjuk Kerja Identifikasi Jenis Tepung


Unjuk Kerja
Penurunan Laju Laju Pelatihan
Iterasi ke- Pengenalan (%)
Pelatihan (dec α) Awal (α)
komulatif
0,1 0,1 88 98,33%
0,01 66 98,33%
0,001 44 95,00%
0,25 0,1 33 98,33%
0,01 25 98,33%
0,001 17 93,33%
0,5 0,1 14 98,33%
0,01 10 96,66%
0,001 7 95,00%
0,75 0,1 7 98,33%
0,01 5 96,66%
0,001 4 95,00%
37

Tabel 4.5 menunjukkan hasil unjuk kerja citra pelatihan dengan


penambahan parameter yang terdapat pada Tabel 4.3. Persentase diperoleh dengan
memakai rumus:

𝑐𝑖𝑡𝑟𝑎 𝑦𝑎𝑛𝑔 𝑑𝑖𝑘𝑒𝑛𝑎𝑙𝑖


𝑃𝑒𝑟𝑠𝑒𝑛𝑡𝑎𝑠𝑒 = 𝑗𝑢𝑚𝑙𝑎ℎ 𝑠𝑒𝑙𝑢𝑟𝑢ℎ 𝑑𝑎𝑡𝑎 𝑥100% .................................. (4.1)

Tabel 4.5 menunjukkan terdapat 6 persentase keberhasilan tertinggi yaitu


98,33%. Dari alfa dan dec alfa tersebut kemudian menghasilkan bobot akhir yang
digunakan untuk pengujian. Pengujian dilakukan dengan mencari jarak terdekat
antara bobot akhir dengan data uji untuk menentukan kelasnya. Pelatihan
menggunakan alfa 0,1 dan dec alfa 0,1 untuk data pelatihan dapat dilihat pada
Tabel 4.6.

Tabel 4.6 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,1

No Data Iterasi Target Hasil (T) Keterangan


1 b01 88 1 1 benar
2 b02 88 1 1 benar
3 b03 88 1 1 benar
4 b04 88 1 1 benar
5 b05 88 1 1 benar
6 b06 88 1 1 benar
7 b07 88 1 1 benar
8 b08 88 1 1 benar
9 b09 88 1 1 benar
10 b10 88 1 3 salah
11 b11 88 1 1 benar
12 b12 88 1 1 benar
13 b13 88 1 1 benar
14 b14 88 1 1 benar
15 b15 88 1 1 benar
16 b16 88 1 1 benar
17 b17 88 1 1 benar
18 b18 88 1 1 benar
38

Tabel 4.6 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,1 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
19 b19 88 1 1 benar
20 b20 88 1 1 benar
21 g01 88 2 2 benar
22 g02 88 2 2 benar
23 g03 88 2 2 benar
24 g04 88 2 2 benar
25 g05 88 2 2 benar
26 g06 88 2 2 benar
27 g07 88 2 2 benar
28 g08 88 2 2 benar
29 g09 88 2 2 benar
30 g10 88 2 2 benar
31 g11 88 2 2 benar
32 g12 88 2 2 benar
33 g13 88 2 2 benar
34 g14 88 2 2 benar
35 g15 88 2 2 benar
36 g16 88 2 2 benar
37 g17 88 2 2 benar
38 g18 88 2 2 benar
39 g19 88 2 2 benar
40 g20 88 2 2 benar
41 t01 88 3 3 benar
42 t02 88 3 3 benar
43 t03 88 3 3 benar
44 t04 88 3 3 benar
45 t05 88 3 3 benar
46 t06 88 3 3 benar
47 t07 88 3 3 benar
48 t08 88 3 3 benar
49 t09 88 3 3 benar
50 t10 88 3 3 benar
51 t11 88 3 3 benar
39

Tabel 4.6 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,1 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
52 t12 88 3 3 benar
53 t13 88 3 3 benar
54 t14 88 3 3 benar
55 t15 88 3 3 benar
56 t16 88 3 3 benar
57 t17 88 3 3 benar
58 t18 88 3 3 benar
59 t19 88 3 3 benar
60 t20 88 3 3 benar
Persentase Keberhasilan Data Pelatihan 98,33%

Berdasarkan Tabel 4.6 pengenalan data pelatihan mencapai 98,33% tingkat


akurasinya dengan nilai alfa 0,1 dan dec alfa 0,1 dengan iterasi ke-88. Untuk
masing-masing kelas tingkat akurasi mencapai 95% untuk kelas 1, 100% untuk
kelas 2, dan 100% untuk kelas 3.
Pada Tabel 4.7 menunjukkan hasil pelatihan menggunakan alfa 0,01 dan
dec alfa 0,1 untuk data pelatihan.

Tabel 4.7 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,01
No Data Iterasi Target Hasil (T) Keterangan
1 b01 66 1 1 Benar
2 b02 66 1 1 benar
3 b03 66 1 1 benar
4 b04 66 1 1 benar
5 b05 66 1 1 benar
6 b06 66 1 1 benar
7 b07 66 1 1 benar
8 b08 66 1 1 benar
9 b09 66 1 1 benar
10 b10 66 1 3 salah
11 b11 66 1 1 benar
12 b12 66 1 1 benar
40

Tabel 4.7 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,01 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
13 b13 66 1 1 benar
14 b14 66 1 1 benar
15 b15 66 1 1 benar
16 b16 66 1 1 benar
17 b17 66 1 1 benar
18 b18 66 1 1 benar
19 b19 66 1 1 benar
20 b20 66 1 1 benar
21 g01 66 2 2 benar
22 g02 66 2 2 benar
23 g03 66 2 2 benar
24 g04 66 2 2 benar
25 g05 66 2 2 benar
26 g06 66 2 2 benar
27 g07 66 2 2 benar
28 g08 66 2 2 benar
29 g09 66 2 2 benar
30 g10 66 2 2 benar
31 g11 66 2 2 benar
32 g12 66 2 2 benar
33 g13 66 2 2 benar
34 g14 66 2 2 benar
35 g15 66 2 2 benar
36 g16 66 2 2 benar
37 g17 66 2 2 benar
38 g18 66 2 2 benar
39 g19 66 2 2 benar
40 g20 66 2 2 Benar
41 t01 66 3 3 Benar
42 t02 66 3 3 Benar
43 t03 66 3 3 Benar
44 t04 66 3 3 Benar
45 t05 66 3 3 Benar
46 t06 66 3 3 Benar
47 t07 66 3 3 Benar
48 t08 66 3 3 Benar
49 t09 66 3 3 Benar
50 t10 66 3 3 Benar
51 t11 66 3 3 Benar
52 t12 66 3 3 Benar
41

Tabel 4.7 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,01 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
53 t13 66 3 3 Benar
54 t14 66 3 3 Benar
55 t15 66 3 3 Benar
56 t16 66 3 3 Benar
57 t17 66 3 3 Benar
58 t18 66 3 3 Benar
59 t19 66 3 3 Benar
60 t20 66 3 3 Benar
Persentase Keberhasilan Data Pelatihan 98,33%

Berdasarkan Tabel 4.7 pengenalan data pelatihan mencapai 98,33% tingkat


akurasinya dengan nilai alfa 0,01 dan dec alfa 0,1 dengan iterasi ke-66. Untuk
masing-masing kelas tingkat akurasi mencapai 95% untuk kelas 1, 100% untuk
kelas 2, dan 100% untuk kelas 3.
Pada Tabel 4.8 menunjukkan hasil pelatihan menggunakan alfa 0,1 dan dec
alfa 0,25 untuk data pelatihan.

Tabel 4.8 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,25

No Data Iterasi Target Hasil (T) Keterangan


1 b01 33 1 1 Benar
2 b02 33 1 1 Benar
3 b03 33 1 1 Benar
4 b04 33 1 1 Benar
5 b05 33 1 1 Benar
6 b06 33 1 1 Benar
7 b07 33 1 1 Benar
8 b08 33 1 1 Benar
9 b09 33 1 1 Benar
10 b10 33 1 3 Salah
11 b11 33 1 1 Benar
12 b12 33 1 1 Benar
13 b13 33 1 1 Benar
14 b14 33 1 1 Benar
42

Tabel 4.8 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,25 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
15 b15 33 1 1 Benar
16 b16 33 1 1 Benar
17 b17 33 1 1 Benar
18 b18 33 1 1 Benar
19 b19 33 1 1 benar
20 b20 33 1 1 benar
21 g01 33 2 2 benar
22 g02 33 2 2 benar
23 g03 33 2 2 benar
24 g04 33 2 2 benar
25 g05 33 2 2 benar
26 g06 33 2 2 benar
27 g07 33 2 2 benar
28 g08 33 2 2 benar
29 g09 33 2 2 benar
30 g10 33 2 2 benar
31 g11 33 2 2 benar
32 g12 33 2 2 benar
33 g13 33 2 2 benar
34 g14 33 2 2 benar
35 g15 33 2 2 benar
36 g16 33 2 2 benar
37 g17 33 2 2 benar
38 g18 33 2 2 benar
39 g19 33 2 2 benar
40 g20 33 2 2 benar
41 t01 33 3 3 benar
42 t02 33 3 3 benar
43 t03 33 3 3 benar
44 t04 33 3 3 benar
45 t05 33 3 3 benar
46 t06 33 3 3 benar
47 t07 33 3 3 benar
48 t08 33 3 3 benar
49 t09 33 3 3 benar
50 t10 33 3 3 benar
43

Tabel 4.8 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,25 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
51 t11 33 3 3 benar
52 t12 33 3 3 benar
53 t13 33 3 3 benar
54 t14 33 3 3 benar
55 t15 33 3 3 benar
56 t16 33 3 3 benar
57 t17 33 3 3 benar
58 t18 33 3 3 benar
59 t19 33 3 3 benar
60 t20 33 3 3 benar
Persentase Keberhasilan Data Pelatihan 98,33%

Berdasarkan Tabel 4.8 pengenalan data pelatihan mencapai 98,33% tingkat


akurasinya dengan nilai alfa 0,1 dan dec alfa 0,25 dengan iterasi ke-33. Untuk
masing-masing kelas tingkat akurasi mencapai 95% untuk kelas 1, 100% untuk
kelas 2, dan 100% untuk kelas 3.
Tabel 4.9 menunjukkan hasil pelatihan menggunakan alfa 0,01 dan dec alfa
0,25 untuk data pelatihan.

Tabel 4.9 Hasil Pelatihan dengan alfa 0,01 dan dec alfa 0,25
No Data Iterasi Target Hasil (T) Keterangan
1 b01 25 1 1 benar
2 b02 25 1 1 benar
3 b03 25 1 1 benar
4 b04 25 1 1 benar
5 b05 25 1 1 benar
6 b06 25 1 1 benar
7 b07 25 1 1 benar
8 b08 25 1 1 benar
9 b09 25 1 1 benar
10 b10 25 1 3 salah
11 b11 25 1 1 benar
12 b12 25 1 1 benar
44

Tabel 4.9 Hasil Pelatihan dengan alfa 0,01 dan dec alfa 0,25 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
13 b13 25 1 1 benar
14 b14 25 1 1 benar
15 b15 25 1 1 benar
16 b16 25 1 1 benar
17 b17 25 1 1 benar
18 b18 25 1 1 benar
19 b19 25 1 1 benar
20 b20 25 1 1 benar
21 g01 25 2 2 benar
22 g02 25 2 2 benar
23 g03 25 2 2 benar
24 g04 25 2 2 benar
25 g05 25 2 2 benar
26 g06 25 2 2 benar
27 g07 25 2 2 benar
28 g08 25 2 2 benar
29 g09 25 2 2 benar
30 g10 25 2 2 benar
31 g11 25 2 2 benar
32 g12 25 2 2 benar
33 g13 25 2 2 benar
34 g14 25 2 2 benar
35 g15 25 2 2 benar
36 g16 25 2 2 benar
37 g17 25 2 2 benar
38 g18 25 2 2 benar
39 g19 25 2 2 benar
40 g20 25 2 2 benar
41 t01 25 3 3 benar
42 t02 25 3 3 benar
43 t03 25 3 3 benar
44 t04 25 3 3 benar
45 t05 25 3 3 benar
46 t06 25 3 3 benar
47 t07 25 3 3 benar
45

Tabel 4.9 Hasil Pelatihan dengan alfa 0,01 dan dec alfa 0,25 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
48 t08 25 3 3 benar
49 t09 25 3 3 benar
50 t10 25 3 3 benar
51 t11 25 3 3 benar
52 t12 25 3 3 benar
53 t13 25 3 3 benar
54 t14 25 3 3 benar
55 t15 25 3 3 benar
56 t16 25 3 3 benar
57 t17 25 3 3 benar
58 t18 25 3 3 benar
59 t19 25 3 3 benar
60 t20 25 3 3 benar
Persentase Keberhasilan Data Pelatihan 98,33%

Berdasarkan Tabel 4.9 pengenalan data pelatihan mencapai 98,33% tingkat


akurasinya dengan nilai alfa 0,01 dan dec alfa 0,25 dengan iterasi ke-25. Untuk
masing-masing kelas tingkat akurasi mencapai 95% untuk kelas 1, 100% untuk
kelas 2, dan 100% untuk kelas 3.
Tabel 4.10 menunjukkan hasil pelatihan menggunakan alfa 0,1 dan dec alfa
0,5 untuk data pelatihan.

Tabel 4.10 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,5
No Data Iterasi Target Hasil (T) Keterangan
1 b01 14 1 1 benar
2 b02 14 1 1 benar
3 b03 14 1 1 benar
4 b04 14 1 1 benar
5 b05 14 1 1 benar
6 b06 14 1 1 benar
7 b07 14 1 1 benar
8 b08 14 1 1 benar
9 b09 14 1 1 benar
46

Tabel 4.10 Hasil Pelatihan dengan alfa 0,01 dan dec alfa 0,25 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
10 b10 14 1 3 salah
11 b11 14 1 1 benar
12 b12 14 1 1 benar
13 b13 14 1 1 benar
14 b14 14 1 1 benar
15 b15 14 1 1 benar
16 b16 14 1 1 benar
17 b17 14 1 1 benar
18 b18 14 1 1 benar
19 b19 14 1 1 benar
20 b20 14 1 1 benar
21 g01 14 2 2 benar
22 g02 14 2 2 benar
23 g03 14 2 2 benar
24 g04 14 2 2 benar
25 g05 14 2 2 benar
26 g06 14 2 2 benar
27 g07 14 2 2 benar
28 g08 14 2 2 benar
29 g09 14 2 2 benar
30 g10 14 2 2 benar
31 g11 14 2 2 benar
32 g12 14 2 2 benar
33 g13 14 2 2 benar
34 g14 14 2 2 benar
35 g15 14 2 2 benar
36 g16 14 2 2 benar
37 g17 14 2 2 benar
38 g18 14 2 2 benar
39 g19 14 2 2 benar
40 g20 14 2 2 benar
41 t01 14 3 3 benar
42 t02 14 3 3 benar
43 t03 14 3 3 benar
47

Tabel 4.10 Hasil Pelatihan dengan alfa 0,01 dan dec alfa 0,25 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
44 t04 14 3 3 benar
45 t05 14 3 3 benar
46 t06 14 3 3 benar
47 t07 14 3 3 benar
48 t08 14 3 3 benar
49 t09 14 3 3 benar
50 t10 14 3 3 benar
51 t11 14 3 3 benar
52 t12 14 3 3 benar
53 t13 14 3 3 benar
54 t14 14 3 3 benar
55 t15 14 3 3 benar
56 t16 14 3 3 benar
57 t17 14 3 3 benar
58 t18 14 3 3 benar
59 t19 14 3 3 benar
60 t20 14 3 3 benar
Persentase Keberhasilan Data Pelatihan 98,33%

Berdasarkan Tabel 4.10 pengenalan data pelatihan mencapai 98,33% tingkat


akurasinya dengan nilai alfa 0,1 dan dec alfa 0,5 dengan iterasi ke-14. Untuk
masing-masing kelas tingkat akurasi mencapai 95% untuk kelas 1, 100% untuk
kelas 2, dan 100% untuk kelas 3.
Tabel 4.11 menunjukkan hasil pelatihan menggunakan alfa 0,1 dan dec alfa
0,75 untuk data pelatihan.

Tabel 4.11 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,75
No Data Iterasi Target Hasil (T) Keterangan
1 b01 7 1 1 benar
2 b02 7 1 1 benar
3 b03 7 1 1 benar
4 b04 7 1 1 benar
5 b05 7 1 1 benar
48

Tabel 4.11 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,75 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
6 b06 7 1 1 benar
7 b07 7 1 1 benar
8 b08 7 1 1 benar
9 b09 7 1 1 benar
10 b10 7 1 3 salah
11 b11 7 1 1 benar
12 b12 7 1 1 benar
13 b13 7 1 1 benar
14 b14 7 1 1 benar
15 b15 7 1 1 benar
16 b16 7 1 1 benar
17 b17 7 1 1 benar
18 b18 7 1 1 benar
19 b19 7 1 1 benar
20 b20 7 1 1 benar
21 g01 7 2 2 benar
22 g02 7 2 2 benar
23 g03 7 2 2 benar
24 g04 7 2 2 benar
25 g05 7 2 2 benar
26 g06 7 2 2 benar
27 g07 7 2 2 benar
28 g08 7 2 2 benar
29 g09 7 2 2 benar
30 g10 7 2 2 benar
31 g11 7 2 2 benar
32 g12 7 2 2 benar
33 g13 7 2 2 benar
34 g14 7 2 2 benar
35 g15 7 2 2 benar
36 g16 7 2 2 benar
37 g17 7 2 2 benar
38 g18 7 2 2 benar
39 g19 7 2 2 benar
40 g20 7 2 2 benar
41 t01 7 3 3 benar
42 t02 7 3 3 benar
43 t03 7 3 3 benar
44 t04 7 3 3 benar
45 t05 7 3 3 benar
46 t06 7 3 3 benar
49

Tabel 4.11 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,75 (Lanjutan)
No Data Iterasi Target Hasil (T) Keterangan
47 t07 7 3 3 benar
48 t08 7 3 3 benar
49 t09 7 3 3 benar
50 t10 7 3 3 benar
51 t11 7 3 3 benar
52 t12 7 3 3 benar
53 t13 7 3 3 benar
54 t14 7 3 3 benar
55 t15 7 3 3 benar
56 t16 7 3 3 benar
57 t17 7 3 3 benar
58 t18 7 3 3 benar
59 t19 7 3 3 benar
60 t20 7 3 3 benar
Persentase Keberhasilan Data Pelatihan 98,33%

Berdasarkan Tabel 4.11 pengenalan data pelatihan tingkat akurasinya


mencapai 98,33% dengan parameter alfa 0.1 dan dec alfa 0.75 dengan iterasi 7.
Untuk masing-masing kelas tingkat akurasi mencapai 95% untuk kelas 1, 100%
untuk kelas 2, dan 100% untuk kelas 3.
Berdasarkan Tabel 4.6 sampai Tabel 4.11 pengenalan data pelatihan
mencapai 98,33% tingkat akurasinya, yang membedakan terletak pada jumlah
iterasinya. Iterasi yang paling kecil dengan nilai alfa 0.1 dan dec alfa 0.75 pada
dangan jumlah iterasi 7. Untuk masing-masing kelas tingkat akurasi mencapai
95% untuk kelas 1, 100% untuk kelas 2, dan 100% untuk kelas 3. Pengenalan data
pelatihan yang paling baik akan disimpan menjadi bobot akhir dan akan
digunakan untuk melakukan pengenalan terhadap data uji.

Bobot akhir:

0.9583 0.0225 44.154 0.6775 0.0189 42.881


0.9758 0.0375 41.989 0.6898 0.0303 49.310
0.9770 0.0201 39.962 0.6908 0.0155 39.509

Pengenalan dilakukan dengan mencari jarak terdekat antara bobot akhir


dengan data uji. Dari jarak tersebut kemudian dapat diketahui data uji berada pada
50

kelas 1, kelas 2 atau kelas 3. Pengenalan data uji ditunjukkan pada Tabel 4.12
sampai tabel 4.17.
Tabel 4.12 Hasil Pengenalan Data Uji
dengan alfa 0,1 dan dec alfa 0,1
No Data Target Hasil Identifikasi Keterangan
1 uji_b01 1 1 Tepung Beras benar
2 uji_b02 1 1 Tepung Beras benar
3 uji_b03 1 3 Tepung Tapioka salah
4 uji_b04 1 1 Tepung Beras benar
5 uji_b05 1 1 Tepung Beras benar
6 uji_b06 1 3 Tepung Tapioka salah
7 uji_b07 1 1 Tepung Beras benar
8 uji_b08 1 1 Tepung Beras benar
9 uji_b09 1 3 Tepung Tapioka salah
10 uji_b10 1 1 Tepung Beras benar
11 uji_g01 2 2 Tepung Gandum benar
12 uji_g02 2 2 Tepung Gandum benar
13 uji_g03 2 2 Tepung Gandum benar
14 uji_g04 2 2 Tepung Gandum benar
15 uji_g05 2 2 Tepung Gandum benar
16 uji_g06 2 2 Tepung Gandum benar
17 uji_g07 2 2 Tepung Gandum benar
18 uji_g08 2 2 Tepung Gandum benar
19 uji_g09 2 2 Tepung Gandum benar
20 uji_g10 2 2 Tepung Gandum benar
21 uji_t01 3 3 Tepung Tapioka benar
22 uji_t02 3 3 Tepung Tapioka benar
23 uji_t03 3 3 Tepung Tapioka benar
24 uji_t04 3 3 Tepung Tapioka benar
25 uji_t05 3 3 Tepung Tapioka benar
26 uji_t06 3 3 Tepung Tapioka benar
27 uji_t07 3 1 Tepung Beras salah
28 uji_t08 3 3 Tepung Tapioka benar
29 uji_t09 3 3 Tepung Tapioka benar
30 uji_t10 3 3 Tepung Tapioka benar
Persentase Keberhasilan Data Uji 86,66%
51

Tabel 4.13 Hasil Pengenalan Data Uji


dengan alfa 0,01 dan dec alfa 0,1
No Data Target Hasil Identifikasi Keterangan
1 uji_b01 1 1 Tepung Beras benar
2 uji_b02 1 1 Tepung Beras benar
3 uji_b03 1 3 Tepung Tapioka salah
4 uji_b04 1 1 Tepung Beras benar
5 uji_b05 1 1 Tepung Beras benar
6 uji_b06 1 3 Tepung Tapioka salah
7 uji_b07 1 1 Tepung Beras benar
8 uji_b08 1 1 Tepung Beras benar
9 uji_b09 1 3 Tepung Tapioka salah
10 uji_b10 1 1 Tepung Beras benar
11 uji_g01 2 2 Tepung Gandum benar
12 uji_g02 2 2 Tepung Gandum benar
13 uji_g03 2 2 Tepung Gandum benar
14 uji_g04 2 2 Tepung Gandum benar
15 uji_g05 2 2 Tepung Gandum benar
16 uji_g06 2 2 Tepung Gandum benar
17 uji_g07 2 2 Tepung Gandum benar
18 uji_g08 2 2 Tepung Gandum benar
19 uji_g09 2 2 Tepung Gandum benar
20 uji_g10 2 2 Tepung Gandum benar
21 uji_t01 3 3 Tepung Tapioka benar
22 uji_t02 3 3 Tepung Tapioka benar
23 uji_t03 3 3 Tepung Tapioka benar
24 uji_t04 3 3 Tepung Tapioka benar
25 uji_t05 3 3 Tepung Tapioka benar
26 uji_t06 3 3 Tepung Tapioka benar
27 uji_t07 3 1 Tepung Beras salah
28 uji_t08 3 3 Tepung Tapioka benar
29 uji_t09 3 3 Tepung Tapioka benar
30 uji_t10 3 3 Tepung Tapioka benar
Persentase Keberhasilan Data Uji 86,66%
52

Tabel 4.14 Hasil Pengenalan Data Uji


dengan alfa 0,1 dan dec alfa 0,25
No Data Target Hasil Identifikasi Keterangan
1 uji_b01 1 1 Tepung Beras benar
2 uji_b02 1 1 Tepung Beras benar
3 uji_b03 1 3 Tepung Tapioka salah
4 uji_b04 1 1 Tepung Beras benar
5 uji_b05 1 1 Tepung Beras benar
6 uji_b06 1 3 Tepung Tapioka salah
7 uji_b07 1 1 Tepung Beras benar
8 uji_b08 1 1 Tepung Beras benar
9 uji_b09 1 3 Tepung Tapioka salah
10 uji_b10 1 1 Tepung Beras benar
11 uji_g01 2 2 Tepung Gandum benar
12 uji_g02 2 2 Tepung Gandum benar
13 uji_g03 2 2 Tepung Gandum benar
14 uji_g04 2 2 Tepung Gandum benar
15 uji_g05 2 2 Tepung Gandum benar
16 uji_g06 2 2 Tepung Gandum benar
17 uji_g07 2 2 Tepung Gandum benar
18 uji_g08 2 2 Tepung Gandum benar
19 uji_g09 2 2 Tepung Gandum benar
20 uji_g10 2 2 Tepung Gandum benar
21 uji_t01 3 3 Tepung Tapioka benar
22 uji_t02 3 3 Tepung Tapioka benar
23 uji_t03 3 3 Tepung Tapioka benar
24 uji_t04 3 3 Tepung Tapioka benar
25 uji_t05 3 3 Tepung Tapioka benar
26 uji_t06 3 3 Tepung Tapioka benar
27 uji_t07 3 1 Tepung Beras salah
28 uji_t08 3 3 Tepung Tapioka benar
29 uji_t09 3 3 Tepung Tapioka benar
30 uji_t10 3 3 Tepung Tapioka benar
Persentase Keberhasilan Data Uji 86,66%
53

Tabel 4.15 Hasil Pengenalan Data Uji


dengan alfa 0,01 dan dec alfa 0,25

No Data Target Hasil Identifikasi Keterangan


1 uji_b01 1 1 Tepung Beras benar
2 uji_b02 1 1 Tepung Beras benar
3 uji_b03 1 3 Tepung Tapioka salah
4 uji_b04 1 1 Tepung Beras benar
5 uji_b05 1 1 Tepung Beras benar
6 uji_b06 1 3 Tepung Tapioka salah
7 uji_b07 1 1 Tepung Beras benar
8 uji_b08 1 1 Tepung Beras benar
9 uji_b09 1 3 Tepung Tapioka salah
10 uji_b10 1 1 Tepung Beras benar
11 uji_g01 2 2 Tepung Gandum benar
12 uji_g02 2 2 Tepung Gandum benar
13 uji_g03 2 2 Tepung Gandum benar
14 uji_g04 2 2 Tepung Gandum benar
15 uji_g05 2 2 Tepung Gandum benar
16 uji_g06 2 2 Tepung Gandum benar
17 uji_g07 2 2 Tepung Gandum benar
18 uji_g08 2 2 Tepung Gandum benar
19 uji_g09 2 2 Tepung Gandum benar
20 uji_g10 2 2 Tepung Gandum benar
21 uji_t01 3 3 Tepung Tapioka benar
22 uji_t02 3 3 Tepung Tapioka benar
23 uji_t03 3 3 Tepung Tapioka benar
24 uji_t04 3 3 Tepung Tapioka benar
25 uji_t05 3 3 Tepung Tapioka benar
26 uji_t06 3 3 Tepung Tapioka benar
27 uji_t07 3 1 Tepung Beras salah
28 uji_t08 3 3 Tepung Tapioka benar
29 uji_t09 3 2 Tepung Gandum salah
30 uji_t10 3 3 Tepung Tapioka benar
Persentase Keberhasilan Data Uji 83,33%
54

Tabel 4.16 Hasil Pengenalan Data Uji


dengan alfa 0,1 dan dec alfa 0,5

No Data Target Hasil Identifikasi Keterangan


1 uji_b01 1 1 Tepung Beras benar
2 uji_b02 1 1 Tepung Beras benar
3 uji_b03 1 3 Tepung Tapioka salah
4 uji_b04 1 1 Tepung Beras benar
5 uji_b05 1 1 Tepung Beras benar
6 uji_b06 1 3 Tepung Tapioka salah
7 uji_b07 1 1 Tepung Beras benar
8 uji_b08 1 1 Tepung Beras benar
9 uji_b09 1 3 Tepung Tapioka salah
10 uji_b10 1 1 Tepung Beras benar
11 uji_g01 2 2 Tepung Gandum benar
12 uji_g02 2 2 Tepung Gandum benar
13 uji_g03 2 2 Tepung Gandum benar
14 uji_g04 2 2 Tepung Gandum benar
15 uji_g05 2 2 Tepung Gandum benar
16 uji_g06 2 2 Tepung Gandum benar
17 uji_g07 2 2 Tepung Gandum benar
18 uji_g08 2 2 Tepung Gandum benar
19 uji_g09 2 2 Tepung Gandum benar
20 uji_g10 2 2 Tepung Gandum benar
21 uji_t01 3 3 Tepung Tapioka benar
22 uji_t02 3 3 Tepung Tapioka benar
23 uji_t03 3 3 Tepung Tapioka benar
24 uji_t04 3 3 Tepung Tapioka benar
25 uji_t05 3 3 Tepung Tapioka benar
26 uji_t06 3 3 Tepung Tapioka benar
27 uji_t07 3 1 Tepung Beras salah
28 uji_t08 3 3 Tepung Tapioka benar
29 uji_t09 3 3 Tepung Tapioka benar
30 uji_t10 3 3 Tepung Tapioka benar
Persentase Keberhasilan Data Uji 86,66%
55

Tabel 4.17 Hasil Pengenalan Data Uji


dengan alfa 0,1 dan dec alfa 0,75

No Data Target Hasil Identifikasi Keterangan


1 uji_b01 1 1 Tepung Beras benar
2 uji_b02 1 1 Tepung Beras benar
3 uji_b03 1 3 Tepung Tapioka salah
4 uji_b04 1 1 Tepung Beras benar
5 uji_b05 1 1 Tepung Beras benar
6 uji_b06 1 3 Tepung Tapioka salah
7 uji_b07 1 1 Tepung Beras benar
8 uji_b08 1 1 Tepung Beras benar
9 uji_b09 1 3 Tepung Tapioka salah
10 uji_b10 1 1 Tepung Beras benar
11 uji_g01 2 2 Tepung Gandum benar
12 uji_g02 2 2 Tepung Gandum benar
13 uji_g03 2 2 Tepung Gandum benar
14 uji_g04 2 2 Tepung Gandum benar
15 uji_g05 2 2 Tepung Gandum benar
16 uji_g06 2 2 Tepung Gandum benar
17 uji_g07 2 2 Tepung Gandum benar
18 uji_g08 2 2 Tepung Gandum benar
19 uji_g09 2 2 Tepung Gandum benar
20 uji_g10 2 2 Tepung Gandum benar
21 uji_t01 3 3 Tepung Tapioka benar
22 uji_t02 3 3 Tepung Tapioka benar
23 uji_t03 3 3 Tepung Tapioka benar
24 uji_t04 3 3 Tepung Tapioka benar
25 uji_t05 3 3 Tepung Tapioka benar
26 uji_t06 3 3 Tepung Tapioka benar
27 uji_t07 3 1 Tepung Beras salah
28 uji_t08 3 3 Tepung Tapioka benar
29 uji_t09 3 3 Tepung Tapioka benar
30 uji_t10 3 3 Tepung Tapioka benar
Persentase Keberhasilan Data Uji 86,66%
56

Berdasarkan Tabel 4.12 sampai tabel 4.17 hasil pengujian terbaik


mencapai persentase 86,66% dengan bobot akhir yang diperoleh dari alfa 0,1 dan
dec alfa 0,75.

4.1.7 Analisis dan Pembahasan


Proses akuisisi dalam penelitian ini sangat penting, agar mendapatkan
kualitas data citra jenis tepung yang bagus. Data citra yang bagus jika diekstraksi
akan mendapatkan ciri yang baik untuk membedakan kelas satu dengan yang
lainya.
Sebelum dilakukan ekstraksi ciri, data citra yang sudah dilakukan pra-proses
seperti yang dijelaskan pada bab sebelumnya, kemudian data citra diproses
dengan algoritma wavelet level 3. Pada wavelet level 3 ini CA dan CH diambil
cirinya yang digunakan untuk proses identifikasi.
Proses selanjutnya adalah identifikasi, pada tahap pelatihan sistem akan
dilatih untuk mengenali target yang sudah ditentukan, apakah hasilnya sesuai atau
tidak sesuai dengan target. Jumlah target yang digunakan banyaknya sesuai atau
sama dengan jumlah data pelatihan yang digunakan dalam penelitian ini. Pada
awal pelatihan data diberikan nilai bobot, yaitu bobot awal yang menghubungkan
setiap neuron pada lapisan input ke neuron pertama pada lapisan output.

bobot_awal:

0.9601 0.0249 4.5402 0.6788 0.0207 4.4011 %Tepung Beras


0.9797 0.0404 4.0188 0.6924 0.0325 5.0293 %Tepung Gandum
0.9843 0.0236 3.7395 0.6959 0.0176 4.1526 %Tepung Tapioka

Seperti yang dijelaskan pada bab sebelumnya penelitian ini dibagi menjadi 3
kelas, yaitu kelas 1 untuk jenis tepung beras, kelas 2 untuk jenis tepung gandum,
dan kelas 3 untuk tepung tapioka. Berikut ini adalah susunan target dari penelitian
ini.
Target : 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 %Tepung Beras
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 %Tepung Gandum
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 %Tepung Tapioka
57

Tahap selanjutnya setelah bobot awal dan target diperoleh maka dapat
dimulai proses pelatihan dengan menggunakan data pelatihan, menggunakan
parameter alfa 0.1 dengan dec alfa 0,1, alfa 0.1 dengan dec alfa 0,01, alfa 0.1
dengan dec alfa 0,25, alfa 0.01 dengan dec alfa 0,25, alfa 0.1 dengan dec alfa 0,5,
dan alfa 0.1 dengan dec alfa 0,75. Hal ini dikarenakan dengan menggunakan
parameter tersebut menghasilkan persentase kinerja yang tinggi dari pada
parameter yang lainnya, dan dengan parameter tersebut dapat dihasilkan bobot
akhir yang dipakai untuk pengujian pada data uji. Berikut adalah bobot akhir yang
diperoleh dari pengenalan dengan alfa 0,1 dan dec alfa 0,75. (98,33%).

Bobot_akhir 1:

0.9606 0.0225 43.863 0.6791 0.0188 42.739


0.9770 0.0380 41.380 0.6906 0.0307 49.445
0.9771 0.0196 39.774 0.6909 0.0151 39.237

Bobot akhir yang diperoleh dari pengenalan dengan afla 0,01 dan dec alfa
0,1 adalah sebagai berikut (98,33%).

bobot_akhir 2:

0.9606 0.0225 43.859 0.6791 0.0188 42.734


0.9770 0.0380 41.383 0.6906 0.0307 49.440
0.9771 0.0196 39.778 0.6908 0.0151 39.234

Bobot akhir yang diperoleh dari pengenalan dengan afla 0,1 dan dec alfa
0,25 adalah sebagai berikut:

bobot_akhir 3:

0.9603 0.0224 43.885 0.6789 0.0188 42.742


0.9768 0.0379 41.464 0.6905 0.0306 49.422
0.9771 0.0197 39.814 0.6908 0.0152 39.284
58

Bobot akhir yang diperoleh dari pengenalan dengan afla 0,01 dan dec alfa
0,25 adalah sebagai berikut:

bobot_akhir 4:

0.9606 0.0222 43.795 0.6790 0.0186 42.610


0.9767 0.0375 41.530 0.6904 0.0303 49.262
0.9763 0.0195 39.906 0.6903 0.0151 39.206

Bobot akhir yang diperoleh dari pengenalan dengan afla 0,1 dan dec alfa 0,5
adalah sebagai berikut:

bobot_akhir 5:

0.9597 0.0224 43.956 0.6784 0.0188 42.766


0.9765 0.0378 41.656 0.6902 0.0305 49.374
0.9770 0.0199 39.880 0.6908 0.0153 39.369

Bobot akhir yang diperoleh dari pengenalan dengan afla 0,1 dan dec alfa
0,75 adalah sebagai berikut:

bobot_akhir 6:

0.9583 0.0225 44.154 0.6775 0.0189 42.881


0.9758 0.0375 41.989 0.6898 0.0303 49.310
0.9770 0.0201 39.962 0.6908 0.0155 39.509

Bobot tersebut telah dilakukan pengujian dan dibandingkan dengan


masing-masing kelas untuk mencari cari jarak terdekat. Kelas dengan jarak
terdekat merupakan hasil dari identifikasi yang menggunakan data uji tersebut.
Pelatihan yang memiliki kinerja terbaik menggunakan parameter alfa 0.1 dengan
dec alfa 0,1, alfa 0,1 dengan dec alfa 0,01, alfa 0,1 dengan dec alfa 0,25, alfa 0,01
dengan dec alfa 0,25, alfa 0,1 dengan dec alfa 0,5, dan alfa 0,1 dengan dec alfa
0,75 yang mempunyai tingkat akurasi 86,66%. Hasil perbandingan jarak terdekat
yang diperoleh dari bobot akhir dengan alfa 0,1 dan dec alfa 0,75 ditunjukkan
pada Tabel 4.18 sampai Tabel 4.23.
59

Tabel 4.18 Jarak Terdekat Data Uji Dengan alfa 0,1 dan dec alfa 0,1

Data Jarak Identi- Persen-


No Hasil fikasi
Uji Kelas 1 Kelas 2 Kelas 3 Terdekat tase
1 uji_b01 0.1571 0.6877 0.4234 0.1571 1 Tp. Beras
2 uji_b02 0.2030 0.7345 0.3606 0.2030 1 Tp. Beras
3 uji_b03 0.3549 0.8800 0.1873 0.1873 3 Tp. Tapioka
4 uji_b04 0.0497 0.7033 0.5882 0.0497 1 Tp. Beras
5 uji_b05 0.0497 0.7033 0.5882 0.0497 1 Tp. Beras
70%
6 uji_b06 0.2928 0.8222 0.2546 0.2546 3 Tp. Tapioka
7 uji_b07 0.0984 0.6174 0.5834 0.0984 1 Tp. Beras
8 uji_b08 0.1439 0.6280 0.4891 0.1439 1 Tp. Beras
9 uji_b09 0.5235 10.234 0.0160 0.0160 3 Tp. Tapioka
10 uji_b10 0.2266 0.4895 0.6431 0.2266 1 Tp. Beras
11 uji_g01 0.7640 0.1032 11.184 0.1032 2 Tp. Gandum
12 uji_g02 0.7393 0.1387 11.165 0.1387 2 Tp. Gandum
13 uji_g03 0.8400 0.3699 12.840 0.3699 2 Tp. Gandum
14 uji_g04 0.8578 0.7302 13.846 0.7302 2 Tp. Gandum
15 uji_g05 0.7166 0.2536 11.429 0.2536 2 Tp. Gandum
100%
16 uji_g06 0.9344 0.9154 14.723 0.9154 2 Tp. Gandum
17 uji_g07 0.7511 0.4267 12.281 0.4267 2 Tp. Gandum
18 uji_g08 0.7760 0.4152 12.461 0.4152 2 Tp. Gandum
19 uji_g09 0.7935 0.4297 12.651 0.4297 2 Tp. Gandum
20 uji_g10 0.8042 0.6761 13.281 0.6761 2 Tp. Gandum
21 uji_t01 0.6587 0.8867 0.3303 0.3303 3 Tp. Tapioka
22 uji_t02 0.6743 10.575 0.1792 0.1792 3 Tp. Tapioka
23 uji_t03 0.9975 13.464 0.4696 0.4696 3 Tp. Tapioka
24 uji_t04 0.2859 0.8058 0.2667 0.2667 3 Tp. Tapioka
25 uji_t05 0.4840 0.6105 0.4576 0.4576 3 Tp. Tapioka
90%
26 uji_t06 0.5694 0.5924 0.5272 0.5272 3 Tp. Tapioka
27 uji_t07 0.2640 0.5139 0.5460 0.2640 1 Tp. Beras
28 uji_t08 0.5027 0.6262 0.4526 0.4526 3 Tp. Tapioka
29 uji_t09 0.6039 0.5766 0.5674 0.5674 3 Tp. Tapioka
30 uji_t10 0.3726 0.7582 0.2755 0.2755 3 Tp. Tapioka
60

Tabel 4.19 Jarak Terdekat Pengujian Dengan alfa 0,01 dan dec alfa 0,1

Data Jarak Identi- Persen-


No Hasil fikasi
Uji Kelas 1 Kelas 2 Kelas 3 Terdekat tase
1 uji_b01 0.1567 0.6872 0.4234 0.1567 1 Tp. Beras
2 uji_b02 0.2025 0.7340 0.3606 0.2025 1 Tp. Beras
3 uji_b03 0.3543 0.8795 0.1872 0.1872 3 Tp. Tapioka
4 uji_b04 0.0503 0.7028 0.5880 0.0503 1 Tp. Beras
5 uji_b05 0.0503 0.7028 0.5880 0.0503 1 Tp. Beras
70%
6 uji_b06 0.2922 0.8217 0.2546 0.2546 3 Tp. Tapioka
7 uji_b07 0.0987 0.6168 0.5833 0.0987 1 Tp. Beras
8 uji_b08 0.1438 0.6275 0.4891 0.1438 1 Tp. Beras
9 uji_b09 0.5229 10.230 0.0157 0.0157 3 Tp. Tapioka
10 uji_b10 0.2270 0.4890 0.6431 0.2270 1 Tp. Beras
11 uji_g01 0.7645 0.1033 11.186 0.1033 2 Tp. Gandum
12 uji_g02 0.7397 0.1387 11.167 0.1387 2 Tp. Gandum
13 uji_g03 0.8406 0.3700 12.841 0.3700 2 Tp. Gandum
14 uji_g04 0.8584 0.7300 13.845 0.7300 2 Tp. Gandum
15 uji_g05 0.7172 0.2535 11.430 0.2535 2 Tp. Gandum
100%
16 uji_g06 0.9350 0.9152 14.722 0.9152 2 Tp. Gandum
17 uji_g07 0.7517 0.4266 12.282 0.4266 2 Tp. Gandum
18 uji_g08 0.7765 0.4151 12.462 0.4151 2 Tp. Gandum
19 uji_g09 0.7941 0.4296 12.651 0.4296 2 Tp. Gandum
20 uji_g10 0.8048 0.6758 13.280 0.6758 2 Tp. Gandum
21 uji_t01 0.6582 0.8864 0.3308 0.3308 3 Tp. Tapioka
22 uji_t02 0.6738 10.571 0.1796 0.1796 3 Tp. Tapioka
23 uji_t03 0.9970 13.460 0.4699 0.4699 3 Tp. Tapioka
24 uji_t04 0.2854 0.8054 0.2667 0.2667 3 Tp. Tapioka
25 uji_t05 0.4838 0.6101 0.4580 0.4580 3 Tp. Tapioka
90%
26 uji_t06 0.5692 0.5921 0.5276 0.5276 3 Tp. Tapioka
27 uji_t07 0.2640 0.5134 0.5461 0.2640 1 Tp. Beras
28 uji_t08 0.5025 0.6258 0.4530 0.4530 3 Tp. Tapioka
29 uji_t09 0.6037 0.5763 0.5678 0.5678 3 Tp. Tapioka
30 uji_t10 0.3722 0.7578 0.2757 0.2757 3 Tp. Tapioka
61

Tabel 4.20 Jarak Terdekat Pengujian Dengan alfa 0,1 dan dec alfa 0,25

Data Jarak Identi- Persen-


No Hasil fikasi
Uji Kelas 1 Kelas 2 Kelas 3 Terdekat tase
1 uji_b01 0.1594 0.6844 0.4172 0.1594 1 Tp. Beras
2 uji_b02 0.2053 0.7317 0.3544 0.2053 1 Tp. Beras
3 uji_b03 0.3569 0.8781 0.1811 0.1811 3 Tp. Tapioka
4 uji_b04 0.0477 0.6979 0.5820 0.0477 1 Tp. Beras
5 uji_b05 0.0477 0.6979 0.5820 0.0477 1 Tp. Beras
70%
6 uji_b06 0.2949 0.8200 0.2484 0.2484 3 Tp. Tapioka
7 uji_b07 0.0988 0.6124 0.5772 0.0988 1 Tp. Beras
8 uji_b08 0.1459 0.6243 0.4829 0.1459 1 Tp. Beras
9 uji_b09 0.5255 10.225 0.0105 0.0105 3 Tp. Tapioka
10 uji_b10 0.2272 0.4848 0.6370 0.2272 1 Tp. Beras
11 uji_g01 0.7642 0.0991 11.130 0.0991 2 Tp. Gandum
12 uji_g02 0.7393 0.1322 11.109 0.1322 2 Tp. Gandum
13 uji_g03 0.8395 0.3635 12.781 0.3635 2 Tp. Gandum
14 uji_g04 0.8563 0.7220 13.783 0.7220 2 Tp. Gandum
15 uji_g05 0.7163 0.2459 11.370 0.2459 2 Tp. Gandum
100%
16 uji_g06 0.9325 0.9070 14.661 0.9070 2 Tp. Gandum
17 uji_g07 0.7503 0.4188 12.220 0.4188 2 Tp. Gandum
18 uji_g08 0.7752 0.4076 12.401 0.4076 2 Tp. Gandum
19 uji_g09 0.7927 0.4222 12.590 0.4222 2 Tp. Gandum
20 uji_g10 0.8027 0.6678 13.218 0.6678 2 Tp. Gandum
21 uji_t01 0.6609 0.8885 0.3300 0.3300 3 Tp. Tapioka
22 uji_t02 0.6765 10.580 0.1828 0.1828 3 Tp. Tapioka
23 uji_t03 0.9996 13.480 0.4752 0.4752 3 Tp. Tapioka
24 uji_t04 0.2881 0.8037 0.2605 0.2605 3 Tp. Tapioka
25 uji_t05 0.4861 0.6115 0.4535 0.4535 3 Tp. Tapioka
90%
26 uji_t06 0.5714 0.5947 0.5238 0.5238 3 Tp. Tapioka
27 uji_t07 0.2656 0.5111 0.5402 0.2656 1 Tp. Beras
28 uji_t08 0.5049 0.6274 0.4488 0.4488 3 Tp. Tapioka
29 uji_t09 0.6059 0.5794 0.5641 0.5641 3 Tp. Tapioka
30 uji_t10 0.3749 0.7573 0.2702 0.2702 3 Tp. Tapioka
62

Tabel 4.21 Jarak Terdekat Pengujian Dengan alfa 0,001 dan dec alfa 0,25
Jarak
Data Identi- Persen-
No Kelas Kelas Kelas Hasil
Uji Terdekat fikasi tase
1 2 3
1 uji_b01 0.1499 0.6677 0.4181 0.1499 1 Tp. Beras
2 uji_b02 0.1929 0.7153 0.3553 0.1929 1 Tp. Beras
3 uji_b03 0.3419 0.8625 0.1813 0.1813 3 Tp. Tapioka
4 uji_b04 0.0632 0.6806 0.5801 0.0632 1 Tp. Beras
5 uji_b05 0.0632 0.6806 0.5801 0.0632 1 Tp. Beras
70%
6 uji_b06 0.2804 0.8041 0.2490 0.2490 3 Tp. Tapioka
7 uji_b07 0.1090 0.5951 0.5772 0.1090 1 Tp. Beras
8 uji_b08 0.1431 0.6074 0.4843 0.1431 1 Tp. Beras
9 uji_b09 0.5100 10.077 0.0121 0.0121 3 Tp. Tapioka
10 uji_b10 0.2361 0.4675 0.6393 0.2361 1 Tp. Beras
11 uji_g01 0.7751 0.1080 11.187 0.1080 2 Tp. Gandum
12 uji_g02 0.7509 0.1347 11.162 0.1347 2 Tp. Gandum
13 uji_g03 0.8536 0.3654 12.818 0.3654 2 Tp. Gandum
14 uji_g04 0.8723 0.7165 13.784 0.7165 2 Tp. Gandum
15 uji_g05 0.7296 0.2431 11.410 0.2431 2 Tp. Gandum
100%
16 uji_g06 0.9483 0.9003 14.647 0.9003 2 Tp. Gandum
17 uji_g07 0.7653 0.4150 12.246 0.4150 2 Tp. Gandum
18 uji_g08 0.7900 0.4051 12.429 0.4051 2 Tp. Gandum
19 uji_g09 0.8076 0.4202 12.618 0.4202 2 Tp. Gandum
20 uji_g10 0.8187 0.6617 13.221 0.6617 2 Tp. Gandum
21 uji_t01 0.6497 0.8774 0.3421 0.3421 3 Tp. Tapioka
22 uji_t02 0.6621 10.451 0.1927 0.1927 3 Tp. Tapioka
23 uji_t03 0.9849 13.367 0.4806 0.4806 3 Tp. Tapioka
24 uji_t04 0.2739 0.7878 0.2616 0.2616 3 Tp. Tapioka
25 uji_t05 0.4803 0.5993 0.4627 0.4627 3 Tp. Tapioka
80%
26 uji_t06 0.5666 0.5845 0.5338 0.5338 3 Tp. Tapioka
27 uji_t07 0.2667 0.4947 0.5442 0.2667 1 Tp. Beras
28 uji_t08 0.4987 0.6156 0.4583 0.4583 3 Tp. Tapioka
29 uji_t09 0.6017 0.5703 0.5743 0.5703 2 Tp. Gandum
30 uji_t10 0.3635 0.7427 0.2766 0.2766 3 Tp. Tapioka
63

Tabel 4.22 Jarak Terdekat Pengujian Dengan alfa 0,1 dan dec alfa 0,5
Jarak Identi- Persen-
No Data Uji Hasil fikasi
Kelas 1 Kelas 2 Kelas 3 Terdekat tase
1 uji_b01 0.1666 0.6776 0.4064 0.1666 1 Tp. Beras
2 uji_b02 0.2128 0.7259 0.3437 0.2128 1 Tp. Beras
3 uji_b03 0.3641 0.8746 0.1703 0.1703 3 Tp. Tapioka
4 uji_b04 0.0408 0.6860 0.5715 0.0408 1 Tp. Beras
5 uji_b05 0.0408 0.6860 0.5715 0.0408 1 Tp. Beras
70%
6 uji_b06 0.3022 0.8157 0.2376 0.2376 3 Tp. Tapioka
7 uji_b07 0.0992 0.6015 0.5664 0.0992 1 Tp. Beras
8 uji_b08 0.1517 0.6166 0.4722 0.1517 1 Tp. Beras
9 uji_b09 0.5324 10.209 0.0070 0.0070 3 Tp. Tapioka
10 uji_b10 0.2281 0.4745 0.6263 0.2281 1 Tp. Beras
11 uji_g01 0.7636 0.0918 11.033 0.0918 2 Tp. Gandum
12 uji_g02 0.7382 0.1180 11.010 0.1180 2 Tp. Gandum
13 uji_g03 0.8364 0.3489 12.676 0.3489 2 Tp. Gandum
14 uji_g04 0.8503 0.7031 13.676 0.7031 2 Tp. Gandum
15 uji_g05 0.7140 0.2281 11.267 0.2281 2 Tp. Gandum
100%
16 uji_g06 0.9258 0.8877 14.555 0.8877 2 Tp. Gandum
17 uji_g07 0.7463 0.4005 12.114 0.4005 2 Tp. Gandum
18 uji_g08 0.7714 0.3900 12.295 0.3900 2 Tp. Gandum
19 uji_g09 0.7889 0.4048 12.484 0.4048 2 Tp. Gandum
20 uji_g10 0.7969 0.6486 13.110 0.6486 2 Tp. Gandum
21 uji_t01 0.6684 0.8933 0.3292 0.3292 3 Tp. Tapioka
22 uji_t02 0.6838 10.600 0.1889 0.1889 3 Tp. Tapioka
23 uji_t03 10.069 13.525 0.4847 0.4847 3 Tp. Tapioka
24 uji_t04 0.2955 0.7994 0.2497 0.2497 3 Tp. Tapioka
25 uji_t05 0.4926 0.6147 0.4461 0.4461 3 Tp. Tapioka
90%
26 uji_t06 0.5776 0.6008 0.5174 0.5174 3 Tp. Tapioka
27 uji_t07 0.2700 0.5055 0.5298 0.2700 1 Tp. Beras
28 uji_t08 0.5114 0.6311 0.4418 0.4418 3 Tp. Tapioka
29 uji_t09 0.6119 0.5868 0.5579 0.5579 3 Tp. Tapioka
30 uji_t10 0.3824 0.7560 0.2608 0.2608 3 Tp. Tapioka
64

Tabel 4.23 Jarak Terdekat Pengujian Dengan alfa 0,1 dan dec alfa 0,75

Data Jarak Identi- Persen-


No Hasil fikasi
Uji Kelas 1 Kelas 2 Kelas 3 Terdekat tase
1 uji_b01 0.1876 0.6687 0.3903 0.1876 1 Tp. Beras
2 uji_b02 0.2353 0.7189 0.3276 0.2353 1 Tp. Beras
3 uji_b03 0.3870 0.8713 0.1544 0.1544 3 Tp. Tapioka
4 uji_b04 0.0196 0.6679 0.5563 0.0196 1 Tp. Beras
5 uji_b05 0.0196 0.6679 0.5563 0.0196 1 Tp. Beras
70%
6 uji_b06 0.3252 0.8111 0.2216 0.2216 3 Tp. Tapioka
7 uji_b07 0.0994 0.5856 0.5505 0.0994 1 Tp. Beras
8 uji_b08 0.1675 0.6063 0.4560 0.1675 1 Tp. Beras
9 uji_b09 0.5550 10.208 0.0203 0.0203 3 Tp. Tapioka
10 uji_b10 0.2276 0.4601 0.6101 0.2276 1 Tp. Beras
11 uji_g01 0.7576 0.0870 10.880 0.0870 2 Tp. Gandum
12 uji_g02 0.7308 0.0967 10.854 0.0967 2 Tp. Gandum
13 uji_g03 0.8235 0.3239 12.516 0.3239 2 Tp. Gandum
14 uji_g04 0.8299 0.6704 13.516 0.6704 2 Tp. Gandum
15 uji_g05 0.7030 0.1977 11.107 0.1977 2 Tp. Gandum
100%
16 uji_g06 0.9037 0.8544 14.399 0.8544 2 Tp. Gandum
17 uji_g07 0.7310 0.3690 11.952 0.3690 2 Tp. Gandum
18 uji_g08 0.7566 0.3596 12.133 0.3596 2 Tp. Gandum
19 uji_g09 0.7739 0.3750 12.323 0.3750 2 Tp. Gandum
20 uji_g10 0.7768 0.6156 12.950 0.6156 2 Tp. Gandum
21 uji_t01 0.6900 0.9040 0.3266 0.3266 3 Tp. Tapioka
22 uji_t02 0.7067 10.660 0.1971 0.1971 3 Tp. Tapioka
23 uji_t03 10.298 13.623 0.4981 0.4981 3 Tp. Tapioka
24 uji_t04 0.3184 0.7949 0.2336 0.2336 3 Tp. Tapioka
25 uji_t05 0.5099 0.6233 0.4339 0.4339 3 Tp. Tapioka
90%
26 uji_t06 0.5938 0.6142 0.5065 0.5065 3 Tp. Tapioka
27 uji_t07 0.2803 0.4995 0.5139 0.2803 1 Tp. Beras
28 uji_t08 0.5291 0.6405 0.4301 0.4301 3 Tp. Tapioka
29 uji_t09 0.6274 0.6023 0.5474 0.5474 3 Tp. Tapioka
30 uji_t10 0.4043 0.7567 0.2459 0.2459 3 Tp. Tapioka
65

Kinerja kumulatif dari pelatihan LVQ ditunjukkan pada Gambar 4.6


sebagi berikut.

Gambar 4.6 Kinerja Pelatihan

Iterasi yang dihasilkan pada setiap parameter yang telah dibahas pada
materi sebelumnya ditunjukkan pada Gambar 4.7.

Gambar 4.7 Jumlah Iterasi Pada Pelatihan


66

Kinerja kumulatif dari data pengujian LVQ ditunjukkan pada Gambar 4.8
sebagi berikut.

Gambar 4.8 Kinerja Pengujian

Berdasarkan Gambar 4.6 dan Gambar 4.8 menunjukkan parameter alfa 0.1
dengan dec alfa 0,75 dengan iterasi 7 memiliki persentase tertinggi dibandingkan
dengan parameter yang lainnya, yaitu dengan prosentase sebesar 98,33%. Dengan
menggunakan parameter tersebut diambil bobot akhir untuk proses pengujian.
Dari pengujian yang dilakukan terhadap data uji sebanyak 30 citra dengan
menggunakan alfa 0,1 dan dec alfa 0,75 dapat mengidentifikasi data dengan
persentase kinerja mencapai 86,66%. Dengan demikian parameter LVQ dalam
pelatihan yang memiliki kinerja terbaik adalah dengan alfa 0,1 dan dec alfa 0,75.
BAB V
PENUTUP

5.1 Kesimpulan
a. Data unjuk kerja identifikasi jenis tepung yang telah diuji dengan data uji,
memiliki tingkat keberhasilan 86,66%. Nilai keberhasilan ini dengan syarat
bahwa data citra tepung yang diambil (capture) memiliki pencahayaan yang
normal, jarak pengambilan yang sama.
b. Menggunakan 60 data citra sebagai database yang digunakan sebagai data
ciri dengan wavelet level 3 dapat mengidentifikasi 30 data uji dengan tingkat
keberhasilan 86,66%.

5.2 Saran
Penelitian identifikasi jenis tepung dengan menggunakan metode learning
vector quantization dapat memberikan saran, yaitu:
a. Usahakan dalam pengambilan citra mempertahankan kondisi setiap citra, baik
tempat, pencahayaan, jarak dan kamera yang digunakan.
b. Dianjurkan dalam pengambilan citra menggunakan kamera dengan resolusi
tinggi yang dilengkapi dengan fasilitas macro.
c. Peneliti menganjurkan dalam pengembangan penelitian selanjutnya agar
menambahkan fitur-fitur yang mendukung validasi data agar hasilnya lebih
maksimal.
d. Penelitian dapat dilanjutkan dengan menggunakan metode lain, agar bisa
mengetahui kelebihan dan kekurangannya.

67
DAFTAR PUSTAKA

Fadlil, A. (2012). Sistem Pengenalan Citra Jenis-Jenis Tekstil , X, 107.

Isnanto, R. R. (2009). ST, MM, MT. Identifikasi Iris Mata Menggunakan Tapis
Gabor Wavelet Dan Jaringan Syaraf Tiruan Learning Vector Quantization
(LVQ) , XXX.

Kadir, A., & Susanto, A. (2013). Teori dan Aplikasi Pengolahan Citra.
Yogyakarta: Andi.

Kusumadewi, S. (2003). Artificial Intelligence Teknik dan Aplikasinya.


Yogyakarta: Graha Ilmu.

Kusumadewi, S. (2004). Membangun Jaringan Syaraf Tiruan Menggunakan


Matlab Excel Link (1st ed.). Yogyakarta: Graha Ilmu.

Munir, R. (2004). Pengolahan citra digital dengan pendekatan algoritmik.


Bandung: Informatika.

Putra, D. (2010). Pengolahan Citra Digital (I ed.). (Westriningsih, Penyunt.)


Yogyakarta: Andi.

Siang, J. J. (2005). Jaringan Syaraf Tiruan dan Pemrogramannya Menggunakan


Matlab. Yogyakarta: Andi.

Supatman. (2008). ST.,MT. Identifikasi Tekstur Citra Bubuk Susu Menggunakan


Alihragam Gelombang-Singkat Untuk Mendeteksi Keaslian Produk Susu ,
392.

Sutarno. Analisis Perbandingan Transformasi Wavelet pada Pengenalan Citra.


Universitas Sriwijaya, Palembang.

Widodo, T. S. (2005). Sistem Neuro Fuzzy Untuk Pengolahan Informasi,


Pemodelan, dan Kendali (1st ed.). Yogyakarta: Graha Ilmu.

68
LAMPIRAN

Lampiran A Biodata Peneliti


Nama : Aris Triyanto
NIM : 11111073
Alamat Asal : Seturan, Caturtunggal, Depok, Sleman, Yogyakarta
No Hp : 08562923028
Email : sagitajoz@gmail.com

Yogyakarta, 14 Maret 2016


Peneliti

Aris Triyanto
NIM. 11111073

xvii
xviii

Lampiran B Data Pelatihan


B 1 Citra Tepung
xix

B 2 Citra Hasil Cropping


xx

B 3 Citra Hasil Gray


xxi

B 4 Citra Hasil Masking


xxii

Lampiran C Data Uji


C 1 Citra Tepung

C 2 Citra Cropping
xxiii

C3 Citra Gray

C4 Citra Masking
xxiv

Lampiran D Pengkodean (Coding)


D 1 Pengkodean menu utama: skripsi.m
function varargout = skripsi(varargin)
% SKRIPSI M-file for skripsi.fig
% SKRIPSI, by itself, creates a new SKRIPSI or raises the existing
% singleton*.
%
% H = SKRIPSI returns the handle to a new SKRIPSI or the handle to
% the existing singleton*.
%
% SKRIPSI('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in SKRIPSI.M with the given input
arguments.
%
% SKRIPSI('Property','Value',...) creates a new SKRIPSI or raises
the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before skripsi_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to skripsi_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only
one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help skripsi

% Last Modified by GUIDE v2.5 25-Feb-2016 18:46:31

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @skripsi_OpeningFcn, ...
'gui_OutputFcn', @skripsi_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before skripsi is made visible.


function skripsi_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
xxv

% varargin command line arguments to skripsi (see VARARGIN)

% Choose default command line output for skripsi


handles.output = hObject;
hback = axes('units','normalized','position',[0 0 1 1]);
uistack(hback,'bottom');
%%%%%% Load background image and display it
[back map]=imread('menu utama.png');
image(back)
colormap(map)
set(hback,'handlevisibility','off','visible','off')

waktu=datestr(now);
set(handles.waktu,'string',waktu);
% Update handles structure
guidata(hObject, handles);

% UIWAIT makes skripsi wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = skripsi_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
pelatihan;

% --- 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)
pengujian;

% --- 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)
selection=questdlg(['Keluar ' get(handles.figure1,'Name')''],...
['Keluar ' get(handles.figure1,'Name')''],...
'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)

% --- Executes on button press in pushbutton4.


function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
xxvi

% eventdata reserved - to be defined in a future version of MATLAB


% handles structure with handles and user data (see GUIDATA)
tentang;

% --- Executes on button press in pushbutton5.


function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
help

D 2 Pengkodean Substr.m
function outstr= substr(str, offset, len)
%{
Syntax:

outstr= substr(str, offset, len)

substr extracts a substring of length len from the string str, starting
at the specified offset. In this version, the first character position
has
offset 1. (In Acklam's original code, the first character position has
offset 0, but this is inconsistent with Matlab conventions). If offset is
negative, the position is reckoned by counting backwards from the end of
the string. If len is omitted, substr returns everything to the end of
the
string. If len is negative, substr removes -len characters from the end
of
the string.

Examples:

Get first character: substr(string, 1, 1)


Get last character: substr(string, -1, 1)
Remove first character: substr(string, 2)
Remove last character: substr(string, 1, -1)
Remove first and last character: substr(string, 2, -1)

substr is a MATLAB version of Perl's substr operator. Unlike Perl's


substr, the first character is at position 1, and no warning is
produced if the substring is totally outside the string.

Author: Peter J. Acklam


E-mail: pjacklam@online.no
URL: http://home.online.no/~pjacklam

Modified by: Phillip M. Feldman, 16-May-2007


%}

% Check number of input arguments.


error(nargchk(2, 3, nargin));

n= length(str);

% Calculate starting index of substring:

if offset < 0
xxvii

lb= offset + n + 1; % offset from end of string


lb= max(lb, 1);
elseif offset == 0
lb= 1;
else
lb= offset;
end

% Calculate ending index of substring:

if nargin == 2 % substr(str, offset)


ub= n;

else % substr(str, offset, len)


if len >= 0
ub = lb + len - 1;
else
ub = n + len;
end
ub= min(ub, n);
end

% Extract substring:

outstr= str(lb : ub);

D 3 Pengkodean pelatihan.m
function varargout = pelatihan(varargin)
% PELATIHAN M-file for pelatihan.fig
% PELATIHAN, by itself, creates a new PELATIHAN or raises the
existing
% singleton*.
%
% H = PELATIHAN returns the handle to a new PELATIHAN or the handle
to
% the existing singleton*.
%
% PELATIHAN('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in PELATIHAN.M with the given input
arguments.
%
% PELATIHAN('Property','Value',...) creates a new PELATIHAN or
raises the
% existing singleton*. Starting from the left, property value pairs
are
% applied to the GUI before pelatihan_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to pelatihan_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only
one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
xxviii

% Edit the above text to modify the response to help pelatihan

% Last Modified by GUIDE v2.5 11-Feb-2016 20:59:47

% Begin initialization code - DO NOT EDIT


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
% End initialization code - DO NOT EDIT

% --- Executes just before pelatihan is made visible.


function pelatihan_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to pelatihan (see VARARGIN)
%menampilkan background======================
hback = axes('units','normalized','position',[0 0 1 1]);
uistack(hback,'bottom');
%%%%%% Load background image and display it
[back map]=imread('bckgrnd pelatihan.png');
image(back)
colormap(map)
set(hback,'handlevisibility','off','visible','off')
%===========================================
% Choose default command line output for pelatihan
%=====set parameter LVQ===
handles.output = hObject;
clc;
%set(handles.edalfa,'string','0.1');
%set(handles.eddecalfa,'string','0.25');
%set(handles.edminalfa,'string','0.00001');
%set(handles.maxiterasi,'string','1000');

%----set waktu-----%
waktu=datestr(now);
set(handles.waktu,'string',waktu);
% Update handles structure
guidata(hObject, handles);

% UIWAIT makes pelatihan wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = pelatihan_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
xxix

% hObject handle to figure


% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

%--membuat target--%
% --- 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)
%=====reset field
set(handles.per,'string','');
set(handles.simpersen,'string','');
set(handles.tHasil,'data',[]);

folder = ('database');
dirlist = dir([folder '/*.jpg']);
for i = 1:length(dirlist);
dirlist(i);
end

if length(dirlist)<60
warndlg('Citra Uji KURANG dari 60 data, data citra uji HARUS
berjumlah 60 data yaaa...','Peringatan');
return;
elseif length(dirlist)>60
warndlg('Citra Uji LEBIH dari 60 data, data citra uji HARUS berjumlah
60 data yaaa....','Peringatan');
return;
end;

%--baca folder citar ukuran 1000x1000--%


folder = ('database');
jsfile = dir([folder '/*.jpg']);
for f = 1:length(jsfile);
bfile = [folder '/' jsfile(f).name];
inp=imread(bfile);
[d e f]=size(inp);
end
if [d]<1000 || [e]<1000
warndlg('Citra Latih harus berdimensi lebih dari: 1000 x 1000
pixel','Peringatan');
return;
end;

%==menunggu proses==
%global dnama;
h = waitbar(0,'Membaca Database Citra','WindowStyle','modal');
if exist('target.txt', 'file')==2
delete('target.txt');
end

%== membaca database berupa di direktori database ====


sdirectory = 'database';
namafile = dir([sdirectory '/*.jpg']);
for t = 1:length(namafile);
%== Membaca namafile di directory =
xxx

filename = [sdirectory '/' namafile(t).name];

% mengambil images
data = imread(filename);
axes(handles.axes1);
imshow(data);
set(handles.file,'string',filename);
indeks=substr(namafile(t).name,1,1);
indeks;
if indeks=='b'
t=1;
elseif indeks=='g'
t=2;
else indeks=='t'
t=3;
end
save target.txt t -ascii -append;

war = load ('target.txt');


[ww,xx]=size(war);
yy=ww/length(namafile);
zz=round(yy*100);
if (ww==length(namafile))
waitbar(1,h,'Selesai....')
close(h)
else
waitbar(yy,h,sprintf('Proses: %d%% ',zz))
end,
end,

msgbox('Target telah selesai dibuat','pemberitahuan') ;

%--membuat database--%
% --- 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)
%===reset field===
set(handles.per,'string','');
set(handles.simpersen,'string','');
set(handles.tHasil,'data',[])

if exist('target.txt','file')==0
warndlg('Silahkan proses pembuatan TARGET terlebih
dahulu!','Peringatan');
return;
end

global dnama;
hh = waitbar(0,'Membuat Database Citra','WindowStyle','modal');
if exist('database.txt', 'file')==2
delete('database.txt');
end

%==membaca folder database==


folder = 'database';
namafile = dir([folder '/*.jpg']);
for f = 1:length(namafile)
tfile = [folder '/' namafile(f).name];
xxxi

inp=imread(tfile);
indk=substr(namafile(f).name,1,3);
indk1=substr(namafile(f).name,1,1);
indk2=substr(namafile(f).name,1,1);
indk3=substr(namafile(f).name,1,1);
indtep={indk};

axes(handles.axes1); % menampilkan image


imshow(inp);
set(handles.file,'string',tfile); %tampilkan nama file

%----CROPPING CITRA (REGION OF INTEREST)----%


[d e f]=size(inp);
u=1000;
g=round((d-u)/2);
h=round((e-u)/2);

for i=1:u
for j=1:u
for k=1:f
data(i,j,k)=inp((i+g),(j+h),k);
end
end
end

%--gray level--%

R=data(:,:,1); %mengambil layer R


G=data(:,:,2); %mengambil layer G
B=data(:,:,3); %mengambil layer B

gray=double(0.3333*R + 0.3333*G + 0.3333*B)/512;

%flter median
lp = medfilt2(gray);

%med=gray;
%[r,c]=size(med);

%for i=2:r-1
% for j=2:c-1
% array1=[ med(i-1,j-1) med(i-1,j) med(i,j+1) med(i,j-1) med(i,j)
med(i,j+1) med(i+1,j-1) med(i+1,j) med(i+1,j+1) ];
% lp(i,j)=median(array1);
% end
%end
%lp=median(array1);

%[m,n] = size(lp);
[m,n] = size(lp);

%--wavelet level 1--%


mm=m/2;
nn=n/2;
for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2));
cb2=(lp(i*2,j*2-1));
ca(i,j)=sqrt(cb1^2+cb2^2);
xxxii

end
end
[m1,n1]=size(ca);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2-1));
cv(i,j)=(cb1+cb2)/2;
end
end
[m2,n2]=size(cv);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2-1,j*2));
ch(i,j)=(cb1+cb2)/2;
end
end
[m3,n3]=size(ch);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2));
cd(i,j)=(cb1+cb2)/2;
end
end
[m4,n4]=size(cd);

%--wavelet level 2--%

mmm=m1/2;
nnn=n1/2;
for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2));
cb2=(ca(i*2,j*2-1));
ca2(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mm1,nn1]=size(ca2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2-1));
cv2(i,j)=(cb1+cb2)/2;
end
end
[mm2,nn2]=size(cv2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2-1,j*2));
ch2(i,j)=(cb1+cb2)/2;
end
end
xxxiii

[mm3,nn3]=size(ch2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2));
cd2(i,j)=(cb1+cb2)/2;
end
end
[mm4,nn4]=size(cd2);

%--wavelet level 3--%

mmmm=mm1/2;
nnnn=nn1/2;
for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2));
cb2=(ca2(i*2,j*2-1));
ca3(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mmm1,nnn1]=size(ca3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2-1));
cv3(i,j)=(cb1+cb2)/2;
end
end
[mmm2,nnn2]=size(cv3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2-1,j*2));
ch3(i,j)=(cb1+cb2)/2;
end
end
[mmm3,nnn3]=size(ch3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2));
cd3(i,j)=(cb1+cb2)/2;
end
end
[mmm4,nnn4]=size(cd3);
%Mengambil ciri dari wavelet level 3
ratca3 = mean2(ca3);
ratch3 = mean2(ch3);
ratcv3 = mean2(cv3);
ratcd3 = mean2(cd3);

stdca3 = std2(ca3);
stdch3 = std2(ch3);
stdcv3 = std2(cv3);
stdcd3 = std2(cd3);
xxxiv

entca3 = entropy(ca3);
entch3 = entropy(ch3);
entcv3 = entropy(cv3);
entcd3 = entropy(cd3);

%-cari mean ca3 wavelet L3-%


%x = imread ('uji.jpg');
[mmm1,nnn1]=size(ca3);
%[a,b] = size(x);
mean = 0;
for i=1:mmm1,
for j=1:nnn1
mean = mean + ca3(i,j);
end
end
mean_ca3 = mean/(mmm1 * nnn1 );

%-standar deviasi ca3 L3-%


SD = 0;
for i=1:mmm1
for j=1:nnn1
SD = SD + (ca3(i,j) - mean_ca3 )^2;
end
end
SD = SD / (mmm1 * nnn1);
%SU = double (SD);
std_ca3 = sqrt(SD);
std_ca3;

%-ciri-%
%ciri = [ratca3 stdca3 entca3 ratch3 stdch3 entch3]; %simpan ciri
% save database.txt ciri -append -ascii;

ciri = [ratca3 stdca3 entca3 ratch3 stdch3 entch3]; %simpan ciri


save database.txt ciri -append -ascii;

set(handles.tciri,'data',ciri);

war = load ('database.txt');


[ww,xx]=size(war);
yy=ww/length(namafile);
zz=round(yy*100);
if (ww==length(namafile))
waitbar(1,hh,'Selesai....')
close(hh)
else
waitbar(yy,hh,sprintf('Proses: %d%% ',zz))
end,

%---tampilkan ciri ke tabel--%


open=load('database.txt');
dataciri=[open];
set(handles.tciri,'data',dataciri);
end
xxxv

msgbox('Database telah selesai dibuat','pemberitahuan') ;

% --- Executes during object creation, after setting all properties.


function listbox1_CreateFcn(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: listbox controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in pushbutton3.


function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.per,'string',''); % set parameter
set(handles.simpersen,'string','');
set(handles.tHasil,'data',[])

if exist('target.txt','file')==0
warndlg('Silahkan proses pembuatan TARGET terlebih
dahulu!','Peringatan');
return;
end

if exist('database.txt','file')==0
warndlg('Silahkan proses pembuatan DATABASE terlebih
dahulu!','Peringatan');
return;
end

global dnama;
hh = waitbar(0,'Menyimpan Bobot Awal','WindowStyle','modal');
if exist('bobotawal.txt','file')==2
delete('bobotawal.txt');
end

%membaca database
sdirectory = 'database';
namafile = dir([sdirectory '/*.jpg']);
for t = 1:length(namafile)
%--Membaca namafile di directory--
filename = [sdirectory '/' namafile(t).name];

ind1=substr(namafile(t).name,1,3);
ind2=substr(namafile(t).name,1,3);
ind3=substr(namafile(t).name,1,3);
%mengambil citra
if ind1=='b11';
xxxvi

%--proses croping--%
inp=imread(filename);

[d e f]=size(inp);
u=1000;
g=round((d-u)/2);
h=round((e-u)/2);

for i=1:u
for j=1:u
for k=1:f
data(i,j,k)=inp((i+g),(j+h),k);
end
end
end

%gray level
R=data(:,:,1); %mengambil layer R
G=data(:,:,2); %mengambil layer G
B=data(:,:,3); %mengambil layer B

gray=double(0.3333*R + 0.3333*G + 0.3333*B)/512;


[m, n]=size(gray);

lp=medfilt2(gray); %filter median

%--wavelet level 1--%


mm=m/2;
nn=n/2;
for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2));
cb2=(lp(i*2,j*2-1));
ca(i,j)=sqrt(cb1^2+cb2^2);
end
end
[m1,n1]=size(ca);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2-1));
cv(i,j)=(cb1+cb2)/2;
end
end
[m2,n2]=size(cv);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2-1,j*2));
ch(i,j)=(cb1+cb2)/2;
end
end
[m3,n3]=size(ch);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2));
xxxvii

cd(i,j)=(cb1+cb2)/2;
end
end
[m4,n4]=size(cd);

%wavelet level 2
mmm=m1/2;
nnn=n1/2;

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2));
cb2=(ca(i*2,j*2-1));
ca2(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mm1,nn1]=size(ca2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2-1));
cv2(i,j)=(cb1+cb2)/2;
end
end
[mm2,nn2]=size(cv2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2-1,j*2));
ch2(i,j)=(cb1+cb2)/2;
end
end
[mm3,nn3]=size(ch2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2));
cd2(i,j)=(cb1+cb2)/2;
end
end
[mm4,nn4]=size(cd2);

%wavelet level 3
mmmm=mm1/2;
nnnn=nn1/2;

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2));
cb2=(ca2(i*2,j*2-1));
ca3(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mmm1,nnn1]=size(ca3);

for i=1:mmmm
for j=1:nnnn
xxxviii

cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2-1));
cv3(i,j)=(cb1+cb2)/2;
end
end
[mmm2,nnn2]=size(cv3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2-1,j*2));
ch3(i,j)=(cb1+cb2)/2;
end
end
[mmm3,nnn3]=size(ch3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2));
cd3(i,j)=(cb1+cb2)/2;
end
end
[mmm4,nnn4]=size(cd3);

%mengambil ciri dari wavelet level 3


ratca3=mean2(ca3);
ratch3=mean2(ch3);
ratcv3=mean2(cv3);
ratcd3=mean2(cd3);

stdca3=std2(ca3);
stdch3=std2(ch3);
stdcv3=std2(cv3);
stdcd3=std2(cd3);

entca3=entropy(ca3);
entch3=entropy(ch3);
entcv3=entropy(cv3);
entcd3=entropy(cd3);

W1=[ratca3 stdca3 entca3 ratch3 stdch3 entch3];


save bobotawal.txt W1 -ascii -append; %simpan bobot awal
end
if ind1=='g11'; %baca indek

%--croping--%
inp=imread(filename);
[d e f]=size(inp);
u=1000;
g=round((d-u)/2);
h=round((e-u)/2);

for i=1:u
for j=1:u
for k=1:f
data(i,j,k)=inp((i+g),(j+h),k);
end
end
end
xxxix

%gray level
R=data(:,:,1); %mengambil layer R
G=data(:,:,2); %mengambil layer G
B=data(:,:,3); %mengambil layer B

gray=double(0.3333*R + 0.3333*G + 0.3333*B)/512;


[m, n]=size(gray);

%filter median
lp=medfilt2(gray);

%wavelet level 1

mm=m/2;
nn=n/2;
for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2));
cb2=(lp(i*2,j*2-1));
ca(i,j)=sqrt(cb1^2+cb2^2);
end
end
[m1,n1]=size(ca);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2-1));
cv(i,j)=(cb1+cb2)/2;
end
end
[m2,n2]=size(cv);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2-1,j*2));
ch(i,j)=(cb1+cb2)/2;
end
end
[m3,n3]=size(ch);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2));
cd(i,j)=(cb1+cb2)/2;
end
end
[m4,n4]=size(cd);

%wavelet level 2
mmm=m1/2;
nnn=n1/2;

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2));
xl

cb2=(ca(i*2,j*2-1));
ca2(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mm1,nn1]=size(ca2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2-1));
cv2(i,j)=(cb1+cb2)/2;
end
end
[mm2,nn2]=size(cv2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2-1,j*2));
ch2(i,j)=(cb1+cb2)/2;
end
end
[mm3,nn3]=size(ch2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2));
cd2(i,j)=(cb1+cb2)/2;
end
end
[mm4,nn4]=size(cd2);

%wavelet level 3
mmmm=mm1/2;
nnnn=nn1/2;

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2));
cb2=(ca2(i*2,j*2-1));
ca3(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mmm1,nnn1]=size(ca3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2-1));
cv3(i,j)=(cb1+cb2)/2;
end
end
[mmm2,nnn2]=size(cv3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2-1,j*2));
ch3(i,j)=(cb1+cb2)/2;
xli

end
end
[mmm3,nnn3]=size(ch3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2));
cd3(i,j)=(cb1+cb2)/2;
end
end
[mmm4,nnn4]=size(cd3);
%mengambil ciri dari wavelet level 3

ratca3=mean2(ca3);
ratch3=mean2(ch3);
ratcv3=mean2(cv3);
ratcd3=mean2(cd3);

stdca3=std2(ca3);
stdch3=std2(ch3);
stdcv3=std2(cv3);
stdcd3=std2(cd3);

entca3=entropy(ca3);
entch3=entropy(ch3);
entcv3=entropy(cv3);
entcd3=entropy(cd3);

W2 = [ratca3 stdca3 entca3 ratch3 stdch3 entch3];


save bobotawal.txt W2 -ascii -append; %--simpan bobot awal w2
end
if ind1=='t11'; % -- baca indek -- %

%croping
inp=imread(filename);

[d e f]=size(inp);
u=1000;
g=round((d-u)/2);
h=round((e-u)/2);

for i=1:u
for j=1:u
for k=1:f
data(i,j,k)=inp((i+g),(j+h),k);
end
end
end

%gray level
R=data(:,:,1); %mengambil layer R
G=data(:,:,2); %mengambil layer G
B=data(:,:,3); %mengambil layer B

gray=double(0.3333*R + 0.3333*G + 0.3333*B)/512;


[m, n]=size(gray);
xlii

%filter median
lp=medfilt2(gray);

%wavelet level 1

mm=m/2;
nn=n/2;
for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2));
cb2=(lp(i*2,j*2-1));
ca(i,j)=sqrt(cb1^2+cb2^2);
end
end
[m1,n1]=size(ca);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2-1));
cv(i,j)=(cb1+cb2)/2;
end
end
[m2,n2]=size(cv);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2-1,j*2));
ch(i,j)=(cb1+cb2)/2;
end
end
[m3,n3]=size(ch);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2));
cd(i,j)=(cb1+cb2)/2;
end
end
[m4,n4]=size(cd);

%wavelet level 2
mmm=m1/2;
nnn=n1/2;

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2));
cb2=(ca(i*2,j*2-1));
ca2(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mm1,nn1]=size(ca2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2-1));
xliii

cv2(i,j)=(cb1+cb2)/2;
end
end
[mm2,nn2]=size(cv2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2-1,j*2));
ch2(i,j)=(cb1+cb2)/2;
end
end
[mm3,nn3]=size(ch2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2));
cd2(i,j)=(cb1+cb2)/2;
end
end
[mm4,nn4]=size(cd2);

%wavelet level 3
mmmm=mm1/2;
nnnn=nn1/2;

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2));
cb2=(ca2(i*2,j*2-1));
ca3(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mmm1,nnn1]=size(ca3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2-1));
cv3(i,j)=(cb1+cb2)/2;
end
end
[mmm2,nnn2]=size(cv3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2-1,j*2));
ch3(i,j)=(cb1+cb2)/2;
end
end
[mmm3,nnn3]=size(ch3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2));
cd3(i,j)=(cb1+cb2)/2;
end
xliv

end
[mmm4,nnn4]=size(cd3);
%mengambil ciri dari wavelet level 3

ratca3=mean2(ca3);
ratch3=mean2(ch3);
ratcv3=mean2(cv3);
ratcd3=mean2(cd3);

stdca3=std2(ca3);
stdch3=std2(ch3);
stdcv3=std2(cv3);
stdcd3=std2(cd3);

entca3=entropy(ca3);
entch3=entropy(ch3);
entcv3=entropy(cv3);
entcd3=entropy(cd3);

W3=[ratca3 stdca3 entca3 ratch3 stdch3 entch3];


save bobotawal.txt W3 -ascii -append; %--simpan bobot awal w3--%
end
end
steps = 1000; %waitbar
for step = 1:steps
waitbar(step / steps)
end
close(hh)

%--tampilkan di tabel--%
openbobotawal=load('bobotawal.txt');
bobotawal=[openbobotawal];
set(handles.tbobotawal,'data',bobotawal);

msgbox('Bobot awal telah selesai dibuat','pemberitahuan');

function edalfa_Callback(hObject, eventdata, handles)


% hObject handle to edalfa (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 edalfa as text


% str2double(get(hObject,'String')) returns contents of edalfa as
a double

% --- Executes during object creation, after setting all properties.


function edalfa_CreateFcn(hObject, eventdata, handles)
% hObject handle to edalfa (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
xlv

function eddecalfa_Callback(hObject, eventdata, handles)


% hObject handle to eddecalfa (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 eddecalfa as text


% str2double(get(hObject,'String')) returns contents of eddecalfa
as a double

% --- Executes during object creation, after setting all properties.


function eddecalfa_CreateFcn(hObject, eventdata, handles)
% hObject handle to eddecalfa (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 edminalfa_Callback(hObject, eventdata, handles)


% hObject handle to edminalfa (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 edminalfa as text


% str2double(get(hObject,'String')) returns contents of edminalfa
as a double
% --- Executes during object creation, after setting all properties.
function edminalfa_CreateFcn(hObject, eventdata, handles)
% hObject handle to edminalfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

%========================================================================
=========
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global bb;

%--cek bila ada file yang sama--%


if exist('database.txt','file')==0
warndlg('Silahkan proses pembuatan database terlebih
dahulu!','Peringatan');
return;
elseif exist('target.txt','file')==0
warndlg('Silahkan proses pembuatan target terlebih
dahulu!','Peringatan');
return;
xlvi

elseif exist('bobotawal.txt','file')==0
warndlg('Silahkan proses pembuatan bobot awal terlebih
dahulu!','Peringatan');
return;
end

%--waitbar--%
hhh = waitbar(0,'Membaca Data Citra Pelatihan','WindowStyle','modal');

%--kosongkan field--%
set(handles.tHasil,'data',[])
set(handles.per,'string','');
set(handles.simpersen,'string','');

if exist('hasil1.txt', 'file')==2 %--cek file hasil1.txt--%


delete('hasil1.txt');
end

%--baca folder database--%


folder = 'database';
jsfile = dir([folder '/*.jpg']);
for f = 1:length(jsfile)
tfile = [folder '/' jsfile(f).name];
inp=imread(tfile);
axes(handles.axes1);
imshow(inp);
set(handles.file,'string',tfile);
if exist('ciripelatihan.txt', 'file')==2 %--cek file--%
delete('ciripelatihan.txt');
end

%----CROPPING CITRA (REGION OF INTEREST)----%

[d e f]=size(inp);
u=1000;
g=round((d-u)/2);
h=round((e-u)/2);

for i=1:u
for j=1:u
for k=1:f
data(i,j,k)=inp((i+g),(j+h),k);
end
end
end

%----gray level----%

R=data(:,:,1); %mengambil layer R


G=data(:,:,2); %mengambil layer G
B=data(:,:,3); %mengambil layer B

gray=double(0.3333*R + 0.3333*G + 0.3333*B)/512;


[m,n] = size(gray);

%flter median
lp = medfilt2(gray);
%----wavelet level 1----%
xlvii

mm=m/2;
nn=n/2;
for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2));
cb2=(lp(i*2,j*2-1));
ca(i,j)=sqrt(cb1^2+cb2^2);
end
end
[m1,n1]=size(ca);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2-1));
cv(i,j)=(cb1+cb2)/2;
end
end
[m2,n2]=size(cv);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2-1,j*2));
ch(i,j)=(cb1+cb2)/2;
end
end
[m3,n3]=size(ch);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2));
cd(i,j)=(cb1+cb2)/2;
end
end
[m4,n4]=size(cd);

%----wavelet level 2----%

mmm=m1/2;
nnn=n1/2;
for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2));
cb2=(ca(i*2,j*2-1));
ca2(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mm1,nn1]=size(ca2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2-1));
cv2(i,j)=(cb1+cb2)/2;
end
end
xlviii

[mm2,nn2]=size(cv2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2-1,j*2));
ch2(i,j)=(cb1+cb2)/2;
end
end
[mm3,nn3]=size(ch2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2));
cd2(i,j)=(cb1+cb2)/2;
end
end
[mm4,nn4]=size(cd2);

%----wavelet level 3----%

mmmm=mm1/2;
nnnn=nn1/2;
for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2));
cb2=(ca2(i*2,j*2-1));
ca3(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mmm1,nnn1]=size(ca3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2-1));
cv3(i,j)=(cb1+cb2)/2;
end
end
[mmm2,nnn2]=size(cv3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2-1,j*2));
ch3(i,j)=(cb1+cb2)/2;
end
end
[mmm3,nnn3]=size(ch3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2));
cd3(i,j)=(cb1+cb2)/2;
end
end
xlix

[mmm4,nnn4]=size(cd3);

%Mengambil ciri dari wavelet level 3


ratca3 = mean2(ca3);
ratch3 = mean2(ch3);
ratcv3 = mean2(cv3);
ratcd3 = mean2(cd3);

stdca3 = std2(ca3);
stdch3 = std2(ch3);
stdcv3 = std2(cv3);
stdcd3 = std2(cd3);

entca3 = entropy(ca3);
entch3 = entropy(ch3);
entcv3 = entropy(cv3);
entcd3 = entropy(cd3);

ciri = [ratca3 stdca3 entca3 ratch3 stdch3 entch3];


save ciripelatihan.txt ciri -append -ascii; %--simpan file--%

ambil_string_alfa=get(handles.popupalfa,'string'); % string in it
entirety
ambil_value_alfa=get(handles.popupalfa,'value'); % chosen value
galfa=ambil_string_alfa(ambil_value_alfa,:); % chosen string

ambil_string_decalfa=get(handles.popupdecalfa,'string'); % string in it
entirety
ambil_value_decalfa=get(handles.popupdecalfa,'value'); % chosen value
gdecalfa=ambil_string_decalfa(ambil_value_decalfa,:); % chosen string

ambil_string_minalfa=get(handles.popupminalfa,'string'); % string in it
entirety
ambil_value_minalfa=get(handles.popupminalfa,'value'); % chosen value
gminalfa=ambil_string_minalfa(ambil_value_minalfa,:); % chosen string

ambil_string_iterasi=get(handles.popupiterasi,'string'); % string in it
entirety
ambil_value_iterasi=get(handles.popupiterasi,'value'); % chosen value
gmakiterasi=ambil_string_iterasi(ambil_value_iterasi,:); % chosen string

%galfa = get(handles.popupalfa, 'Value');


%gdecalfa= get(handles.popupdecalfa, 'Value');
%gminalfa= get(handles.popupminalfa, 'Value');
%gmakiterasi = get(handles.popupiterasi, 'Value');

alfa=str2double(galfa);
decalfa=str2double(gdecalfa);
minalfa=str2double(gminalfa);
makiterasi=str2double(gmakiterasi);
iterasi=0;

%--convert number to string--%


ta=num2str(alfa);
td=num2str(decalfa);
l

if exist('ciripelatihan.txt', 'file')==2 %--cek file--%


buka=load('ciripelatihan.txt');
[mm,nn]=size(buka);

for i=1:mm
ciri=buka(i,:);
[m2,n2]=size(ciri);

%--load file txt--%


X= load('database.txt');
T= load('target.txt');
W= load('bobotawal.txt');

[m,n]=size(X);
[m1,n1]=size(W);

while ((iterasi<=makiterasi)&&(alfa>=minalfa))
for k=1:m,
for c=1:m1,
D(c)=0;
for i=1:n,
D(c)=D(c)+(W(c,i)-X(k,i))^2;
end,
D(c)=sqrt(D(c));
[jmin idx]=min(D);
if (idx==T(k))
W(idx,:)=W(idx,:)+alfa*(X(k,:)-W(idx,:));
else
W(idx,:)=W(idx,:)-alfa*(X(k,:)-W(idx,:));
end,

end,
end,
iterasi=iterasi+1;
alfa=alfa-decalfa*alfa;
end
bb=W;

tep=[];
Hasil=[];
H=[];
for i=1:m2,
for c=1:m1,
D(c)=0;
for j=1:n,
D(c)=D(c)+(W(c,j)-ciri(i,j))^2;
end;
D(c)=sqrt(D(c));
end;
[jmin idx]=min(D);
%H=[H idx];
% A=T(idx,:);
[jmin idx];
end;
save hasil1.txt idx -ascii -append;
end

end
war = load ('hasil1.txt');
[ww,xx]=size(war);
li

yy=ww/length(jsfile);
zz=round(yy*100);
if (ww==length(jsfile))
waitbar(1,hhh,'Selesai....')
close(hhh)
else
waitbar(yy,hhh,sprintf('Proses: %d%% ',zz))
end
end

h=load('hasil1.txt');
jum1=0;
jum2=0;
jum3=0;
[m,n]=size(h);
for i=1:n
for j=1:20;
if h(j,i)==1
per=20;
else
per=0;
end
jum1=jum1+per;
end
end
jum1;

for i=1:n
for j=21:40;
if h(j,i)==2
per=20;
else
per=0;
end
jum2=jum2+per;
end
end
jum2;

for i=1:n
for j=41:60;
if h(j,i)==3
per=20;
else
per=0;
end
jum3=jum3+per;
end
end
jum3;

jum1;
jum2;
jum3;

per=(jum1+jum2+jum3)/12;
set(handles.per,'string',per);
set(handles.simpersen,'string','%');

sdirectory = 'database';
namafile = dir([sdirectory '/*.jpg']);
lii

for t = 1:length(namafile)
%== Membaca nama file di directory ==
filename = [sdirectory '/' namafile(t).name] ;
indk=substr(namafile(t).name,1,3);
indtep(t)={indk};
end
tep=indtep;

for i=1:60;
a(i)={ta};
da(i)={td};
it(i)={iterasi};
end
h=load('hasil1.txt');
as= num2cell(h);
dtab= [ tep' a' da' it' as];
set(handles.tHasil,'data',dtab);
msgbox('Pelatihan Selesai ','Pelatihan')

% --- Executes on button press in pushbutton5.


function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global bb;

if isempty(get(handles.per,'String'))
warndlg('Silahkan proses data PELATIHAN terlebih dahulu!','Peringatan');
return;
end

%--waitbar--%
h = waitbar(0,'Menyimpan Bobot Akhir','WindowStyle','modal');

if exist('bobotakhir.txt', 'file')==2 %--cek file--%


delete('bobotakhir.txt');
end
save bobotakhir.txt bb -append -ascii; %--simpan file--%

steps = 1000;
for step = 1:steps
waitbar(step / steps)
end
close(h)

%--tampilkan di tabel--%
openBobotAkhir=load('bobotakhir.txt');
databobotakhir=[openBobotAkhir];
set(handles.tBobotAkhir,'data',databobotakhir);

msgbox('Bobot akhir telah disimpan ','Bobot Akhir')

% --- Executes on button press in pushbutton6.


function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%--menu keluar--%
selection=questdlg(['Keluar ' get(handles.figure1,'Name')''],...
['Keluar ' get(handles.figure1,'Name')''],...
liii

'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)

% --- Executes on selection change in listbox1.


function listbox1_Callback(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns listbox1 contents as


cell array
% contents{get(hObject,'Value')} returns selected item from
listbox1

% --- Executes on button press in reset.


function reset_Callback(hObject, eventdata, handles)
% hObject handle to reset (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%--reset field--%
cla(handles.axes1,'reset');
set(handles.file,'string','');
set(handles.per,'string','');
set(handles.simpersen,'string','');
set(handles.tHasil,'data',[]);
set(handles.tciri,'data',[]);
set(handles.tbobotawal,'data',[]);
set(handles.tBobotAkhir,'data',[]);

function maxiterasi_Callback(hObject, eventdata, handles)


% hObject handle to maxiterasi (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 maxiterasi as text


% str2double(get(hObject,'String')) returns contents of maxiterasi
as a double

% --- Executes during object creation, after setting all properties.


function maxiterasi_CreateFcn(hObject, eventdata, handles)
% hObject handle to maxiterasi (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
liv

% --- Executes on selection change in popupalfa.


function popupalfa_Callback(hObject, eventdata, handles)
% hObject handle to popupalfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupalfa contents as


cell array
% contents{get(hObject,'Value')} returns selected item from
popupalfa

% --- Executes during object creation, after setting all properties.


function popupalfa_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupalfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');

end

% --- Executes on selection change in popupdecalfa.


function popupdecalfa_Callback(hObject, eventdata, handles)
% hObject handle to popupdecalfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupdecalfa contents


as cell array
% contents{get(hObject,'Value')} returns selected item from
popupdecalfa

% --- Executes during object creation, after setting all properties.


function popupdecalfa_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupdecalfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on selection change in popupminalfa.


function popupminalfa_Callback(hObject, eventdata, handles)
% hObject handle to popupminalfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
lv

% Hints: contents = get(hObject,'String') returns popupminalfa contents


as cell array
% contents{get(hObject,'Value')} returns selected item from
popupminalfa

% --- Executes during object creation, after setting all properties.


function popupminalfa_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupminalfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on selection change in popupiterasi.


function popupiterasi_Callback(hObject, eventdata, handles)
% hObject handle to popupiterasi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupiterasi contents


as cell array
% contents{get(hObject,'Value')} returns selected item from
popupiterasi

% --- Executes during object creation, after setting all properties.


function popupiterasi_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupiterasi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: popupmenu 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

D 4 Pengkodean pengujian.m
function varargout = pengujian(varargin)
% PENGUJIAN M-file for pengujian.fig
% PENGUJIAN, by itself, creates a new PENGUJIAN or raises the
existing
% singleton*.
%
% H = PENGUJIAN returns the handle to a new PENGUJIAN or the handle
to
% the existing singleton*.
%
lvi

% PENGUJIAN('CALLBACK',hObject,eventData,handles,...) calls the


local
% function named CALLBACK in PENGUJIAN.M with the given input
arguments.
%
% PENGUJIAN('Property','Value',...) creates a new PENGUJIAN or
raises the
% existing singleton*. Starting from the left, property value pairs
are
% applied to the GUI before pengujian_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to pengujian_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only
one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help pengujian

% Last Modified by GUIDE v2.5 19-Feb-2016 11:19:45

% Begin initialization code - DO NOT EDIT


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
% End initialization code - DO NOT EDIT
function varargout = pengujian_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes just before pengujian is made visible.


function pengujian_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to pengujian (see VARARGIN)
handles.output = hObject;
lvii

%--image background--%
hback = axes('units','normalized','position',[0 0 1 1]);
uistack(hback,'bottom');
%%%%%% Load background image and display it
[back map]=imread('bckgrnd pengujian.png');
image(back)
colormap(map)
set(hback,'handlevisibility','off','visible','off')
% Choose default command line output for pengujian
waktu=datestr(now); %--set waktu--%
set(handles.waktu,'string',waktu);
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes pengujian wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
% --- 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)
%--bersihkan field--%
clc;
set(handles.txket,'string','');
set(handles.file,'string','');
cla(handles.axes1,'reset');
cla(handles.axes2,'reset');
cla(handles.axes3,'reset');
cla(handles.axes4,'reset');
cla(handles.axes6,'reset');
cla(handles.axes7,'reset');

set(handles.meanca,'string','');
set(handles.stdca,'string','');
set(handles.entca,'string','');
set(handles.meanch,'string','');
set(handles.stdch,'string','');
set(handles.entch,'string','');
set(handles.de,'string','');
set(handles.jarak,'string','');
set(handles.kelas,'string','');
set(handles.keterangan,'string','');

%--buka file--%
[name_file1,name_path1] = uigetfile( ...
{'*.bmp;*.jpg;*.tif','Files of type (*.bmp,*.jpg,*.tif)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';
'*.tif','File Tif (*.tif)';
'*.*','All Files (*.*)'},...
'Open Image');

%--baca file--%
if ~isequal(name_file1,0)
handles.data1 = imread(fullfile(name_path1,name_file1));
guidata(hObject,handles);
axes(handles.axes1); %--tampilkan file--%
imshow(handles.data1);
set(handles.file,'string',name_file1);
else
return;
end
lviii

% --- 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)
%--waitbat--%
hh = waitbar(0,'Proses Crop dan Gray Data Uji
Citra','WindowStyle','modal');
steps = 100;
for step = 1:steps
waitbar(step / steps)
end
close(hh)

if isempty(get(handles.axes1,'children'))
warndlg('Silahkan PILIH CITRA terlebih dahulu..!!!!','Peringatan');
return;
end

image1 = handles.data1; % baca file

%----CROPPING CITRA (REGION OF INTEREST)----%

[d e f]=size(image1);
if [d]<1000 || [e]<1000
warndlg('Citra Uji harus berdimensi lebih dari: 1000 x 1000
pixel','Peringatan');
return;
end

u=1000;
g=round((d-u)/2);
h=round((e-u)/2);

for i=1:u
for j=1:u
for k=1:f
data(i,j,k)=image1((i+g),(j+h),k);
end
end
end

axes(handles.axes2);
imshow(data);
pathname = 'D:\Skripsi\data citra\crop\crop uji\';
imwrite(data,[pathname, 'crop_','.jpg']); %--simpan citra--%

%----gray level----%
R=data(:,:,1); %mengambil layer R
G=data(:,:,2); %mengambil layer G
B=data(:,:,3); %mengambil layer B

gray=double(0.3333*R + 0.3333*G + 0.3333*B)/512;

%flter median
lp = medfilt2(gray);

%med=gray;
lix

%[r,c]=size(med);

%for ii=2:r-1
% for jj=2:c-1
% array1=[ med(ii-1,jj-1) med(ii-1,jj) med(ii,jj+1) med(ii,jj-1)
med(ii,jj) med(ii,jj+1) med(ii+1,jj-1) med(ii+1,jj) med(ii+1,jj+1) ];
% lp(ii,jj)=median(array1);
% end
%end
%lp=median(array1);
[m,n] = size(lp);

axes(handles.axes7);
imshow(lp); %--tampilkan citra--%
handles.data2 = lp;
pathnamegray = 'D:\Skripsi\data citra\gray\uji\';
imwrite(lp,[pathnamegray, 'gray_','.jpg']); %--simpan citra--%
pathnamemasking = 'D:\Skripsi\data citra\masking\uji\';
imwrite(lp,[pathnamemasking, 'mask_','.jpg']);
guidata(hObject,handles);

% --- 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)
if isempty(get(handles.axes1,'children'))
warndlg('Silahkan PILIH CITRA terlebih dahulu...!!!','Peringatan');
return;
end
if isempty(get(handles.axes2,'children'))
warndlg('Silahkan lakukan PRAPROSES dahulu...!!!','Peringatan');
return;
end

if exist('uji1.txt', 'file')==2 %--cek file--%


delete('uji1.txt');
end

global ciri;
lp = handles.data2;
[m,n] = size(lp);

%----wavelet level 1----%


mm=m/2;
nn=n/2;
for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2));
cb2=(lp(i*2,j*2-1));
ca(i,j)=sqrt(cb1^2+cb2^2);
end
end
[m1,n1]=size(ca);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2-1));
cv(i,j)=(cb1+cb2)/2;
lx

end
end
[m2,n2]=size(cv);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2-1,j*2));
ch(i,j)=(cb1+cb2)/2;
end
end
[m3,n3]=size(ch);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2));
cd(i,j)=(cb1+cb2)/2;
end
end
[m4,n4]=size(cd);

%----wavelet level 2----%


mmm=m1/2;
nnn=n1/2;
for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2));
cb2=(ca(i*2,j*2-1));
ca2(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mm1,nn1]=size(ca2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2-1));
cv2(i,j)=(cb1+cb2)/2;
end
end
[mm2,nn2]=size(cv2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2-1,j*2));
ch2(i,j)=(cb1+cb2)/2;
end
end
[mm3,nn3]=size(ch2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2));
cd2(i,j)=(cb1+cb2)/2;
end
end
[mm4,nn4]=size(cd2);
lxi

%--waitbar--%
hh = waitbar(0,'Proses Wavelet Data Uji Citra','WindowStyle','modal');
steps = 100;
for step = 1:steps
waitbar(step / steps)
end
close(hh)

%----wavelet level 3----%


mmmm=mm1/2;
nnnn=nn1/2;
for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2));
cb2=(ca2(i*2,j*2-1));
ca3(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mmm1,nnn1]=size(ca3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2-1));
cv3(i,j)=(cb1+cb2)/2;
end
end
[mmm2,nnn2]=size(cv3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2-1,j*2));
ch3(i,j)=(cb1+cb2)/2;
end
end
[mmm3,nnn3]=size(ch3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2));
cd3(i,j)=(cb1+cb2)/2;
end
end
[mmm4,nnn4]=size(cd3);

level1=[ca cv;
ch cd;];
level2ca=[ca2 cv2;
ch2 cd2;];
level3ca=[ca3 cv3;
ch3 cd3;];

axes(handles.axes3);
imshow(level1);
pathnamelevel1 = 'D:\Skripsi\data citra\level\uji\L1\';
imwrite(level1,[pathnamelevel1, 'L1_','.jpg']); %--simpan citra--%
lxii

axes(handles.axes4);
imshow(level2ca);
pathnamelevel2 = 'D:\Skripsi\data citra\level\uji\L2\';
imwrite(level2ca,[pathnamelevel2, 'L2_','.jpg']); %--simpan citra--%

axes(handles.axes6);
imshow(level3ca);
pathnamelevel3 = 'D:\Skripsi\data citra\level\uji\L3\';
imwrite(level3ca,[pathnamelevel3, 'L3_','.jpg']); %--simpan citra--%

handles.data3 = ca3;
handles.data3 = ca3;
guidata(hObject,handles);

%Mengambil ciri dari wavelet level 3


ratca3 = mean2(ca3);
ratch3 = mean2(ch3);
ratcv3 = mean2(cv3);
ratcd3 = mean2(cd3);

stdca3 = std2(ca3);
stdch3 = std2(ch3);
stdcv3 = std2(cv3);
stdcd3 = std2(cd3);

entca3 = entropy(ca3);
entch3 = entropy(ch3);
entcv3 = entropy(cv3);
entcd3 = entropy(cd3);

set(handles.meanca,'string',ratca3);
set(handles.stdca,'string',stdca3);
set(handles.entca,'string',entca3);

set(handles.meanch,'string',ratch3);
set(handles.stdch,'string',stdch3);
set(handles.entch,'string',entch3);

ciriwv = [ratca3 stdca3 entca3 ratch3 stdch3 entch3];


save uji1.txt ciriwv -ascii -append; %--simpan file--%

% --- Executes on button press in pushbutton4.


function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

if isempty(get(handles.axes1,'children'))
warndlg('Silahkan PILIH CITRA terlebih dahulu...!!!','Peringatan');
return;
end
if isempty(get(handles.axes2,'children'))
warndlg('Silahkan lakukan PRAPROSES dahulu...!!!','Peringatan');
return;
end
if isempty(get(handles.axes3,'children'))
warndlg('Silahkan lakukan proses WAVELET dahulu...!!!','Peringatan');
return;
end
lxiii

set(handles.txket,'string','');
%--load file .txt--%
P=load('uji1.txt');
W=load('bobotakhir.txt');
X= load('database.txt');
T= load('target.txt');

[m,n]=size(X);
[m1,n1]=size(W);
[m2, n2]=size(P);
te=[];
Hasil=[];
H=[];
for i=1:m2,
for c=1:m1,
D(c)=0;
for j=1:n,
D(c)=D(c)+(W(c,j)-P(i,j))^2;
end;
D(c)=sqrt(D(c));
end;
[jmin idx]=min(D);
A=T(idx,:);
end;
A;
idx
D
min(D)
jmin

if min(D)>=1
set(handles.txket,'string','Bukan Tepung');
set(handles.keterangan,'string','Citra input bukan tepung');
set(handles.de,'string',D);
set(handles.jarak,'string',jmin);
set(handles.kelas,'string','Tidak ada');
% idx=0;
elseif min(D)< 0.0070
set(handles.txket,'string','Bukan Tepung');
set(handles.keterangan,'string','Citra input bukan tepung');
set(handles.de,'string',D);
set(handles.jarak,'string',jmin);
set(handles.kelas,'string','Tidak ada');
% set(handles.txket,'string','Tepung Gandum');
% idx=0;
% elseif(idx==3)&&(min(D)>=0.1971)
%0.1826 /// 0.8064 0.8702 0.3316
% set(handles.txket,'string','Tepung Tapioka');
% idx=0;
else
if(idx==1)
set(handles.txket,'string',' Tepung Beras');
set(handles.de,'string',D);
set(handles.jarak,'string',jmin);
set(handles.kelas,'string',idx);
set(handles.keterangan,'string','Citra input termasuk tepung');
elseif(idx==2)
set(handles.txket,'string','Tepung Gandum');
set(handles.de,'string',D);
set(handles.jarak,'string',jmin);
set(handles.kelas,'string',idx);
set(handles.keterangan,'string','Citra input termasuk tepung');
lxiv

elseif (idx==3)
set(handles.txket,'string','Tepung Tapioka');
set(handles.de,'string',D);
set(handles.jarak,'string',jmin);
set(handles.kelas,'string',idx);
set(handles.keterangan,'string','Citra input termasuk tepung');
else min(D)>= 1
set(handles.txket,'string','Bukan tepung');
set(handles.de,'string',D);
set(handles.jarak,'string',jmin);
set(handles.kelas,'string',idx);
end
end

% --- Executes on button press in pilihfolder.


function pilihfolder_Callback(hObject, eventdata, handles)
% hObject handle to pilihfolder (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global dnama;

clc;
%--bersihkan field--%
set(handles.txket,'string','');
set(handles.file,'string','');
cla(handles.axes1,'reset');
cla(handles.axes2,'reset');
cla(handles.axes3,'reset');
cla(handles.axes4,'reset');
set(handles.meanca,'string','');
set(handles.stdca,'string','');
set(handles.entca,'string','');
set(handles.meanch,'string','');
set(handles.stdch,'string','');
set(handles.entch,'string','');
set(handles.de,'string','');
set(handles.jarak,'string','');
set(handles.kelas,'string','');
set(handles.txpersen1,'string','');
set(handles.txpersen2,'string','');
set(handles.tPengujian, 'Data',
cell(size(get(handles.tPengujian,'Data'))));
set(handles.keterangan,'string','');

dnama=uigetdir('D:\Skripsi\uji');
clc;
%--baca folder jumlah citra uji--%
folder = dnama;
dirlist = dir([folder '/*.jpg']);
for i = 1:length(dirlist);
dirlist(i);
end

h = waitbar(0,'Validasi JUMLAH dan DIMENSI Data Uji


Citra','WindowStyle','modal');
steps = 1000;
for step = 1:steps
% computations take place here
waitbar(step / steps)
end
close(h)
lxv

if length(dirlist)<30
warndlg('Citra Uji KURANG dari 30 data, data citra uji HARUS
berjumlah 30 data yaaa...','Peringatan');
return;
elseif length(dirlist)>30
warndlg('Citra Uji LEBIH dari 30 data, data citra uji HARUS berjumlah
30 data yaaa....','Peringatan');
return;
end;

%--baca folder citar ukuran 1000x1000--%


folder = dnama;
jsfile = dir([folder '/*.jpg']);
for f = 1:length(jsfile)
bfile = [folder '/' jsfile(f).name];
inp=imread(bfile);
[d e f]=size(inp);
end
if [d]<1000 || [e]<1000
warndlg('Citra Uji harus berdimensi lebih dari: 1000 x 1000
pixel','Peringatan');
return;
end;
warndlg('Validasi Data Citra Uji sudah benar, Lanjutkan dengan klik
tombol "PROSES" ','Peringatan');

function pushbutton5_Callback(hObject, eventdata, handles)


% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global dnama;

if dnama==0
warndlg('Silahkan PILIH FOLDER CITRA terlebih
dahulu...!!!','Peringatan');
return;
end

folder = dnama;
dirlist = dir([folder '/*.jpg']);
for i = 1:length(dirlist);
dirlist(i);
end

if length(dirlist)<30
warndlg('Citra Uji KURANG dari 30 data, data citra uji HARUS
berjumlah 30 data yaaa...','Peringatan');
return;
elseif length(dirlist)>30
warndlg('Citra Uji LEBIH dari 30 data, data citra uji HARUS berjumlah
30 data yaaa....','Peringatan');
return;
end;

%--baca folder citar ukuran 1000x1000--%


folder = dnama;
jsfile = dir([folder '/*.jpg']);
for f = 1:length(jsfile)
lxvi

bfile = [folder '/' jsfile(f).name];


inp=imread(bfile);
[d e f]=size(inp);
end
if [d]<1000 || [e]<1000
warndlg('Citra Uji harus berdimensi lebih dari: 1000 x 1000
pixel','Peringatan');
return;
end;

clc;
%--bersihkan field--%
set(handles.txket,'string','');
set(handles.file,'string','');
cla(handles.axes1,'reset');
cla(handles.axes2,'reset');
cla(handles.axes3,'reset');
cla(handles.axes4,'reset');
set(handles.meanca,'string','');
set(handles.stdca,'string','');
set(handles.entca,'string','');
set(handles.meanch,'string','');
set(handles.stdch,'string','');
set(handles.entch,'string','');
set(handles.de,'string','');
set(handles.jarak,'string','');
set(handles.kelas,'string','');
set(handles.txpersen1,'string','');
set(handles.txpersen2,'string','');
set(handles.tPengujian, 'Data',
cell(size(get(handles.tPengujian,'Data'))));
set(handles.keterangan,'string','');

if exist('hasil2.txt', 'file')==2 %--cek file--%


delete('hasil2.txt');
end

if exist('jarak.txt', 'file')==2
delete('jarak.txt');
end

%waitbar
hh = waitbar(0,'Membaca Data Uji Citra','WindowStyle','modal');

%--baca folder uji--%


folder = dnama;
dnama
jsfile = dir([folder '/*.jpg']);
for f = 1:length(jsfile)
bfile = [folder '/' jsfile(f).name];
inp=imread(bfile); %--baca file--%
axes(handles.axes1);
imshow(inp);
set(handles.file,'string',bfile);
if exist('ciripengujian.txt', 'file')==2
delete('ciripengujian.txt');
end
if exist('dtciriuji2.txt','file')==2
delete('dtciriuji2.txt');
end
lxvii

%----CROPPING CITRA (REGION OF INTEREST)----%


[d e f]=size(inp);
u=1000;
g=round((d-u)/2);
h=round((e-u)/2);

for i=1:u
for j=1:u
for b=1:f
data(i,j,b)=inp((i+g),(j+h),b);
end
end
end

%----gray level----%
R=data(:,:,1); %mengambil layer R
G=data(:,:,2); %mengambil layer G
B=data(:,:,3); %mengambil layer B

gray=double(0.3333*R + 0.3333*G + 0.3333*B)/512;


[m,n] = size(gray);

%flter median
lp = medfilt2(gray);

%----wavelet level 1----%


mm=m/2;
nn=n/2;
for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2));
cb2=(lp(i*2,j*2-1));
ca(i,j)=sqrt(cb1^2+cb2^2);
end
end
[m1,n1]=size(ca);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2-1));
cv(i,j)=(cb1+cb2)/2;
end
end
[m2,n2]=size(cv);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2-1,j*2));
ch(i,j)=(cb1+cb2)/2;
end
end
[m3,n3]=size(ch);

for i=1:mm
for j=1:nn
cb1=(lp(i*2-1,j*2-1));
cb2=(lp(i*2,j*2));
cd(i,j)=(cb1+cb2)/2;
lxviii

end
end
[m4,n4]=size(cd);

%----wavelet level 2----%


mmm=m1/2;
nnn=n1/2;
for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2));
cb2=(ca(i*2,j*2-1));
ca2(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mm1,nn1]=size(ca2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2-1));
cv2(i,j)=(cb1+cb2)/2;
end
end
[mm2,nn2]=size(cv2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2-1,j*2));
ch2(i,j)=(cb1+cb2)/2;
end
end
[mm3,nn3]=size(ch2);

for i=1:mmm
for j=1:nnn
cb1=(ca(i*2-1,j*2-1));
cb2=(ca(i*2,j*2));
cd2(i,j)=(cb1+cb2)/2;
end
end
[mm4,nn4]=size(cd2);

%----wavelet level 3----%


mmmm=mm1/2;
nnnn=nn1/2;
for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2));
cb2=(ca2(i*2,j*2-1));
ca3(i,j)=sqrt(cb1^2+cb2^2);
end
end
[mmm1,nnn1]=size(ca3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2-1));
lxix

cv3(i,j)=(cb1+cb2)/2;
end
end
[mmm2,nnn2]=size(cv3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2-1,j*2));
ch3(i,j)=(cb1+cb2)/2;
end
end
[mmm3,nnn3]=size(ch3);

for i=1:mmmm
for j=1:nnnn
cb1=(ca2(i*2-1,j*2-1));
cb2=(ca2(i*2,j*2));
cd3(i,j)=(cb1+cb2)/2;
end
end
[mmm4,nnn4]=size(cd3);

%Mengambil ciri dari wavelet level 3


ratca3 = mean2(ca3);
ratch3 = mean2(ch3);
ratcv3 = mean2(cv3);
ratcd3 = mean2(cd3);

stdca3 = std2(ca3);
stdch3 = std2(ch3);
stdcv3 = std2(cv3);
stdcd3 = std2(cd3);

entca3 = entropy(ca3);
entch3 = entropy(ch3);
entcv3 = entropy(cv3);
entcd3 = entropy(cd3);

dtciriuji = [ratca3 stdca3 entca3 ratch3 stdch3 entch3];


save dtciriuji2.txt dtciriuji -append -ascii; %--simpan file--%

ciri = [ratca3 stdca3 entca3 ratch3 stdch3 entch3];


save ciripengujian.txt ciri -append -ascii; %--simpan file--%

if exist('ciripengujian.txt', 'file')==2
buka=load('ciripengujian.txt');
[mm,nn]=size(buka);

for i=1:mm
ciri=buka(i,:);
[m2,n2]=size(ciri);

%--load file .txt--%


P=load('ciripengujian.txt');
W=load('bobotakhir.txt');
X= load('database.txt');
T= load('target.txt');
lxx

[m,n]=size(X);
[m1,n1]=size(W);
[m2, n2]=size(P);
te=[];
Hasil=[];
H=[];
for i=1:m2,
for c=1:m1,
D(c)=0;
for j=1:n,
D(c)=D(c)+(W(c,j)-P(i,j))^2;
end;
D(c)=sqrt(D(c));
end;

[jmin idx]=min(D);

%H=[H idx];
A=T(idx,:);
end;
A;

jr=[D idx];
save jarak.txt jr -append -ascii;
end;
save hasil2.txt idx -ascii -append; %--simpan file--%

%--waitbar--%
war = load ('hasil2.txt');
[ww,xx]=size(war);
yy=ww/length(jsfile);
zz=round(yy*100);
if (ww==length(jsfile))
waitbar(1,hh,'Selesai....')
close(hh)
else
waitbar(yy,hh,sprintf('Proses: %d%%',zz))
end
end

end

%----%
h=load('hasil2.txt');
jum1=0;
jum2=0;
jum3=0;
[m,n]=size(h);
for i=1:n
for j=1:10;
if h(j,i)==1
per=10;
else
per=0;
end
jum1=jum1+per;
end
end
jum1;
lxxi

for i=1:n
for j=11:20;
if h(j,i)==2
per=10;
else
per=0;
end
jum2=jum2+per;
end
end
jum2;

for i=1:n
for j=21:30;
if h(j,i)==3
per=10;
else
per=0;
end
jum3=jum3+per;
end
end

jum3;
per=(jum1+jum2+jum3)/3 %bila data 30
%per=(jum1+jum2+jum3)/12 %bila data 60
set(handles.txpersen1,'string',[per]);
set(handles.txpersen2,'string','%');

opendataciriuji=load('dtciriuji2.txt');
dataciriuji2=[opendataciriuji];
set(handles.tdataciriuji,'data',dataciriuji2);

%--baca direktori--%
sdirectory = 'uji';
namafile = dir([sdirectory '/*.jpg']);
for b = 1:length(namafile)
%-- Membaca namafile di directory--%
filename = [sdirectory '/' namafile(b).name] ;
indk=substr(namafile(b).name,1,7);
indtep(b)={indk};
end
tep=indtep;
h=load('hasil2.txt');
%has= num2cell(h);
m=[h];

m(1);m(2);m(3);m(4);m(5);m(6);m(7);m(8);m(9);m(10);
m(11);m(12);m(13);m(14);m(15);m(16);m(17);m(18);m(19);m(20);
m(21);m(22);m(23);m(24);m(25);m(26);m(27);m(28);m(29);m(30);
if m(1)==1
m1=['Tepung beras'];
elseif m(1)==2
m1=['Tepung gandum'];
else
y=['Tepung tapioka'];
end

if m(2)==1
lxxii

m2=['Tepung beras'];
elseif m(2)==2
m2=['Tepung gandum'];
else
m2=['Tepung tapioka'];
end

if m(3)==1
m3=['Tepung beras'];
elseif m(3)==2
m3=['Tepung gandum'];
else
m3=['Tepung tapioka'];
end

if m(4)==1
m4=['Tepung beras'];
elseif m(4)==2
m4=['Tepung gandum'];
else
m4=['Tepung tapioka'];
end

if m(5)==1
m5=['Tepung beras'];
elseif m(5)==2
m5=['Tepung gandum'];
else
m5=['Tepung tapioka'];
end

if m(6)==1
m6=['Tepung beras'];
elseif m(6)==2
m6=['Tepung gandum'];
else
m6=['Tepung tapioka'];
end

if m(7)==1
m7=['Tepung beras'];
elseif m(7)==2
m7=['Tepung gandum'];
else
m7=['Tepung tapioka'];
end

if m(8)==1
m8=['Tepung beras'];
elseif m(8)==2
m8=['Tepung gandum'];
else
m8=['Tepung tapioka'];
end

if m(9)==1
m9=['Tepung beras'];
elseif m(2)==2
m9=['Tepung gandum'];
else
lxxiii

m9=['Tepung tapioka'];
end

if m(10)==1
m10=['Tepung beras'];
elseif m(10)==2
m10=['Tepung gandum'];
else
m10=['Tepung tapioka'];
end

if m(10)==1
m10=['Tepung beras'];
elseif m(10)==2
m10=['Tepung gandum'];
else
m10=['Tepung tapioka'];
end

if m(11)==1
m11=['Tepung beras'];
elseif m(11)==2
m11=['Tepung gandum'];
else
m11=['Tepung tapioka'];
end

if m(12)==1
m12=['Tepung beras'];
elseif m(12)==2
m12=['Tepung gandum'];
else
m12=['Tepung tapioka'];
end

if m(13)==1
m13=['Tepung beras'];
elseif m(13)==2
m13=['Tepung gandum'];
else
m13=['Tepung tapioka'];
end

if m(14)==1
m14=['Tepung beras'];
elseif m(14)==2
m14=['Tepung gandum'];
else
m14=['Tepung tapioka'];
end

if m(15)==1
m15=['Tepung beras'];
elseif m(15)==2
m15=['Tepung gandum'];
else
m15=['Tepung tapioka'];
end

if m(16)==1
lxxiv

m16=['Tepung beras'];
elseif m(16)==2
m16=['Tepung gandum'];
else
m16=['Tepung tapioka'];
end

if m(17)==1
m17=['Tepung beras'];
elseif m(17)==2
m17=['Tepung gandum'];
else
m17=['Tepung tapioka'];
end

if m(18)==1
m18=['Tepung beras'];
elseif m(18)==2
m18=['Tepung gandum'];
else
m18=['Tepung tapioka'];
end

if m(19)==1
m19=['Tepung beras'];
elseif m(19)==2
m19=['Tepung gandum'];
else
m19=['Tepung tapioka'];
end

if m(20)==1
m20=['Tepung beras'];
elseif m(20)==2
m20=['Tepung gandum'];
else
m20=['Tepung tapioka'];
end

if m(21)==1
m21=['Tepung beras'];
elseif m(21)==2
m21=['Tepung gandum'];
else
m21=['Tepung tapioka'];
end

if m(22)==1
m22=['Tepung beras'];
elseif m(22)==2
m22=['Tepung gandum'];
else
m22=['Tepung tapioka'];
end

if m(23)==1
m23=['Tepung beras'];
elseif m(23)==2
m23=['Tepung gandum'];
else
lxxv

m23=['Tepung tapioka'];
end

if m(24)==1
m24=['Tepung beras'];
elseif m(24)==2
m24=['Tepung gandum'];
else
m24=['Tepung tapioka'];
end

if m(25)==1
m25=['Tepung beras'];
elseif m(25)==2
m25=['Tepung gandum'];
else
m25=['Tepung tapioka'];
end

if m(26)==1
m26=['Tepung beras'];
elseif m(26)==2
m26=['Tepung gandum'];
else
m26=['Tepung tapioka'];
end

if m(27)==1
m27=['Tepung beras'];
elseif m(27)==2
m27=['Tepung gandum'];
else
m27=['Tepung tapioka'];
end

if m(28)==1
m28=['Tepung beras'];
elseif m(28)==2
m28=['Tepung gandum'];
else
m28=['Tepung tapioka'];
end

if m(29)==1
m29=['Tepung beras'];
elseif m(29)==2
m29=['Tepung gandum'];
else
m29=['Tepung tapioka'];
end

if m(30)==1
m30=['Tepung beras'];
elseif m(30)==2
m30=['Tepung gandum'];
else
m30=['Tepung tapioka'];
end
lxxvi

has={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};
has';
%==================================

dtab= [ tep' has'];


set(handles.tPengujian,'data',dtab);
set(handles.keterangan,'string','');

%--tampilkan ke tabel--%
openjr=load('jarak.txt');
jrak=[openjr];
set(handles.tJarak,'data',jrak);
msgbox('Pengujian Selesai','Pengujian')

function meanca_Callback(hObject, eventdata, handles)


% hObject handle to meanca (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 meanca as text


% str2double(get(hObject,'String')) returns contents of meanca as
a double

% --- Executes during object creation, after setting all properties.


function meanca_CreateFcn(hObject, eventdata, handles)
% hObject handle to meanca (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 stdca_Callback(hObject, eventdata, handles)


% hObject handle to stdca (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 stdca as text


% str2double(get(hObject,'String')) returns contents of stdca as a
double

% --- Executes during object creation, after setting all properties.


function stdca_CreateFcn(hObject, eventdata, handles)
% hObject handle to stdca (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'))
lxxvii

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

function entca_Callback(hObject, eventdata, handles)


% hObject handle to entca (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 entca as text


% str2double(get(hObject,'String')) returns contents of entca as a
double

% --- Executes during object creation, after setting all properties.


function entca_CreateFcn(hObject, eventdata, handles)
% hObject handle to entca (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 meanch_Callback(hObject, eventdata, handles)


% hObject handle to meanch (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 meanch as text


% str2double(get(hObject,'String')) returns contents of meanch as
a double

% --- Executes during object creation, after setting all properties.


function meanch_CreateFcn(hObject, eventdata, handles)
% hObject handle to meanch (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 stdch_Callback(hObject, eventdata, handles)


% hObject handle to stdch (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 stdch as text


% str2double(get(hObject,'String')) returns contents of stdch as a
double

% --- Executes during object creation, after setting all properties.


lxxviii

function stdch_CreateFcn(hObject, eventdata, handles)


% hObject handle to stdch (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 entch_Callback(hObject, eventdata, handles)


% hObject handle to entch (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 entch as text


% str2double(get(hObject,'String')) returns contents of entch as a
double

% --- Executes during object creation, after setting all properties.


function entch_CreateFcn(hObject, eventdata, handles)
% hObject handle to entch (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 during object creation, after setting all properties.


function axes1_CreateFcn(hObject, eventdata, handles)
% hObject handle to axes1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns
called

% Hint: place code in OpeningFcn to populate axes1


% --- Executes on mouse press over axes background.
function axes1_ButtonDownFcn(hObject, eventdata, handles)
% hObject handle to axes1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton6.


function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%--menu keluar--%
selection=questdlg(['Keluar ' get(handles.figure1,'Name')''],...
['Keluar ' get(handles.figure1,'Name')''],...
'Ya','Tidak','Ya');
lxxix

if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)

% --- Executes on button press in pushbutton7.


function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%--reset field--%
clc;
set(handles.txket,'string','');
set(handles.file,'string','');
cla(handles.axes1,'reset');
cla(handles.axes2,'reset');
cla(handles.axes3,'reset');
cla(handles.axes4,'reset');
cla(handles.axes6,'reset');
cla(handles.axes7,'reset');

set(handles.meanca,'string','');
set(handles.stdca,'string','');
set(handles.entca,'string','');
set(handles.meanch,'string','');
set(handles.stdch,'string','');
set(handles.entch,'string','');

set(handles.de,'string','');
set(handles.jarak,'string','');
set(handles.kelas,'string','');
set(handles.txpersen1,'string','');
set(handles.txpersen2,'string','');
set(handles.tdataciriuji,'data','');
set(handles.tJarak,'data','');
set(handles.keterangan,'string','');
set(handles.tPengujian, 'Data',
cell(size(get(handles.tPengujian,'Data'))));

% --- Executes on button press in dataciriuji.


function dataciriuji_Callback(hObject, eventdata, handles)
% hObject handle to dataciriuji (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%global data;
%opendataciriuji=load('dtciriuji1.txt');
%dataciriuji1=[opendataciriuji];
%set(handles.dataciriuji,'data',dataciriuji1);

D 5 Pengkodean tentang.m
function varargout = tentang(varargin)
% TENTANG M-file for tentang.fig
% TENTANG, by itself, creates a new TENTANG or raises the existing
% singleton*.
%
% H = TENTANG returns the handle to a new TENTANG or the handle to
% the existing singleton*.
%
lxxx

% TENTANG('CALLBACK',hObject,eventData,handles,...) calls the local


% function named CALLBACK in TENTANG.M with the given input
arguments.
%
% TENTANG('Property','Value',...) creates a new TENTANG or raises
the
% existing singleton*. Starting from the left, property value pairs
are
% applied to the GUI before tentang_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to tentang_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only
one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help tentang

% Last Modified by GUIDE v2.5 22-Jan-2016 22:04:34

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @tentang_OpeningFcn, ...
'gui_OutputFcn', @tentang_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before tentang is made visible.


function tentang_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to tentang (see VARARGIN)

% Choose default command line output for tentang


handles.output = hObject;
hback = axes('units','normalized','position',[0 0 1 1]);
uistack(hback,'bottom');
%%%%%% Load background image and display it
[back map]=imread('tentang.png');
image(back)
colormap(map)
set(hback,'handlevisibility','off','visible','off')
lxxxi

waktu=datestr(now);
set(handles.waktu,'string',waktu);

% Update handles structure


guidata(hObject, handles);

% UIWAIT makes tentang wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = tentang_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes on button press in keluar.


function keluar_Callback(hObject, eventdata, handles)
% hObject handle to keluar (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
selection=questdlg(['Keluar ' get(handles.figure1,'Name')''],...
['Keluar ' get(handles.figure1,'Name')''],...
'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)

D 6 Pengkodean help.m
function varargout = help(varargin)
% HELP M-file for help.fig
% HELP, by itself, creates a new HELP or raises the existing
% singleton*.
%
% H = HELP returns the handle to a new HELP or the handle to
% the existing singleton*.
%
% HELP('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in HELP.M with the given input
arguments.
%
% HELP('Property','Value',...) creates a new HELP or raises the
% existing singleton*. Starting from the left, property value
pairs are
% applied to the GUI before help_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to help_OpeningFcn via varargin.
lxxxii

%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only
one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help help

% Last Modified by GUIDE v2.5 23-Feb-2016 23:34:04

% Begin initialization code - DO NOT EDIT


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
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before help is made visible.


function help_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to help (see VARARGIN)

% Choose default command line output for help


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);
handles.output = hObject;
%--image background--%
hback = axes('units','normalized','position',[0 0 1 1]);
uistack(hback,'bottom');
%%%%%% Load background image and display it
[back map]=imread('help.png');
image(back)
colormap(map)

waktu=datestr(now);
set(handles.waktu,'string',waktu);

set(hback,'handlevisibility','off','visible','off')
% Choose default command line output for pengujian
lxxxiii

% UIWAIT makes help wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = help_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes on selection change in edit1.


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: contents = get(hObject,'String') returns edit1 contents as


cell array
% contents{get(hObject,'Value')} returns selected item from
edit1

% --- 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: listbox 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
lxxxiv

Lampiran E Antar Muka Perangkat Lunak


E 1 Tampilan Antar Muka Menu Utama

E 2 Tampilan Antar Muka Pelatihan


lxxxv

E 3 Tampilan Antar Muka Pengujian

E 4 Tampilan Antar Muka Menu Tentang


lxxxvi

E 5 Tampilan Antar Muka Menu Help

Anda mungkin juga menyukai