Skripsi Identifikasi Tekstur Jenis Tepung BCK 260216
Skripsi Identifikasi Tekstur Jenis Tepung BCK 260216
Disusun Oleh :
ii
HALAMAN PENGESAHAN
Oleh:
ARIS TRIYANTO
11111073
Dosen Penguji
iii
HALAMAN PERNYATAAN PERSETUJUAN
PUBLIKASI SKRIPSI UNTUK KEPENTINGAN AKADEMIS
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.
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
pengetahuan buta
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.
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
1 CA Coefficients Approximation
2 CD Coefficients Diagonal
3 CH Coefficients Horizontal
4 CV Coefficients Vertical
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
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
xvi
BAB I
PENDAHULUAN
1
2
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
3
4
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.
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.
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.
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.
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.
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 Memory DDR3 4 GB
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.
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
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
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.
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.
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
∑𝑁
𝑖=1 𝑋1
𝜇= ........................................... (3.1)
𝑁
Keterangan:
µ : rata-rata
N : banyaknya data
X : jumlah data
𝑛
∑ (𝑋 −𝑋) ̅ 2
𝜎 = √ 𝑖=1 𝑖 ........................................ (3.2)
𝑛−1
Keterangan:
𝜎 : standar deviasi
Xi : nilai x ke-i
𝑋̅ : rata-rata (mean)
n : jumlah data
23
Keterangan:
H : entropi
n : banyaknya data
X : jumlah data
Keterangan:
X : Vekor input
W : Bobot awal
y : Output
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
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.
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.
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.
Hasil proses ekstraksi ciri dari 30 citra yang terdapat dalam data uji
ditunjukkan pada Tabel 4.2.
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
Tabel 4.6 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,1
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%
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%
Tabel 4.8 Hasil Pelatihan dengan alfa 0,1 dan dec alfa 0,25
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%
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%
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%
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%
Bobot akhir:
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
bobot_awal:
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:
Bobot akhir yang diperoleh dari pengenalan dengan afla 0,01 dan dec alfa
0,1 adalah sebagai berikut (98,33%).
bobot_akhir 2:
Bobot akhir yang diperoleh dari pengenalan dengan afla 0,1 dan dec alfa
0,25 adalah sebagai berikut:
bobot_akhir 3:
Bobot akhir yang diperoleh dari pengenalan dengan afla 0,01 dan dec alfa
0,25 adalah sebagai berikut:
bobot_akhir 4:
Bobot akhir yang diperoleh dari pengenalan dengan afla 0,1 dan dec alfa 0,5
adalah sebagai berikut:
bobot_akhir 5:
Bobot akhir yang diperoleh dari pengenalan dengan afla 0,1 dan dec alfa
0,75 adalah sebagai berikut:
bobot_akhir 6:
Tabel 4.18 Jarak Terdekat Data Uji Dengan alfa 0,1 dan dec alfa 0,1
Tabel 4.19 Jarak Terdekat Pengujian Dengan alfa 0,01 dan dec alfa 0,1
Tabel 4.20 Jarak Terdekat Pengujian Dengan alfa 0,1 dan dec alfa 0,25
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
Iterasi yang dihasilkan pada setiap parameter yang telah dibahas pada
materi sebelumnya ditunjukkan pada Gambar 4.7.
Kinerja kumulatif dari data pengujian LVQ ditunjukkan pada Gambar 4.8
sebagi berikut.
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
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.
68
LAMPIRAN
Aris Triyanto
NIM. 11111073
xvii
xviii
C 2 Citra Cropping
xxiii
C3 Citra Gray
C4 Citra Masking
xxiv
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
waktu=datestr(now);
set(handles.waktu,'string',waktu);
% Update handles structure
guidata(hObject, handles);
% --- 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)
D 2 Pengkodean Substr.m
function outstr= substr(str, offset, len)
%{
Syntax:
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:
n= length(str);
if offset < 0
xxvii
% Extract substring:
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
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
%----set waktu-----%
waktu=datestr(now);
set(handles.waktu,'string',waktu);
% Update handles structure
guidata(hObject, handles);
% --- 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
%--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;
%==menunggu proses==
%global dnama;
h = waitbar(0,'Membaca Database Citra','WindowStyle','modal');
if exist('target.txt', 'file')==2
delete('target.txt');
end
% 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;
%--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
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};
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--%
%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);
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);
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);
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);
%-ciri-%
%ciri = [ratca3 stdca3 entca3 ratch3 stdch3 entch3]; %simpan ciri
% save database.txt ciri -append -ascii;
set(handles.tciri,'data',ciri);
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
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);
stdca3=std2(ca3);
stdch3=std2(ch3);
stdcv3=std2(cv3);
stdcd3=std2(cd3);
entca3=entropy(ca3);
entch3=entropy(ch3);
entcv3=entropy(cv3);
entcd3=entropy(cd3);
%--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
%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);
%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
%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);
%--tampilkan di tabel--%
openbobotawal=load('bobotawal.txt');
bobotawal=[openbobotawal];
set(handles.tbobotawal,'data',bobotawal);
%========================================================================
=========
% --- 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;
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','');
[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----%
%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);
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);
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);
stdca3 = std2(ca3);
stdch3 = std2(ch3);
stdcv3 = std2(cv3);
stdcd3 = std2(cd3);
entca3 = entropy(ca3);
entch3 = entropy(ch3);
entcv3 = entropy(cv3);
entcd3 = entropy(cd3);
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
alfa=str2double(galfa);
decalfa=str2double(gdecalfa);
minalfa=str2double(gminalfa);
makiterasi=str2double(gmakiterasi);
iterasi=0;
for i=1:mm
ciri=buka(i,:);
[m2,n2]=size(ciri);
[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')
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');
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);
'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)
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
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)
%--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
if isempty(get(handles.axes1,'children'))
warndlg('Silahkan PILIH CITRA terlebih dahulu..!!!!','Peringatan');
return;
end
[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
%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);
global ciri;
lp = handles.data2;
[m,n] = size(lp);
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);
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)
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);
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);
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
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
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;
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;
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('jarak.txt', 'file')==2
delete('jarak.txt');
end
%waitbar
hh = waitbar(0,'Membaca Data Uji Citra','WindowStyle','modal');
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
%flter median
lp = medfilt2(gray);
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);
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);
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);
stdca3 = std2(ca3);
stdch3 = std2(ch3);
stdcv3 = std2(cv3);
stdcd3 = std2(cd3);
entca3 = entropy(ca3);
entch3 = entropy(ch3);
entcv3 = entropy(cv3);
entcd3 = entropy(cd3);
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);
[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';
%==================================
%--tampilkan ke tabel--%
openjr=load('jarak.txt');
jrak=[openjr];
set(handles.tJarak,'data',jrak);
msgbox('Pengujian Selesai','Pengujian')
set(hObject,'BackgroundColor','white');
end
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)
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'))));
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
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
waktu=datestr(now);
set(handles.waktu,'string',waktu);
% --- 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)
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
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
waktu=datestr(now);
set(handles.waktu,'string',waktu);
set(hback,'handlevisibility','off','visible','off')
% Choose default command line output for pengujian
lxxxiii
% --- 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)