PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KLASIFIKASI KAIN TRADISIONAL NUSANTARA DENGAN MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER
SKRIPSI Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Disusun Oleh: M. Ch. Agung Ayu Bulan Mahadewi 115314071
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015
i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ARCHIPELAGO TRADITIONAL FABRIC CLASSIFICATION BY USING THE NAIVE BAYES CLASSIFIER ALGORITHM
A Final Project Presented as Partial Fulfillment of The Requirements To Obtain Sarjana Komputer Degree In Informatics Engineering Study Program
By: M. Ch. Agung Ayu Bulan Mahadewi 115314071
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2015
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSEMBAHAN
Tugas akhir ini saya persembahkan untuk: Tuhan Yesus dan Bunda Maria Yang Penuh CintaKasih, Selalu membimbing dan menguatkan Papa di Surga dan Mama tercinta Mas Guntur dan Mbk Bintang tersayang Aditio Putra Setyobudi tersayang Seluruh teman-teman yang setia menemani
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KLASIFIKASI KAIN TRADISIONAL NUSANTARA DENGAN MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER ABSTRAK Di Indonesia terdapat beraneka ragam warisan budaya, salah satunya adalah kain tradisional dari berbagai daerah yang ada di Indonesia yang wajib untuk dilestarikan. Terdapat berbagai jenis kain tradisional yaitu batik, songket, tenun, ulos, besurek, dan masih banyak lagi. Dalam setiap kain terdapat warna dan motif yang berbeda-beda yang memiliki arti disetiap motif nya. Namun, tidak semua orang mengetahui asal dari kain-kain tersebut. Oleh karena itu dilakukan penelitian dengan pengklasifikasian kain tradisional nusantara. Dalam klasifikasi dibutuhkan ciri khas dari kain tersebut. Untuk mendapatkan ciri khas dari kain yang akan diklasifikasikan dibutuhkan ekstrak ciri dengan menggunakan warna dengan mengambil meanR,G,B dan meanRGB, dan deteksi tepi. Deteksi tepi yang digunakan adalah deteksi tepi dengan menggunakan Canny, karena metode canny merupakan metode deteksi tepi yang baik diantara deteksi tepi yang lainnya dan sudah pernah digunakan dalam deteksi tepi citra batik pada penelitian yang lainnya. Selain itu, untuk membantu mendapatkan ekstrak ciri deteksi tepi dibutuhkan pembagian citra dalam vektor horizontal dan vertikal. Sedangkan untuk pengklasifikasian menggunakan algoritma Naive Bayes Classifier. Algoritma naive bayes ini menggunakan metode probabilistik dan statistik. Algoritma ini membutuhkan stándar deviasi dan mean dari setiap atribut dalam setiap kelas. Hasil probabilitas yang tertinggi yang digunakan untuk menentukan asal daerah kain tersebut. Untuk mengetahui kemampuan dari algoritma naive bayes untuk klasifikasi dibutuhkan perhitungan akurasi. Berdasarkan klasifikasi yang dilakukan dengan menggunakan ekstrak ciri warna dan vektor, didapatkan hasil paling besar dengan menggunakan ekstrak ciri warna dan vektor vertikal dengan tingkat akurasi 93%.
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ARCHIPELAGO TRADITIONAL FABRIC CLASSIFICATION BY USING THE NAIVE BAYES CLASSIFIER ABSTRACT There are so many variegated of cultural heritage in Indonesia, one exception is traditional fabric from many regions in Indonesia that must be preserved. There are many various of traditional fabric like batik, songket, tenun, ulos, besurek, and so many more. They’re have difference color and motives that having luminance meaning. But, not everyone knows the origin of that fabric. Because of that, perform the research to classified archipelago traditional fabric. In that classified, the characteristic of the fabric is needed. To get the characteristic of the fabric that want to classified, extract features is needed by using the color by taking meanR,G,B and meanRGB, and detection of the edge. The detection of the edge is using with Canny, because Canny method is more better than other detection method and have been use to image detection of batik in other research. Beside that, for get the extract feature, imagery ceiling in horizontal and vertical vector are needed. Meanwhile, Naïve Bayes Classifier algorithm is used to classified. Naïve bayes algorithm is using probabilistic and statistic method. This algorithm is need standart deviation and mean from each attribute in each class. The highest result use to determine the origin of the fabric. To find the ability classifying with naïve bayes algorithm, calculation accuracy is needed. Based on the classified that done with extract features of color and vector, the highest result was obtained by using color extract feature anvertical vector with 93% of accuracy.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KATA PENGANTAR
Puji dan syukur penulis panjatkan atas kehadirat Tuhan Yang Maha Esa atas berkat, rahmat serta kasih-Nya sehingga penulis dapat menyelesaikan skripsi yang
berjudul
“Klasifikasi
Kain
Tradisional
Nusantara
Dengan
Menggunakan algoritma Naive Bayes Classifier”. Penulisan skripsi ini bertujuan untuk memenuhi syarat untuk memperoleh gelar sarjana komputer program studi S1 jurusan Teknik Informatika Universitas Sanata Dharma. Penulis menyadarai bahwa skripsi ini masih jauh dari kata sempurna, oleh sebab itu penulis mengharapkan kritik dan saran yang bersifat membangun dari semua pihak demi kesempurnaan skripsi ini. Skripsi ini tidak lepas dari peran penting berbagai pihak, sehingga pada kesempatan ini penulis dengan segala kerendahan hati serta rasa hormat mengucapkan terimakasih yang sebesar-besarnya kepada semua pihakyang telah memberikan dukungan baik secara langsung maupun tidak langsung kepada penulis dalam penyusunan skripsi ini hingga selesai. Pada proses penulisan tugas akhir ini saya ucapkan terima kasih kepada: 1. Tuhan Yesus selaku pembimbing iman dalam hidup yang selalu memberi solusi diatas segala solusi. 2. Ibu Sri Hartati Wijono, S.Si., M.Kom. selaku pembimbing yang memberikan pengarahan serta solusi dalam pengerjaan skripsi ini hingga selesai. 3. Kedua orangtua, Bapak FX. Leo Taridi (Almarhum) dan Ibu M.Ch. Ni-Luh Astutik yang selalu rela berkorban, mendoakan, menyayangi dan memberikan motivasi kepada penulis. 4. Kedua kakak, Grs. Guntur Agung PN dan M.Ch. Agung Ayu Bintang KS yang selalu menyayangi dan memberikan yang terbaik kepada penulis. 5. Romo Poldo Andreas Situmorang yang senantiasa tulus meluangkan waktunya untuk konsultasi mengenai penelitian ini. xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6. Aditio Putra Setyobudi yang selalu setia menemani dan membantu dikala susah dan senang saat pengerjaan skripsi ini. 7. Monica Susi, Dyah Utami, Dhiah Rusdiana yang setia menemani dan berbagi kesulitan bersama. 8. Seluruh civitas akademika Teknik Informatika angkatan 2011, terutama anggota C++ yang telah berjuang bersama
dan saling
memberi semangat dan inspirasi. 9. Semua pihak, baik langsung maupun tidak langsung yang telah membantu dalam proses penyelesaian skripsi. Penulis menyadari masih banyak kekurangan dalam penyusunan skripsi ini, namun penulis tetap berharap skripsi ini bermanfaat bagi pengembangan ilmu pengetahuan.
Yogyakarta, 5 November 2015 Penulis
M.Ch. Agung Ayu Bulan Mahadewi
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI KLASIFIKASI KAIN TRADISIONAL NUSANTARA DENGAN MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER ......................... i ARCHIPELAGO TRADITIONAL FABRIC CLASSIFICATION BY USING THE NAIVE BAYES CLASSIFIER ALGORITHM................................................. ii HALAMAN PERSETUJUAN ............................... Error! Bookmark not defined. HALAMAN PENGESAHAN ............................... Error! Bookmark not defined. HALAMAN PERSEMBAHAN ............................................................................ iv PERNYATAAN KEASLIAN KARYA ................ Error! Bookmark not defined. LEMBAR PERNYATAAN PERSETUJUAN ...... Error! Bookmark not defined. ABSTRAK ............................................................................................................. ix ABSTRACT ............................................................................................................ x KATA PENGANTAR ........................................................................................... xi DAFTAR ISI ........................................................................................................ xiii DAFTAR GAMBAR ........................................................................................... xvi DAFTAR TABEL .............................................................................................. xviii BAB I ...................................................................................................................... 1 1.1 Latar Belakang .............................................................................................. 1 1.2 Rumusan Masalah ......................................................................................... 3 1.3 Tujuan............................................................................................................ 3 1.4 Batasan Masalah ............................................................................................ 3 1.5 Metodologi Penelitian ................................................................................... 4 1.6 Sistematika Penulisan .................................................................................... 6 BAB II ..................................................................................................................... 7 2.1 Kain Tradisional Nusantara ........................................................................... 7 xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.2 Pengenalan Pola ............................................................................................ 8 2.3 Deteksi Tepi .................................................................................................. 9 2.4 Ekstraksi Ciri ............................................................................................... 11 2.4.1 Warna.................................................................................................... 11 2.4.2 Rata-rata Vektor.................................................................................... 13 2.5 Klasifikasi.................................................................................................... 14 2.6 Algoritma Naive Bayes Classifier ............................................................... 15 2.7 Akurasi ........................................................................................................ 19 BAB III ................................................................................................................. 20 3.1 Data Citra Kain Nusantara .......................................................................... 20 3.2 Perancangan Sistem Secara Umum ............................................................. 21 3.3 Perancangan Proses Ekstraksi ciri ............................................................... 23 3.3.1 Proses Ekstraksi Ciri Warna ................................................................. 23 3.3.2 Proses Ekstraksi Ciri Rata-rata Vektor ................................................. 24 3.3.4 Proses Gabungan Ekstraksi Ciri Warna Dan Rata-rata Vektor ............ 26 3.4 Perancangan Proses Klasifikasi ................................................................... 28 3.5 Perancangan Proses Akurasi ....................................................................... 30 3.6 Perancangan Antar Muka ............................................................................ 32 3.7 Kebutuhan Hardware dan Software ............................................................ 34 BAB IV ................................................................................................................. 35 4.1 Implementasi Klasifikasi ............................................................................. 35 4.1.1 Implementasi Memotong Citra ............................................................. 35 4.1.2 Implementasi Ekstraksi Ciri Warna ...................................................... 36 4.1.3 Implementasi Ekstraksi Ciri Rata-rata Vektor...................................... 37 4.1.4 Implementasi Ekstraksi Ciri Warna dan Rata-rata Vektor ................... 43 xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.5 Implementasi Klasifikasi menggunakan Naive Bayes .......................... 47 4.1.6 Implementasi Akurasi ........................................................................... 52 4.1.7 Implementasi Klasifikasi Dari Data User ............................................ 52 4.1.8 Implementasi Antar Muka ................................................................... 55 BAB V .................................................................................................................. 56 5.1 Data ............................................................................................................. 56 5.2 Akurasi Hasil Klasifikasi Menggunakan Naive Bayes ............................... 57 BAB VI ................................................................................................................. 60 6.1 Kesimpulan.................................................................................................. 60 6.2 Saran ............................................................................................................ 60 DAFTAR PUSTAKA ........................................................................................... 62 LAMPIRAN I ....................................................................................................... 64 LAMPIRAN II ...................................................................................................... 67 LAMPIRAN III ..................................................................................................... 70 LAMPIRAN IV .................................................................................................... 74 LAMPIRAN V ...................................................................................................... 78
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR Gambar 2. 1. Proses Deteksi tepi ........................................................................................ 9 Gambar 2. 2 Ilustrasi pembagian vektor horizontal .......................................................... 13 Gambar 2. 3 Ilustrasi pembagian vektor vertikal .............................................................. 14 Gambar 2. 4 Proses Klasifikasi ......................................................................................... 15
Gambar 3. 1 Contoh Citra asli berukuran 200 x 200 piksel .............................................. 20 Gambar 3. 2 Alur Perancangan Sistem Dengan 100 Data ................................................ 21 Gambar 3. 3 Alur Perancangan Sistem Dengan Data Dari User ...................................... 22 Gambar 3. 4 Halaman Klasifikasi kain tradisional nusantara menggunakan.................... 32 Gambar 3. 5 Tampilan Preprocesing ................................................................................ 33 Gambar 3. 6 Tampilan Klasifikasi 100 Data .................................................................... 33 Gambar 3. 7 Tampilan Klasifikasi Dari Data User ........................................................... 34
Gambar 4. 1Proses Cropping Citra kain 460x572 ............................................................ 35 Gambar 4. 2 Citra kain 200x200 piksel ............................................................................ 36 Gambar 4. 3 Tabel Ekstrak Ciri Warna ............................................................................ 37 Gambar 4. 4Proses Deteksi tepi Canny............................................................................. 38 Gambar 4. 5 Proses membagi citra kedalam vektor horizontal ........................................ 40 Gambar 4. 6Tabel Ekstrak Ciri Vektor Horizontal ........................................................... 40 Gambar 4. 7 Proses membagi citra kedalam vektor vertikal ............................................ 42 Gambar 4. 8 Tabel Ekstrak Ciri Vektor Vertikal .............................................................. 43 Gambar 4. 9 Tabel Ekstrak Ciri Warna & Vektor Horizontal .......................................... 46 Gambar 4. 10 Tabel Ekstrak Ciri Warna & Vektor Vertikal ............................................ 46 xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4. 11 Data di dalam cell ...................................................................................... 47 Gambar 4. 12 Tabel Mean Ekstrak Ciri Warna & Vektor Horizontal .............................. 48 Gambar 4. 13 Tabel Stándar Deviasi Ekstrak Ciri Warna & Vektor Horizontal ............. 49 Gambar 4. 14Data Testing Dalam Setiap Cell .................................................................. 50 Gambar 4. 15 Data Testing Dalam Satu Kelas ................................................................. 51 Gambar 4. 16 Hasil Probabilitas ..................................................................................... 51 Gambar 4. 17 Hasil IdxLabel ........................................................................................... 51 Gambar 4. 18 Hasil Akurasi menggunakan 5-fold........................................................... 52 Gambar 4. 19 Hasil Probabilitas Data Dari User ............................................................. 53 Gambar 4. 20 Hasil Klasifikasi Dari Data User ............................................................... 54 Gambar 4. 21 Implementasi Antar Muka Klasifikasi Kain Tradisional Nusantara Dengan Menggunakan Naive Bayes Classifer ............................................................................... 55 Gambar 4. 22 Peringatan Ekstraksi Ciri Telah Selesai ..................................................... 55
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR TABEL Tabel 2. 1 Tabel Contoh Soal Perhitungan Naive Bayes .................................................. 17
Tabel 3. 1 Percobaan 2-fold .............................................................................................. 30 Tabel 3. 2Percobaan 3-fold ............................................................................................... 30 Tabel 3. 3 Percobaan 5-fold .............................................................................................. 31
Tabel 5. 1 Hasil Akurasi Data Pertama ............................................................................ 57 Tabel 5. 2 Hasil Akurasi Data Kedua .............................................................................. 58
xviii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I PENDAHULUAN
1.1 Latar Belakang Perkembangan teknologi dan kemajuan zaman yang semakin pesat, membuat manusia lupa akan kebudayaan yang ada sejak dahulu kala. Setiap negara di dunia pasti mempunyai kebudayaannya masing-masing, termasuk negara Indonesia. Indonesia merupakan negara yang memiliki beragam budaya, salah satu kebudayaan yang masih ada sampai sekarang adalah kain tradisional nusantara. Kain tradisional nusantara merupakan warisan kebudayaan dari berbagai daerah di Indonesia yang wajib untuk dilestarikan. Ada beberapa kain tradisional nusantara yang memiliki arti disetiap motif dan warnanya, antara lain kain songket, kain batik, kain tapis, kain gringsing, kain ikat. Kain-kain tersebut hanyalah sebagian dari jenis kain tradisional di Indonesia. Perkembangan motif maupun warna kain tradisional nusantara sangat pesat, tetapi tidak diimbangi dengan pengetahuan tentang jenis-jenis kain. Banyak kain tradisional Indonesia yang warna dan motifnya sudah campuran dari luar Indonesia, bahkan beberapa diantaranya memiliki warna dan motif yang sama, sehingga sulit untuk dibedakan antara kain satu daerah dengan daerah yang lainnya. Beberapa cara untuk melestarikan kebudayaan kain tradisional indonesia telah diupayakan, salah satu caranya adalah dengan mempublikasi menggunakan situs online. Meskipun demikian, masih banyak 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ditemui kain yang tidak identik dengan daerah asalnya. Oleh karena itu dilakukan penelitian dan pembuatan aplikasi sebagai alat bantu untuk mengklasifikasi kain tradisional nusantara secara efektif dan efisien. Klasifikasi kain tradisional nusantara, yang dilakukan (Azis&Wulandari, 2013) menggunakan metode CBIR. Pencarian kain dilakukan berdasarkan kemiripan warna, bentuk dan tekstur dengan hasil akurasi citra berdasarkan tekstur mendapat nilai recall 76,66%, untuk citra berdasarkan warna 100% dan untuk citra berdasarkan tekstur dan warna mendapat nilai akurasi 100%. Kelemahan dari penelitian ini yaitu citra berdasarkan fitur tekstur tidak bekerja dengan dengan baik karena tidak menemukan citra yang tidak sesuai dengan citra query. Selain Penelitian tersebut, ada pula penelitian (Ariyanto, 2014) yang menggunakan ekstraksi ciri tekstur dengan metode matriks kookurensi untuk citra sekumpulan biji bijian. Ekstraksi ciri menggunakan warna dan rata-rata vektor vertikal atau horizontal pernah digunakan untuk pengklasifikasian kain batik Yogyakarta menggunakan algoritma ID3 dengan mendapat akurasi sebesar 75% (Tiarani, 2011). Untuk penelitian kain tradisional Nusantara yang peneliti lakukan, akan menggunakan algoritma Naive Bayes dengan ciri warna dan rata-rata vektor horizontal atau vertikal.
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.2 Rumusan Masalah Rumusan masalah yang akan dibahas pada tulisan ini adalah bagaimana kinerja algoritma Naive Bayes untuk klasifikasi kain tradisional nusantara.
1.3 Tujuan Tujuan dari tulisan ini adalah untuk mengetahui tingkat keakuratan dari algoritma Naive Bayes yang digunakan dalam klasifikasi kain tradisional nusantara. 1.4 Batasan Masalah Batasan dari masalah tersebut adalah sebagai berikut: 1. Citra masukan adalah kain tradisional asli Indonesia. 2. Pengelompokan citra dibagi 10 daerah sesuai dengan daerah masingmasing citra. 3. Data sampel kain yang digunakan berdasarkan: a. Citra yang diproses merupakan citra yang bertipe JPG (*.jpg). b. Ukuran citra yang diproses adalah 200x200 piksel. c. Ada 2 data yang digunakan, data yang pertama dalam satu daerah terdapat 10 jenis citra kain. Data yang kedua dalam satu daerah terdapat 1 jenis citra kain yang telah di potong-potong menjadi 10 bagian citra kain setiap daerahnya. Jumlah keseluruhan citra dalam 10 daerah adalah 100 citra. 4. Menggunakan ciri warna dan rata-rata vektor. 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5. Tahap preprocesing untuk ekstrasi ciri menggunakan algoritma deteksi tepi Canny dan membaginya dalam vektor horizontal dan vertikal. 6. Untuk mengklasifikasi citra kain berdasarkan warna dan rata-rata vektor menggunakan algoritma Naive Bayes. 7. Pembuatan program hanya sebuah prototype.
1.5 Metodologi Penelitian Metodologi yang digunakan dalam penelitian ini adalah sebagai berikut: 1. Studi Pustaka Studi literatur tentang teori-teori yang berkaitan dengan warna dan motif kain, metode Canny, membaca jurnal ilmiah dan mencari informasi di internet mengenai macam-macam kain tradisional nusantara serta tentang algoritma Naive Bayes. 2. Analisis dan Perancangan Mempelajari proses kerja dari metode Canny dan melakukan tahap preprocesing: -
Mengumpulkan data kain tradisional dengan mengambil gambar dari internet.
-
Memotong citra dengan ukuran 200 x 200 piksel.
-
Memisahkan warna Red, Green dan Blue (RGB) dari citra asli.
-
Menghitung rata-rata Red, rata-rata Green, rata-rata Blue.
-
Menghitung rata-rata RGB dari citra baik yang berukuran 200 x 200 piksel untuk memperoleh ciri warna. 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
-
Menggunakan ciri warna sebagai ekstraksi ciri.
-
Mengubah citra asli menjadi grayscale.
-
Mengambil deteksi tepi pada citra dengan menggunakan metode Canny.
-
Membagi citra yang telah dikenai deteksi tepi Canny kedalam vektor horizontal dan vertikal.
-
Menggunakan ciri vektor horizontal dan vertikal sebagai ekstraksi ciri.
-
Mengabungkan ciri warna dan rata-rata vektor.
-
Mengolah data citra yang telah dikenai tahap preprocesing menggunakan algoritma Naive Bayes Classifier.
-
Menghitung akurasi yang benar dari klasifikasi menggunakan algoritma Naive Bayes Classifier.
3. Implementasi Pada tahap ini membuat prototype berupa sebuah perangkat lunak menggunakan sistem operasi Microsoft Windows 7, dengan bahasa pemrograman Matlab dan Photoscape sebagai tools penunjang. 4. Pengujian dan Analisis Hasil Pada tahap ini adalah untuk mengetahui tingkat keakuratan algoritma Naive Bayes dalam klasifikasi kain tradisional Indonesia dan menganalisia hasilnya.
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.6 Sistematika Penulisan Sistematika penulisan yang digunakan adalah sebagai berikut ini: BAB I PENDAHULUAN Bab ini berisi tentang pendahuluan yang terdiri dari latar belakang, rumusan masalah, tujuan, batasan masalah, metode penelitian dan sistematika penulisan dalam tugas akhir ini. BAB II LANDASAN TEORI Bab ini berisi mengenai teori-teori yang menjadi dasar dalam penelitian klasifikasi kain tradisional nusantara dengan menggunakan algoritma Naïve Bayes. BAB III ANALISA DAN PERANCANGAN Bab ini membahas mengenai analisa kebutuhan dan perancangan perangkat lunak sistem klasifikasi kain tradisional nusantara. BAB IV IMPLEMENTASI SISTEM Bab ini berisi mengenai implementasi sistem yang telah disusun pada bab sebelumnya. BAB V ANALISA HASIL Bab ini berisi hasil dan analisa pada sistem yang telah dibuat, berupa keluaran dari sistem. BAB VI KESIMPULAN DAN SARAN Bab ini berisi kesimpulan dari uji coba klasifikasi kain tradisional nusantara dan saran untuk pengembangan, perbaikan serta penyempurnaan terhadap aplikasi yang telah dibuat. 6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II LANDASAN TEORI
2.1 Kain Tradisional Nusantara Indonesia merupakan negara kepulauan yang terdiri dari kurang lebih 17.000 pulau dan terbagi menjadi beberapa provinsi, hal ini pula yang menyebabkan Indonesia memiliki keanekaragaman budaya. Salah satu warisan budaya yang sangat penting yaitu adanya kain tradisional. Pada zaman prasejarah kain berfungsi sebagai pelindung badan dari panas dan dingin serta gangguan serangga dan benda-benda tajam. Bahan yang digunakan untuk membuat kain pun masih sangat sederhana yaitu seperti kulit kayu, kulit binatang, serat dan daundaunan. Pada masa klasik India, Persia, Cina, Eropa adalah negara yang banyak mempengaruhi kain tradisional Indonesia. Di Indonesia terdapat berbagai macam jenis kain tradisional dan berasal dari berbagai daerah di Indonesia antara lain kain tenun ikat, adalah kain tenun yang dibuat dengan teknik tenun. Kemudian ada kain songket adalah kain tenun yang dibuat dengan teknik menambah benang, hiasan dibuat dengan menyisipkan benang perak, atau emas. Kain songket ini berasal dari daerah Palembang. Lalu ada kain lurik, kain ini biasa digunakan untuk masyarakat jawa terutama di daerah Probolinggo yang diyakini memiliki kekuatan magis yang dapat mengusir roh jahat.
7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Lalu terdapat kain batik yang sudah sering didengar telinga kita, beberapa batik di jawa masing-masing mempunyai ciri khas, batik juga termasuk jenis kerajinan yang memiliki nilai seni tinggi dan telah menjadi bagian dari budaya Indonesia. Kemudian ada kain jumputan atau kain pelangi, di daerah Solo dan Jogja kain jumputan dipakai untuk selendang, kemben, ikat kepala dan ikat pinggang. Lalu kain gringsing atau disebut juga kain ikat ganda ini di Bali dianggap mempunyai kekuatan untuk dapat menyembuhkan penyakit seperti kain rongkong di Toraja dan kain hinggi di Sumba. Di daerah Bali kain songket lamak digantungkan di pura dan dipakai untuk upacara galungan.dan masih terdapat banyak
lagi
jenis
kain
di
Indonesia
yang
patut
untuk
dilestarikan
(Mulyana&Rakhmat, 2006).
2.2 Pengenalan Pola Pengenalan adalah suatu proses untuk memahami sebuah entitas berdasarkan pengetahuan terhadap entitas sebelumnya. Pola adalah himpunan obyek atau suatu konsep yang himpunan elemennya sama dalam hal aspek. Pola dapat dinyatakan dengan kuantitas, kualitas atau ciri yang dapat ditandai dan lainnya. Sebagai contoh cara setiap manusia untuk makan mempunyai pola yang berbeda dengan hewan. Begitu pula dengan gambar atau citra kain tradisional yang mempunyai pola tersendiri di setiap kainnya yang mencirikhaskan asal dari kain tersebut Pengenalan Pola adalah proses pengenalan pola menggunakan mesin atau komputer.
8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.3 Deteksi Tepi Edge (tepi) adalah perubahan nilai intensitas derajat keabuan yang mendadak (besar) dalam jarak yang singkat. Deteksi tepi digunakan untuk proses segmentasi dan identifikasi obyek di dalam citra. Operasi ini bertujuan untuk melacak titik-titik pada citra yang dianggap sebagai tepi dari suatu obyek, yang membatasi suatu wilayah obyek satu dengan yang lainnya. Tujuan lain operasi pendeteksian tepi ini adalah untuk meningkatkan penampakan garis batas suatu daerah atau obyek didalam citra (Melantika, 2010).
Gambar 2. 1. Proses Deteksi tepi Dalam pengambilan Edge information digunakan metode Canny karena merupakan metode deteksi tepi yang paling baik serta telah digunakan dalam pengambilan ekstraksi ciri dalam mengidentifikasi batik berdasarkan pola batik dan ciri-ciri batik menggunakan ekstraksi ciri tekstur kain (Imanuddin, 2010). Berikut adalah langkah-langkah dalam melakukan deteksi tepi Canny yang dikembangkan oleh F. Canny pada tahun 1986 dengan menggunakan multi tahap algoritma (Canny,1986): 1. Menghilangkan noise yang ada pada citra dengan mengimplementasikan filter Gaussian. Hasilnya citra akan terlihat sedikit buram. Hal ini 9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dimaksudkan untuk mendapatkan tepian citra yang sebenarnya. Berikut adalah persamaan filter Gaussian dengan ukuran (2k+1)x(2k+1):
Berikut adalah salah satu contoh filter Gaussian dengan σ =1.4 :
2. Menghitung potensi gradien citra dengan melakukan deteksi tepi menggunakan salah satu operator deteksi tepi seperti Sobel sebagai contoh dengan melakukan pencarian secara horizontal (Gx) dan secara vertikal (Gy). Di bawah ini merupakan rumus nya:
Selanjutnya membagi dalam 4 warna, sehingga garis dan arah yang berbeda memiliki warna yang berbeda. Pembagiannya adalah 0 – 22.5 dan 157.5 – 180 derajad berwarna kuning, 22.5 – 67.5 berwarna hijau, dan derajat 67.5 – 157.5 berwarna merah. 3. Memperkecil garis tepi yang muncul dengan menerapkan non-maximum suppression atau penekanan, sehingga menghasilkan garis tepian yang lebih ramping. 10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4. Langkah selanjutnya adalah hysteresis thresholding untuk klasifikasi dengan dua buah nilai High-threshold dan Low-Threshold. Suatu piksel disahkan sebagai piksel edge jika, nilainya lebih besar atau sama dengan High-Threshold jika piksel tersebut memiliki intensitas kekuatan edge yang lebih besar dari Low-Threshold dan terhubung dengan piksel yang nilainya
lebih
besar
dari
High-Threshold.
Untuk
menentukan
keterhubungan suatu piksel dengan piksel lainnya digunakan teknik yang dinamakan edge-linking yang pada dasarnya sama dengan flood-fill.
2.4 Ekstraksi Ciri Untuk mengetahui suatu citra, diperlukan adanya ekstraksi ciri. Ekstraksi ciri dapat diteliti dengan mengambil beberapa bagian citra yang bisa menunjukan ciri khas dari citra tersebut, misalkan warna, pola citra, diameter, bentuk dan masih banyak lagi. Dalam klasifikasi citra kain tradisional ini, menggunakan ekstrak ciri warna dan rata-rata vektor.
2.4.1 Warna Meneliti citra berdasarkan warna yang dikandungnya adalah salah satu teknik yang paling banyak digunakan. Perhitungan kadar warna berdasarkan atas percobaan yang telah dilakukan pada penelitian untuk klasifikasi tingkat kematangan tomat merah menggunakan metode perbandingan kadar warna (Noviyanto, 2009). 11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Secara umum ciri warna hanya memperhatikan distribusi warna piksel-piksel dalam citra tanpa memperhatikan ukuran dan orientasi posisi citra. Distribusi warna dapat dipresentasikan dalam berbagai bentuk, antara lain histogram warna dan momen warna. Berikut merupakan proses pengklasifikasian dengan menghitung rata-rata nilai Red, Green, dan Blue (RGB): …………………………… (2.4)
………………………… (2.5)
…………………………… (2.6)
…………………………… (2.7)
12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.4.2 Rata-rata Vektor Rata-rata vektor adalah membagi citra yang berukuran 200 x 200 menjadi 8 vektor horizontal dan 8 vektor vertikal. Untuk setiap vektornya dan akan dihitung
nilai rata-ratanya. Kemudian jumlah rata-ratanya
dijadikan sebagai ciri (Tiarani, 2011). a. Vektor Horizontal
Gambar 2. 2 Ilustrasi pembagian vektor horizontal Pada gambar 2.2 citra dibagi menjadi 8 bagian vektor horizontal. Setiap bagiannya dihitung rata-ratanya dan akan diperoleh nilai rata-rata yang akan dijadikan ciri.
13
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
b. Vektor Vertikal
Gambar 2. 3 Ilustrasi pembagian vektor vertikal Pada gambar 2.3 citra dibagi menjadi 8 bagian vektor vertikal. Setiap bagiannya dihitung rata-ratanya dan akan diperoleh nilai rata-rata yang akan dijadikan ciri. 2.5 Klasifikasi Klasifikasi dapat didefinisikan sebagai pekerjaan yang melakukan pelatihan. Pekerjaan pelatihan tersebut akan menghasilkan suatu model yang kemudian disimpan sebagai memori. Algoritma Klasifikasi menggunakan data training untuk membuat sebuah model. Model yang sudah di bangun tersebut kemudian digunakan untuk memprediksi label kelas data baru yang belum diketahui (Prasetyo, 2012). Klasifikasi merupakan suatu metode data mining yang dapat digunakan untuk proses pencarian sekumpulan model yang dapat menjelaskan dan 14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
membedakan kelas-kelas data, yang tujuannya supaya model tersebut dapat digunakan untuk memprediksi kecenderungan data-data yang muncul di masa depan (Han&Kamber, 2006). Proses klasifikasi terlihat pada gambar 2.4.
Input Data Training (x,y)
Pembangunan Model
Penerapan Model
Algoritma Training
Input Data Testing(x,?)
Output Data Testing(x,y)
Gambar 2. 4 Proses Klasifikasi
2.6 Algoritma Naive Bayes Classifier Naive Bayes merupakan pengklasifikasian dengan metode probabilitas dan statistik yang dikemukakan oleh ilmuwan Inggris Thomas Bayes. Pada penerapan teorema Bayes (aturan Bayes) dengan asumsi independensi (ketidaktergantungan) yang kuat (naif). Dengan kata lain, dalam Naïve Bayes model yang digunakan adalah model fitur independen (Prasetyo, 2012). Dari pengertian diatas dapat diambil sebuah kesimpulan bahwa Naïve Bayes adalah teknik klasifikasi yang atributnya saling bebas atau tidak ada kaitan antar atribut. Contohnya, buah apel dikatakan buah apel jika mempunyai ciri berdiameter sekitar 6cm, berwarna merah, berbentuk bulat. Walaupun ciri diatas saling bergantungan satu sama lain, namun dalam bayes 15
hal tersebut tidak
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dipandang, seolah-olah tidak memiliki hubungan apapun. Prediksi Naïve Bayes didasarkan pada teorema Bayes, seperti pada rumus dibawah ini: ………………………. (2.8)
Sedangkan untuk Naive Bayes dengan ciri continue memiliki rumus seperti: …………………………….... (2.9)
Untuk perhitungan nilai likelihood: ……………………………... (2.10)
Untuk perhitungan nilai probabilitas: …………………………………...... (2.11)
Keterangan: =Probabilitas data dengan vektor X pada kelas Y =Probabilitas awal kelas Y =Probabilitas independen kelas Y dari semua fitur dalam vektor X µ
=Mean atau nilai rata-rata dari atribut dengan fitur continue
σ
=Standar Deviasi
16
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Contoh perhitungan Naive Bayes untuk Klasifikasi: Diberikan tabel untuk mengukur seseorang mempunyai tubuh yang proporsional atau tidak berdasarkan ciri tinggi badan dan berat badan, seperti dibawah ini:
Tinggi Badan (cm) A1 175 170 155 180 130 150
Berat badan(kg) A2 50 54 45 60 20 40
Proporsional A3 Tidak Tidak Ya Tidak Ya Ya
Tabel 2. 1 Tabel Contoh Soal Perhitungan Naive Bayes Langkah-langkah untuk menyelesaikan permasalahan diatas dengan menggunakan Naive Bayes adalah sebagai berikut: a. Menghitung Mean dan Stándar Deviasi pada masing-masing ciri (A1):
17
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
b. Menghitung Mean dan Stándar Deviasi pada masing-masing ciri (A2):
c. Menghitung Naive Bayes menggunakan rumus bersyarat (2.9) , Jika diberikan A1 = 155, A2 = 45, dan A3 = Ya, maka:
18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
d. Kemudian selanjutnya menghitung Likelihoodnya (2.10), ( Hasil A1 =155|Ya dengan A2 = 45|Ya di kalikan begitu pula sebaliknya. Sehingga: Hasil A1 = (0.0240) x (0.0240) = 0.000576 Hasil A2 = (0.0119) x (0.0225) = 0.000267
e. Menghitung nilai probabilitas dengan melakukan normalisasi terhadap nilai Ya dan nilai Tidak (2.11), sehingga diperoleh hasil akhir, seperti:
Kesimpulannya, nilai Probabilitas Ya lebih besar daripada nilai Probabilitas Tidak. Sehingga hasil klasifikasi = Ya.
2.7 Akurasi Sebuah
sistem
dalam
melakukan
klasifikasi
diharapkan
dapat
mengklasifikasi semua data set dengan benar, tetapi tidak dipungkiri bahwa kinerja suatu sistem tidak bisa 100% akurat. a) Untuk menghitung akurasi digunakan:
b) Untuk menghitung kesalahan prediksi (error) digunakan:
19
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III ANALISA DAN PERANCANGAN SISTEM
Pada bab analisa dan perancangan sistem ini, berisi tentang penjelasan mengenai perancangan sistem secara umum, perancangan setiap proses nya, mulai dari proses ekstraksi ciri warna dan rata-rata vektor sampai dengan proses klasifikasi menggunakan algoritma Naive Bayes Classifier dan proses untuk mendapatkan tingkat keakuratan dari proses klasifikasi kain tradisional nusantara.
3.1 Data Citra Kain Nusantara Terdapat dua data yang digunakan dalam klasifikasi kain tradisional nusantara ini, masing-masing mempunyai 10 daerah atau kelas. Data yang pertama merupakan data kain yang dalam satu daerah terdapat 1 jenis citra kain yang telah di potong-potong menjadi 10 bagian citra kain setiap daerahnya, total keseluruhan ada 100 citra terdapat pada lampiran I. Data yang kedua dalam satu daerah terdapat 10 jenis citra kain, jumlah keseluruhan 100 citra terdapat pada lampiran II. Semua citra kain berukuran 200x200 piksel.
Gambar 3. 1 Contoh Citra asli berukuran 200 x 200 piksel 20
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.2 Perancangan Sistem Secara Umum Sistem klasifikasi kain tradisional nusantara ini dibuat dengan tujuan untuk memodelkan algoritma Naive Bayes dalam menangani klasifikasi kain tradisional nusantara. Citra yang dimasukan kedalam sistem merupakan gambar yang berukuran 200x200 piksel. Pada citra dilakukan proses ekstraksi ciri yang meliputi ekstraksi warna dan rata-rata vektor. Sistem akan menggunakan ciri tersebut untuk proses training dan testing. Ada 2 sistem yaitu yang pertama untuk menghitung akurasi dari 100 data citra yang telah dilakukan proses klasifikasi menggunakan Naive Bayes. Ekstraksi Ciri Warna
Ekstraksi Ciri Rata-rata Vektor
Data Citra Kain Dari User
Data Citra Kain Dari User
Data Citra Kain Dari User
Memotong Citra (200x200 piksel)
Memotong Citra (200x200 piksel)
Memotong Citra (200x200 piksel)
Memisahkan warna Red, Green dan Blue
Grayscaling
Memisahkan warna Red, Green dan Blue
Menghitung ratarata Red, Green dan Blue
Ekstraksi Ciri Warna & Rata-rata Vektor
Menghitung ratarata Red, Green dan Blue
Deteksi tepi Canny Menghitung ratarata RGB
Menghitung ratarata RGB
Hitung rata-rata vektor Horisontal & Vertikal
Hasil ekstraksi ciri warna ( rata-rata R,G,B dan ratarata RGB)
Hasil ekstraksi ciri rata-rata vektor Horisontal atau Vertikal
Proses Klasifikasi menggunakan Naive Bayes
Proses Klasifikasi menggunakan Naive Bayes
Grayscaling
Deteksi tepi Canny
Hitung rata-rata vektor Horisontal & Vertikal
Hasil ekstraksi ciri gabungan warna dan rata-rata vektor
Perhitungan Akurasi
Perhitungan Akurasi Proses Klasifikasi menggunakan Naive Bayes
Perhitungan Akurasi
Gambar 3. 2 Alur Perancangan Sistem Dengan 100 Data 21
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Yang kedua adalah menghitung probabilitas maksimal dari data citra yang dimasukan oleh user. Hasil keluarannya adalah daerah asal dari citra yang dimasukan. Ekstraksi Ciri Warna
Ekstraksi Ciri Rata-rata Vektor
Data Citra Kain Dari User
Data Citra Kain Dari User
Data Citra Kain Dari User
Memotong Citra (200x200 piksel)
Memotong Citra (200x200 piksel)
Memotong Citra (200x200 piksel)
Memisahkan warna Red, Green dan Blue
Grayscaling
Memisahkan warna Red, Green dan Blue
Menghitung ratarata Red, Green dan Blue
Ekstraksi Ciri Warna & Rata-rata Vektor
Menghitung ratarata Red, Green dan Blue
Deteksi tepi Canny Menghitung ratarata RGB
Menghitung ratarata RGB
Hitung rata-rata vektor Horisontal & Vertikal
Hasil ekstraksi ciri warna ( rata-rata R,G,B dan ratarata RGB)
Hasil ekstraksi ciri rata-rata vektor Horisontal atau Vertikal
Proses Klasifikasi menggunakan Naive Bayes
Proses Klasifikasi menggunakan Naive Bayes
Grayscaling
Deteksi tepi Canny
Hitung rata-rata vektor Horisontal & Vertikal
Hasil ekstraksi ciri gabungan warna dan rata-rata vektor Hasil berupa Daerah asal citra kain
Hasil berupa Daerah asal citra kain Proses Klasifikasi menggunakan Naive Bayes
Hasil berupa Daerah asal citra kain
Gambar 3. 3 Alur Perancangan Sistem Dengan Data Dari User
22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.3 Perancangan Proses Ekstraksi ciri Proses ekstraksi ciri merupakan proses paling penting untuk mendapatkan komponen atau data-data dari sebuah citra baik yang selanjutnya digunakan untuk proses klasifikasi. Untuk proses klasifikasi Naive Bayes menggunakan tiga ciri yaitu ciri warna, deteksi tepi dan gabungan antara warna dan rata-rata vektor. 3.3.1 Proses Ekstraksi Ciri Warna Untuk mendapatkan ekstrak ciri warna diperoleh dengan algoritma seperti dibawah ini: Masukan: matriks dari citra yang berukuran 200 x200 piksel Keluaran: data ektraksi ciri warna yang berupa matriks 1x4 untuk setiap citra 1. Masukan citra berukuran 200 x 200 piksel. 2. Membaca citra. 3. Memisahkan RGB. -
Mengambil keping warna merah (Red)
-
Mengambil keping warna hijau (Green)
-
Mengambil keping warna biru (Blue)
4. Mencari rata-rata RGB. -
Mencari rata-rata keping warna merah (Red)
-
Mencari rata-rata keping warna hijau (Green)
-
Mencari rata-rata keping warna biru (Blue)
-
Mencari rata-rata RGB (Red, Green, Blue) 23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Hasil dari setiap nilai rata-rata Red, rata-rata Green, rata-rata Blue, dan rata-rata RGB yang didapat dari proses ekstraksi ciri warna diatas berupa matriks yang berukuran 1x4 untuk setiap citra masukan. 3.3.2 Proses Ekstraksi Ciri Rata-rata Vektor Untuk mengenali pola dari citra yang sudah dikenai deteksi tepi Canny, algoritma rata-rata vektor horizontal nya seperti dibawah ini: Masukan: matriks dari gambar yang berukuran 200 x200 piksel Keluaran: matriks nilai rata-rata vektor horizontal 1x8 untuk setiap citra 1. Citra di ubah menjadi gray. 2. Hasil dari citra yang di grayscale dikenai dengan fungsi deteksi tepi Canny. 3. Citra hasil deteksi tepi dibagi menjadi 8 baris horizontal, dan untuk setiap barisnya 25x200 piksel dihitung rata-rata nya. a.
For i= 1:25, for k=1:200untuk baris pertama.
b.
Mengambil piksel yang bernilai 1, lalu dijumlahkan.
c.
Masukkan kedalam sub variabel.
4. Ulangi langkah pada nomor 3 untuk baris ke dua sampai baris ke delapan dengan menambahkan nilai disetiap baris nya. 5. Hasil penjumlahan piksel setiap baris nya dibagi dengan nilai 5000 di dapat dari 25x200 untuk mencari rata-rata setiap baris horizontal. 6. Simpan dalam variabel untuk hasil rata-rata setiap baris nya. 24
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Kemudian untuk algoritma rata-rata vektor vertikal nya seperti dibawah ini: Masukan: matriks dari gambar yang berukuran 200 x200 piksel Keluaran: nilai rata-rata vektor vertikal berupa matriks 1x8 untuk setiap citra 1. Citra di ubah menjadi gray. 2. Hasil dari citra yang di grayscale dikenai dengan fungsi deteksi tepi Canny. 3. Citra hasil deteksi tepi dibagi menjadi 8 baris horizontal, dan untuk setiap barisnya 25x200 piksel dihitung rata-ratanya. a) For k=1:25, for i=1:200 untuk baris pertama. b) Mengambil piksel yang bernilai 1, lalu dijumlahkan. c) Masukan kedalam sub variabel. 4. Ulangi langkah pada nomor 3 untuk baris kedua sampai ke delapan dengan menambahkan nilai disetiap barisnya. 5. Hasil penjumlahan piksel setiap barisnya dibagi dengan nilai 5000 di dapat dari 25x200 untuk mencari rata-rata setiap baris vertikal. 6. Simpan dalam variabel untuk hasil rata-rata setiap baris nya.
25
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.3.4 Proses Gabungan Ekstraksi Ciri Warna Dan Rata-rata Vektor Pada proses ini merupakan proses penggabungan ekstraksi ciri warna dan rata-rata vektor. Hasil dari setiap perhitungan warna yaitu ratarata Red, rata-rata Green, rata-rata Blue dan rata-rata RGB digabungkan dengan ekstraksi ciri deteksi tepi yang berupa rata-rata vektor horizontal atau vertikal 8 baris. Sehingga akan terbentuk matriks yang berukuran 1x12 setiap citra. Untuk mendapatkan ekstrak ciri warna dan rata-rata vektor diperoleh dengan algoritma seperti dibawah ini: Masukan: matriks dari citra yang berukuran 200 x200 piksel Keluaran: data ektraksi ciri warna yang berupa matriks 1x4 untuk setiap citra 1. Masukan citra berukuran 200 x 200 piksel. 2. Membaca citra. 3. Memisahkan RGB. -
Mengambil keping warna merah (Red)
-
Mengambil keping warna hijau (Green)
-
Mengambil keping warna biru (Blue)
4. Mencari rata-rata RGB. -
Mencari rata-rata keping warna merah (Red)
-
Mencari rata-rata keping warna hijau (Green)
-
Mencari rata-rata keping warna biru (Blue) 26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
-
Mencari rata-rata RGB (Red, Green, Blue)
5. Citra di ubah menjadi gray. 6. Hasil dari citra yang di grayscale dikenai dengan fungsi deteksi tepi Canny. 7. Citra hasil deteksi tepi dibagi menjadi 8 baris horizontal, dan untuk setiap barisnya 25x200 piksel dihitung rata-rata nya. a. For i= 1:25, for k=1:200untuk baris pertama. b. Mengambil piksel yang bernilai 1, lalu dijumlahkan. c. Masukkan kedalam sub variabel. 8. Ulangi langkah pada nomor 3 untuk baris ke dua sampai baris ke delapan dengan menambahkan nilai disetiap baris nya. 9. Hasil penjumlahan piksel setiap baris nya dibagi dengan nilai 5000 di dapat dari 25x200 untuk mencari rata-rata setiap baris horizontal. 10. Simpan dalam variabel untuk hasil rata-rata setiap baris nya. Kemudian untuk algoritma rata-rata vektor vertikal nya seperti dibawah ini: 11. Citra hasil deteksi tepi dibagi menjadi 8 baris horizontal, dan untuk setiap barisnya 25x200 piksel dihitung rata-ratanya. a. For k=1:25, for i=1:200 untuk baris pertama. b. Mengambil piksel yang bernilai 1, lalu dijumlahkan. c. Masukan kedalam sub variabel. 12. Ulangi langkah pada nomor 3 untuk baris kedua sampai ke delapan dengan menambahkan nilai disetiap barisnya. 27
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13. Hasil penjumlahan piksel setiap barisnya dibagi dengan nilai 5000 di dapat dari 25x200 untuk mencari rata-rata setiap baris vertikal. 14. Simpan dalam variabel untuk hasil rata-rata setiap baris nya.
3.4 Perancangan Proses Klasifikasi Setiap hasil dari ekstrasi ciri warna, rata-rata vektor dan penggabungan antara warna dan rata-rata vektor pada masing-masing citra, dicari mean dan stándar deviasi untuk setiap atributnya. Setelah di dapatkan nilai mean dan stándar deviasi dari ekstraksi ciri masing-masing, nilai tersebut di jadikan sebagai model untuk training dan testing. Proses klasifikasi dengan menggunakan Naive Bayes dilakukan dengan ekstraksi ciri sesuai pilihan. Algoritma proses klasifikasi menggunakan Naive Bayes, seperti dibawah ini: Masukan: nilai mean, nilai stándar deviasi dan data testing Keluaran: hasil probabilitas 1.
Memasukan nilai mean dan stándar deviasi ke dalam rumus Naive Bayes bersyarat (2.9). a. For i =1: m untuk baris dari nilai stándar deviasi setiap kelas b. For j =1: n untuk jumlah atribut dalam setiap kelas c. Perhitungan dengan menggunakan rumus Naive Bayes d. Memasukan data testing ke dalam perhitungan naive bayes satu persatu e. Hasil dari perhitungan naive bayes di masukan kedalam matriks bayesian 28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.
Kemudian menghitung likelihood setiap nilai yang didapat dari hasil perhitungan Naive Bayes bersyarat (2.10) a. For k =1: mBayesian untuk nilai dari hasil perhitungan sebelumya b. For l =1 : nBayesian untuk nilai dari hasil perhitungan sebelumnya sesuai dengan jumlah atribut dalam setiap kelasnya c. Jika terdapat nilai 0 dan NaN, maka nilai tersebut tidak akan dihitung dalam likelihood d. Melakukan perhitungan likelihood e. Simpan hasil dari perhitungan likelihood kedalam matriks likelihood
3.
Menghitung nilai probabilitas (2.11). a. For k= 1: mLikelihood untuk hasil dari setiap perhitungan likelihood b. Melakukan perhitungan probabilitas c. Simpan hasil probabilitas dalam matriks probabilitas d. Kemudian mencari nilai probabilitas yang paling besar untuk menentukan kain tersebut berasal dari daerah mana e. Hasil nilai probabilitas yang paling besar disimpan dalam variabel hasilProbabilitas
4.
Ulangi langkah pertama sampai ketiga untuk semua data dari setiap kelas.
29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.5 Perancangan Proses Akurasi Untuk mengetahui tingkat keakuratan dari proses klasifikasi ini dengan cara menghitung akurasi. Berdasarkan pembagian data dengan menggunakan metode k-fold. Ada tiga pilihan untuk testing dan training yang pertama menggunakan 2-fold, yang kedua menggunakan 3-fold, dan yang ketiga menggunakan 5-fold. Percobaan
Testing
Training
1
Citra 1, 2, 3, 4, 5
Citra 6, 7, 8, 9, 10
2
Citra 6, 7, 8, 9, 10
Citra 1, 2, 3, 4, 5
Tabel 3. 1 Percobaan 2-fold
Percobaan
Testing
Training
1
Citra 1, 2, 3
Citra 4, 5, 6, 7, 8, 9, 10
2
Citra 4, 5, 6
Citra 1, 2, 3, 7, 8, 9, 10
3
Citra 7, 8, 9
Citra 1, 2, 3, 4, 5, 6, 10
4
Citra 10, 1, 2
Citra 3, 4, 5, 6, 7, 8, 9
Tabel 3. 2Percobaan 3-fold
30
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Percobaan
Testing
Training
1
Citra 1, 2
Citra 3, 4, 5, 6, 7, 8, 9, 10
2
Citra 3, 4
Citra 1, 2, 5, 6, 7, 8, 9, 10
3
Citra 5, 6
Citra 1, 2, 3, 4, 7, 8, 9, 10
4
Citra 7, 8
Citra 1, 2, 3, 4, 5, 6, 9, 10
5
Citra 9, 10
Citra 1, 2, 3, 4, 5, 6, 7, 8
Tabel 3. 3 Percobaan 5-fold Kemudian dilakukan proses klasifikasi dengan cara seperti pada dibawah ini:
31
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.6 Perancangan Antar Muka Dibawah ini merupakan perancangan tampilan halaman klasifikasi kain tradisional nusantara dengan menggunakan algoritma Naive Bayes Classifier:
Gambar 3. 4 Halaman Klasifikasi kain tradisional nusantara menggunakan Naive Bayes classifier
Pada halaman sistem ini, terdapat tiga bagian penting yaitu: 1. Bagian Preprocessing Pada bagian ini terdapat tombol ambil data citra yang berfungsi untuk mengambil folder citra yang akan di proses, dan akan terlihat nama citra pada listbox nama citra. Kemudian ada tombol ekstraksi ciri yang 32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
digunakan untuk proses mendapatkan ekstraksi ciri warna, dan deteksi tepi dengan memilih pilihan ekstraksi ciri disamping tombol ekstraksi ciri, maka citra yang di ekstrak akan muncul pada tampilan citra RGB untuk citra yang masih mempunyai nilai RGB, tampilan citra gray untuk citra yang di grayscaling, dan tampilan citra Canny untuk citra yang sudah dikenai deteksi tepi menggunakan Canny.
Gambar 3. 5 Tampilan Preprocesing 2. Bagian Klasifikasi 100 Data Pada bagian ini terdapat pilihan k-fold untuk pembagian data training dan testing yang di inginkan, ada 3 pilihan yaitu 2-fold, 3-fold, dan 5-fold. Kemudian tombol klasifikasi yang berfungsi untuk proses klasifikasi citra yang sudah didapat ekstraksi ciri nya menggunakan Naive Bayes classifier dan akan terlihat hasil klasifikasi benar nya dalam akurasi yang berupa persen.
Gambar 3. 6 Tampilan Klasifikasi 100 Data 33
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Bagian Klasifikasi dari data user Pada bagian ini terdapat tombol uji yang digunakan untuk mengambil citra yang akan diuji, kemudian citra akan langsung terlihat pada tampilan citra tes dan akan terlihat hasil probabilitas dengan citra yang terlihat pada citra hasil.
Gambar 3. 7 Tampilan Klasifikasi Dari Data User 3.7 Kebutuhan Hardware dan Software Hardware dan Software yang digunakan dalam pembuatan sistem klasifikasi kain tradisional nusantara ini adalah: 1. Processor
: AMD dual-core C60 APU
2. Sistem Operasi
: Microsoft Window 7
3. Media Tampilan : VGA AMD Radeon HD 4200 128MB 4. Media Masukkan : Mouse, Keyboard 5. Memory
: 2 GB DDR3 Memory
6. Storage
: 320GB HDD
7. Software
: Matlab2012, Photoscape 34
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB IV IMPLEMENTASI SISTEM
4.1 Implementasi Klasifikasi Pada bab ini merupakan implementasi dari perancangan sistem klasifikasi dengan menggunakan 100 data citra yang meliputi proses memotong citra menjadi 200x200 piksel, ekstraksi setiap ciri yaitu ciri warna dan rata-rata vektor horizontal dan vertikal serta klasifikasi Naive Bayes. 4.1.1 Implementasi Memotong Citra Pada proses memotong citra ini menggunakan aplikasi photoscape, karena penggunaannya yang mudah. Citra kain yang berukuran 460x572 piksel seperti pada gambar 4.1 dimasukan kedalam aplikasi photoscape. Kemudian melakukan proses croping berukuran 200x200 piksel.
Gambar 4. 1Proses Cropping Citra kain 460x572
35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Setelah proses croping selesai terlihat potongan kain yang berukuran 200x200 piksel seperti pada gambar 4.3, yang akan digunakan sebagai data kain untuk selanjutnya dilakukan ekstraksi ciri warna dan rata-rata vektor horizontal atau vertikal.
Gambar 4. 2 Citra kain 200x200 piksel
4.1.2 Implementasi Ekstraksi Ciri Warna Dibawah ini merupakan implementasi untuk ekstraksi ciri warna yang meliputi memisahkan warna Red, Green, Blue dan menghitung ratarata Red, Green, Blue serta menghitung rata-rata RGB. %Membaca Citra citra=imread(gambar); %Memisahkan RGB dan mencari rata2 RGB meanR=0; meanG=0; meanB=0; meanRGB=0; dR=citra(:,:,1); dG=citra(:,:,2); dB=citra(:,:,3); meanR=mean(mean(dR)); meanG=mean(mean(dG)); meanB=mean(mean(dB)); meanRGB=meanR+meanG+meanB/3;
36
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Hasil dari setiap ekstraksi ciri warna disimpan dalam matriks yang berukuran 1x4 untuk setiap citra dalam setiap kelas, seperti dibawah ini:
Gambar 4. 3 Tabel Ekstrak Ciri Warna Pada kolom ke-1 merupakan nilai meanR, kolom ke-2 merupakan nilai meanG, kolom ke-3 merupakan nilai meanB, dan kolom ke-4 merupakan nilai meanRGB. Kolom terakhir merupakan identitas kelas atau daerah dari masing-masing citra.
4.1.3 Implementasi Ekstraksi Ciri Rata-rata Vektor Dibawah ini merupakan implementasi proses deteksi tepi menggunakan algoritma Canny. Sebelum melakukan ekstraksi ciri untuk mencari rata-rata vektor horizontal atau vertikal, mengubah citra kain asli yang berukuran 200x200 menjadi grayscaling untuk selanjutnya dilakukan deteksi tepi menggunakan algoritma Canny. Hasil dari algoritma Canny ini berupa citra hitam putih yang bernilai 0 dan 1.
37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
%Membaca Citra citra=imread(gambar); %Mengubah Citra RGB Menjadi Grayscale grey= rgb2gray(citra); % imshow (grey); %Melakukan deteksi tepi hsl= edge(grey,'Canny');
Gambar 4. 4Proses Deteksi tepi Canny 1. Implementasi rata-rata vektor horizontal Dibawah ini merupakan implementasi untuk mendapatkan ciri rata-rata vektor horizontal: %Membagi dalam vektor horizontal obyek=1; sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0; for i=1:piksel*1 for k=1:m if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=piksel*1+1:piksel*2 for k=1:m if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=piksel*2+1:piksel*3 for k=1:m if (hsl(i,k)==obyek) sum3=sum3+1; end end
38
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
end for i=piksel*3+1:piksel*4 for k=1:m if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=piksel*4+11:piksel*5 for k=1:m if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=piksel*5+1:piksel*6 for k=1:m if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=piksel*6+1:piksel*7 for k=1:m if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=piksel*7+1:piksel*8 for k=1:m if (hsl(i,k)==obyek) sum8=sum8+1; end end end h1 =sum1/pembagi; h2 =sum2/pembagi; h3 =sum3/pembagi; h4 =sum4/pembagi; h5 =sum5/pembagi; h6 =sum6/pembagi; h7 =sum7/pembagi;h8 =sum8/pembagi; end
Untuk menyimpan nilai setiap vektor horizontal menggunakan variabel h1 sampai h8. Nilai vektor didapat dari jumlah piksel yang bernilai 1 di setiap vektor di bagi pembagi, yaitu 5000 didapat dari ukuran setiap vektor 25 x 200 piksel. 39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4. 5 Proses membagi citra kedalam vektor horizontal Hasil rata-rata dari setiap vektor horizontal disimpan dalam matriks yang berukuran 1x8 seperti dibawah ini:
Gambar 4. 6Tabel Ekstrak Ciri Vektor Horizontal Dari kolom ke-1 sampai kolom ke-8 merupakan nilai setiap vektor horizontal, kolom terakhir atau ke-9 menandakan kelas. Kelas ke-1 menandakan daerah ke-1 yaitu Bali, dan seterusnya hingga kelas ke-10 atau daerah ke-10, yaitu Yogyakarta.
40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Implementasi rata-rata vektor vertikal Dibawah ini merupakan implementasi untuk mendapatkan ciri rata-rata vektor vertikal: %Membagi dalam vektor veertikal obyek=1; sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0; for i=1:n for k=1:piksel*1 if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=1:n for k=piksel*1+1:piksel*2 if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=1:n for k=piksel*2+1:piksel*3 if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=1:n for k=piksel*3+1:piksel*4 if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=1:n for k=piksel*4+11:piksel*5 if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=1:n for k=piksel*5+1:piksel*6 if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=1:n
41
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
for k=piksel*6+1:piksel*7 if (hsl(i,k)==obyek) sum7=sum7+1; end end
h1 h3 h5 h7 end
end for i=1:n for k=piksel*7+1:piksel*8 if (hsl(i,k)==obyek) sum8=sum8+1; end end =sum1/pembagi; h2 =sum2/pembagi; =sum3/pembagi; h4 =sum4/pembagi; =sum5/pembagi; h6 =sum6/pembagi; =sum7/pembagi;h8 =sum8/pembagi;
Untuk menyimpan nilai setiap vektor vertikal menggunakan variabel h1 sampai h8. Nilai vektor didapat dari jumlah piksel yang bernilai 1 di setiap vektor di bagi pembagi, yaitu 5000 didapat dari ukuran setiap vektor 25 x 200 piksel.
Gambar 4. 7 Proses membagi citra kedalam vektor vertikal
42
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Hasil rata-rata dari setiap vektor vertikal disimpan dalam matriks yang berukuran 1x8 seperti dibawah ini:
Gambar 4. 8 Tabel Ekstrak Ciri Vektor Vertikal
4.1.4 Implementasi Ekstraksi Ciri Warna dan Rata-rata Vektor Dibawah ini merupakan implementasi untuk mendapatkan ciri warna dan rata-rata vektor horizontal atau vertikal: %Membaca Citra citra=imread(gambar); %Memisahkan RGB dan mencari rata2 RGB serta Kadar RGB meanR=0; meanG=0; meanB=0; meanRGB=0; dR=citra(:,:,1); dG=citra(:,:,2); dB=citra(:,:,3); meanR=mean(mean(dR)); meanG=mean(mean(dG)); meanB=mean(mean(dB)); meanRGB=meanR+meanG+meanB/3; %Mengubah Citra RGB Menjadi Grayscale grey= rgb2gray(citra); % imshow (grey); %Melakukan deteksi tepi hsl= edge(grey,'Canny'); %Membagi dalam vektor obyek=1; sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
43
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
for i=1:piksel*1 for k=1:m if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=piksel*1+1:piksel*2 for k=1:m if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=piksel*2+1:piksel*3 for k=1:m if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=piksel*3+1:piksel*4 for k=1:m if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=piksel*4+11:piksel*5 for k=1:m if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=piksel*5+1:piksel*6 for k=1:m if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=piksel*6+1:piksel*7 for k=1:m if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=piksel*7+1:piksel*8 for k=1:m if (hsl(i,k)==obyek) sum8=sum8+1; end end for i=1:n
44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
for k=1:piksel*1 if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=1:n for k=piksel*1+1:piksel*2 if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=1:n for k=piksel*2+1:piksel*3 if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=1:n for k=piksel*3+1:piksel*4 if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=1:n for k=piksel*4+11:piksel*5 if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=1:n for k=piksel*5+1:piksel*6 if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=1:n for k=piksel*6+1:piksel*7 if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=1:n for k=piksel*7+1:piksel*8 if (hsl(i,k)==obyek) sum8=sum8+1; end end h1 =sum1/pembagi; h2 =sum2/pembagi;
45
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
h3 =sum3/pembagi; h4 =sum4/pembagi; h5 =sum5/pembagi; h6 =sum6/pembagi; h7 =sum7/pembagi; h8 =sum8/pembagi; end
Hasil dari setiap ekstraksi ciri warna dan rata-rata vektor horizontal atau vertikal disimpan dalam vektor yang berukuran 1x12, seperti dibawah ini:
Gambar 4. 9 Tabel Ekstrak Ciri Warna & Vektor Horizontal
Gambar 4. 10 Tabel Ekstrak Ciri Warna & Vektor Vertikal Dari kolom ke-1 sampai kolom ke-12 merupakan nilai setiap ciri warna dan rata-rata vektor, dan kolom terakhir atau ke-13 menandakan kelas 46
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.5 Implementasi Klasifikasi menggunakan Naive Bayes Dibawah ini merupakan implementasi untuk proses klasifikasi menggunakan algoritma Naive Bayes: load 'data.mat','data'; load 'data.mat','lv_size'; % Data dimasukkan di dalam cell % Cell menunjukkan class nCitraPerClass=str2double(get(handles.edJmlCitraPerKelas,'St ring')); kelas=str2double(get(handles.edJmlDaerah,'String')); jmlData=nCitraPerClass*kelas; kfold=handles.kfold; nTest=floor(nCitraPerClass/kfold) [~,nData]=size(data); dataTemp=[];%matriks kosong class=1; for i=1:jmlData %looping untuk memisahkan data per kelas dalam masing2 cell if data(i,nData)==class dataTemp=[dataTemp;data(i,:)]; end if mod(i,nCitraPerClass) == 0 dataCell{class}=dataTemp; class=class+1; dataTemp=[]; end end
Data dalam setiap kelas dimasukan kedalam cell. Jumlah cell sesuai dengan jumlah kelas atau daerah yaitu terdapat 10 cell. Pembagian citra dalam setiap cell bertujuan untuk memudahkan membagi setiap 10 citra didalam satu kelas. Dibawah ini merupakan data citra yang telah dimasukan kedalam setiap cell:
Gambar 4. 11 Data di dalam cell 47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
idx1=1; %batasan untuk ambil data testing idx2=nTest; %batasan untuk ambil data testing sesuai dgn kfold nBenar=0; % menampung jumlah benar utk akurasi nSalah=0; %menampung jumlah salah utk akurasi for z=1:nCitraPerClass/nTest % looping trainng testing % Mencari std dan mean for i=1:class %dataCell{i}=zscore(dataCell{i}(:,1:12)); dataTest{i}=dataCell{i}(idx1:idx2,:); % mengambil data testing trainingTemp=dataCell(i); %mengambil data dari cell utk training semuanya trainingTemp{:}(idx1:idx2,:)=[]; ttaining=trainingTemp{:}; %data dr trainingtemp dimasukan kdalam training rerataTrain(i,1:nData-1)=mean(ttaining(:,1:nData1)); rerataTrain(i,nData)=i; stdTrain(i,1:nData-1)=std(ttaining(:,1:nData-1)); stdTrain(i,nData)=i; end
Data citra dari hasil ekstraksi ciri yang telah dimasukan kedalam masing-masing cell digunakan untuk menentukan pengambilan data testing sesuai dengan k-fold. Data citra dari setiap cell juga digunakan sebagai data training dan digunakan untuk perhitungan mean dan stándar deviasi, seperti dibawah ini:
Gambar 4. 12 Tabel Mean Ekstrak Ciri Warna & Vektor Horizontal
48
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4. 13 Tabel Stándar Deviasi Ekstrak Ciri Warna & Vektor Horizontal Nilai diatas merupakan nilai mean dan stándar deviasi dari setiap atribut dari ekstraksi ciri warna dan rata-rata vektor horizontal atau vertikal. Setiap satu baris nya merupakan nilai mean dan stándar deviasi dari satu kelas.
% naïve Bayes for i=1:class for j=1:nTest rerataTesting=dataTest{i}(j,1:nData-1); stdTraining=stdTrain(:,1:nData-1); rerataTraining=rerataTrain(:,1:nData-1); [ idxLabel,hasilProbabilitas ] = bayesKu(stdTraining,rerataTraining,rerataTesting if idxLabel == i %jika idxlabel hsil prob sama dengan kelas yg sdang di proses , mka nilai benar akan dijumlahkan nBenar=nBenar+1; end end end % proses menentukan index dta testing idx1=idx1+nTest; idx2=idx2+nTest; end
49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% Implementasi algoritma naïve Bayes [m,n]=size(stdTraining); bayesian=zeros(size(stdTraining(1,1:end))); for i=1:m for j=1:n bays1=1/(sqrt(2*pi)*stdTraining(i,j)); bays2=exp(-(((rerataTesting(1,j) rerataTraining(i,j))^2)/(2*((stdTraining(i,j))^2)))); bayesian(i,j)=bays1*bays2; end end menghitung likelihood [idxLabel,hasilProbabilitas]=cariProbabilitas(bayesian); function [idxLabel,hasilProbabilitas]=cariProbabilitas(bayesian) [mBayesian,nBayesian]=size(bayesian); likehood=zeros(mBayesian,1); likehoodTempt=1; for k=1:mBayesian for l=1:nBayesian if (bayesian(k,l) ~= 0) && (~isnan(bayesian(k,l))) % membatasi untuk supaya nilai 0 dan nan likehoodTempt=likehoodTempt*bayesian(k,l); end end likehood(k)=likehoodTempt; likehoodTempt=1; end [mLikehood,~]=size(likehood); probabilitas=zeros(size(likehood)); for k=1:mLikehood probabilitas(k)=(likehood(k)/sum(likehood)); end [hasilProbabilitas,idxLabel]=max(probabilitas); end end
Data testing diambil dari setiap kelas sesuai dengan pembagian k-fold seperti pada gambar dibawah ini:
Gambar 4. 14 Data Testing Dalam Setiap Cell
50
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4. 15 Data Testing Dalam Satu Kelas Data testing dimasukan dalam proses perhitungan mengunakan Naive Bayes. Kemudian di cocokan dengan data training, untuk mengetahui kelas dari citra kain data testing.
Gambar 4. 16 Hasil Probabilitas
Gambar 4. 17 Hasil IdxLabel 51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Idxlabel merupakan label kelas pada setiap data testing. Jika Idxlabel dan hasil probabilitas sama dengan kelas yang sedang diproses, maka hasil benar. Seperti pada matriks diatas, idxlabel bernilai 1, brarti benar berada pada kelas 1. 4.1.6 Implementasi Akurasi Dibawah ini merupakan implementasi dari proses akurasi: akurasi=(nBenar/jmlData)*100; % mencari nilai akurasi set(handles.txtAcc,'String',num2str(akurasi));
Hasil akurasi klasifikasi citra menggunakan Naive Bayes dengan 5-fold, dan ekstraksi ciri warna dan vektor horizontal adalah sebagai berikut:
Gambar 4. 18 Hasil Akurasi menggunakan 5-fold 4.1.7 Implementasi Klasifikasi Dari Data User Dibawah ini merupakan implementasi klasifikasi menggunakan data masukan dari user: piksel=25; nCitraPerClass=str2double(get(handles.edJmlCitraPerKelas,'St ring')); [namaCitra, asalCitra] = uigetfile({'*.jpg'}, 'Pilih Citra'); [~,nDt]=size(dataTest); dataTest(:,nDt+1)=0; [~,nData]=size(data);
52
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dataTemp=[]; class=1; for i=1:lv_size(:,1) if data(i,nData)==class dataTemp=[dataTemp;data(i,:)]; end if mod(i,nCitraPerClass) == 0 dataCell{class}=dataTemp; class=class+1; dataTemp=[]; end end class=class-1; rerataTrain=zeros(class,class); stdTrain=zeros(class,class); for i=1:class rerataTrain(i,1:nData-1)=mean(dataCell{i}(:,1:nData1)); rerataTrain(i,nData)=i; stdTrain(i,1:nData-1)=std(dataCell{i}(:,1:nData-1)); stdTrain(i,nData)=i; end testing=dataTest(:,1:nDt); stdTraining=stdTrain(:,1:nData-1); rerataTraining=rerataTrain(:,1:nData-1); [idxLabel,hasilProbabilitas]= bayesKu(stdTraining,rerataTraining,testing); set(handles.txtKemiripan,'String',num2str(hasilProbabilitas* 100));
Hasil dari implementasi klasifikasi dengan data citra dari user adalah seperti dibawah ini:
Gambar 4. 19 Hasil Probabilitas Data Dari User
53
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4. 20 Hasil Klasifikasi Dari Data User Dari hasil diatas terlihat bahwa data masukan dari user di cocokkan dengan data citra yang telah diklasifikasi. Dan hasil dapat diketahui pula hasil probabilitas tertingginya dalam bentuk persen.
54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.8 Implementasi Antar Muka Dibawah ini merupakan Implementasi tampilan halaman klasifikasi kain tradisional nusantara dengan menggunakan algoritma Naive Bayes Classifier:
Gambar 4. 21 Implementasi Antar Muka Klasifikasi Kain Tradisional Nusantara Dengan Menggunakan Naive Bayes Classifer
Pada saat proses ekstraksi ciri telah selesai, maka akan muncul peringatan seperti pada gambar dibawah ini:
Gambar 4. 22 Peringatan Ekstraksi Ciri Telah Selesai 55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V PENGUJIAN DAN ANALISA SISTEM
Pada bab ini akan dibahas mengenai hasil dari setiap proses ekstrak ciri, klasifikasi dan akurasi dari 2 data citra kain yang berbeda serta menganalisa keluaran dari masing-masing proses. 5.1 Data Ada dua jenis data citra yang digunakan dalam klasifikasi ini yaitu: a. Data pertama terdapat 10 kelas yang masing-masing kelasnya terdapat 10 jenis citra kain tradisional. Jadi, total jumlah citra yang digunakan adalah 100 citra yang setiap citranya berukuran 200x200 piksel, seperti terlihat pada lampiran I. b. Data kedua terdapat 10 kelas atau daerah yang dalam 1 kelas terdapat 1 jenis kain tradisional nusantara yang di potong-potong setiap bagiannya menjadi 10 citra kain setiap kelasnya, jadi total keseluruhan citra kain adalah 100 citra kain dengan ukuran 200x200 piksel setiap citranya, seperti terlihat pada lampiran II.
56
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.2 Akurasi Hasil Klasifikasi Menggunakan Naive Bayes Dibawah ini merupakan akurasi hasil klasfiikasi citra kain data pertama menggunakan Naive Bayes:
Akurasi Data Pertama Ekstraksi Ciri 2-fold
3-fold
5-fold
Warna
30%
35%
40%
Vektor Horizontal
17%
21%
22%
Vektor Vertikal
19%
20%
26%
Warna dan Vektor Horizontal
27%
41%
43%
Warna dan Vektor Vertikal
31%
40%
44%
Tabel 5. 1 Hasil Akurasi Data Pertama Analisa: Pada data pertama diketahui mempunyai nilai akurasi rendah di setiap ciri yang digunakan. Pada klasifikasi menggunakan ciri vektor horisontal mempunyai nilai akurasi yang rendah yaitu 17% menggunakan 2-fold dibandingkan dengan penggunaan ciri menggunakan warna. Namun, dengan menggunakan ciri gabungan yaitu warna dan vektor vertikal mendapatkan nilai lebih baik yaitu 44% menggunakan 5-fold. Pembagian data menggunakan k-fold juga berpengaruh dalam penentuan akurasi nya. Selain itu juga dikarenakan pada data pertama yang ada pada lampiran I, terlihat bahwa kain yang digunakan mempunyai warna yang
57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tidak identik disetiap daerah atau kelas nya. Motif pada kain data pertama juga mempunyai motif yang hampir mirip dengan kain dari daerah lainnya.
Akurasi Data Kedua Ekstraksi Ciri 2-fold
3-fold
5-fold
Warna
75%
74%
80%
Vektor Horizontal
42%
45%
46%
Vektor Vertikal
45%
47%
57%
Warna dan Vektor Horizontal
79%
83%
91%
Warna dan Vektor Vertikal
75%
83%
93%
Tabel 5. 2 Hasil Akurasi Data Kedua Analisa: Pada hasil akurasi data kedua mempunyai nilai akurasi yang lebih baik dibanding dengan nilai akurasi pada penggunaan data pertama. Hal ini dikarenakan pada data kedua, citra yang digunakan hanya 1 jenis citra kain yang dipotong menjadi 10 bagian setiap kelasnya sehingga disetiap citra dalam satu kelas atau daerah mempunyai warna yang identik. Citra dalam satu kelas juga mempunyai motif yang sama semua atau identik. Hal ini dapat mempermudah sistem dalam mengenali warna dan motif citra disetiap kelas nya. Pada klasifikasi menggunakan ciri warna terlihat mempunyai nilai akurasi yang lebih tinggi dibandingkan dengan menggunakan ciri vektor horizontal atau vertikal. Untuk penggunaan ciri vektor horizontal atau 58
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vertikal, cenderung mempunyai nilai akurasi yang rendah dikarenakan motif untuk setiap citra ada kemungkinan sama dengan citra lain dikelas yang lainnya. Sedangkan untuk ciri gabungan warna dan vektor horizontal atau vertikal mendapatkan nilai akurasi yang lebih tinggi yaitu 93%. Hal ini dikarenakan semakin banyak ciri suatu citra yang digunakan untuk klasifikasi sistem akan semakin mudah mengenali citra tersebut.
59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB VI KESIMPULAN DAN SARAN
6.1 Kesimpulan Kesimpulan dari klasifikasi kain tradisional nusantara menggunakan Naive Bayes classifier dengan 5 ekstraksi ciri yaitu warna, rata-rata vektor horizontal, rata-rata vektor vertikal, gabungan warna dan rata-rata vektor horizontal, dan gabungan warna dan rata-rata vektor vertikal adalah: Hasil akurasi klasifikasi kain tradisional nusantara dengan data pertama memiliki akurasi tertinggi pada percobaan menggunakan ekstrak ciri warna dan vektor vertikal, dengan 5-fold untuk pembagian data training dan testing nya yaitu sebesar 39%. Sedangkan dengan data kedua memiliki akurasi tertinggi pada percobaan menggunakan ekstraksi ciri warna dan vektor vertikal, dengan 5-fold sebesar 93%. 6.2 Saran 1. Dalam klasifikasi kain tradisional nusantara ini hanya menggunakan 10 daerah yang terdapat 10 citra kain yang ada di indonesia. Hal ini perlu di kembangkan lagi menjadi lebih banyak daerah lagi yang digunakan. 2. Untuk ekstraksi ciri hanya menggunakan warna dan rata-rata vektor, hal ini dapat dikembangkan lagi dengan menambahkan ciri lainnya.
60
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3. Klasifikasi kain tradisional nusantara ini menggunakan algoritma Naive Bayes classifier, dapat di kembangkan dengan mencoba algoritma klasifikasi lainnya.
61
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PUSTAKA Ariyantoko, Kusmian. 2014. Implementasi Algoritma Naïve BayesUntuk Klasifikasi Citra Berdasarkan Ekstraksi Ciri Tekstur Dengan Metode Matriks Kookurensi. Bandung: Universitas Komputer Indonesia. Azis, Fauzi & Wulandari, Fitri. 2013. Sistem Temu Kembali Citra Kain Berbasis Tekstur dan Warna. Riau: Universitas Islam Negeri Sultan Syarif Kasim Riau. Canny, J., 1986. A Computational Approach To edge Detection, IEEE Trans. Pattern Analysisi and Machine Intelligence, vol 8, pages 679-714. Daftar Motif Kain, Diakses pada tanggal: 28 November 2014 dari: http://www.budaya-indonesia.org/ Han, J., & Kamber, M.. 2006, Data Mining: Concepts and Techniques 2e, Morgan Kaufmann Publishers, San Francisco. Imanuddin. 2010. Pengidentifikasian Batik Berdasarkan Pola Batik dan Ciri-ciri Batik Menggunakan Ekstraksi Ciri Tekstur kain. Depok: Fakultas teknologi Industri. Depok. Melantika, Apriana Sulistia. 2010. Pengenalan Pola Batik Yogyakarta Menggunakan Metode Hidden Markov Models Dengan Studi Kasus Di Museum Batik Yogyakarta. Yogyakarta: Universitas Sanata Dharma. Yogyakarta. Noviyanto, Ary. 2009. Klasifikasi tingkat kematangan varietas tomat merah dengan metode perbandingan kadar warna. Yogyakarta: Universitas Gajah Mada Yogyakarta. 62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Rachli, Muhamad.2007. Email Filtering menggunakan Naïve Bayesian. Bandung: Tugas Akhir Jurusan Teknik Elektro Institut Teknologi Bandung. Tiarani, Paulina Indah. 2011. Klasifikasi Pola Batik Yogyakarta Dengan Algoritma ID3. Yogyakarta: Universitas Sanata Dharma Yogyakarta. Wijaya, Ch. Marvin & Prijono, Agus. 2007. Pengolahan Citra Digital Menggunakan Matlab. Informatika: Bandung.
63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN I
Data Kain Tradisional Pertama
64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN II
Data Kain Tradisional Kedua
67
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN III Data testing dari data pertama:
70
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN IV Data testing dari data kedua:
74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN V Source Code: BacaData.m function [grey,hsl,meanR,meanG,meanB,meanRGB,h1,h2,h3,h4,h5,h6,h7,h8 ] = BacaData( gambar,pixel,option1,option2 ) %BACADATA Summary of this function goes here % Detailed explanation goes here % KETERANGAN: % * optional1 = 1 --> Warna & vektor % * optional1 = 2 --> Warna % * optional1 = 3 --> Vektor % * optional2 = 1 --> Vektor horizontal % * optional2 = 2 --> Vektor vertikal % pixel=pixel; %Membaca Citra citra=imread(gambar); [mCitra,~]=size(citra); pembagi=pixel*mCitra; % imshow (citra); %Memisahkan RGB dan mencari rata2 RGB serta Kadar RGB meanR=0; meanG=0; meanB=0; meanRGB=0; if option1 == 1 || option1 == 2 dR=citra(:,:,1); dG=citra(:,:,2); dB=citra(:,:,3); meanR=mean(mean(dR)); meanG=mean(mean(dG)); meanB=mean(mean(dB)); meanRGB=meanR+meanG+meanB/3; end %Mengubah Citra RGB Menjadi Grayscale grey= rgb2gray(citra); % imshow (grey); %Melakukan deteksi tepi hsl= edge(grey,'Canny'); [m,n]=size(hsl); % imshow(hsl); % assignin('base','hsl',hsl); %Membagi dalam vektor obyek=1;
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
if option1 == 1 || option1 == 3 if option2 == 1 for i=1:pixel*1 for k=1:m if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=pixel*1+1:pixel*2 for k=1:m if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=pixel*2+1:pixel*3 for k=1:m if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=pixel*3+1:pixel*4 for k=1:m if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=pixel*4+11:pixel*5 for k=1:m if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=pixel*5+1:pixel*6 for k=1:m if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=pixel*6+1:pixel*7 for k=1:m if (hsl(i,k)==obyek) sum7=sum7+1; end end end for i=pixel*7+1:pixel*8 for k=1:m
79
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (hsl(i,k)==obyek) sum8=sum8+1; end end end
elseif option2 == 2 for i=1:n for k=1:pixel*1 if (hsl(i,k)==obyek) sum1=sum1+1; end end end for i=1:n for k=pixel*1+1:pixel*2 if (hsl(i,k)==obyek) sum2=sum2+1; end end end for i=1:n for k=pixel*2+1:pixel*3 if (hsl(i,k)==obyek) sum3=sum3+1; end end end for i=1:n for k=pixel*3+1:pixel*4 if (hsl(i,k)==obyek) sum4=sum4+1; end end end for i=1:n for k=pixel*4+11:pixel*5 if (hsl(i,k)==obyek) sum5=sum5+1; end end end for i=1:n for k=pixel*5+1:pixel*6 if (hsl(i,k)==obyek) sum6=sum6+1; end end end for i=1:n for k=pixel*6+1:pixel*7 if (hsl(i,k)==obyek) sum7=sum7+1; end end
80
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
end for i=1:n for k=pixel*7+1:pixel*8 if (hsl(i,k)==obyek) sum8=sum8+1; end end end end end h1 h2 h3 h4 h5 h6 h7 h8
=sum1/pembagi; =sum2/pembagi; =sum3/pembagi; =sum4/pembagi; =sum5/pembagi; =sum6/pembagi; =sum7/pembagi; =sum8/pembagi;
end
Bayesku.m function [ idxLabel,hasilProbabilitas ] = bayesKu( stdTraining,rerataTraining,testing ) %UNTITLED Summary of this function goes here % Detailed explanation goes here [m,n]=size(stdTraining);% m = baris, n = kolom bayesian=zeros(size(stdTraining(1,1:end))); % menyiapkan matrix 0 untk menampung nilai bayes for i=1:m % looping untuk menghitung bayes for j=1:n % looping untuk n sama dengan jumlah atribut bays1=1/(sqrt(2*pi)*stdTraining(i,j)); bays2=exp(-(((testing(1,j) rerataTraining(i,j))^2)/(2*((stdTraining(i,j))^2)))); bayesian(i,j)=bays1*bays2; %hasil dari perhitungan bayes end % bayesian(i,1:end)=zscore(bayesian(i,1:end)); end % assignin('base','bayesian',bayesian); % bayesian=zscore(bayesian); % assignin('base','bayesianZscore',bayesian); % membuat fungsi baru, fungsi di dalam fungsi untuk menghitung likelihood [idxLabel,hasilProbabilitas]=cariProbabilitas(bayesian);
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
function [idxLabel,hasilProbabilitas]=cariProbabilitas(bayesian) [mBayesian,nBayesian]=size(bayesian); % [baris, kolom dari hasil bayesian] likehood=zeros(mBayesian,1); %menyiapkan matrix 0 likehoodTempt=1; for k=1:mBayesian % looping untuk likelihood for l=1:nBayesian % looping untuk nbayesian sama dengan atribut if (bayesian(k,l) ~= 0) && (~isnan(bayesian(k,l))) % membatasi untuk supaya nilai 0 dan nan tdak masuk dlm perhtungan liklihood likehoodTempt=likehoodTempt*bayesian(k,l); end end likehood(k)=likehoodTempt; likehoodTempt=1; end
[mLikehood,~]=size(likehood); probabilitasTemp=zeros(size(likehood)); probabilitas=zeros(size(likehood));
%
for k=1:mLikehood probabilitas(k)=(likehood(k)/sum(likehood)); % untuk mencari prior probabilitas % probabilitasTemp(k)=(likehood(k)/(likehood(k)+likehood(k))); end % [hasilProbabilitas,idxLabel]=max(probabilitasTemp); % [hasilProbabilitas,idxLabel]=max(probabilitas*probabilitasTemp(1)) ; [hasilProbabilitas,idxLabel]=max(probabilitas); % untuk menemtukan kain itu berada dikelas mana dicari yang paling tinggi nilainya
assignin('base','likehood',likehood); assignin('base','probabilitas',probabilitas); assignin('base','hasilProbabilitas',hasilProbabilitas); assignin('base','idxLabel',idxLabel);
% % % % %
idxLabel=4; hasilProbabilitas=likehood(4); end
end
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KlasifikasiNaiveBayes.m function varargout = KlasifikasiNaiveBayess(varargin) % KLASIFIKASINAIVEBAYESS MATLAB code for KlasifikasiNaiveBayess.fig % KLASIFIKASINAIVEBAYESS, by itself, creates a new KLASIFIKASINAIVEBAYESS or raises the existing % singleton*. % % H = KLASIFIKASINAIVEBAYESS returns the handle to a new KLASIFIKASINAIVEBAYESS or the handle to % the existing singleton*. % % KLASIFIKASINAIVEBAYESS('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in KLASIFIKASINAIVEBAYESS.M with the given input arguments. % % KLASIFIKASINAIVEBAYESS('Property','Value',...) creates a new KLASIFIKASINAIVEBAYESS or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before KlasifikasiNaiveBayess_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to KlasifikasiNaiveBayess_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 KlasifikasiNaiveBayess % Last Modified by GUIDE v2.5 02-Sep-2015 05:23:32 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @KlasifikasiNaiveBayess_OpeningFcn, ... 'gui_OutputFcn', @KlasifikasiNaiveBayess_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 KlasifikasiNaiveBayess is made visible. function KlasifikasiNaiveBayess_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 KlasifikasiNaiveBayess (see VARARGIN) % Choose default command line output for KlasifikasiNaiveBayess handles.output = hObject; clc; warning off; axes(handles.axLogoUSD) imshow('Icons\logo.png') axes(handles.axCitraAsli) imshow('Icons\whos.jpg') axes(handles.axGrey) imshow('Icons\whos.jpg') axes(handles.axCanny) imshow('Icons\whos.jpg') axes(handles.axCitraTest) imshow('Icons\whos.jpg') axes(handles.axCitraHasil) imshow('Icons\whos.jpg') handles.optional=1; handles.kfold=2; % Update handles structure guidata(hObject, handles); % UIWAIT makes KlasifikasiNaiveBayess wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = KlasifikasiNaiveBayess_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);
84
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% hObject % eventdata MATLAB % handles
handle to figure reserved - to be defined in a future version of 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 btnAmbildirektori. function btnAmbildirektori_Callback(hObject, eventdata, handles) % hObject handle to btnAmbildirektori (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) dirName = uigetdir('citra\','cari folder data gambar'); if dirName ~= 0 set(handles.edAlmtCitraTraining,'String',dirName); files = dir(fullfile(dirName,'*.jpg')); A = {files.name}; N = cellfun( @str2double, regexp(A, '\d+', 'match')); [~,I] = sort(N); set(handles.lbNmFileCitra,'String',A(I)); set(handles.txtJmlData,'String',num2str(size(A,2))); pengaturanComponent(handles,1); else pengaturanComponent(handles,0); end
% --- Executes on button press in btnEkstrakciri. function btnEkstrakciri_Callback(hObject, eventdata, handles) clc; set(handles.txtAcc,'String','0'); speed=0.01; % Penentuan arah vektor pixel=25; nCitraPerClass=str2double(get(handles.edJmlCitraPerKelas,'String') ); kelas=str2double(get(handles.edJmlDaerah,'String')); jmlData=nCitraPerClass*kelas; % val = get(handles.ppmEdge,'Value'); % tepi=get(handles.ppmEdge,'String'); % handles.tepi=tepi{val}; option1=handles.optional; if option1 == 1 %warna dan vektor vektorH=get(handles.rbH,'Value'); % vektorV=get(handles.rbV,'Value') if vektorH==1 %vektor horisontal option2=1; %vektor horisontal
85
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
else option2=2; %vektor vertikal end elseif option1 == 2 %warna option2=3; % bukan vertikal n horisontal elseif option1 == 3 %vektor vektorH=get(handles.rbH,'Value'); % vektorV=get(handles.rbV,'Value') if vektorH==1 %vektor horisontal option2=1; %vektor horisontal else option2=2; %vektor vertikal end end % Mengambil MeanRGB dan VektorH untuk selanjutnya ditampilkan di dalam % variabel data. lv = get(handles.lbNmFileCitra, 'String'); dirName = get(handles.edAlmtCitraTraining,'String'); lv_size = size(lv); %jumlah data ato jumlah file gambar data=zeros(lv_size(:,1), kelas); %membuat matriks kosong untuk menampung data nilai 0 progresTemp=100/lv_size(:,1); progres=0; class=1; % for i=1:lv_size(:,1) for i=1:jmlData %looping baca file gambar, sejumlah data yang digunakan dirFile = strcat(dirName,'\',lv(i)); % dirFile = strcat(dirName,'\',num2str(i),'.jpg'); set(handles.lbNmFileCitra,'Value',i) image = char(dirFile); % i_str = int2str(i); % disdat=strcat('processing data ke-',i_str); % disdat=char(disdat); % disp(disdat); axes(handles.axCitraAsli) imshow(image) % [cr1,cr2,cr3,cr4,cr5,cr6,cr7,cr8,cr9,cr10,cr11,cr12,cr13] = BacaData(image); [grey,hsl,meanR,meanG,meanB,meanRGB,h1,h2,h3,h4,h5,h6,h7,h8] = BacaData(image,pixel,option1,option2); axes(handles.axGrey) imshow(grey) axes(handles.axCanny) imshow(hsl)
if option1 == 1 dataTemp1=[meanR,meanG,meanB,meanRGB,h1,h2,h3,h4,h5,h6,h7,h8]; elseif option1 == 2
86
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dataTemp1=[meanR,meanG,meanB,meanRGB]; elseif option1 == 3 dataTemp1=[h1,h2,h3,h4,h5,h6,h7,h8]; end
[~,nDc]=size(dataTemp1);
%
dataTemp1=zscore(dataTemp1); for j=1:nDc dataTemp2(i,j)=dataTemp1(j); %menampung data dataTemp2(i,nDc+1)=class; %pemberian label kelas untuk setiap data yang diproses end if mod(i,nCitraPerClass) == 0 class=class+1; end % Progres progres=progres+progresTemp; set(handles.txtProses,'String',[num2str(int8(progres)),' ']); pause(speed); end data=dataTemp2; %hasil ekstrak ciri % % % %
dataTemp=zscore(data(:,1:nDc)); [ dataTemp, ~ ] = pca( data(:,1:nDc), 0); dataTemp=zscore(dataTemp(:,1:nDc)); data=[dataTemp,data(:,nDc+1)];
save('data.mat','data','lv_size');
uiwait(msgbox('Proses ekstrak ciri telah selesai','Peringatan','modal')); % guidata(hObject, handles); % --- Executes on button press in btnKlasifikasi. function btnKlasifikasi_Callback(hObject, eventdata, handles) %#ok
% hObject handle to btnKlasifikasi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clc;
87
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
load 'data.mat','data'; load 'data.mat','lv_size'; % Data dimasukkan di dalam cell % Cell menunjukkan class
nCitraPerClass=str2double(get(handles.edJmlCitraPerKelas,'String') ); kelas=str2double(get(handles.edJmlDaerah,'String')); jmlData=nCitraPerClass*kelas; kfold=handles.kfold; nTest=floor(nCitraPerClass/kfold) [~,nData]=size(data); dataTemp=[];%matriks kosong class=1; % for i=1:lv_size(:,1) for i=1:jmlData %looping untuk memisahkan data per kelas dalam masing2 cell if data(i,nData)==class dataTemp=[dataTemp;data(i,:)]; end if mod(i,nCitraPerClass) == 0 dataCell{class}=dataTemp; class=class+1; dataTemp=[]; end end assignin('base','data',dataCell); class=class-1; rerataTrain=zeros(class,class); %membuat matrix 0 untuk rata2 training stdTrain=zeros(class,class); %membuat matrix 0 untuk std training idx1=1; %batasan untuk ambil data testing idx2=nTest; %batasan untuk ambil data testing sesuai dgn k-fold nBenar=0; % menampung jumlah benar utk akurasi nSalah=0; %menampung jumlah salah utk akurasi for z=1:nCitraPerClass/nTest % looping trainng testing % Mencari std dan mean for i=1:class % dataCell{i}=zscore(dataCell{i}(:,1:12)); dataTest{i}=dataCell{i}(idx1:idx2,:); % mengambil data testing trainingTemp=dataCell(i); %mengambil data dari cell utk training semuanya trainingTemp{:}(idx1:idx2,:)=[]; %data testing nya d hapus dr trainingtemp ttaining=trainingTemp{:}; %data dr trainingtemp dimasukan kdalam training rerataTrain(i,1:nData-1)=mean(ttaining(:,1:nData-1)); % kalau ada -1 brarti kelasnya tdak dihitung
88
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
rerataTrain(i,nData)=i; % selesai menghitung rata2 kelasnya dimasukan lagi kdalam rerata train di indeks trakhir stdTrain(i,1:nData-1)=std(ttaining(:,1:nData-1)); stdTrain(i,nData)=i; end
% %
assignin('base','rerataTrain',rerataTrain); assignin('base','stdTrain',stdTrain); assignin('base','dataTest',dataTest); assignin('base','dataNorm',dataCell);
% Bayes % Akurasi %Tambahan untuk mengeluarkan hasil klasifikasi idxSemuaLabel=[]; %<<< hasilSemuaProb=[]; %<<< benarSalah=[]; %<<< for i=1:class %looping berdasarkan kelas for j=1:nTest %looping sejumlah data test testing=dataTest{i}(j,1:nData-1); % mengambil nilai data test dari masing2 data testing % rerataTesting=mean(dataTest{i}(:,1:12)); stdTraining=stdTrain(:,1:nData-1); rerataTraining=rerataTrain(:,1:nData-1); [ idxLabel,hasilProbabilitas ] = bayesKu(stdTraining,rerataTraining,testing); % masuk proses bayes idxSemuaLabel(i,j)=idxLabel; %<<< hasilSemuaProb(i,j)=hasilProbabilitas; %<<< if idxLabel == i %jika idxlabel hsil prob sama dengan kelas yg sdang di proses , mka nilai benar akan dijumlahkan nBenar=nBenar+1;% jumlah nilai benar benarSalah{i,j}='BENAR'; %<<< else benarSalah{i,j}='salah'; %<<< end end end % proses menentukan index dta testing idx1=idx1+nTest; idx2=idx2+nTest; end % assignin('base','dataTest',dataTest); assignin('base','idxSemuaLabel',idxSemuaLabel); assignin('base','hasilSemuaProb',hasilSemuaProb); assignin('base','benarSalah',benarSalah); % assignin('base','hasilProbabilitas',hasilProbabilitas); % assignin('base','nBenar',nBenar); akurasi=(nBenar/jmlData)*100; % mencari nilai akurasi set(handles.txtAcc,'String',num2str(akurasi));
89
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% --- Executes on button press in btnTest. function btnTest_Callback(hObject, eventdata, handles) % hObject handle to btnTest (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clc; pixel=25; nCitraPerClass=str2double(get(handles.edJmlCitraPerKelas,'String') ); [namaCitra, asalCitra] = uigetfile({'*.jpg'}, 'Pilih Citra'); if namaCitra ~=0 load 'data.mat','data'; load 'data.mat','lv_size'; % val = get(handles.ppmEdge,'Value'); % tepi=get(handles.ppmEdge,'String'); % handles.tepi=tepi{val}; option1=handles.optional; if option1 == 1 vektorH=get(handles.rbH,'Value'); % vektorV=get(handles.rbV,'Value') if vektorH==1 option2=1; else option2=0; end elseif option1 == 2 option2=3; elseif option1 == 3 vektorH=get(handles.rbH,'Value'); % vektorV=get(handles.rbV,'Value') if vektorH==1 option2=1; else option2=2; end end asalNamaFile=fullfile(asalCitra,namaCitra); set(handles.edDirTest,'String',asalNamaFile); axes(handles.axCitraTest) imshow(asalNamaFile) set(handles.txtCitraTest,'String',namaCitra);
image = char(asalNamaFile); [~,~,meanR,meanG,meanB,meanRGB,h1,h2,h3,h4,h5,h6,h7,h8] = BacaData(image,pixel,option1,option2);
if option1 == 1 dataTest=[meanR,meanG,meanB,meanRGB,h1,h2,h3,h4,h5,h6,h7,h8]; elseif option1 == 2
90
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dataTest=[meanR,meanG,meanB,meanRGB]; elseif option1 == 3 dataTest=[h1,h2,h3,h4,h5,h6,h7,h8]; end [~,nDt]=size(dataTest); dataTest(:,nDt+1)=0; [~,nData]=size(data); dataTemp=[]; class=1; for i=1:lv_size(:,1) if data(i,nData)==class dataTemp=[dataTemp;data(i,:)]; end if mod(i,nCitraPerClass) == 0 dataCell{class}=dataTemp; class=class+1; dataTemp=[]; end end
class=class-1; rerataTrain=zeros(class,class); stdTrain=zeros(class,class); for i=1:class % % dataCell{i}=zscore(dataCell{i}(:,1:12)); % dataTest{i}=dataCell{i}(idx1:idx2,:);
% trainingTemp=dataCell(i); % trainingTemp{:}(idx1:idx2,:)=[]; % ttaining=trainingTemp{:}; rerataTrain(i,1:nData-1)=mean(dataCell{i}(:,1:nData-1)); rerataTrain(i,nData)=i; stdTrain(i,1:nData-1)=std(dataCell{i}(:,1:nData-1)); stdTrain(i,nData)=i; end %
for i=1:class % for j=1:nTest testing=dataTest(:,1:nDt); % rerataTesting=mean(dataTest{i}(:,1:12)); stdTraining=stdTrain(:,1:nData-1); rerataTraining=rerataTrain(:,1:nData-1); [ idxLabel,hasilProbabilitas ] = bayesKu(stdTraining,rerataTraining,testing) % if idxLabel == i % nBenar=nBenar+1; % end % end
91
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
%
end
set(handles.txtKemiripan,'String',num2str(hasilProbabilitas*100));
% % % % % % % %
asalKain=''; folder=get(handles.edAlmtCitraTraining,'String'); if idxLabel == 1 axes(handles.axCitraHasil) imshow(strcat(folder,'\1.jpg')) asalKain='Bali'; elseif idxLabel == 2 axes(handles.axCitraHasil) imshow(strcat(folder,'\11.jpg')) asalKain='Bengkulu'; elseif idxLabel == 3 axes(handles.axCitraHasil) imshow(strcat(folder,'\21.jpg')) asalKain='KalSel'; elseif idxLabel == 4 axes(handles.axCitraHasil) imshow(strcat(folder,'\31.jpg')) asalKain='Lampung'; elseif idxLabel == 5 axes(handles.axCitraHasil) imshow(strcat(folder,'\41.jpg')) asalKain='Lombok'; elseif idxLabel == 6 axes(handles.axCitraHasil) imshow(strcat(folder,'\51.jpg')) asalKain='NTT'; elseif idxLabel == 7 axes(handles.axCitraHasil) imshow(strcat(folder,'\61.jpg')) asalKain='Papua'; elseif idxLabel == 8 axes(handles.axCitraHasil) imshow(strcat(folder,'\71.jpg')) asalKain='Pekalongan'; elseif idxLabel == 9 axes(handles.axCitraHasil) imshow(strcat(folder,'\81.jpg')) asalKain='SuMut'; elseif idxLabel == 10 axes(handles.axCitraHasil) imshow(strcat(folder,'\91.jpg')) asalKain='Yogyakarta'; elseif idxLabel == 11 axes(handles.axCitraHasil) imshow(strcat(folder,'\201.jpg')) asalKain='Riau'; elseif idxLabel == 12 axes(handles.axCitraHasil) imshow(strcat(folder,'\221.jpg')) asalKain='SumSel';
92
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% % % %
elseif idxLabel == 13 axes(handles.axCitraHasil) imshow(strcat(folder,'\241.jpg')) asalKain='Yogyakarta'; end set(handles.txtCitraHasil,'String',asalKain);
end
function pengaturanComponent(handles,aktif) if aktif == 1 set(handles.ppupOptional,'Value',1); set(handles.ppupOptional,'Enable','on'); set(handles.rbH,'Enable','on'); set(handles.rbV,'Enable','on'); % set(handles.ppmEdge,'Enable','on'); set(handles.edJmlDaerah,'Enable','on'); set(handles.edJmlCitraPerKelas,'Enable','on'); set(handles.btnEkstrakciri,'Enable','on'); set(handles.btnTest,'Enable','on'); set(handles.lbNmFileCitra,'Value',1) set(handles.txtProses,'String','0 '); else set(handles.ppupOptional,'Enable','inactive'); set(handles.rbH,'Enable','inactive'); set(handles.rbV,'Enable','inactive'); % set(handles.ppmEdge,'Enable','inactive'); set(handles.edJmlDaerah,'Enable','inactive'); set(handles.edJmlCitraPerKelas,'Enable','inactive'); set(handles.btnEkstrakciri,'Enable','inactive'); set(handles.btnTest,'Enable','inactive'); set(handles.lbNmFileCitra,'String',{'Nama Citra'}); set(handles.lbNmFileCitra,'Value',1) set(handles.txtJmlData,'String','0 '); set(handles.txtProses,'String','0 '); end
% --- Executes on selection change in ppupOptional. function ppupOptional_Callback(hObject, eventdata, handles) % hObject handle to ppupOptional (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns ppupOptional contents as cell array % contents{get(hObject,'Value')} returns selected item from ppupOptional handles.optional=get(hObject,'Value'); optional=handles.optional; if optional == 1
93
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
set(handles.rbH,'Enable','on'); set(handles.rbV,'Enable','on'); % set(handles.ppmEdge,'Enable','on'); elseif optional == 2 set(handles.rbH,'Enable','off'); set(handles.rbV,'Enable','off'); % set(handles.ppmEdge,'Enable','off'); elseif optional == 3 set(handles.rbH,'Enable','on'); set(handles.rbV,'Enable','on'); % set(handles.ppmEdge,'Enable','on'); end guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function ppupOptional_CreateFcn(hObject, eventdata, handles) % hObject handle to ppupOptional (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 ppmKFold. function ppmKFold_Callback(hObject, eventdata, handles) % hObject handle to ppmKFold (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns ppmKFold contents as cell array % contents{get(hObject,'Value')} returns selected item from ppmKFold kfold=get(hObject,'Value'); if kfold == 1 handles.kfold = 2; elseif kfold == 2 handles.kfold = 3; elseif kfold == 3 handles.kfold = 5; end guidata(hObject, handles);
94
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% --- Executes during object creation, after setting all properties. function ppmKFold_CreateFcn(hObject, eventdata, handles) % hObject handle to ppmKFold (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 during object creation, after setting all properties. function images_CreateFcn(hObject, eventdata, handles) % hObject handle to images (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 images
function edDirTest_Callback(hObject, eventdata, handles) % hObject handle to edDirTest (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 edDirTest as text % str2double(get(hObject,'String')) returns contents of edDirTest as a double
% --- Executes during object creation, after setting all properties. function edDirTest_CreateFcn(hObject, eventdata, handles) % hObject handle to edDirTest (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.
95
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edAlmtCitraTraining_Callback(hObject, eventdata, handles) % hObject handle to edAlmtCitraTraining (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 edAlmtCitraTraining as text % str2double(get(hObject,'String')) returns contents of edAlmtCitraTraining as a double
% --- Executes during object creation, after setting all properties. function edAlmtCitraTraining_CreateFcn(hObject, eventdata, handles) % hObject handle to edAlmtCitraTraining (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 selection change in lbNmFileCitra. function lbNmFileCitra_Callback(hObject, eventdata, handles) % hObject handle to lbNmFileCitra (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns lbNmFileCitra contents as cell array % contents{get(hObject,'Value')} returns selected item from lbNmFileCitra
% --- Executes during object creation, after setting all properties. function lbNmFileCitra_CreateFcn(hObject, eventdata, handles) % hObject handle to lbNmFileCitra (see GCBO)
96
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% 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
function edJmlDaerah_Callback(hObject, eventdata, handles) % hObject handle to edJmlDaerah (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 edJmlDaerah as text % str2double(get(hObject,'String')) returns contents of edJmlDaerah as a double
% --- Executes during object creation, after setting all properties. function edJmlDaerah_CreateFcn(hObject, eventdata, handles) % hObject handle to edJmlDaerah (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 edJmlCitraPerKelas_Callback(hObject, eventdata, handles) % hObject handle to edJmlCitraPerKelas (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 edJmlCitraPerKelas as text
97
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
% str2double(get(hObject,'String')) returns contents of edJmlCitraPerKelas as a double
% --- Executes during object creation, after setting all properties. function edJmlCitraPerKelas_CreateFcn(hObject, eventdata, handles) % hObject handle to edJmlCitraPerKelas (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 selection change in ppmEdge. function ppmEdge_Callback(hObject, eventdata, handles) % hObject handle to ppmEdge (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns ppmEdge contents as cell array % contents{get(hObject,'Value')} returns selected item from ppmEdge
% --- Executes during object creation, after setting all properties. function ppmEdge_CreateFcn(hObject, eventdata, handles) % hObject handle to ppmEdge (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
98