Anda di halaman 1dari 146

PENGENALAN MOTIF BATIK YOGYAKARTA

DENGAN METODE LINEAR DISCRIMINANT ANALYSIS (LDA)


(STUDI KASUS DI MUSEUM BATIK YOGYAKARTA)

SKRIPSI

Diajukan untuk Memenuhi Salah Satu Syarat


Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika

Oleh:
Agatha Widyastuti
NIM: 065314010

PROGRAM STUDI TEKNIK INFORMATIKA


JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERISTAS SANATA DHARMA
YOGYAKARTA
2010
i
MOTIF BATIK OF YOGYAKARTA RECOGNITION
USING LINEAR DISCRIMINANT ANALYSIS (LDA) METHOD
(CASE STUDY IN THE MUSEUM BATIK YOGYAKARTA)

A Thesis

Presented as Partial Fullfillment of the Requirements


To Obtain the Sarjana Teknik Degree
In Department of Informatics Engineering

By:
Agatha Widyastuti
Student ID: 065314010

INFORMATICS ENGINEERING STUDY PROGRAM


INFORMATICS ENGINEERING DEPARTMENT
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2010
ii
iii
iv
HALAMAN PERSEMBAHAN

“APA PUN JUGA YANG KAMU PERBUAT,


PERBUATLAH DENGAN SEGENAP HATIMU
SEPERTI UNTUK TUHAN
DAN BUKAN UNTUK MANUSIA”
(KOLOSE 3: 23)

“Apabila Ia membuka, tidak ada yang dapat menutup,


apabila Ia menutup, tidak ada yang dapat membuka.
Aku tahu segala pekerjaanmu: lihatlah, Aku telah membuka pintu bagimu, yang tidak
dapat ditutup oleh seorang pun.”
(Wahyu 3 : 7-8)

TIADA YANG MUSTAHIL DALAM NAMA-NYA,


DIA SELALU PUNYA CARA UNTUK MENOLONG…

Skripsi ini saya persembahkan untuk:

 Yesus Kristus Penolongku Sahabatku,

 Kedua orang tuaku tercinta,

 Sahabat-sahabatku,

 Kekasihku tercinta…

Terima kasih untuk karunia, kesempatan,


senyuman, perhatian, motivasi dan segalanya …
v
vi
vii
Abstrak

Batik memiliki keanekaragaman motif yang khas. Sebagian besar masyarakat


mengetahui sedikit tentang batik, salah satunya adalah mengenal jenis motif batik.
Dalam tugas akhir ini, penulis akan membahas dan mengatasi masalah tersebut
dengan menggunakan metode Linear Discriminant Analysis karena memiliki daya
pembeda yang lebih besar.
Linear Discriminant Analysis merupakan teknik statistik multivariate yang
terkait dengan pemisahan atau klasifikasi sekelompok obyek ke dalam kelompok
yang telah terlebih dahulu didefinisikan. Dalam tujuan pengenalan obyek, metode ini
mencoba menemukan suatu fungsi diskriminan yang nilainya mampu memisahkan
obyek yang karakteristiknya telah diketahui.
Terdapat 20 jenis motif batik Yogyakarta yang ingin dikenali dan masing-
masing motif ada 25 sampel motif batik. Keseluruhan motif batik Yogyakarta yang
dipakai sebagai data uji diambil menggunakan camera digital pocket Fujifilm tipe
FinePixJ20 10MP dengan ukuran data motif batik hasil crop 200x200 piksel.
Pengenalan motif batik Yogyakarta menggunakan fase pelatihan dan fase
pengujian. Proses pelatihan dilakukan untuk membuat satu model dari setiap motif
dari 25 sampel motif batik dengan membentuk fungsi diskriminan. Fungsi
diskriminan diperoleh dengan menghitung mean dari setiap kelompok dan mean dari
keseluruhan kelompok, menghitung matriks covariance, membentuk pooled within
group covariance matrix, dan menghitung probabilitas vektor.
Proses pengujian dilakukan dengan menguji fungsi diskriminan yang
terbentuk dengan 100 data motif batik untuk mendapatkan angka kemiripan terbesar.
Kemudian, data hasil pengujian dievaluasi menggunakan metode 5-fold cross
validation untuk mendapatkan nilai prosentase akurasi dari 500 data motif.
Pengujian 6 bentuk pengolahan feature yaitu rata-rata keseluruhan edge, rata-
rata edge horizontal, rata-rata edge vertikal, gabungan rata-rata keseluruhan edge
dengan rata-rata edge horizontal dan vertikal, gabungan rata-rata edge horizontal dan
vertikal, dan gabungan warna dengan rata-rata keseluruhan edge dan rata-rata edge
vertikal dan horizontal, ditujukan untuk mendapatkan nilai akurasi yang baik. Dari
pengujian menggunakan feature tersebut, didapati feature terbaik dalam pengenalan
motif batik Yogyakarta dengan metode LDA yaitu feature rata-rata edge horizontal
dengan akurasi sebesar 36.4%. Dari data tersebut dapat disimpulkan bahwa
pengenalan motif batik Yogyakarta dengan metode Linear Discriminant Analysis
menggunakan feature-feature di atas relatif kurang baik.

viii
Abstract

Batik has a unique diversity of motifs. Most people know little about batik,
one of which is known types of batik motifs. In this thesis, the author will discuss and
resolve the issue using Linear Discriminant Analysis because of its distinguishing
features is greater.
Linear Discriminant Analysis is a multivariate statistical technique associated
with the separation or classification of a group of objects into groups that previously
defined. The purpose of object recognition, this method tries to find a discriminant
function capable of separating an object whose value is already known
characteristics.
There are 20 types of Batik Yogyakarta motifs that wants to be recognized
and each motif there are 25 samples of batik motifs. Entire Yogyakarta batik used as
test data was taken using a digital camera Fujifilm type FinePixJ20 10MP pockets
with batik data size 200x200 pixel crop results.
Introduction of Batik Yogyakarta motifs using the training phase and testing
phase. Training process is used to make one model of each motif from the 25 samples
of batik motifs by forming the discriminant function. Discriminant function is
obtained by calculating the mean of each group and the mean of the whole group,
calculate the covariance matrix, forming the pooled within group covariance matrix,
and calculate the probability vector.
Testing process is conducted by examining the discriminant function is
formed by 100 data batik to get the largest number of similarities. Then, data test
results are evaluated using five-fold cross validation to obtain the value of the
percentage of occurrence of 500 data patterns.
Testing six forms processing features are average overall edge, the average
horizontal edge, vertical edge on average, the combined average overall edge to the
average horizontal and vertical edges, the combined average of horizontal and
vertical edges, and the combined color with the overall average and the average edge
vertical and horizontal edge, intended to get the value of good accuracy. Of testing
using these features, the best features found in the introduction to batik of Yogyakarta
with LDA method is the average feature a horizontal edge with an accuracy of 36.4%.
From these data it can be concluded that the introduction of Batik Yogyakarta with
Linear Discriminant Analysis method using features above relatively less well.

ix
Kata Pengantar

Puji syukur kepada Yesus Kristus Sahabat dan Penolongku yang telah

memberikan karunia dan kesempatan, sehingga penulis dapat menyelesaikan skripsi

dengan judul “Pengenalan Motif Batik Yogyakarta dengan Metode Linear

Discriminant Analysis (Studi Kasus di Museum Batik Yogyakarta)”.

Terima kasih yang sebesar-besarnya kepada semua pihak yang turut member

dukungan, semangat dan bantuan hingga selesainya skripsi ini:

1. Bapak Yosef Agung Cahyanta, S.T., M.T., selaku Dekan Fakultas Sains dan

Teknologi Universitas Sanata Dharma.

2. Ibu A. Rita Widiarti, S.Si, M.Kom selaku dosen pembimbing atas kesabaran,

bimbingan, waktu dan saran yang diberikan.

3. Bapak Dr. Ir. Linggo Sumarno, M.T. dan Bapak Ir. Ig. Aris Dwiatmoko,

M.Sc. sebagai dosen penguji atas saran dan kritikan yang diberikan.

4. Romo Drs. C. Kuntoro Adi SJ, M.A, M.S., Ph.D yang telah menjadi

pembimbing dan teman diskusi yang sangat inspiratif.

5. Laboran Komputer dan Staff Sekretariat Fakultas Sains dan Teknologi atas

bantuan kepada penulis ketika melaksanakan ujian akhir.

6. Kedua orang tuaku yang tercinta, bapak Richardus Taryono dan ibu

Bernadetta Retno Palupi untuk doa, dukungan, perhatian, dan pengertian yang

sepenuhnya.

x
7. Kakak dan adikku tersayang, Bernardus Hery Krisno Nugroho dan Ignatia

Yulistyowati untuk dukungan dan canda tawa yang menjadi penyemangat.

8. Kekasihku tercinta Hieronymus Dimas Febrianto untuk senyuman, doa,

semangat, saran dan kritik, perhatian, dan pengertian yang diberikan.

9. Galang Anugerah, S.T yang telah membimbing dan membantu tentang

pemahaman metode Linear Discriminant Analysis.

10. Aprina Sulistia Melantika, Paulina Indah Tiarani, Agnes Retnaningsih, Bagas

Pradipta, A. Cahyo Ridho, Andreas Hermawan, selaku teman yang berjuang

bersama dalam skripsi.

11. Seluruh civitas akademika Teknik Informatika angakatan 2006 dan pihak-

pihak lain yang telah berjuang bersama dari awal masa perkuliahan, proses

belajar, masa penulisan tugas akhir hingga saat wisuda tiba. Terima kasih atas

sejuta inspirasi berharga.

Penulis menyadari bahwa masih banyak kekurangan yang terdapat pada

penulisan tugas akhir ini. Saran dan kritik saya harapkan untuk perbaikan pada masa

yang akan datang. Semoga bermanfaat.

Yogyakarta, 20 September 2010

Penulis

xi
DAFTAR ISI

HALAMAN JUDUL BAHASA INDONESIA ............................................................ i


HALAMAN JUDUL BAHASA INGGRIS ....................................................................... ii
HALAMAN PERSETUJUAN ........................................................................................... iii
HALAMAN PENGESAHAN............................................................................................. iv
HALAMAN PERSEMBAHAN ......................................................................................... v
HALAMAN PERNYATAAN KEASLIAN KARYA ....................................................... vi
HALAMAN PERSETUJUAN PUBLIKASI .................................................................... vii
ABSTRAK ........................................................................................................................... viii
ABSTRACT......................................................................................................................... ix
KATA PENGANTAR......................................................................................................... x
DAFTAR ISI ....................................................................................................................... xii
DAFTAR GAMBAR........................................................................................................... xv
DAFTAR TABEL ............................................................................................................... xvii
BAB I PENDAHULUAN.................................................................................................... 1
1.1. Latar Belakang............................................................................................ 1
1.2. Rumusan Masalah ...................................................................................... 2
1.3. Tujuan ......................................................................................................... 2
1.4. Batasan Masalah ......................................................................................... 2
1.5. Metodologi Penelitian ................................................................................ 3
1.6. Sistematika Penulisan ................................................................................. 4
BAB II LANDASAN TEORI ............................................................................................. 5
2.1. Pengertian Batik ......................................................................................... 5
2.2. Pengenalan Pola.......................................................................................... 7
2.2.1. Deteksi Tepi Canny.......................................................................... 9
2.2.2. Ekstraksi Feature ............................................................................. 12
2.2.3. Proses Training ................................................................................ 13
2.2.4. Proses Testing .................................................................................. 14

xii
2.2.5. Metode Linear Discriminant Analysis (LDA) ................................. 14
2.2.5.1. Algoritma Pemodelan Linear Discriminant Analysis......... 15
2.2.6. Metode Evaluasi 5-Fold Cross Validation ...................................... 22
2.3. Matriks Data Multivariat ............................................................................ 26
2.4. Matlab ......................................................................................................... 27
BAB III ALGORITMA DAN PERANCANGAN SISTEM ............................................ 28
3.1. Pengambilan Data Batik Yogyakarta ......................................................... 28
3.2. Perancangan Sistem Secara Umum ............................................................ 29
3.3. Algoritma yang Digunakan ........................................................................ 33
3.3.1. Algoritma Penyimpanan Informasi Rata-Rata Edge........................ 33
3.3.2. Algoritma Perhitungan Metode Linear Discriminant Analysis ....... 39
3.3.3. Algoritma Metode Evaluasi 5-Fold Cross Validation ..................... 40
3.3.4. Algoritma Proses Training ............................................................... 41
3.3.5. Algoritma Proses Testing ................................................................. 41
3.3.6. Algoritma Fase Pengenalan Motif Batik .......................................... 42
3.3.7. Algoritma Fase Pengujian Akurasi .................................................. 42
3.4. Perancangan Fase Training ........................................................................ 42
3.4.1. Ekstraksi Feature ............................................................................. 43
3.4.2. Pengolahan Feature ......................................................................... 47
3.4.3. Training............................................................................................ 47
3.5. Perancangan Fase Pengenalan (Testing) .................................................... 48
3.5.1. Ekstraksi Feature ............................................................................. 48
3.5.2. Pengolahan Feature ......................................................................... 48
3.5.3. Pencocokan Kemiripan .................................................................... 48
3.6. Perancangan Proses Evaluasi ..................................................................... 49
3.7 Perancangan Antar Muka ............................................................................ 52
3.7.1. Halaman Home ................................................................................ 52
3.7.2. Halaman Pengenalan Motif Batik Yogyakarta ................................ 53

xiii
3.7.3. Halaman Pengujian LDA ................................................................. 54
3.7.4. Halaman Konsep Linear Discriminant Analysis.............................. 54
3.7.5. Halaman Identitas Program (About) ................................................ 55
3.7.6. Halaman Bantuan (Help) ................................................................. 55
BAB IV IMPLEMENTASI DAN ANALISA SISTEM ................................................... 57
4.1. Implementasi Antar Muka yang Digunakan pada Sistem .......................... 57
4.1.1. Halaman Utama ............................................................................... 57
4.1.2. Halaman Pengenalan Motif Batik Yogyakarta ................................ 60
4.1.3. Halaman Pengujian Linear Discriminant Analysis .......................... 62
4.1.4. Halaman Konsep Metode ................................................................. 63
4.1.5. Halaman About ................................................................................. 66
4.1.6. Halaman Bantuan (Help) ................................................................. 66
4.2. Hasil Penelitian ........................................................................................... 67
BAB V KESIMPULAN DAN SARAN .............................................................................. 76
5.1. Kesimpulan ................................................................................................. 76
5.2. Saran ........................................................................................................... 78
DAFTAR PUSTAKA.......................................................................................................... 80
LAMPIRAN 1 CODING PROGRAM .............................................................................. 82
LAMPIRAN 2 DATA PENELITIAN ..............................................................................123

xiv
DAFTAR GAMBAR

Gambar2.1. Beberapa motif Batik Yogyakarta (Sumber: Museum Batik Yogyakarta) ....... 6
Gambar2.2. Blok diagram pengenalan motif batik ..................................................... 9
Gambar2.3. Motif batik dikenakan deteksi tepi Canny .............................................. 11
Gambar2.4. Hasil perhitungan fungsi diskriminan ..................................................... 22
Gambar2.5. Gambaran metode evaluasi 5-Fold Cross Validation ............................. 26
Gambar2.6. Matriks data multivariat .......................................................................... 27
Gambar3.1. Alur fase pengenalan motif batik Yogyakarta Secara Umum ................. 30
Gambar3.2. Blok diagram sistem................................................................................ 30
Gambar3.3. Rata-rata keseluruhan edge ..................................................................... 45
Gambar3.4. Matriks persegi 8x8 ................................................................................. 46
Gambar3.5. Contoh pengelompokanmotif batik untuk proses evaluasi ..................... 49
Gambar3.6. Rancangan halaman Home ..................................................................... 52
Gambar3.7. Rancangan halaman pengenalan motif batik Yogyakarta ....................... 53
Gambar3.8. Rancangan halaman pengujian LDA ...................................................... 54
Gambar3.9. Rancangan halaman konsep LDA ........................................................... 54
Gambar3.10. Rancangan halaman identitas program (about)..................................... 55
Gambar3.11. Rancangan halaman bantuan (help) ...................................................... 55
Gambar4.1. Halaman utama sistem pengenalan motif batik Yogyakarta ................... 59
Gambar4.2. Halaman fase pengenalan motif batik Yogyakarta ................................. 60
Gambar4.3. Kotak file selector untuk mengambil gambar ......................................... 60
Gambar4.4. Peringatan tidak ada file yang dipilih...................................................... 61
Gambar4.5. Halaman fase pegujian Linear Discriminant Analysis ............................ 62
Gambar4.6. Halaman penjelasan konsep metode LDA .............................................. 64
Gambar4.7. Halaman penjelasan konsep metode 5-Fold Cross Validation ............... 65
Gambar4.8. Bagan metode 5-Fold Cross Validation.................................................. 65
Gambar4.9. Halaman About ........................................................................................ 66

xv
Gambar4.10. Halaman bantuan fase pengenalan motif batik Yogyakarta .................. 67
Gambar4.11. Halaman bantuan fase pengujian motif batik Yogyakarta .................... 67

xvi
DAFTAR TABEL

Tabel2.1. Data chip rings .......................................................................................... 18


Tabel2.2. Data set chip ring ...................................................................................... 18
Tabel3.1. Contoh tabel confusion matriks ................................................................ 50
Tabel5.1. Rangkuman hasil percobaan ..................................................................... 76

xvii
BAB I

PENDAHULUAN

1.1. Latar Belakang

Indonesia terkenal dengan keanekaragaman budaya mulai dari suku, tari

daerah, pakaian adat, lagu daerah, dan adat istiadat. Salah satu budaya yang dimiliki

oleh negara kita adalah batik. Batik merupakan warisan budaya Indonesia yang

memiliki keanekaragaman motif.

Dahulu batik hanya dikenakan oleh kalangan raja, kerabat dan pekerjanya,

selain itu digunakan juga pada acara ritual budaya Jawa. Seiring dengan

perkembangan zaman batik telah menjadi kebutuhan sekunder. Banyak masyarakat

yang menggunakan batik dalam kesehariannya. Perancang desain busana pun

menjadikan batik sebagai sumber inspirasi untuk membuat model busana modern.

Sebagian besar masyarakat bangga menggunakan batik, tetapi sedikit yang

mengenal motif-motif batik. Untuk mengatasi permasalahan tersebut sebenarnya

terdapat banyak metode, salah satunya adalah metode Linear Discrimant Analysis.

Metode ini akan menjadi alat bantu untuk pengenalan motif batik. Penulis

menggunakan metode ini karena memiliki daya pembeda yang akurat dan lebih besar

dari metode Principal Components Analysis (PCA) (Resmana Lim, 2002).

1
2

1.2. Rumusan Masalah

Rumusan masalah tugas akhir ini berdasarkan latar belakang di atas adalah

“Bagaimana secara otomatis mengenal motif batik Yogyakarta dengan

mempergunakan metode Linear Discriminant Analysis (LDA)?”

1.3. Tujuan

Tujuan dari tugas akhir ini adalah untuk mengenali motif batik Yogyakarta dan

menganalisa serta mengetahui kelebihan dan kekurangan metode Linear Discriminant

Analysis dalam menangani data citra motif batik Yogyakarta.

1.4. Batasan Masalah

Adapun batasan masalah dalam tugas akhir ini, yaitu:

1. Penelitian hanya pada batik Yogyakarta. Penulis hanya menggunakan 20

motif batik Yogyakarta, yaitu Ceplok Kece, Kawung Galar, Nitik

Cengkeh, Parang Barong, Parang Pancing, Parisewuli Seling Pamor,

Truntum, Tambal, Parang Tuding, Parang Keris, Parang Kusumo Ukel,

Parang Curigo, Parang Klitik, Parang Kembang Sawut Cecek, Ceplok

Dempel, Kawung Kembang Cempoko Hitam, Kawung Picis, Lereng

Kusuma, Parang Kawung Picis, Parang Kunci.

2. Metode yang digunakan untuk pengenalan motif batik Yogyakarta adalah

Linear Discriminant Analysis.


3

3. Pembuatan program hanya sebuah prototipe untuk membantu analisa

algoritma Linear Discriminant Analysis dalam menangani pola batik

Yogyakarta.

4. Pada tugas akhir ini sampel motif batik Yogyakarta yang digunakan

berdasarkan:

a. Ukuran citra motif batik Yogyakarta 200 x 200 piksel dengan format

data .jpg.

b. Data batik diambil menggunakan camera digital pocket Fujifilm tipe

FinePixJ20 dengan 10MP.

c. Jarak pengambilan gambar dengan kain batik sekitar 30 cm.

d. Data batik yang didapat dan akan digunakan dalam tugas akhir ini

terlebih dahulu di-crop untuk menghilangkan sinar blitz serta

mengambil bagian pola (motif) batik yang merupakan ciri dari motif

tersebut. Kemudian ukuran data motif batik hasil crop diubah menjadi

200 x 200 piksel.

5. Proses ekstraksi feature berdasarkan warna dan edge information.

1.5. Metodologi Penelitian

a. Survei dengan langsung mendatangi Museum Batik Yogyakarta untuk

mendapatkan data motif batik.

b. Studi literatur dilakukan dengan mempelajari materi dan artikel tentang

metode Linear Discriminant Analysis.


4

c. Wawancara dengan pakar budaya Museum Batik Yogyakarta.

d. Tahap implementasi yang meliputi pembuatan alat bantu berupa suatu

perangkat lunak untuk pengenalan motif batik.

e. Tahap analisa dari data hasil percobaan.

1.6. Sistematika Penulisan

BAB I PENDAHULUAN

Berisi latar belakang, rumusan masalah, tujuan, batasan masalah,

metodologi penelitian, dan sistematika penulisan.

BAB II LANDASAN TEORI

Berisi landasan teori yang dipakai untuk pembahasan tugas akhir.

BAB III PERANCANGAN SISTEM

Berisi gambaran umum mengenai perancangan sistem yang akan

dibangun, yaitu sebuah perangkat lunak yang dapat mengenali motif batik

Yogyakarta dan menerjemahkannya ke dalam sebuah informasi.

BAB IV IMPLEMENTASI DAN ANALISA ALGORITMA

Berisi implementasi sistem dan membahas mengenai analisis algoritma-

algoritma dalam metode Linear Discriminant Analysis (LDA).

BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dan saran yang diperoleh dari keseluruhan

proses pembuatan tugas akhir ini, serta beberapa saran untuk

pengembangan sistem lebih lanjut.


BAB II

LANDASAN TEORI

2.1. Pengertian Batik

Batik berasal dari Bahasa Jawa ambatik dari kata “ba” dan “tik”, masing-

masing mempunyai padanan kata “bud” dan “am” yang artinya “a-mba-tik” dengan

arti kata membentuk titik (nitik), “tik” berarti kecil. Jadi, batik berarti menulis atau

menggambar atau membuat titik (tulis).

Bunyi am berasal dari kata “ha” pada huruf Jawa merupakan kata imbuhan

pada suatu kata, contoh:

 “ha” + batik  ambatik artinya membuat batik

 “ha” + babar  ambabar artinya membuat babar (membersihkan atau

mencuci)

 “ha” + serat  amserat artinya membuat serat.

Batik merupakan seni karya tulis yang mempunyai arti tersendiri dan mampu

mengungkapkan rasa perasaan indah (setelah melihat atau menangkap) maknanya.

Batik tulis juga mampu mengangkat status sosial seseorang seperti kewibawaan,

kepangkatan, derajat, dan asal usul. Batik juga memiliki nilai ganda yaitu seni, sosial,

dan ekonomi.

Batik merupakan karya seni pada kain dengan perintang warna yang

menggunakan malam (lilin). Batik juga merupakan lukisan atau gambar pada mori

285
6

yang dikerjakan dengan alat canting, dan disebut membatik (Konsensus Nasional,

1996). Beberapa motif batik tulis Yogyakarta sebagai berikut:

Ceplok Kece Kawung Galar Nitik Cengkeh Parang Barong

Parang Pancing Parisewuli Seling Pamor Truntum Tambal

Parang Tuding Parang Keris Parang Kusumo Ukel Parang Curigo

Gambar 2.1. Beberapa motif batik Yogyakarta (Sumber: Museum Batik Yogyakarta)
7

Parang Klitik Parang Kembang Sawut Ceplok Dempel Kawung Kembang


Cecek
Cempoko Hitam

Kawung Picis Lereng Kusuma Parang Kawung Parang Kunci


Picis
Gambar 2.1. (Lanjutan)

2.2. Pengenalan Pola

Pola merupakan kumpulan akan sesuatu (instances) yang memiliki kemiripan

dan keteraturan, ada perulangan, dapat diobservasi baik secara per bagian ataupun

seluruhnya. Ketika sebuah mesin mengenali pola, maka akan memindai pola tersebut

dengan sensor dengan kehadiran derau (noise) dan distorsi pada citra pola itu.

Pengenalan pola adalah suatu disiplin ilmu yang mempelajari cara-cara

mengklasifikasikan obyek ke beberapa kelas atau kategori dan mengenali

kecenderungan data. Tergantung pada aplikasinya, obyek-obyek ini bisa berupa


8

pasien, mahasiswa, pemohon kredit, citra atau sinyal atau pengukuran lain yang perlu

diklasifikasikan atau dicari fungsi regresinya. Biasanya subyek ini disebut dengan

pengenalan pola atau pattern recognition.

Langkah-langkah pengenalan motif batik secara umum adalah sebagai berikut:

1. Data masukan berupa citra .jpg disiapkan. Citra ini masih berisi kumpulan

piksel yang memiliki data warna RGB (Red – Green – Blue).

2. Ekstraksi feature merupakan langkah pemilihan ciri yang ingin diidentifikasi

dari citra batik yang telah dikenai proses pre-processing.

3. Tahap klasifikasi citra merupakan tahap utama dalam pengenalan pola.

Klasifikasi ini bisa berdasarkan unsupervised maupun supervised learning.

Unsupervised learning berarti kategori tercipta dengan sendirinya sesuai

dengan feature yang ditangkap, sedangkan supervised learning berarti sudah

ada batas-batas pengetahuan untuk menentukan kelas dari obyek yang

ditangkap. Pada tahap ini, feature dibandingkan kemiripannya dengan model

yang sudah diketahui oleh mesin.

4. Tahap terakhir yaitu mendapatkan output berupa pengenalan motif batik,

sehingga keputusan dapat diambil dari hasil pengenalan ini.


9

output

mode pengenalan/klasifikasi

ekstraksi feature

Data citra .jpg

Gambar 2.2. Blok diagram pengenalan motif batik

2.2.1 Deteksi Tepi dengan Metode Canny

Tepi (edge) merupakan perubahan intensitas derajat keabuan yang

besar dalam jarak yang singkat. Tepi mencirikan batas-batas objek sehingga

berguna untuk proses segementasi dan identifikasi dalam citra. Tujuan

pendeteksian tepi adalah untuk meningkatkan penampakan garis batas suatu

daerah atau objek di dalam citra.

Metode Canny merupakan salah satu algoritma deteksi tepi. Metode

Canny akan mendeteksi tepi dengan mencari nilai gradien maksimal lokal dari

sebuah citra. Gradien tersebut dihitung menggunakan turunan dari Gaussian

filter. Metode Canny menggunakan dua thresholds yang berguna untuk

mendeteksi tepian yang terlihat jelas dan tepian yang kurang jelas atau lemah,

termasuk juga tepian yang kurang jelas terlihat pada output yang terhubung

dengan tepian yang jelas. Thresholding digunakan untuk mengatur jumlah


10

derajat keabuan yang ada pada citra. Metode Canny lebih utama akan

mendeteksi tepian yang kurang jelas, yang tidak dapat diperoleh dengan

menggunakan metode lain. Ada beberapa kriteria penteksian tepian paling

optimum yang dapat dipenuhi oleh algoritma Canny:

a. Mendeteksi dengan baik (kriteria deteksi)

Kemampuan untuk meletakkan dan menandai semua tepi yang ada sesuai

dengan pemilihan parameter-parameter konvolusi yang dilakukan.

Sekaligus juga memberikan fleksibilitas yang sangat tinggi dalam hal

menentukan tingkat deteksi ketebalan tepi sesuai yang diinginkan.

b. Melokalisasi dengan baik (kriteria lokalisasi)

Dengan Canny dimungkinkan dihasilkan jarak yang minimum antara tepi

yang dideteksi dengan tepi yang asli.

c. Respon yang jelas (kriteria respon)

Hanya ada satu respon untuk tiap tepi. Sehingga mudah dideteksi dan

tidak menimbulkan kerancuan pada pengolahan citra selanjutnya.

Penulis menerapkan metode Canny untuk citra motif batik yaitu dengan

menggunakan fungsi yang disediakan dalam Matlab. Sebagai contoh,

motif batik Truntum dikenakan metode Canny menggunakan fungsi

Matlab, yaitu:

batik = imread ('truntum_21.jpg'); % mengambil/membaca motif


gray=rgb2gray(batik); % mengubah RGB menjadi gray
motif=edge(gray,'canny'); % dikenakan fungsi metode Canny
imshow(motif) % menampilkan hasil deteksi tepi
11

Hasil citra motif batik Yogyakarta yang dikenakan metode Canny sebagai

berikut:

Ceplok Kece Kawung Galar Nitik Cengkeh Parang Barong

Parang Pancing Parisewuli Seling Pamor Truntum Tambal

Parang Tuding Parang Kusumo Ukel


Parang Keris Parang Curigo

Gambar2.3. Motif batik dikenakan deteksi tepi Canny


12

Parang Kembang Sawut Ceplok Dempel Kawung Kembang


Parang Klitik Cecek Cempoko Hitam

Kawung Picis Parang Kawung Picis Parang Kunci


Lereng Kusuma
Gambar2.3. (Lanjutan)

2.2.2. Ekstraksi Feature

Feature merupakan suatu hal yang digunakan untuk menjadi model

dalam Linear Discriminant Analysis yang kemudian diekstrak cirinya untuk

diolah dalam perhitungan training maupun testing.

Ekstraksi ciri berfungsi untuk menajamkan perbedaan-perbedaan pola

(motif) sehingga akan sangat memudahkan dalam pemisahan antar kelas pada

proses klasifikasi. Ekstraksi ciri merupakan tahap yang sangat penting dan

sulit dalam teknik klasifikasi pola, bahkan seringkali tingkat keberhasilan dari

sistem pengenalan pola selalu dikaitkan dengan metode ekstraksi ciri yang

digunakan.
13

Ekstraksi yang dapat dilakukan ialah dengan mengolah informasi

piksel secara diskret. Pengolahan diskret dapat dilakukan dengan membagi

suatu motif batik ke dalam zona yang memiliki ukuran yang sama

(Theeramunkong, Wongtapan, Sinthupinyo, 2004). Kemudian, informasi

piksel dari tiap zona digunakan untuk data input dalam membentuk model.

Tidak ada ukuran yang menentukan untuk perhitungan feature, oleh

karena itu penulis mencoba menggunakan feature warna yang terdiri dari

RGB (Red-Green-Blue), dan edge information dengan ukuran 200x200 piksel.

Warna dijadikan feature dalam pengenalan motif batik karena motif

batik Yogyakarta dapat dibedakan dalam warnanya, warna yang berbeda

dengan bentuk motif yang sama maka nama motif batik pun berbeda.

Feature edge information (deteksi tepi) juga merupakan unsur penting

dalam pengenalan motif batik Yogyakarta ini. Edge information berguna

untuk mendeteksi bagian tepi dari motif batik Yogyakarta. Dengan adanya

bagian tepi motif batik maka motif batik pun dapat diketahui. Dalam hal ini

sebelum dikenakan proses edge information, citra dikenakan proses deteksi

tepi dengan menggunakan metode canny, karena pembentukan deteksi tepi

lebih terlihat jelas.

2.2.3. Proses Training

Proses training merupakan proses klasifikasi atau pembentukan model

motif batik. Pada proses ini dari 500 data motif batik yang digunakan,

sebanyak 400 data digunakan untuk training. Proses training menggunakan


14

metode Linear Discriminant Analysis, yaitu membentuk dengan membentuk

fungsi diskriminan.

2.2.4. Proses Testing

Proses testing merupakan proses pencocokan kemiripan dan

pengenalan motif batik Yogyakarta. Data test akan dimasukkan pada fungsi

diskriminan yang terbentuk pada proses training. Pada proses ini data citra

motif batik yang digunakan sebanyak 100 dari 500 data citra motif batik.

2.2.5. Metode Linear Discriminant Analysis (LDA)

Banyak metode yang dapat digunakan untuk klasifikasi pengenalan

pola. Salah satu teknik yang sangat populer dan cukup sederhana untuk

menyelesaikan masalah klasifikasi adalah analisis diskriminan linear (Linear

Discriminant Analysis), selanjutnya disebut dengan LDA. LDA termasuk

dalam kategori supervised learning, karena dalam pemakaian LDA ada

tahapan training untuk menemukan parameter model yang diperlukan.

Selanjutnya model yang diperoleh digunakan untuk melakukan prediksi bila

ada data baru dan harus dilakukan pengelompokan.

Metode LDA memaksimalkan diskriminasi antar kelas dan

meminimalkan persebaran dalam kelas. Metode ini memiliki kegunaan untuk

mengklasifikasikan obyek ke dalam dua grup atau lebih.

Analisis diskriminan berguna ketika ingin membentuk sebuah model

prediktif dari beberapa kelompok (group) berdasarkan pada karakteristik

masing-masing kasus. Prosedur pembentukan fungsi diskriminan (pada lebih


15

dari dua kelompok, serangkaian set dari fungsi diskriminan) berdasarkan pada

kombinasi linear dari variabel-variabel prediktor yang memberikan pembeda

terbaik dari kelompok-kelompok tersebut. Fungsi dibentuk dari sebuah

sampel pada sebuah kasus di dalam sebuah group yang telah diketahui; fungsi

lalu dapat diaplikasikan pada kasus baru dengan pengukuran pada variabel-

variabel prediktor yang tidak diketahui masuk pada kelompok mana.

2.2.5.1. Algoritma Pemodelan Linear Discriminant Analysis

Analisis diskriminan adalah teknik statistik multivariate yang

terkait dengan pemisahan (separating) atau alokasi/klasifikasi

(classification) sekelompok obyek atau observasi ke dalam kelompok

(group) yang telah terlebih dahulu didefinisikan. Dalam tujuan

pengenalan obyek (observasi), metode ini mencoba menemukan suatu

discriminant yang nilainya mampu memisahkan obyek yang

karakteristiknya telah diketahui. Sedangkan dalam tujuan klasifikasi

obyek, metode ini akan mensortir obyek (observasi) ke dalam dua atau

lebih kelas.

Cara kerja Linear Discriminant Analysis yaitu dengan mencari

bobot untuk setiap kelompok. Metode ini memaksimalkan jarak antar

kelas dan meminimalkan jarak dalam kelas. Fungsi diskriminan yang

terbentuk berfungsi untuk memisahkan kelompok.

Setelah feature didapat, maka pemodelan Linear Discrminant

Analysis dapat dibangkitkan. Linear Discriminant Analysis


16

mengasumsikan matriks-matriks kovarians kelas yang sama. Output

dari analisis diskriminan ini yaitu mendapatkan fungsi yang digunakan

untuk mengelompokkan observasi-observasi ke dalam salah satu kelas,

yang kemudian disebut fungsi diskriminan. Model persamaan

diskriminan, yaitu:

𝟏
𝒇𝒊 = 𝝁𝒊 𝑪−𝟏 𝒙𝑻𝒌 − 𝟐 𝝁𝒊 𝑪−𝟏 𝝁𝑻𝒊 + 𝐥𝐨𝐠(𝑷𝒊 ) (2.1)

Dimana: 𝜇𝑖 = rata-rata kelas ke-i,

𝑥𝑘𝑇 = data yang ditranspose,

𝐶 −1 = matriks covariance yang diinverskan,

𝑃𝑖 = probabilitas data dalam kelas i terhadap seluruh data.

Untuk mendapatkan fungsi diskriminan tersebut, terdapat beberapa

langkah yang harus dilakukan, yaitu:

1. Dengan menghitung mean dari setiap kelompok atau kelas dan

mean dari keseluruhan kelompok atau kelas. Perhitungan ini

untuk menghitung bobot setiap kelompok sehingga dapat

meminimalkan jarak dalam kelompok atau kelas.

2. Menghitung matriks covariance kelompok i yang didapati dari:

(𝑥 𝑖0 )𝑇 𝑥 𝑖0
𝐶𝑖 = (2.2)
𝑛𝑖
17

Dimana:

𝑥𝑖0 = mean corrected data, merupakan hasil dari pengurangan

data dari kelompok xi dengan rata-rata keseluruhan

kelompok.

𝑛𝑖 = banyaknya kelompok ke-i.

3. Membentuk pooled within group covariance matrix (matriks

covariance dalam kelompok), rumus yang digunakan:

1 𝑔
𝐶 𝑟, 𝑠 = 𝑖=1 𝑛𝑖 . 𝐶𝑖 (𝑟, 𝑠) (2.3)
𝑛

Dimana:

𝑛 = total dari banyaknya setiap kelompok ke-i,

𝑔 = banyaknya kelompok (kelas),

𝑛𝑖 = banyaknya kelompok ke-i,

𝐶𝑖 (𝑟, 𝑠) = nilai covariance kelompok ke-i pada baris ke-r dan

baris ke-s.

4. Kemudian hasil dari perhitungan dari langkah ke-3 diinverskan,

maka nilai matriks covariance ini yang akan digunakan dalam

perhitungan fungsi diskriminan.

5. Menghitung Pi yang merupakan probabilitas vektor. Setiap baris

merepresentasikan probabilitas dari kelompok ke-i.

𝑛𝑖 (2.4)
𝑃𝑖 =
𝑁
18

Dimana:

𝑛𝑖 = Banyaknya anggota dari kelompok ke-i,

𝑁 = Jumlah anggota dari seluruh kelompok.

Contoh perhitungan menggunakan metode Linear Discriminant

Analysis:

 Berikut merupakan data chip rings yang lulus (passed) dan tidak

lulus (not passed) uji kualitas dari suatu perusahaan yang

memproduksi chip ring berkualitas tinggi dengan pertimbangan

curvature dan diameter.

Tabel2.1 Data chip rings


Curvature Diameter Quality Control Result
2.95 6.63 Passed
2.53 7.79 Passed
3.57 5.65 Passed
3.16 5.47 Passed
2.58 4.46 Not Passed
2.16 6.22 Not Passed
3.27 3.52 Not Passed
Terdapat data chip ring baru untuk diuji kualitasnya dengan

menggunakan metode LDA, yaitu:

Tabel2.2 Data test chip ring


Curvature Diameter Quality Control Result
2.81 5.46 ????
Catatan:
???? = hasil data test chip rings termasuk passed atau not passed
19

Penyelesaian:

x = feature seluruh data. Setiap baris merepresentasikan satu kelas;

setiap kolom berdiri untuk satu feature.

y = indeks kelas (passed = 1; not passed = 2).

dan

= data feature untuk kelas i. Setiap baris merepresentasikan satu

kelas; setiap kolom berdiri untuk satu feature. Penulis

memisahkan x ke dalam beberapa kelompok berdasarkan indeks

kelas pada y.

Langkah pertama dalam perhitungan LDA yaitu mencari rata-rata

feature dalam setiap kelas dan menghitung rata-rata keseluruhan kelas,

yaitu:

= rata-rata feature kelas, yang mana merupakan rata-rata dari


20

= rata-rata keseluruhan kelas, mean dari seluruh data.

Langkah kedua yaitu mencari matriks covariance kelas i dengan

menggunakan rumus 2.10, yaitu:

= mean corrected data, dari data feature untuk kelas i.

Sehingga didapat matriks covariance dari kelas i dengan

menggunakan rumus 2.2, yaitu:

Langkah ketiga, menghitung pooled within group covariance matrix

(matriks covariance dalam kelompok) dengan menggunakan rumus

2.3, yaitu:

, , dan
21

Maka, pooled covariance matriks yang didapat yaitu:

Langkah keempat, inverse dari pooled covariance matriks, yaitu:


Covariance matriks inilah yang akan digunakan
untuk setiap kelas dalam pembentukan fungsi
diskriminan untuk klasifikasi (membentuk
model).

Langkah kelima, menghitung probabilitas kelas ke-i, dengan

menggunakan rumus 2.4, yaitu:

Hasil perhitungan dari setiap langkah-langkah tersebut digunakan pada

fungsi diskriminan (rumus 2.1) untuk setiap kelas, pada contoh ini

akan menghasilkan dua fungsi diskriminan, yaitu:


𝟏
𝒇𝟏 = 𝝁𝟏 𝑪−𝟏 𝒙𝑻𝒌 − 𝟐 𝝁𝟏 𝑪−𝟏 𝝁𝑻𝟏 + 𝐥𝐨𝐠(𝑷𝟏 )

𝟓. 𝟕𝟒𝟓 𝟎. 𝟕𝟗𝟏 𝑻 𝟏 𝟓. 𝟕𝟒𝟓 𝟎. 𝟕𝟗𝟏 𝟑. 𝟎𝟓


𝒇𝟏 = 𝟑. 𝟎𝟓 𝟔. 𝟑𝟖 𝒙 − 𝟑. 𝟎𝟓 𝟔. 𝟑𝟖 + 𝐥𝐨𝐠(𝟎. 𝟓𝟕𝟏)
𝟎. 𝟕𝟗𝟏 𝟎. 𝟕𝟎𝟏 𝒌 𝟐 𝟎. 𝟕𝟗𝟏 𝟎. 𝟕𝟎𝟏 𝟔. 𝟑𝟖

𝟏
𝒇𝟐 = 𝝁𝟐 𝑪−𝟏 𝒙𝑻𝒌 − 𝝁𝟐 𝑪−𝟏 𝝁𝑻𝟐 + 𝐥𝐨𝐠(𝑷𝟐 )
𝟐

𝟓. 𝟕𝟒𝟓 𝟎. 𝟕𝟗𝟏 𝑻 𝟏 𝟓. 𝟕𝟒𝟓 𝟎. 𝟕𝟗𝟏 𝟐. 𝟔𝟕


𝒇𝟐 = 𝟐. 𝟔𝟕 𝟒. 𝟕𝟑 𝒙 − 𝟐. 𝟔𝟕 𝟒. 𝟕𝟑 + 𝐥𝐨𝐠(𝟎. 𝟒𝟐𝟗)
𝟎. 𝟕𝟗𝟏 𝟎. 𝟕𝟎𝟏 𝒌 𝟐 𝟎. 𝟕𝟗𝟏 𝟎. 𝟕𝟎𝟏 𝟒. 𝟕𝟑

Kemudian data-data chip rings setiap baris yang ditranspose

terlebih dahulu (𝑥𝑘𝑇 ) dimasukkan dalam perhitungan tersebut. Untuk

menentukan hasil quality control lulus uji atau tidak yaitu dengan

melihat hasil dari perhitungan 𝑓1 dan 𝑓2 yang memiliki nilai


22

maksimum. Berikut hasil yang diperoleh dari perhitungan fungsi

diskriminan untuk setiap baris data, yaitu:

Gambar2.4. Perhitungan fungsi diskriminan

Dari hasil perhitungan dengan metode LDA di atas, data test

yaitu data baru chip ring yang akan diuji quality control-nya

menghasilkan indeks 2 yaitu termasuk dalam kelas not passed.

2.2.6. Metode Evaluasi 5-Fold Cross Validation

Setelah melakukan proses training dan testing maka metode evaluasi

dengan 5-fold cross validation dapat dilakukan. Metode evaluasi digunakan

untuk mengetahui tingkat akurasi sistem pengenal motif batik. Metode 5-fold

cross validation membagi tiap kelompok motif batik Yogyakarta menjadi

lima kelompok data yang kemudian secara bergantian dijadikan data untuk

training maupun testing dalam lima langkah pengujian yang saling silang.

Dimisalkan terdapat n-buah motif batik untuk satu jenis motif batik

Yogyakarta, sehingga tiap kelompok memiliki n/5 buah anggota. Diberikan

nilai n = 25 data, sehingga pembagiannya ialah:


23

 Kelompok 1:

 data motif “Ceplok Kece” ke 1 hingga 5,

 data motif “Kawung Galar” ke 1 hingga 5,

 data motif “Nitik Cengkeh” ke 1 hingga 5,

 data motif “Parang Barong” ke 1 hingga 5,

 data motif “Parisewuli Seling Pamor” ke 1 hingga 5,

 data motif “Truntum” ke 1 hingga 5,

 data motif “Tambal” ke 1 hingga 5,

 data motif “Parang Tuding” ke 1 hingga ke 5,

………..

 data motif “Parang Kunci” ke 1 hingga 5.

 Kelompok 2:

 data motif “Ceplok Kece” ke 6 hingga 10,

 data motif “Kawung Galar” ke 6 hingga 10,

 data motif “Nitik Cengkeh” ke 6 hingga 10,

 data motif “Parang Barong” ke 6 hingga 10,

 data motif “Parisewuli Seling Pamor” ke 6 hingga 10,

 data motif “Truntum” ke 6 hingga 10,

 data motif “Tambal” ke 6 hingga 10,

 data motif “Parang Tuding” ke 6 hingga ke 10,

…………
24

 data motif “Parang Kunci” ke 6 hingga 10.

 Kelompok 3:

 data motif “Ceplok Kece” ke 11 hingga 15,

 data motif “Kawung Galar” ke 11 hingga 15,

 data motif “Nitik Cengkeh” ke 11 hingga 15,

 data motif “Parang Barong” ke 11 hingga 15,

 data motif “Parisewuli Seling Pamor” ke 11 hingga 15,

 data motif “Truntum” ke 11 hingga 15,

 data motif “Tambal” ke 11 hingga 15,

 data motif “Parang Tuding” ke 11 hingga 15,

…………

 data motif “Parang Kunci” ke 11 hingga 15.

 Kelompok 4:

 data motif “Ceplok Kece” ke 15 hingga 20,

 data motif “Kawung Galar” ke 15 hingga 20,

 data motif “Nitik Cengkeh” ke 15 hingga 20,

 data motif “Parang Barong” ke 15 hingga 20,

 data motif “Parisewuli Seling Pamor” ke 15 hingga 20,

 data motif “Truntum” ke 15 hingga 20,

 data motif “Tambal” ke 15 hingga 20,

 data motif “Parang Tuding” ke 15 hingga 20,


25

…………

 data motif “Parang Kunci” ke 15 hingga 20.

 Kelompok 5:

 data motif “Ceplok Kece” ke 16 hingga 25,

 data motif “Kawung Galar” ke 16 hingga 25,

 data motif “Nitik Cengkeh” ke 16 hingga 25,

 data motif “Parang Barong” ke 16 hingga 25,

 data motif “Parisewuli Seling Pamor” ke 16 hingga 25,

 data motif “Truntum” ke 16 hingga 25,

 data motif “Tambal” ke 16 hingga 25,

 data motif “Parang Tuding” ke 16 hingga 25,

…………

 data motif “Parang Kunci” ke 16 hingga 25.

Data masukan dipisah untuk memastikan bahwa evaluasi dilakukan

tanpa memproses data yang sama. Pemrosesan dengan data yang sama dapat

terjadi ketika data masukan berjumlah sangat banyak. Jika data yang sama

diproses dalam training dan testing, maka nilai validasi terhadap evaluasi

akan berkurang walaupun angka akurasi meningkat.


26

Testing Training
Kelompok data no.5
menjadi data training
Pengujian 1 1 bersama dengan
2 3 4 5
kelompok data 2, 3,
4.
Pengujian 2 2 1 3 4 5

Pengujian 3 3 1 2 4 5
1
Pengujian 4 4 1 2 3 5

Pengujian 5 5 1 2 3 4

Kelompok data no.5


menjadi data
testing.

Gambar2.5. Gambaran metode evaluasi 5-Fold Cross Validation

Masing-masing kotak yang terdapat pada gambar merupakan kotak

yang mewakili satu kelompok data. Tiap satu kelompok data bergantian

menjadi data testing pada satu langkah pengujian, sedangkan lainnya menjadi

data training.

2.3. Matriks Data Multivariat

Data multivariate adalah data yang diperoleh dari hasil pengukuran terhadap n

observasi-observasi berdasarkan variabel-variabel random p. Secara umum data

multivariate disajikan dalam bentuk matriks X berukuran p x n sebagai berikut:


27

Gambar2.6. Matriks data multivariat

dimana I = 1, 2, ….., p dan j = 1, 2, ….., n.

Data multivariate dinotasikan dengan X = {Xij}, dengan Xij merupakan pengamatan

terhadap variabel random ke-i pada observasi ke-j.

2.4. Matlab

Studi pengenalan karakter ini membutuhkan sebuah alat bantu untuk

menghitung data matematis yang kompleks. Matlab merupakan sebuah alat bantu

yang dapat menangani permasalahan tersebut. Matlab merupakan bahasa

pemograman sekaligus lingkungan penghitung numerik yang dibuat oleh MathWorks

(Hanselman, 1997).
BAB III

ALGORITMA DAN PERANCANGAN SISTEM

Bab Analisa dan Perancangan Sistem merupakan bab berisi penjelasan

mengenai rancangan dan cara kerja sistem pengenal motif batik yang dibangun.

Sistem ini berfungsi sebagai alat bantu untuk menganalisis cara kerja dan akurasi

metode Linear Discriminant Analysis dalam mengenal motif batik. Analisa

kebutuhan seperti kebutuhan perangkat lunak, perangkat keras, dan perancangan antar

muka juga dijelaskan dalam bab ini.

3.1. Pengambilan Data Batik Yogyakarta

Penulis mendapatkan data batik Yogyakarta yaitu dari Museum Batik

Yogyakarta. Keanekaragaman motif batik Yogyakarta di Museum Batik cukup

banyak, tetapi untuk keperluan tugas akhir ini penulis hanya mengambil 20 motif

batik dengan asumsi 20 motif batik ini sudah mewakili motif batik yang lainnya.

Data batik diambil menggunakan camera digital pocket Fujifilm tipe

FinePixJ20 dengan 10MP. Kemudian hasil pengambilan data-data motif batik

tersebut dimasukkan ke komputer. Ukuran yang didapat dari pengambilan dengan

kamera tersebut yaitu berdimensi 3648 x 2736 piksel. Hasil pengambilan data batik

tersebut tidak sempurna karena terdapat pantulan sinar blitz, ini disebabkan kain batik

yang dipajang terdapat pelindung plastik.

28
29

Data batik yang didapat dan akan digunakan dalam tugas akhir ini terlebih dahulu di-

crop untuk menghilangkan sinar blitz serta meng-crop bagian pola (motif) batik yang

merupakan ciri dari motif tersebut, misalnya pada motif Nitik Cengkeh akan di-crop

bagian motif seperti bunga cengkeh, kemudian ukuran data motif batik hasil crop

diubah menjadi 200 x 200 piksel. Penulis memilih ukuran tersebut karena sudah ada

jurnal yang menggunakan ukuran citra 200 x 200 piksel dalam pengenalan pola

(Riyanto Sigit, 2002) dan (Adhi Surahman, 2006).

3.2. Perancangan Sistem Secara Umum

Sistem pengenalan motif batik ini digunakan metode Linear Discriminant

Analysis dalam menangani motif batik. Data citra yang dimasukkan ke dalam sistem

ialah citra dari satu karakter motif batik Yogyakarta. Sistem mengolah citra karakter

motif batik Yogyakarta tersebut sebagai feature yang digunakan pada saat proses

training model maupun proses pengenalan (testing). Setelah melalui proses pengujian

dalam sistem dengan menggunakan metode Linear Discriminant Analysis, pengguna

mendapatkan hasil keluaran berupa nama dari motif batik Yogyakarta berserta angka

akurasinya.
30

citra motif batik .jpg Beberapa jenis feature


Sistem Pengenal Motif
Ekstraksi feature
Batik Yogyakarta

Pengguna

Nama motif batik Yogyakarta dikenali


Evaluasi

Gambar3.1. Alur fase pengenalan motif batik Yogyakarta secara umum

Sistem Pengenal Motif Batik Yogyakarta dengan Metode LDA

Pengolahan
Ekstraksi feature
[.....] Training
feature

M1 M2 M3 M4 ….. Mn

Motif Batik Yogyakarta

Pengolahan Pencocokan
Ekstraksi feature
feature Kemiripan

Evaluasi

Motif batik dikenali

Gambar3.2. Blok diagram sistem


31

Langkah-langkah perancangan proses pengujian motif batik:

1. Data citra batik berukuran 200x200 piksel dikenakan proses ekstraksi feature.

2. Baca citra motif batik.

3. Ekstraksi feature yaitu memilih feature yang tepat untuk data motif batik

tersebut. Feature yang digunakan yaitu rata-rata keseluruhan edge, rata-rata

edge horizontal, rata-rata edge vertikal, gabungan rata-rata keseluruhan edge

dengan rata-rata edge horizontal dan vertikal, rata-rata edge horizontal dan

vertikal, gabungan warna dengan rata-rata keseluruhan edge, rata-rata edge

vertikal dan horizontal. Misal, data motif batik masukan akan dikenakan

feature rata-rata edge horizontal.

4. Proses pengolahan feature rata-rata edge horizontal yaitu:

a. Citra motif batik akan diubah ke gray.

b. Citra motif batik gray dikenakan deteksi tepi dengan metode canny.

c. Data motif batik berukuran 200x200 piksel dibagi menjadi 8 vektor secara

horizontal dan vertikal, sehingga terdapat 64 unit yang setiap unitnya

berukuran 25x25 piksel.

d. Menjumlahkan object (satu) dalam setiap unit.

e. Jumlah objek (satu) dalam setiap unit dibagi dengan 625 (ukuran 25x25 =

625), sehingga didapat hasil rata-rata dalam satu unit. Hal ini dilakukan

untuk setiap unit.


32

f. Hasil rata-rata setiap unit dijumlahkan secara vektor vertikal kemudian

dibagi 8 (8 merupakan jumlah unit yang dijumlahkan secara vektor

vertikal). Hal ini dilakukan untuk setiap unit.

g. Sehingga didapat matriks hasil rata-rata edge vektor vertikal berukuran

1x8.

5. Proses training dengan metode LDA menggunakan 400 data motif batik dari

500 data motif batik Yogyakarta. Terdapat 20 jenis motif batik Yogyakarta

yang ingin dikenali, pada proses training akan membuat satu model dari 20

sampel motif batik dengan membentuk fungsi diskriminan yang diperoleh

dengan cara menghitung mean dari setiap kelompok dan mean dari

keseluruhan kelompok, menghitung matriks covariance, membentuk pooled

within group covariance matrix, dan menghitung probabilitas vektor.

6. Pencocokan kemiripan merupakan fase testing, yaitu dengan menguji fungsi

diskriminan yang terbentuk dengan 100 data motif batik untuk mendapatkan

angka kemiripan terbesar.

7. Untuk proses evaluasi menggunakan metode 5-fold cross validation. Data

hasil pengujian dievaluasi menggunakan metode 5-fold cross validation untuk

mendapatkan nilai prosentase akurasi dari 500 data motif.


33

3.3. Algoritma yang Digunakan

3.3.1. Algoritma Penyimpanan Informasi Rata-Rata Edge

a. Penyimpanan informasi piksel rata-rata keseluruhan edge.

Input: Citra motif batik berukuran 200 x 200 piksel.

Output: Matriks hasil rata-rata keseluruhan edge berukuran 1x64.

Algoritma:

1. Baca citra motif batik.

2. Ubah citra motif batik ke gray 8 bit.

3. Citra motif batik gray dikenakan deteksi tepi menggunakan

Canny.

4. Hitung tinggi dan lebar citra motif batik.

5. Membagi citra motif batik berukuran 200x200 piksel menjadi 8

vektor secara vertikal dan horizontal sehingga mendapatkan 64

unit,setiap unit berukuran 25x25 piksel.

6. Menjumlahkan objek (satu) dalam setiap unit untuk

dijumlahkan.

7. Jumlah objek (satu) keseluruhan dalam setiap unit dibagi

dengan 625 (ukuran 25x25 = 625), sehingga didapat hasil rata-

rata dalam satu unit. Hal ini dilakukan untuk setiap unit.

8. Hasil rata-rata keseluruhan edge disimpan.

9. Sehingga didapat matriks hasil rata-rata edge berukuran 1x64.

b. Penyimpanan informasi piksel vektor horizontal

Input: Citra motif batik berukuran 200 x 200 piksel.

Output: Matriks hasil rata-rata edge horizontal berukuran 1x8.

Algoritma:

1. Baca citra motif batik.


34

2. Ubah citra motif batik ke gray 8 bit.

3. Citra motif batik gray dikenakan deteksi tepi menggunakan

Canny.

4. Hitung tinggi dan lebar citra motif batik.

5. Membagi citra motif batik berukuran 200x200 piksel menjadi 8

vektor secara vertikal dan horizontal sehingga mendapatkan 64

unit,setiap unit berukuran 25x25 piksel.

6. Menjumlahkan objek (satu) dalam setiap unit.

7. Jumlah objek (satu) dalam setiap unit dibagi dengan 625

(ukuran 25x25 piksel = 625), sehingga didapat hasil rata-rata

dalam satu unit. Hal ini dilakukan untuk setiap unit.

8. Hasil rata-rata setiap unit dijumlahkan secara vektor

horizontal kemudian dibagi 8 (8 merupakan jumlah unit yang

dijumlahkan secara vektor horizontal). Hal ini dilakukan

untuk setiap unit.

9. Sehingga didapat matriks hasil rata-rata edge vektor

horizontal berukuran 1x8.

c. Penyimpanan informasi piksel vektor vertikal

Input: Citra motif batik berukuran 200 x 200 piksel

Output: Matriks hasil rata-rata edge vertikal berukuran 1x8

Algoritma:

1. Baca citra motif batik.

2. Ubah citra motif batik ke gray 8 bit.

3. Citra motif batik gray dikenakan deteksi tepi menggunakan

Canny.

4. Hitung tinggi dan lebar citra motif batik.


35

5. Membagi citra motif batik berukuran 200x200 piksel menjadi 8

vektor secara vertikal dan horizontal sehingga mendapatkan 64

unit,setiap unit berukuran 25x25 piksel.

6. Menjumlahkan objek (satu) dalam setiap unit.

7. Jumlah objek (satu) dalam setiap unit dibagi dengan 625

(ukuran 25x25 piksel = 625), sehingga didapat hasil rata-rata

dalam satu unit. Hal ini dilakukan untuk setiap unit.

8. Hasil rata-rata setiap unit dijumlahkan secara vektor

vertikal kemudian dibagi 8 (8 merupakan jumlah unit yang

dijumlahkan secara vektor vertikal). Hal ini dilakukan untuk

setiap unit.

9. Sehingga didapat matriks hasil rata-rata edge vektor vertikal

berukuran 1x8.

d. Penyimpanan informasi piksel rata-rata keseluruhan edge, vektor

horizontal, dan vertikal.

Input: Citra motif batik berukuran 200 x 200 piksel.

Output: Matriks rata-rata keseluruhan edge, rata-rata edge

vektor horizontal, dan vektor vertikal berukuran 1x80.

Algoritma:

1. Baca citra motif batik.

2. Ubah citra motif batik ke gray 8 bit.

3. Citra motif batik gray dikenakan deteksi tepi menggunakan

Canny.

4. Hitung tinggi dan lebar citra motif batik.

5. Membagi citra motif batik berukuran 200x200 piksel menjadi 8

vektor secara vertikal dan horizontal sehingga mendapatkan

64 unit,setiap unit berukuran 25x25 piksel.


36

6. Menjumlahkan objek (satu) dalam setiap unit.

7. Jumlah objek (satu) dalam setiap unit dibagi dengan 625

(ukuran 25x25 piksel = 625), sehingga didapat hasil rata-

rata dalam satu unit. Hal ini dilakukan untuk setiap unit.

8. Kemudian hasil rata-rata setiap unit dijumlahkan secara

vektor horizontal kemudian dibagi 8 (8 merupakan jumlah unit

yang dijumlahkan secara vektor horizontal). Hal ini

dilakukan untuk setiap unit.

9. Kemudian hasil rata-rata setiap unit dijumlahkan secara

vektor vertikal kemudian dibagi 8 (8 merupakan jumlah unit

yang dijumlahkan secara vektor vertikal). Hal ini dilakukan

untuk setiap unit.

10. Hasil rata-rata keseluruhan edge disimpan.

11. Hasil rata-rata edge vektor horizontal disimpan.

12. Hasil rata-rata edge vektor vertikal disimpan.

13. Sehingga didapat matriks hasil rata-rata keseluruhan edge,

rata-rata edge vektor vertikal, dan vektor horizontal

berukuran 1x80.

e. Penyimpanan informasi piksel rata-rata edge vektor horizontal dan

vektor vertikal.

Input: Citra motif batik berukuran 200 x 200 piksel.

Output: Matriks rata-rata edge vektor horizontal, dan vektor

vertikal berukuran 1x16.

Algoritma:

1. Baca citra motif batik.

2. Ubah citra motif batik ke gray 8 bit.


37

3. Citra motif batik gray dikenakan deteksi tepi menggunakan

Canny.

4. Hitung tinggi dan lebar citra motif batik.

5. Membagi citra motif batik berukuran 200x200 piksel menjadi 8

vektor secara vertikal dan horizontal sehingga mendapatkan

64 unit,setiap unit berukuran 25x25 piksel.

6. Menjumlahkan objek (satu) dalam setiap unit.

7. Jumlah keseluruhan objek (satu) dalam setiap unit dibagi

dengan 625 (ukuran 25x25 piksel = 625), sehingga didapat

hasil rata-rata dalam satu unit. Hal ini dilakukan untuk

setiap unit.

8. Hasil rata-rata setiap unit dijumlahkan secara vektor

horizontal kemudian dibagi 8 (8 merupakan jumlah unit yang

dijumlahkan secara vektor horizontal). Hal ini dilakukan

untuk setiap unit.

9. Hasil rata-rata setiap unit dijumlahkan secara vektor

vertikal kemudian dibagi 8 (8 merupakan jumlah unit yang

dijumlahkan secara vektor vertikal). Hal ini dilakukan untuk

setiap unit.

10. Hasil rata-rata edge vektor horizontal disimpan.

11. Hasil rata-rata edge vektor vertikal disimpan.

12. Sehingga didapat matriks hasil rata-rata edge vektor

vertikal dan vektor horizontal berukuran 1x16.

f. Penyimpanan informasi piksel warna RGB, rata-rata keseluruhan edge,

rata-rata edge vektor horizontal, dan vektor vertikal.


38

Input: Citra motif batik berukuran 200 x 200 piksel.

Output: Matriks warna RGB, rata-rata keseluruhan edge, rata-rata

edge vektor horizontal, dan vektor vertikal berukuran 1x87.

Algoritma:

1. Baca citra motif batik.

2. Hitung nilai rata-rata red, rata-rata green, rata-rata blue,

kadar red, kadar green, kadar blue, dan rata-rata hasil

rata-rata red, green, blue.

3. Ubah citra motif batik ke gray 8 bit.

4. Citra motif batik gray dikenakan deteksi tepi menggunakan

Canny.

5. Hitung tinggi dan lebar citra motif batik.

6. Membagi citra motif batik berukuran 200x200 piksel menjadi 8

vektor secara vertikal dan horizontal sehingga mendapatkan

64 unit,setiap unit berukuran 25x25 piksel.

7. Menjumlahkan objek (satu) dalam setiap unit.

8. Kemudian jumlah objek (satu) dalam setiap unit dibagi dengan

625 (ukuran 25x25 piksel = 625), sehingga didapat hasil

rata-rata dalam satu unit. Ini merupakan rata-rata

keseluruhan edge. Hal ini dilakukan untuk setiap unit.

9. Hasil rata-rata setiap unit dijumlahkan secara vektor

horizontal kemudian dibagi 8 (8 merupakan jumlah unit yang

dijumlahkan secara vektor horizontal). Ini merupakan rata-

rata edge vektor horizontal. Hal ini dilakukan untuk setiap

unit.

10. Hasil rata-rata setiap unit dijumlahkan secara vektor

vertikal kemudian dibagi 8 (8 merupakan jumlah unit yang

dijumlahkan secara vektor vertikal). Ini merupakan rata-rata

edge vektor vertikal. Hal ini dilakukan untuk setiap unit.


39

11. Hasil perhitungan warna RGB disimpan.

12. Hasil rata-rata keseluruhan edge disimpan.

13. Hasil rata-rata edge vektor horizontal disimpan.

14. Hasil rata-rata edge vektor vertikal disimpan.

15. Sehingga didapat matriks hasil perhitungan warna, rata-rata

keseluruhan edge, rata-rata edge vektor vertikal, dan

horizontal berukuran 1x87.

3.3.2. Algoritma Perhitungan Metode Linear Discriminant Analysis

Input: Nilai hasil perhitungan feature.

Output: Fungsi diskriminan.

Algoritma:

1. Mengambil data nilai hasil perhitungan feature.

2. Menghitung mean setiap kelompok dan mean keseluruhan

kelompok (mean total).

3. Menghitung mean corrected data, yaitu pengurangan data nilai

hasil perhitungan feature dengan mean total.

4. Menghitung matriks covariance setiap kelompok.

5. Membentuk pooled within group covariance matrix (matriks

covariance total). Matriks yang terbentuk hanya 1 buah

matriks.

6. Hasil perhitungan dari langkah ke-5 diinverskan, maka nilai

matriks covariance total ini yang akan digunakan dalam

pembentukan dan perhitungan fungsi diskriminan.

7. Menghitung probabilitas vektor.

8. Membentuk fungsi diskriminan.


40

3.3.3. Algoritma Metode Evaluasi 5-Fold Cross Validation

Input: Angka pencocokan kemiripan.

Output: Akurasi pencocokan kemiripan.

Algoritma:

1. Membagi data keseluruhan citra motif batik menjadi 5

kelompok. Dengan asumsi: masing-masing kelompok terdiri dari

100 data citra motif batik (terdapat 25 motif batik untuk

satu jenis motif batik, sehingga tiap kelompok memiliki 5

buah anggota untuk satu jenis motif batik).

2. Secara bergantian 5 kelompok dijadikan data untuk proses

training dan testing (kelompok 2-4 untuk proses training,

kelompok 1 untuk proses testing ; kelompok 1, 3-5 untuk

training, kelompok 2 untuk testing, ; dan seterusnya).

3. Menjalankan proses training.

4. Menjalankan proses testing.

5. Membaca jumlah angka pencocokan kemiripan.

6. Membentuk tabel confusion matriks sebanyak 5.

7. Memasukkan angka pencocokan kemiripan untuk setiap motif

batik.

8. Membentuk tabel confusion matriks total.

9. Hitung jumlah data yang digunakan.

10. Hitung jumlah motif yang dikenali.

11. Hitung jumlah motif tak dikenali.

12. Hitung akurasi yaitu dengan secara diagonal nilai angka

kemiripan dijumlahkan kemudian dibagi banyaknya data motif

batik dikali 100%.

13. Nilai akurasi pencocokan kemiripan didapat.


41

3.3.4. Algoritma Proses Training

Input: Data feature motif batik.

Output: Fungsi diskriminan sebanyak 20.

Algoritma:

1. Membaca data feature motif batik.

2. Perhitungan dengan metode LDA.

3. Dari perhitungan metode LDA maka terbentuk fungsi

diskriminan sebanyak 20 (kelas (jenis motif batik) ada 20).

Fungsi ini digunakan untuk pembentukan model setiap jenis

motif batik.

3.3.5. Algoritma Proses Testing

Input: Data feature motif batik.

Output: Angka pencocokan kemiripan motif batik.

Algoritma:

1. Membaca data feature motif batik.

2. Memasukan angka data feature motif batik pada fungsi

diskriminan yang terbentuk.

3. Hasil dari perhitungan fungsi diskriminan tersebut dipilih

yang nilainya paling maksimal. Nilai maksimal ini yang

menentukan data testing yang dicoba tergolong jenis motif

batik yang mana dalam bentuk indeks.

4. Indeks motif batik dihitung sebagai jumlah data motif batik

yang dikenali.

5. Diperoleh angka pencocokan kemiripan.


42

3.3.6. Algoritma Fase Pengenalan Motif Batik

Input: Citra motif batik berukuran 200x200 piksel.

Output: Nama motif batik.

Algoritma:

1. Membaca citra motif batik masukan.

2. Menjalankan proses pembentukan feature.

3. Menjalankan proses training.

4. Menjalankan proses testing.

5. Indeks motif batik dicocokkan dengan kamus motif batik.

6. Nama motif batik dikenali.

3.3.7. Algoritma Fase Pengujian Akurasi

Input: Citra motif batik berukuran 200x200 piksel.

Output: Jumlah data, jumlah motif dikenali, jumlah motif tak

dikenali, dan akurasi pencocokan kemiripan.

Algoritma:

1. Menjalankan proses pembentukan feature.

2. Menjalankan proses metode evaluasi 5-fold cross validation.

3. Hasil yang diperoleh yaitu jumlah data, jumlah motif

dikenali, jumlah motif tak dikenali, dan akurasi.

3.4. Perancangan Fase Training

Pada perancangan fase training model motif batik Yogyakarta meliputi

langkah-langkah ekstraksi feature, pengolahan feature dan training. Fase ini

merupakan langkah pembuatan model karakter motif batik Yogyakarta yang akan
43

dijadikan pembanding dengan motif baru yang dimasukkan pada fase pengenalan.

Proses training model dapat dijelaskan sebagai berikut:

3.4.1 Ekstraksi Feature

a. Feature Warna

Ekstraksi feature warna pada motif batik Yogyakarta terdapat 7

macam feature yaitu rata-rata red (𝑅 ), rata-rata green (𝐺 ), rata-rata blue (𝐵 ),

kadar red (R), kadar green (G), kadar blue (B), dan rata-rata hasil rata-rata

red, green, blue (𝑅𝐺𝐵 ). Untuk penjabaran rata-rata tersebut sebagai berikut:
𝑚 𝑛
𝑖=1 𝑗 =1 𝑅 𝑖𝑗
𝑅= (3.1)
𝑚 ×𝑛

𝑚 𝑛
𝑖=1 𝑗 =1 𝐺𝑖𝑗 (3.2)
𝐺=
𝑚×𝑛
𝑚 𝑛
𝑖=1 𝑗 =1 𝐵𝑖𝑗 (3.3)
𝐵=
𝑚×𝑛

𝑅 (3.4)
𝑘𝑎𝑑𝑎𝑟 𝑅 =
𝑅+𝐺+𝐵
𝐺
𝑘𝑎𝑑𝑎𝑟 𝐺 = 𝑅 +𝐺 +𝐵 (3.5)

𝐵
𝑘𝑎𝑑𝑎𝑟 𝐵 = (3.6)
𝑅 +𝐺 +𝐵

𝑅 +𝐺 +𝐵
𝑅𝐺𝐵 = (3.7)
3

dimana, m merupakan banyaknya kolom dan n merupakan banyaknya baris.


44

b. Feature Edge Information

Pada feature edge information ini citra akan dikenakan proses deteksi

tepi (edge detection) dengan menggunakan metode canny. Penulis

menggunalan metode canny karena hasil deteksi tepi terlihat lebih jelas.

Feature edge information yang akan dicobakan yaitu rata-rata

keseluruhan edge yang akan menghasilkan matriks berukuran 1x64, rata-rata

vektor vertikal yang akan menghasilkan matriks berukuran 1x8, dan rata-rata

vektor horizontal yang akan menghasilkan matriks berukuran 1x8, gabungan

rata-rata edge vektor vertikal dan horizontal, gabungan rata-rata keseluruhan

edge 1x64 dengan rata-rata vektor vertikal dan horizontal, dan gabungan rata-

rata warna dengan rata-rata keseluruhan 1x64 dengan rata-rata vektor

horizontal dan vertikal.

1. Rata-rata keseluruhan yang berukuran 1x64.

Citra motif batik berukuran 200x200 piksel dibagi menjadi 8 vektor secara

horizontal dan vertikal, sehingga terdapat 64 unit. Setiap unit berukuran

25x25 piksel dihitung rata-rata (mean) sehingga akan menghasilkan

matriks persegi berukuran 8x8. Rumus untuk perhitungan rata-rata setiap

unit, yaitu
25 25
𝑖=1 𝑖=1 𝑃 𝑖𝑗
𝑅𝑡 = (3.8)
25×25

Rata-rata setiap unit ini berjumlah 64 yang akan dijadikan data input

dalam membentuk model.


45

1--------25 26-------50 51------75 76------100 ---------------------------------------- 176----200

1 Rt1 Rt2 Rt3 Rt4 Rt5 Rt6 Rt7 Rt8


25
26
Rt9 Rt10 Rt11 Rt12 Rt13 Rt14 Rt15 Rt16

50 Rt17 Rt18 Rt19 Rt20 Rt21 Rt22 Rt23 Rt24


|
| Rt25 Rt26 Rt27 Rt28 Rt29 Rt30 Rt31 Rt32
|
| Rt33 Rt34 Rt35 Rt36 Rt37 Rt38 Rt39 Rt40
|
|
Rt41 Rt42 Rt43 Rt44 Rt45 Rt46 Rt47 Rt48
|
|
Rt49 Rt50 Rt51 Rt52 Rt53 Rt54 Rt55 Rt56
|
|
|
Rt57 Rt58 Rt59 Rt60 Rt61 Rt62 Rt63 Rt64
|
200 Gambar3.3. Rata-rata keseluruhan edge
Keterangan:

Rt = hasil perhitungan rata-rata jumlah objek satu dibagi ukuran 1 unit berukuran

25x25 piksel.

2. Rata-rata vektor vertikal dan horizontal yang menghasilkan matriks 1x8

Citra berukuran 200x200 piksel dibuat menjadi 8 vektor secara horizontal

dan vertikal, sehingga terdapat 64 unit. Setiap unit berukuran 25x25

piksel. Kemudian setiap unit dihitung rata-rata sehingga akan

mendapatkan matriks persegi berukuran 8x8. Rumus perhitungan rata-rata

untuk setiap unit dapat dilihat pada rumus 2.8.


46

Satu vektor horizontal

E11 E12 E13 E14 E15 E16 E17 E18


E21 …. …. …. …. …. …. E28
E31 …. …. …. …. …. …. E38
Satu vektor
E41 …. …. …. …. …. …. E48 vertikal
E51 …. …. …. …. …. …. E58
E61 …. …. …. …. …. …. E68
E71 …. …. …. …. …. …. E78
Satu unit E81 E82 E83 E84 E85 E86 E87 E88
berukuran 25x25
Gambar3.4. Matriks persegi 8x8

Keterangan:

E = hasil perhitungan rata-rata jumlah object (satu) dibagi dengan ukuran satu unit
(25x25 piksel).

Vektor = penarikan garis.

Unit = 1 kotak hasil pembagian vektor.

Dari matriks persegi 8x8 di atas akan dilakukan penjumlahan dari rata-rata

setiap unit secara vektor vertikal dan vektor horizontal.

 Penjumlahan rata-rata secara vertikal:

Total1 = E11 + E21 + E31 + E41 + E51 + E61 + E71 + E81

Total2 = E12 + E22 + E32 + E42 + E52 + E62 + E72 + E82

.... …. ….

Total8 = E18 + E28 + E38 + E48 + E58 + E68 + E78 + E88

 Penjumlahan rata-rata secara horizontal:

Total1 = E11 + E12 + E13 + E14 + E15 + E16 + E17 + E18


47

Total2 = E21 + E22 + E23 + E24 + E25 + E26 + E27 + E28

………

Total8 = E81 + E82 + E82 + E84 + E85 + E86 + E87 + E88

3.4.2. Pengolahan Feature

Pada langkah pengolahan feature ini setiap karakter yang memiliki ciri

(feature) akan diolah dengan menggunakan metode Linear Discriminant

Analysis.

3.4.3. Training

Langkah training merupakan langkah pengolahan motif batik

Yogyakarta menjadi suatu fungsi model yang digunakan untuk mewakili satu

motif batik Yogyakarta. Proses training menggunakan metode Linear

Discriminant Analysis. Hasil dari perhitungan fungsi diskriminan yang

terbentuk akan dipilih yang bernilai maksimum, dalam kasus ini hasil

perhitungan fungsi diskriminan berjumlah 25 untuk setiap kelompok motif

batik (terdapat 20 kelompok), dari 25 hasil perhitungan ini akan dipilih nilai

maksimal untuk mewakili satu kelompok motif batik, sehingga akan diperoleh

20 hasil perhitungan fungsi diskriminan untuk 20 motif batik Yogyakarta.

Nilai maksimum ini yang akan menjadi model untuk setiap kelompok motif

batik. Pengkategorian motif batik pada langkah ini ditentukan oleh langkah

ekstraksi feature.
48

3.5. Perancangan Fase Pengenalan (Testing)

Perancangan fase pengenalan motif batik Yogyakarta meliputi langkah

ekstraksi feature, pengolahan feature dan pencocokan kemiripan. Pada fase ini motif

batik Yogyakarta akan diuji untuk dikenali polanya oleh sistem. Langkah-langkah

tersebut dapat dijelaskan sebagai berikut:

3.5.1. Ekstraksi Feature

Langkah ekstraksi feature pada proses testing ini hampir sama pada

proses training.

3.5.2. Pengolahan Feature

Pada langkah pengolahan feature ini setiap pola yang memiliki ciri

(feature) akan diolah dengan menggunakan metode Linear Discriminant

Analysis.

3.5.3. Pencocokan Kemiripan

Langkah pencocokan kemiripan ini merupakan langkah pencocokan

model berupa fungsi-fungsi diskriminan yang memodelkan 20 pola motif

batik yang sebelumnyag telah diproses pada fase training dengan

menggunakan metode Linear Discriminant Analysis. Hasil yang didapat dari

pencocokan kemiripan berupa hasil perhitungan fungsi diskriminan model

input dengan model yang ada dalam sistem. Untuk menentukan model yang

diinputkan termasuk dalam kelompok mana yaitu angka hasil perhitungan

yang paling mendekati dengan salah satu model.


49

3.6. Perancangan Proses Evaluasi

Langkah evaluasi merupakan langkah pengujian akurasi metode Linear

Discriminant Analysis dalam mengenali motif batik Yogyakarta. Proses evaluasi

menggunakan metode 5-fold cross validation dengan confusion matrix. Proses

evaluasi dilakukan pada setiap motif batik Yogyakarta yang hasil pengenalannya

disimpan dalam sebuah matriks confusion matrix. Pengujian akurasi terhadap masing-

masing motif batik Yogyakarta dapat dijelaskan sebagai berikut:

1. Penentuan lima kelompok matif batik Yogyakarta

Terdapat masing-masing 25 model untuk satu motif batik

Yogyakarta untuk satu pengujian akurasi. 25 model ini dibagi menjadi 5

kelompok data yang diberi label “motifbatik_1” sampai “motifbatik_5”.

Motif Parang Barong 1-5 Parang Barong_1

Motif Parang Barong 6-10 Parang Barong_2

Motif Parang Barong 11-15 Parang Barong_3

Motif Parang Barong 16-20 Parang Barong_4

Motif Parang Barong 21-25 Parang Barong_5

Gambar3.5. Contoh pengelompokan motif batik untuk proses evaluasi


50

2. Pengujian akurasi

Terdapat dua langkah dalam pengujian akurasi, yaitu langkah training dan

testing. Langkah training untuk membentuk model, sedangkan langkah

testing digunakan untuk menguji pengenalan motif batik.

3. Penentuan confusion matrix

Matriks ini menyediakan informasi angka pencocokan kemiripan

pengenalan motif batik untuk setiap motif batik yang telah diuji pada

langkah pengujian akurasi. Setelah melalui proses testing maka angka

pencocokan kemiripan dapat dimasukan ke dalam tabel ini.

Tabel 3.1. Contoh tabel confusion matriks

Motif
a b c d e f g h i j k l m n o p q r s t
batik
a x x x x x x x x x x x x x x x x x x x x
b x x x x x x x x x x x x x x x x x x x x
c x x x x x x x x x x x x x x x x x x x x
d x x x x x x x x x x x x x x x x x x x x
e x x x x x x x x x x x x x x x x x x x x
f x x x x x x x x x x x x x x x x x x x x
g x x x x x x x x x x x x x x x x x x x x
h x x x x x x x x x x x x x x x x x x x x
i x x x x x x x x x x x x x x x x x x x x
j x x x x x x x x x x x x x x x x x x x x
k x x x x x x x x x x x x x x x x x x x x
l x x x x x x x x x x x x x x x x x x x x
m x x x x x x x x x x x x x x x x x x x x
n x x x x x x x x x x x x x x x x x x x x
o x x x x x x x x x x x x x x x x x x x x
51

p x x x x x x x x x x x x x x x x x x x x

q x x x x x x x x x x x x x x x x x x x x
r x x x x x x x x x x x x x x x x x x x x
s x x x x x x x x x x x x x x x x x x x x
t x x x x x x x x x x x x x x x x x x x x
Keterangan:

x = angka pencocokan j = Parang Keris

kemiripan k = Parang Kusumo Ukel

a = Ceplok Kece l = Parang Curigo

b = Kawung Galar m = Parang Klitik

c = Nitik Cengkeh n = Parang Kembang Sawut Cecek

d = Parang Barong o = Ceplok Dempel

e = Parang Pancing p = Kawung Kembang Cempoko Hitam

f = Parisewuli Seling Pamor q = Kawung Picis

g = Trumtum r = Lereng Kusuma

h = Tambal s = Parang Kawung Picis

i = Parang Tuding t = Parang Kunci

4. Perhitungan angka akurasi

Angka akurasi dapat dihitung dengan cara menjumlahkan hasil

pengenalan diagonal dari confusion matrix dibagi dengan keseluruhan

jumlah pengujian.

𝑝𝑒𝑛𝑔𝑒𝑛𝑎𝑙𝑎𝑛 𝑝𝑎𝑑𝑎 𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 𝑐𝑜𝑛𝑓𝑢𝑠𝑖𝑜𝑛 𝑚𝑎𝑡𝑟𝑖𝑥


𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = × 100% (3.9)
𝑚𝑜𝑑𝑒𝑙 𝑚𝑜𝑡𝑖𝑓 𝑏𝑎𝑡𝑖𝑘
52

3.7. Perancangan Antar Muka

Alat bantu pengenalan motif batik Yogyakarta memiliki 3 halaman utama

yaitu halaman home, halaman pengenalan motif batik Yogyakarta, dan halaman

pengujian LDA. Terdapat beberapa halaman berisi informasi mengenai sistem yaitu

pada halaman Linear Discriminant Analysis (LDA), About, dan Help.

3.7.1. Halaman Home

Gambar3.6. Rancangan halaman Home sistem pengenal motif batik Yogyakarta

Rancangan halaman „Home‟ berisi pengenalan mengenai judul

program dan identitas penulis.


53

3.7.2. Halaman Pengenalan Motif Batik Yogyakarta

Gambar3.7. Rancangan halaman pengenalan motif batik Yogyakarta

Pada halaman pengenalan motif batik Yogyakarta pengguna dapat

memasukkan citra motif batik hasil pindai dengan menggunakan tombol

„Browse‟, kemudian citra motif batik akan terlihat pada kotak „Preview‟.

Proses pengenalan citra motif batik akan dimulai setelah menekan tombol

„OK‟ yang terletak di kanan bawah dalam kotak preview. Kotak „Proses‟ akan

menampilkan jalannya proses pengenalan motif batik dengan menggunakan

metode LDA. Hasil ekstraksi feature dan perhitungan kemiripan dari citra

motif batik akan ditampilkan pada kotak „Hasil‟.


54

3.7.3. Halaman Pengujian LDA

Gambar3.8. Rancangan halaman pengujian LDA sistem pengenal motif batik

Halaman Pengujian LDA ini merupakan halaman pengujian citra motif

batik hasil pindai dengan menggunakan metode Linear Discriminant Analysis.

Pengguna akan melihat jalannya proses pengenalan dengan memasukkan

parameter berupa feature dari citra motif batik yang akan dilakukan pengujian

kemudian menekan tombol „Test the LDA‟. Data hasil pengenalan citra motif

batik akan terlihat pada kotak „Hasil‟.

3.7.4. Halaman Konsep Linear Discriminant Analysis

Gambar3.9. Rancangan halaman konsep LDA


55

Halaman konsep LDA berisi tentang metode-metode yang digunakan

dalam sistem pengenalan motif batik Yogyakarta ini. Metode yang digunakan

yaitu Linear Discriminant Analysis dan 5-fold cross validation. Pengguna

dapat memilih metode-metode yang ada pada kotak „Daftar Isi‟, kemudian

sistem akan merespon dengan menampilkan informasi pada kotak „Deskripsi‟.

3.7.5. Halaman Identitas Program (About)

Gambar3.10. Rancangan halaman identitas program (about)

Halaman identitas program ini berisi informasi indentitas program

bagi pengguna tentang sistem pengenal motif batik Yogyakarta

3.7.6. Halaman Bantuan (Help)

Gambar3.11. Rancangan halaman bantuan (help)


56

Halaman bantuan (help) berisi tentang cara penggunaan sistem

pengenal motif batik Yogyakarta ini. Pengguna dapat memilih salah satu

menu yang ada pada kotak „Daftar Isi‟ kemudian sistem akan memberikan

informasi tentang halaman sistem beserta fungsi-fungsinya.


BAB IV

IMPLEMENTASI DAN ANALISA SISTEM

Bab ini akan membahas hasil implementasi sistem berupa hasil tangkapan

tampilan tampilan antar muka sistem, pembahasan algoritma yang digunakan dalam

tugas akhir ini, serta hasil penelitian yang merupakan bagian terpenting dari bab ini.

Bagian pertama akan membahas implementasi sistem. Pembahasan ini disertai

juga dengan penjelasan penggunaan tombol dan menu untuk setiap halaman.

Sedangkan dalam bagian kedua berisi penjelasan algoritma beserta kompleksitasnya.

Bagian akhir membahas hasil penelitian untuk setiap percobaan yang

dilakukan. Hasil penelitian ini dituangkan dalam tabel hasil akurasi yang disertai

confusion matriks untuk akurasi terbaik.

4.1. Implementasi Antar Muka yang Digunakan pada Sistem

4.1.1. Halaman Utama

Pada halaman utama, terdapat identitas dan tujuan pembuatan prototipe

sistem pengenalan motif batik Yogyakarta. Terdapat 3 menu editor dan 2 menu

push button, yaitu:

28
57
58

1. Menu Editor Konsep Metode

Menu editor ini berfungsi menampilkan halaman pengenalan konsep Linear

Discriminant Analysis dan konsep 5-fold cross validation yang digunakan

dalam pengenalan motif batik Yogyakarta.

2. Menu Editor About

Menu teks ini berfungsi menampilkan halaman identitas program dan

pembuatnya.

3. Menu Editor Help

Menu berfungsi menampilkan halaman panduan dalam menggunakan fungsi

pengenalan dan pengujian metode LDA.

4. Menu Push Button Fase Pengenalan Batik

Menu yang menampilkan halaman pengenalan motif batik Yogyakarta.

5. Menu Push Button Fase Pengujian Batik

Menu yang berfungsi menampilkan halaman pengujian metode Linear

Discriminant Analysis dalam melakukan training dan testing data motif batik

Yogyakarta.
59

Gambar4.1. Halaman utama (Home) sistem pengenalan motif batik Yogyakarta


60

4.1.2. Halaman Pengenalan Motif Batik Yogyakarta

Gambar4.2. Halaman fase pengenalan motif batik Yogyakarta

Gambar4.3. Kotak file selector untuk mengambil gambar


61

Gambar4.4. Peringatan tidak ada file yang dipilih

Halaman pengenalan motif batik Yogyakarta merupakan

halaman yang berfungsi membaca motif batik Yogyakarta yang

dimasukkan lewat tombol browse. Pengguna dapat memasukkan

gambar yang dipilih melalui jendela file selector yang muncul ketika

tombol browse ditekan. Jika tidak ada file yang dipilih, maupun terjadi

kesalahan pembacaan data, maka akan muncul kotak peringatan

seperti pada gambar4.4.

Button “Process” digunakan untuk menjalankan proses

pengenalan citra masukan, yaitu mulai dari pembuatan feature,

pengenalan dengan metode Linear Discriminant Analysis, dan

pencocokan kemiripan.

Kotak ”Process” merupakan jendela untuk memantau

perkembangan pengenalan motif batik Yogyakarta. Dalam kotak ini

terdapat langkah-langkah proses pengenalan motif batik Yogyakarta.

Hasil pengenalan berupa teks nama motif batik yang dapat langsung

dilihat pada kotak “Output”.


62

Dalam kotak ”Process” menampilkan langkah pengenalan

motif, mulai dari pembentukan feature dan pencocokan model yang

telah dibentuk pada langkah training. Angka kecocokan berupa angka

probabilitas yang memiliki angka kemiripan terbaik. Dalam kotak ini

ditunjukkan pula hasil perhitungan metode analisis dikriminan.

4.1.3. Halaman Pengujian Linear Discriminant Analysis

Gambar4.5. Halaman fase pengujian Linear Discriminant Analysis

Halaman pengujian akurasi merupakan halaman yang

mempresentasikan proses pengujian akurasi metode analisis

diskriminan. Pengguna dapat memilih jenis feature yang ingin diuji

pada pop up menu feature. Button “Uji LDA” digunakan untuk

menjalankan proses pengujian akurasi.

Proses pengujian ini dapat dilihat pada kotak “Process”. Kotak

ini menampilkan detail proses pembentukan feature, pembuatan


63

model, lima langkah training, dan juga etimasi waktu proses

pembuatan feature.

Langkah training dan testing dilakukan sebanyak lima kali,

sesuai dengan metode 5-fold cross validation. Hasil pengujian ini

dapat dilihat pada kotak “Hasil”. Kotak ini menampilkan jumlah data

yang masuk dalam proses pengujian LDA, jumlah motif yang dikenali,

jumlah motif yang tidk dikenali, serta prosentase akurasi.

4.1.4. Halaman Konsep Metode

Halaman konsep metode berfungsi menginformasikan konsep dasar

metode yang digunakan dalam pengenalan motif batik Yogyakarta. Terdapat 2

menu teks pada halaman konsep metode ini yaitu menu teks Linear

Discriminant Analysis dan 5-fold cross validation.

1. Menu Teks Linear Discriminant Anlaysis

Memberikan informasi deskripsi tentang metode Linear Discriminant

Analysis.
64

Gambar4.6. Halaman penjelasan konsep metode Linear Discriminant Analysis

2. Menu Teks 5-fold cross validation

Mengaktifasi halaman yang berisi deskripsi metode 5-fold cross

validation. Dalam menu teks ini terdapat tombol “Gambar” yang berisi

bagan pengujian metode 5-fold cross validation. Pada halaman bagan

konsep metode -fold cross validation terdapat tombol ”Home” yang

berfungsi untuk kembali ke halaman utama.


65

Gambar4.7. Halaman penjelasan konsep metode 5-Fold Cross Validation

Gambar4.8. Bagan metode 5-Fold Cross Validation


66

4.1.5. Halaman About

Halaman about berisi informasi detail program, yaitu aplikasi yang

digunakan dalam membangun program, beserta hak cipta program ini.

Gambar4.9. Halaman About

4.1.6. Halaman Bantuan (Help)

Halaman ini berisi informasi untuk menggunakan fasilitas pengenalan

dan pengujian motif batik Yogyakarta. Terdapat dua bagian yaitu halaman

bantuan untuk fase pengenalan dan fase pengujian dengan menggunakan

menu teks editor, yaitu:

1. Halaman Bantuan Fase Pengenalan

Halaman bantuan ini berisi informasi mengenai fase pengenalan motif

batik Yogyakarta. Penjelasan yang diberikan yaitu fungsi masing-masing

tombol yang terdapat dalam halaman fase pengenalan motif batik

Yogyakarta.
67

Gambar4.10. Halaman bantuan fase pengenalan motif batik Yogyakarta

2. Halaman Bantuan Fase Pengujian LDA

Halaman ini mengaktifasi halaman bantuan yang berisi informasi

mengenai fase pengujian metode Linear Discriminant Analysis dalam

menangani motif batik Yogyakarta. Penjelasan yang diberikan yaitu

fungsi masing-masing tombol yang terdapat dalam halaman fase

pengenalan motif batik Yogyakarta.

Gambar4.11. Halaman bantuan fase pengujian motif batik Yogyakarta


68

4.2. Hasil Penelitian

Pada penelitian ini, dicobakan beberapa variasi data, berupa keberbedaan

bentuk feature. Motif batik Yogyakarta diolah menjadi 6 feature yang berbeda untuk

mendapatkan angka akurasi pada masing-masing percobaan. Hasil dari tiap

percobaan ialah data angka akurasi dan confusion matrix dari akurasi terbaik.

a. Percobaan I

Daftar komponen percobaan:

 20 jenis motif batik Yogyakarta, yaitu Ceplok Kece, Kawung

Galar, Nitik Cengkeh, Parang Barong, Parang Pancing, Parisewuli

Seling Pamor, Truntum, Tambal, Parang Tuding, Parang Keris,

Parang Kusumo Ukel, Parang Curigo, Parang Klitik, Parang

Kembang Sawut Cecek, Ceplok Dempel, Kawung Kembang

Cempoko Hitam, Kawung Picis, Lereng Kusumo, Parang

Kawung Picis, dan Parang Kunci.

 Setiap jenis motif batik memiliki 25 data motif, sehingga total

terdapat 20x25= 500 motif batik.

 Motif batik berukuran 200x200 piksel biner (0 dan 1).

 Motif batik dibagi menjadi 8 vektor vertikal dan 8 vektor

horizontal sehingga terdapat 64 unit masing-masing unit

berukuran 25x25 piksel, kemudian setiap unit dijumlahkan objek

(satu) kemudian dirata-rata, sehingga akan mendapatkan matriks

berukuran 8x8. Kemudian dilakukan perhitungan rata-rata tiap


69

baris (vektor horizontal) sehingga akan menghasilkan rata-rata

edge horizontal berukuran 1x8.

Hasil Percobaan I:

Angka akurasi pada feature rata-rata horizontal = 36.4 %

b. Percobaan II

Daftar komponen percobaan:

 20 jenis motif batik Yogyakarta, yaitu Ceplok Kece, Kawung

Galar, Nitik Cengkeh, Parang Barong, Parang Pancing, Parisewuli

Seling Pamor, Truntum, Tambal, Parang Tuding, Parang Keris,

Parang Kusumo Ukel, Parang Curigo, Parang Klitik, Parang

Kembang Sawut Cecek, Ceplok Dempel, Kawung Kembang

Cempoko Hitam, Kawung Picis, Lereng Kusumo, Parang Kawung

Picis, dan Parang Kunci.

 Setiap jenis motif batik memiliki 25 data motif, sehingga total

terdapat 20x25= 500 motif batik.

 Motif batik berukuran 200x200 piksel biner (0 dan 1).

 Motif batik dibagi menjadi 8 vektor vertikal dan 8 vektor

horizontal sehingga terdapat 64 unit masing-masing unit berukuran

25x25 piksel, kemudian setiap unit dijumlahkan objek (satu)

kemudian dirata-rata, sehingga akan menghasilkan matriks rata-

rata keseluruhan edge berukuran 1x64.


70

Hasil Percobaan II:

Angka akurasi feature rata-rata seluruh edge = 34.8 %

c. Percobaan III

Daftar komponen percobaan:

 20 jenis motif batik Yogyakarta, yaitu Ceplok Kece, Kawung

Galar, Nitik Cengkeh, Parang Barong, Parang Pancing, Parisewuli

Seling Pamor, Truntum, Tambal, Parang Tuding, Parang Keris,

Parang Kusumo Ukel, Parang Curigo, Parang Klitik, Parang

Kembang Sawut Cecek, Ceplok Dempel, Kawung Kembang

Cempoko Hitam, Kawung Picis, Lereng Kusumo, Parang

Kawung Picis, dan Parang Kunci.

 Setiap jenis motif batik memiliki 25 data motif, sehingga total

terdapat 20x25= 500 motif batik.

 Motif batik berukuran 200x200 piksel biner (0 dan 1).

 Motif batik dibagi menjadi 8 vektor vertikal dan 8 vektor

horizontal sehingga terdapat 64 unit masing-masing unit

berukuran 25x25 piksel, kemudian setiap unit dijumlahkan objek

(satu) kemudian dirata-rata, sehingga akan mendapatkan matriks

berukuran 8x8. Kemudian dilakukan perhitungan rata-rata tiap

kolom (vektor vertikal) sehingga akan menghasilkan rata-rata

edge vertikal 1x8.


71

Hasil Percobaan III:

Angka akurasi untuk feature rata-rata vertikal = 26.6 %.

d. Percobaan IV

Data komponen percobaan:

 20 jenis motif batik Yogyakarta, yaitu Ceplok Kece, Kawung

Galar, Nitik Cengkeh, Parang Barong, Parang Pancing, Parisewuli

Seling Pamor, Truntum, Tambal, Parang Tuding, Parang Keris,

Parang Kusumo Ukel, Parang Curigo, Parang Klitik, Parang

Kembang Sawut Cecek, Ceplok Dempel, Kawung Kembang

Cempoko Hitam, Kawung Picis, Lereng Kusumo, Parang

Kawung Picis, dan Parang Kunci.

 Setiap jenis motif batik memiliki 25 data motif, sehingga total

terdapat 20x25= 500 motif batik.

 Motif batik berukuran 200x200 piksel biner (0 dan 1).

 Motif batik dibagi menjadi 8 vektor vertikal dan 8 vektor

horizontal sehingga terdapat 64 unit masing-masing unit

berukuran 25x25 piksel, kemudian setiap unit dijumlahkan objek

(satu) kemudian dirata-rata, sehingga akan mendapatkan matriks

berukuran 8x8. Kemudian dilakukan perhitungan rata-rata tiap

baris (vektor horizontal) dan tiap kolom (vektor vertikal) sehingga


72

akan menghasilkan rata-rata keseluruhan edge, rata-rata edge

horizontal dan vertikal berukuran 1x80.

Hasil Percobaan IV:

Angka akurasi untuk feature gabungan rata-rata keseluruhan edge,

rata-rata horizontal dan vertikal = 8.6 %.

e. Percobaan V

Daftar komponen percobaan:

 20 jenis motif batik Yogyakarta, yaitu Ceplok Kece, Kawung

Galar, Nitik Cengkeh, Parang Barong, Parang Pancing, Parisewuli

Seling Pamor, Truntum, Tambal, Parang Tuding, Parang Keris,

Parang Kusumo Ukel, Parang Curigo, Parang Klitik, Parang

Kembang Sawut Cecek, Ceplok Dempel, Kawung Kembang

Cempoko Hitam, Kawung Picis, Lereng Kusumo, Parang

Kawung Picis, dan Parang Kunci.

 Setiap jenis motif batik memiliki 25 data motif, sehingga total

terdapat 20x25= 500 motif batik.

 Motif batik berukuran 200x200 piksel biner (0 dan 1).

 Motif batik dibagi menjadi 8 vektor vertikal dan 8 vektor

horizontal sehingga terdapat 64 unit masing-masing unit

berukuran 25x25 piksel, kemudian setiap unit dijumlahkan objek

(satu) kemudian dirata-rata, sehingga akan mendapatkan matriks


73

berukuran 8x8. Kemudian dilakukan perhitungan rata-rata tiap

baris dan kolom sehingga akan menghasilkan rata-rata edge

vertikal dan horizontal berukuran 1x16.

Hasil Percobaan V:

Angka akurasi untuk feature gabungan rata-rata vertikal dan

horizontal = 9.4 %.

f. Percobaan VI

Daftar komponen percobaan:

 20 jenis motif batik Yogyakarta, yaitu Ceplok Kece, Kawung

Galar, Nitik Cengkeh, Parang Barong, Parang Pancing, Parisewuli

Seling Pamor, Truntum, Tambal, Parang Tuding, Parang Keris,

Parang Kusumo Ukel, Parang Curigo, Parang Klitik, Parang

Kembang Sawut Cecek, Ceplok Dempel, Kawung Kembang

Cempoko Hitam, Kawung Picis, Lereng Kusumo, Parang

Kawung Picis, dan Parang Kunci.

 Setiap jenis motif batik memiliki 25 data motif, sehingga total

terdapat 20x25= 500 motif batik.

 Motif batik berukuran 200x200 piksel biner (0 dan 1).

 Motif batik dihitung warna dengan menghitung rata-rata Red,

Blue, dan Green, rata-rata RGB. Dibagi menjadi 8 vektor vertikal

dan 8 vektor horizontal sehingga terdapat 64 unit masing-masing


74

unit berukuran 25x25 piksel, kemudian setiap unit dijumlahkan

objek (satu) kemudian dirata-rata, sehingga akan mendapatkan

matriks berukuran 8x8. Kemudian dilakukan rata-rata tiap baris

(vektor vertikal) dan tiap kolom (vektor horizontal), sehingga

akan mendapatkan matriks perhitungan warna, rata-rata

keseluruhan edge, rata-rata edge vertikal dan horizontal

berukuran 1x87.

Hasil Percobaan VI:

Angka akurasi untuk feature gabungan warna, rata-rata keseluruhan,

rata-rata horizontal dan vertikal = 8.4 %.

g. Percobaan VII

Daftar komponen percobaan:

 20 jenis motif batik Yogyakarta, yaitu Ceplok Kece, Kawung

Galar, Nitik Cengkeh, Parang Barong, Parang Pancing, Parisewuli

Seling Pamor, Truntum, Tambal, Parang Tuding, Parang Keris,

Parang Kusumo Ukel, Parang Curigo, Parang Klitik, Parang

Kembang Sawut Cecek, Ceplok Dempel, Kawung Kembang

Cempoko Hitam, Kawung Picis, Lereng Kusumo, Parang

Kawung Picis, dan Parang Kunci.

 Setiap jenis motif batik memiliki 25 data motif, sehingga total

terdapat 20x25= 500 motif batik.


75

 Motif batik berukuran 200x200 piksel biner (0 dan 1).

 Motif batik dibagi menjadi 8 vektor vertikal dan 8 vektor

horizontal sehingga terdapat 64 unit masing-masing unit berukuran

25x25 piksel, kemudian setiap unit dijumlahkan objek (satu) untuk

setiap kolom, maka akan menghasilkan matriks 1x25 dalam satu

unit. Hasil penjumlahan tersebut dipilih yang bernilai maksimal,

sehingga satu unit terdapat satu nilai penjumlahan edge maksimal

maka keseluruhan menghasilkan mastriks 1x64.

Hasil Percobaan VI:

Angka akurasi untuk feature perhitungan matriks norm = 4 %.


BAB V

KESIMPULAN DAN SARAN

5.1. Kesimpulan

1. Penelitian ini menggunakan data berupa 500 motif batik Yogyakarta yang

telah dikenakan proses training dan testing dengan metode Linear

Discriminant Analysis, dan evaluasi menggunakan metode 5-fold cross

validation. Pengujian akurasi dilakukan terhadap 6 feature. Dari percobaan,

didapati bentuk feature terbaik dalam pengenalan motif batik Yogyakarta

dengan metode Linear Discriminant Analysis yaitu feature rata-rata edge

horizontal, dengan akurasi sebesar 36.4%. Hasil dari pengujian tersebut

dapat dirangkum sebagai berikut:

Tabel 5.1. Rangkuman hasil percobaan

Jenis feature Akurasi (%)


Rata-rata horizontal (1x8 H) 36.4%
Rata-rata keseluruhan edge (64) 34.8%
Rata-rata vertikal (1x8 V) 26.6%
Gabungan rata-rata vertikal dan horizontal 9.4%
Gabungan rata-rata keseluruhan edge, vertikal
8.6%
dan horizontal

Gabungan rata-rata warna, keseluruhan edge,


8.4%
vertikal dan horizontal

76
77

2. Dari hasil pengujian, pengenalan motif batik Yogyakarta dengan metode

Linear Discriminant Analysis dalam menangani data diskret berupa motif

batik Yogyakarta menggunakan 6 bentuk feature di atas relatif kurang baik,

dibuktikan dari hasil akurasi yang kurang baik sekitar 30%.

3. Pengambilan dan pengolahan data motif batik yang kurang maksimal juga

menjadi salah satu penyebab yang mempengaruhi angka akurasi. Warna

motif batik cenderung gelap sehingga pada saat pengolahan feature nilai

yang dihasilkan saling mendekati antara motif batik yang satu dan yang

lainnya.

4. Pengenalan dan pengujian metode Linear Discriminant Analysis dalam

menangani motif batik Yogyakarta membutuhkan langkah-langkah:

- Ekstraksi feature dan pencarian bentuk feature terbaik.

- Membaca hasil dari ekstraksi feature yang nantinya akan dihitung

dalam fungsi analisis diskriminan.

- Membuat model untuk 20 motif batik yang didapat dari perhitungan

fungsi analisis diskriminan.

- Pencocokan kemiripan data masukan dengan model yang telah

dibentuk yaitu dengan membandingkan hasil perhitungan fungsi

diskriminan data masukan dengan model hasil perhitungan fungsi

diskriminan 20 motif batik. Jika angka hasil perhitungan data masukan

mendekati dengan angka hasil perhitungan data model, maka data


78

masukan akan masuk ke kelompok yang angkanya mendekati dengan

model.

5. Evaluasi angka akurasi dapat dihitung dengan algoritma 5-fold cross

validation. Metode evaluasi ini membagi data menjadi 5 bagian, yang

mana 4 bagian menjadi data training dan 1 bagian menjadi data testing.

Algoritma 5-fold cross validation menghasilkan sebuah confusion matrix.

Angka akurasi keseluruhan didapat dari perhitungan diagonal dari

confusion matrix tersebut.

5.2. Saran

Beberapa saran yang dapat diuraikan dalam pengenalan motif batik

Yogyakarta yang didapati pada penelitian ini, yaitu:

1. Penelitian tentang pengenalan motif batik Yogyakarta ini masih sebatas pada

pengenalan 20 motif batik Yogyakarta, sehingga diperlukan studi lanjut untuk

menangani beberapa motif batik Yogyakarta dan terlebih lagi untuk menangani

batik luar Yogyakarta.

2. Pengambilan data citra motif batik Yogyakarta yang kurang maksimal menjadi

salah satu penyebab nilai akurasi tidak tinggi. Dalam pengolahan data motif batik

tidak ada proses image enhancement, yaitu proses perbaikkan peningkatan warna

kontras suatu image. Warna citra motif batik yang diambil cenderung gelap,

sehingga nilai yang dihasilkan dalam proses pengolahan feature sebagian besar
79

mendekati antara motif batik yang satu dan yang lainnya. Oleh karena itu, proses

image enhancement dan proses cropping yang pas sangat penting dalam proses

pengambilan data citra motif batik.

3. Hasil akurasi yang tidak tinggi (sekitar 30%) juga karena feature yang digunakan

masih kurang tepat dalam menangani pengenalan motif batik Yogyakarta ini.

Seluruh kemungkinan feature harus dicoba untuk menghasilkan akurasi LDA

yang terbaik.
80

DAFTAR PUSTAKA

Abdullah. (2007). Pengembangan Sistem Identifikasi Buah-Buahan Menggunakan

Ciri Bentuk. Mean dan Standar Deviasi Warna. Jurnal Teknologi industry Vol.

XI: 237-244.

Hamzahan, A., Santosa, G., dan Widiarto, W. (2002), Klasifikasi Objek dalam Visi

Komputer dengan Analisis Diskriminan, 1 – 3.

Hariani, Meika P. (2007), Pengenalan Wajah Manusia Menggunakan Transformasi

Wavelet dan LDA (Linear Discriminant Analysis),1.

Indira, Merly., dkk. (2008). Perbandingan Metode Pendeteksi tepi Studi Kasus: Citra

USG Janin, 2 - 3.

Ginting, Elias Dianta. (2009). Deteksi Tepi Menggunakan metode Canny dengan

Matlab untuk Membedakan Uang Asli dan Uang Palsu, 1 – 5.

Johnson, R. A. and Wichern, D. W. (1998), Applied Multivariate Statistical Analysis,

Prentice Hall, Fourth Edition.

Li, C., Cao, Q., dan Guo, F. 2009. A Method for Color Classification of FruitsBased

on Machine Vision. Shanghai: Shanghai Jiao Tong University.

Lim, Resmana. (2002), Pengenalan Karakter Tulisan Tangan Menggunakan Ekstrasi

Fitur PCA dan LDA, 1 – 2.

Mei Chan, L., Tan, R., dan Thio, G. 2007. Design of Visual-based Color

Classification System, School of Engineering, UCSI.


81

RiyNto Sigit, dkk. (2002), Aplikasi Neural Network pada Pengenalan Pola Tanda

Tangan, Institut Teknologi Sepuluh November, Surabaya, Indonesia.

Santosa, Budi. (2007), Data Mining Teknik Pemanfaatan Data untuk Keperluan

Bisnis, Graha Ilmu, Yogyakarta, 57 – 66.

Surahman, Adhi, (2006). Penyembunyian Teks pada Citra Dua Warna Menggunakan

Steganografi, Politeknik Elektronika Negeri, Surabaya, Indonesia.

Wastu, Phalita Nari. (2009), Pengenalan Aksara Jawa Menggunakan Metode Hidden

Markov Models.

Witten, Frank. (2005), Data Mining: Practical machine learning Tools and

Techinigues.

Wongtapan, C., Theeramunkong, T., and Sinthupinyo, S. 2001. Off-line Isolated

Handwritten Thai OCR Using Islandbased Projection with N-gram Models and

HMM. IEE.

http://people.revoledu.com/kardi/tutorial/LDA/LinearDiscriminantAnalysis(LDA)

Tutorial.html. Diakses pada tanggal: 31 Mei 2010.


LAMPIRAN I
CODING PROGRAM
82

1. Listing program hal_fase_pengenalan.m

function varargout = hal_fase_pengenalan(varargin)


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

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

function hal_fase_pengenalan_OpeningFcn(hObject, eventdata,


handles, varargin)
handles.output = hObject;
guidata(hObject, handles);

function varargout = hal_fase_pengenalan_OutputFcn(hObject,


eventdata, handles)
varargout{1} = handles.output;

function button_browse_Callback(hObject, eventdata, handles)


set(handles.textFeature,'string','');
set(handles.text6,'string','');
set(handles.text7,'string','');
set(handles.text10,'string','');
set(handles.text11,'string','');
set(handles.text8,'string','');
set(handles.text12,'string','');
set(handles.text13,'string','');
set(handles.textDikenal,'string','');

[filename, pathname] = uigetfile({'*.jpg'}, 'File Selector');


charfilename = char(filename);

if isequal(filename,0)|isequal(pathname,0)
errordlg('File not found.','Warning');
end;

set(handles.edit_browse,'string',charfilename);
83

image_file = get(handles.edit_browse,'String'); % Get the string


inputs in the inEdit
current_data1=imread(char(image_file)); %read the image

if ~isequal(filename, 0)
handles.data1 = imread(fullfile(pathname, filename));
guidata(hObject, handles);
handles.current_data1=handles.data1;
axes(handles.gambar);
imshow(handles.current_data1);
else
return;
end

function edit_browse_CreateFcn(hObject, eventdata, handles)


if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit_browse_Callback(hObject, eventdata, handles)

function pushbutton_proses_Callback(hObject, eventdata, handles)


set(handles.textFeature,'string','');
set(handles.text6,'string','');
set(handles.text7,'string','');
set(handles.text8,'string','');
set(handles.text10,'string','');
set(handles.text11,'string','');
set(handles.text12,'string','');
set(handles.text13,'string','');
set(handles.textDikenal,'string','');

image_file=get(handles.edit_browse,'String'); %Get the string


inputs in the inEdit
nama_file=char(image_file);
display(nama_file);

if ~isempty(image_file)
set(handles.textFeature,'string','Sedang membentuk
feature...');
createFeatureTest(nama_file);
test2;
set(handles.text6,'string','Mencocokan dengan model...');
LDA_test;
end;
84

2. Listing program hal_ pengujian.m

function varargout = hal_pengujian(varargin)


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

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

function hal_pengujian_OpeningFcn(hObject, eventdata, handles,


varargin)
handles.output = hObject;
guidata(hObject, handles);

function varargout = hal_pengujian_OutputFcn(hObject, eventdata,


handles)
varargout{1} = handles.output;

function popupmenuFeature_Callback(hObject, eventdata, handles)


set(handles.text23,'string','');
set(handles.text40,'string','');
set(handles.textFeature,'string','');
set(handles.textProses,'string','');
set(handles.textProses2,'string','');
set(handles.textProses3,'string','');
set(handles.textProses4,'string','');
set(handles.textJumData,'string','');
set(handles.textDikenal,'string','');
set(handles.textTakDikenal,'string','');
set(handles.textAkurasi,'string','');

function popupmenuFeature_CreateFcn(hObject, eventdata, handles)


if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
85

function pushbuttonUjiLDA_Callback(hObject, eventdata, handles)


set(handles.text40,'string','');
set(handles.textFeature,'string','');
set(handles.textProses,'string','');
set(handles.textProses2,'string','');
set(handles.textProses3,'string','');
set(handles.textProses4,'string','');
set(handles.textJumData,'string','');
set(handles.textDikenal,'string','');
set(handles.textTakDikenal,'string','');
set(handles.textAkurasi,'string','');

selected_cmd = get(handles.popupmenuFeature,'Value');
set(handles.text23,'string','Sedang membentuk feature, mohon
tunggu...');
pause (1);
switch selected_cmd;
case 1 % user selected feature 1x64
tic
createFeature1x64;
toc
waktu = toc;
array=[num2str(waktu) 'detik'];
pause (1);
set(handles.text40,'string',array);
pause (1);
set(handles.textFeature,'string','Feature rata-rata edge
berhasil dibuat.');
readSemuaDirektori_1x64;
set(handles.textProses,'string','Sedang memproses fase
pengujian...');
pause (1);
TrainingLDA_1x64;
jumlahTotalConfusion;
pause (1);
set(handles.textProses3,'string','Seluruh training
selesai...');
set(handles.textProses4,'string','Proses fase pengujian
selesai.');

case 2 % user selected feature 1x8 Horizontal (H)


tic
createFeature1x8_H;
toc
waktu = toc;
array=[num2str(waktu) 'detik'];
pause (1);
set(handles.text40,'string',array);
pause (1);
set(handles.textFeature,'string','Feature rata-rata edge
Horizontal (H) berhasil dibuat.');
86

readSemuaDirektori_1x8H;
set(handles.textProses,'string','Sedang memproses fase
pengujian...');
pause (1);
TrainingLDA_Horizontal;
jumlahTotalConfusion;
pause (1);
set(handles.textProses3,'string','Seluruh training
selesai...');
set(handles.textProses4,'string','Proses fase pengujian
selesai.');

case 3 % user selected feature 1x8 Vertikal (V)


tic
createFeature1x8_V;
toc
waktu = toc;
array=[num2str(waktu) 'detik'];
pause (1);
set(handles.text40,'string',array);
pause (1);
set(handles.textFeature,'string','Feature rata-rata edge
Vertikal (V) berhasil dibuat.');
pause (1);
readSemuaDirektori_1x8V;
set(handles.textProses,'string','Sedang memproses fase
pengujian...');
pause (1);
TrainingLDA_Vertikal;
jumlahTotalConfusion;
pause (1);
set(handles.textProses3,'string','Seluruh training
selesai...');
set(handles.textProses4,'string','Proses fase pengujian
selesai.');

case 4 % user selected feature 1x8H_1x8V


tic
createFeature1x8_V_H();
toc
waktu = toc;
array=[num2str(waktu) 'detik'];
pause (1);
set(handles.text40,'string',array);
pause (1);
set(handles.textFeature,'string','Feature rata-rata
vertikal dan horizontal berhasil dibuat.');
pause (1);
readSemuaDirektori_1x8VH;
set(handles.textProses,'string','Sedang memproses
fasepengujian...');
87

pause (1);
TrainingLDA_VH;
jumlahTotalConfusion;
pause (1);
set(handles.textProses3,'string','Seluruh training
selesai...');
set(handles.textProses4,'string','Proses fase pengujian
selesai.');

case 5 % user selected feature 1x64_1x8H_1x8V


tic
createFeature1x64_H_V();
toc
waktu = toc;
array=[num2str(waktu) 'detik'];
pause (1);
set(handles.text40,'string',array);
pause (1);
set(handles.textFeature,'string','Feature gabungan rata-
rata edge dan rata-rata vertikal horizontal berhasil dibuat.');
pause (1);
readSemuaDirektori_1x64_1x8VH;
set(handles.textProses,'string','Sedang memproses fase
pengujian...');
pause (1);
TrainingLDA_1x64_VH;
jumlahTotalConfusion;
pause (1);
set(handles.textProses3,'string','Seluruh training
selesai...');
set(handles.textProses4,'string','Proses fase pengujian
selesai.');

case 6 % user selected feature Warna_1x8H_1x8V_1x64


tic
createFeatureWarna_H_V();
toc
waktu = toc;
array=[num2str(waktu) 'detik'];
pause (1);
set(handles.text40,'string',array);
pause (1);
set(handles.textFeature,'string','Feature warna,rata-rata
edge,dan rata-rata vertikal horizontal berhasil dibuat.');
pause (1);
readSemuaDirektori_warna_1x64_1x8VH;
set(handles.textProses,'string','Sedang memproses fase
pengujian...');
pause (1);
TrainingLDA_warna1x64_VH;
jumlahTotalConfusion;
88

pause (1);
set(handles.textProses3,'string','Seluruh training
selesai...');
set(handles.textProses4,'string','Proses fase pengujian
selesai.');
end

3. Listing program createFeature1x64.m


function createFeature1x64()

dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ...


'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ...
'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ...
'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};

for m=1:length(dirData)
%masuk ke direktori dan membaca file
cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg
jum_jpg = length(fileJpg);

for n=1:length(fileJpg)

batik = imread(fileJpg(n).name);
info=[];

gray=rgb2gray(batik);
motif = edge(gray, 'canny'); %deteksi tepi menggunakan canny
tinggi=size(motif,1);
lebar=size(motif,2);

%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0;
sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0;
sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0;
sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0;
sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0;
sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0;
sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0;
sum64=0;

obyek = 1;

for i=1:25
for j=1:25
if (motif(i,j)==obyek) sum1=sum1+1; end %tambahkan 1 tiap
89

menemukan obyek
end
end

for i=1:25
for j=26:50
if (motif(i,j)==obyek) sum2=sum2+1; end
end
end

for i=1:25
for j=51:75
if (motif(i,j)==obyek) sum3=sum3+1; end
end
end

for i=1:25
for j=76:100
if (motif(i,j)==obyek) sum4=sum4+1; end
end
end

for i=1:25
for j=101:125
if (motif(i,j)==obyek) sum5=sum5+1; end
end
end

for i=1:25
for j=126:150
if (motif(i,j)==obyek) sum6=sum6+1; end
end
end

for i=1:25
for j=151:175
if (motif(i,j)==obyek) sum7=sum7+1; end
end
end

for i=1:25
for j=176:200
if (motif(i,j)==obyek) sum8=sum8+1; end
end
end

mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625;


mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625;

for i=26:50
for j=1:25
if (motif(i,j)==obyek) sum9=sum9+1; end %tambahkan 1 tiap
menemukan obyek
end
end

for i=26:50
for j=26:50
90

if (motif(i,j)==obyek) sum10=sum10+1; end


end
end

for i=26:50
for j=51:75
if (motif(i,j)==obyek) sum11=sum11+1; end
end
end

for i=26:50
for j=76:100
if (motif(i,j)==obyek) sum12=sum12+1; end
end
end

for i=26:50
for j=101:125
if (motif(i,j)==obyek) sum13=sum13+1; end
end
end

for i=26:50
for j=126:150
if (motif(i,j)==obyek) sum14=sum14+1; end
end
end

for i=26:50
for j=151:175
if (motif(i,j)==obyek) sum15=sum15+1; end
end
end

for i=26:50
for j=176:200
if (motif(i,j)==obyek) sum16=sum16+1; end
end
end

mean9=sum9/625; mean10=sum10/625; mean11=sum11/625;


mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625;
mean16=sum16/625;

for i=51:75
for j=1:25
if (motif(i,j)==obyek) sum17=sum17+1; end %tambahkan 1 tiap
menemukan obyek
end
end

......

for i=51:75
for j=176:200
if (motif(i,j)==obyek) sum24=sum24+1; end
91

end
end

mean17=sum17/625; mean18=sum18/625; mean19=sum19/625;


mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625;
mean24=sum24/625;

for i=76:100
for j=1:25
if (motif(i,j)==obyek) sum25=sum25+1; end %tambahkan 1 tiap
menemukan obyek
end
end

......

for i=76:100
for j=176:200
if (motif(i,j)==obyek) sum32=sum32+1; end
end
end

mean25=sum25/625; mean26=sum26/625; mean27=sum27/625;


mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625;
mean32=sum32/625;

for i=101:125
for j=1:25
if (motif(i,j)==obyek) sum33=sum33+1; end %tambahkan 1 tiap
menemukan obyek
end
end

......

for i=101:125
for j=176:200
if (motif(i,j)==obyek) sum40=sum40+1; end
end
end

mean33=sum33/625; mean34=sum34/625; mean35=sum35/625;


mean36=sum36/625;
mean37=sum37/625; mean38=sum38/625; mean39=sum39/625;
mean40=sum40/625;

for i=126:150
for j=1:25
if (motif(i,j)==obyek) sum41=sum41+1; end
end
end

.....
92

for i=126:150
for j=176:200
if (motif(i,j)==obyek) sum48=sum48+1; end
end
end

mean41=sum41/625; mean42=sum42/625; mean43=sum43/625;


mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625;
mean48=sum48/625;

for i=151:175
for j=1:25
if (motif(i,j)==obyek) sum49=sum49+1; end
end
end

.......

for i=151:175
for j=176:200
if (motif(i,j)==obyek) sum56=sum56+1; end
end
end

mean49=sum49/625; mean50=sum50/625; mean51=sum51/625;


mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625;
mean56=sum56/625;

for i=176:200
for j=1:25
if (motif(i,j)==obyek) sum57=sum57+1; end
end
end

......

for i=176:200
for j=176:200
if (motif(i,j)==obyek) sum64=sum64+1; end
end
end

mean57=sum57/625; mean58=sum58/625; mean59=sum59/625;


mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625;
mean64=sum64/625;

%hasil rata-rata dimasukkan dalam variabel info


info = [info, mean1, mean2, mean3, mean4, mean5, mean6, mean7,
mean8, mean9, mean10,...
mean11, mean12, mean13, mean14, mean15, mean16, mean17, mean18,
mean19, mean20,...
93

mean21, mean22, mean23, mean24, mean25, mean26, mean27, mean28,


mean29, mean30,...
mean31, mean32, mean33, mean34, mean35, mean36, mean37, mean38,
mean39, mean40,...
mean41, mean42, mean43, mean44, mean45, mean46, mean47, mean48,
mean49, mean50,...
mean51, mean52, mean53, mean54, mean55, mean56, mean57, mean58,
mean59, mean60,...
mean61, mean62, mean63, mean64];

%hasil feature ke dalam .nw


nama_file =[num2str(m) '_' num2str(n) '.a'];
fid1=fopen(nama_file,'w');
fwrite(fid1, [num2str(info)]);
fclose(fid1);

end
cd ..;
end

4. Listing program createFeature_1x64_H_V.m

function createFeature1x64_H_V(jum)

dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ...


'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ...
'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ...
'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};

for m=1:length(dirData)
%masuk ke direktori dan membaca file
cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg
jum_jpg = length(fileJpg);

for n=1:length(fileJpg)

batik = imread(fileJpg(n).name);

info=[];

gray=rgb2gray(batik);
motif = edge(gray, 'canny'); %deteksi tepi menggunakan canny
tinggi=size(motif,1);
lebar=size(motif,2);

%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0;
sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0;
sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0;
sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0;
94

sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0;
sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0;
sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0;
sum64=0;

obyek = 1;

for i=1:25
for j=1:25
if (motif(j,i)==obyek) sum1=sum1+1; end %tambahkan 1 tiap
menemukan obyek
end
end

for i=1:25
for j=26:50
if (motif(j,i)==obyek) sum2=sum2+1; end
end
end

for i=1:25
for j=51:75
if (motif(j,i)==obyek) sum3=sum3+1; end
end
end

for i=1:25
for j=76:100
if (motif(j,i)==obyek) sum4=sum4+1; end
end
end

for i=1:25
for j=101:125
if (motif(j,i)==obyek) sum5=sum5+1; end
end
end

for i=1:25
for j=126:150
if (motif(j,i)==obyek) sum6=sum6+1; end
end
end

for i=1:25
for j=151:175
if (motif(j,i)==obyek) sum7=sum7+1; end
end
end

for i=1:25
for j=176:200
if (motif(j,i)==obyek) sum8=sum8+1; end
end
end
95

mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625;


mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625;
meanTotV1=(mean1+mean2+mean3+mean4+mean5+mean6+mean7+mean8)/8;

for i=26:50
for j=1:25
if (motif(j,i)==obyek) sum9=sum9+1; end
end
end

.......

for i=26:50
for j=176:200
if (motif(j,i)==obyek) sum16=sum16+1; end
end
end

mean9=sum9/625; mean10=sum10/625; mean11=sum11/625;


mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625;
mean16=sum16/625;

meanTotV2=(mean9+mean10+mean11+mean12+mean13+mean14+mean15+mean16)/8;

for i=51:75
for j=1:25
if (motif(j,i)==obyek) sum17=sum17+1; end
end
end

........

for i=51:75
for j=176:200
if (motif(j,i)==obyek) sum24=sum24+1; end
end
end

mean17=sum17/625; mean18=sum18/625; mean19=sum19/625;


mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625;
mean24=sum24/625;

meanTotV3=(mean17+mean18+mean19+mean20+mean21+mean22+mean23+mean24)/8;

for i=76:100
for j=1:25
if (motif(j,i)==obyek) sum25=sum25+1; end
end
end

..........

for i=76:100
for j=176:200
if (motif(j,i)==obyek) sum32=sum32+1; end
96

end
end

mean25=sum25/625; mean26=sum26/625; mean27=sum27/625;


mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625;
mean32=sum32/625;

meanTotV4=(mean25+mean26+mean27+mean28+mean29+mean30+mean31+mean32)/8;

for i=101:125
for j=1:25
if (motif(j,i)==obyek) sum33=sum33+1; end
end
end

.......

for i=101:125
for j=176:200
if (motif(j,i)==obyek) sum40=sum40+1; end
end
end

mean33=sum33/625; mean34=sum34/625; mean35=sum35/625;


mean36=sum36/625;
mean37=sum37/625; mean38=sum38/625; mean39=sum39/625;
mean40=sum40/625;

meanTotV5=(mean33+mean34+mean35+mean36+mean37+mean38+mean39+mean40)/8;

for i=126:150
for j=1:25
if (motif(j,i)==obyek) sum41=sum41+1; end
end
end

........

for i=126:150
for j=176:200
if (motif(j,i)==obyek) sum48=sum48+1; end
end
end

mean41=sum41/625; mean42=sum42/625; mean43=sum43/625;


mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625;
mean48=sum48/625;

meanTotV6=(mean41+mean42+mean43+mean44+mean45+mean46+mean47+mean48)/8;

for i=151:175
for j=1:25
if (motif(j,i)==obyek) sum49=sum49+1; end
end
end
97

......

for i=151:175
for j=176:200
if (motif(j,i)==obyek) sum56=sum56+1; end
end
end

mean49=sum49/625; mean50=sum50/625; mean51=sum51/625;


mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625;
mean56=sum56/625;

meanTotV7=(mean49+mean50+mean51+mean52+mean53+mean54+mean55+mean56)/8;

for i=176:200
for j=1:25
if (motif(j,i)==obyek) sum57=sum57+1; end
end
end

.......

for i=176:200
for j=176:200
if (motif(j,i)==obyek) sum64=sum64+1; end
end
end

mean57=sum57/625; mean58=sum58/625; mean59=sum59/625;


mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625;
mean64=sum64/625;

meanTotV8=(mean57+mean58+mean59+mean60+mean61+mean62+mean63+mean64)/8;

%rata-rata untuk 1x8 horizontal

meanTotH1=(mean1+mean9+mean17+mean25+mean33+mean41+mean49+mean57)/8;

meanTotH2=(mean2+mean10+mean18+mean26+mean34+mean42+mean50+mean58)/8;

meanTotH3=(mean3+mean11+mean19+mean27+mean35+mean43+mean51+mean59)/8;

meanTotH4=(mean4+mean12+mean20+mean28+mean36+mean44+mean52+mean60)/8;

meanTotH5=(mean5+mean13+mean21+mean29+mean37+mean45+mean53+mean61)/8;

meanTotH6=(mean6+mean14+mean22+mean30+mean38+mean46+mean54+mean62)/8;

meanTotH7=(mean7+mean15+mean23+mean31+mean39+mean47+mean55+mean63)/8;

meanTotH8=(mean8+mean16+mean24+mean32+mean40+mean48+mean56+mean64)/8;

info = [info, mean1, mean2, mean3, mean4, mean5, mean6, mean7,


mean8, mean9, mean10,...
mean11, mean12, mean13, mean14, mean15, mean16, mean17,
mean18, mean19, mean20,...
98

mean21, mean22, mean23, mean24, mean25, mean26, mean27,


mean28, mean29, mean30,...
mean31, mean32, mean33, mean34, mean35, mean36, mean37,
mean38, mean39, mean40,...
mean41, mean42, mean43, mean44, mean45, mean46, mean47,
mean48, mean49, mean50,...
mean51, mean52, mean53, mean54, mean55, mean56, mean57,
mean58, mean59, mean60,...
mean61, mean62, mean63, mean64, meanTotV1, meanTotV2,
meanTotV3, meanTotV4, meanTotV5, meanTotV6,...
meanTotV7, meanTotV8, meanTotH1, meanTotH2, meanTotH3,
meanTotH4, meanTotH5, meanTotH6, meanTotH7, meanTotH8];

%hasil feature ke dalam .nw


nama_file =[num2str(m) '_' num2str(n) '.avh'];
fid1=fopen(nama_file,'w');
fwrite(fid1, [num2str(info)]);
fclose(fid1);
end
cd ..;
end

5. Listing program createFeature_1x8H.m

function createFeature1x8_H()

dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ...


'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ...
'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ...
'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};

for m=1:length(dirData)
%masuk ke direktori dan membaca file
cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg
jum_jpg = length(fileJpg);

for n=1:length(fileJpg)

batik = imread(fileJpg(n).name); %baca citra

info=[];

gray=rgb2gray(batik);
motif=edge(gray,'canny');
tinggi=size(motif,1); %hitung tinggi citra
lebar=size(motif,2); %hitung lebar citra

%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0;
sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0;
sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0;
99

sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0;
sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0;
sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0;
sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0;
sum64=0;

obyek = 1;

for i=1:25
for j=1:25
if (motif(i,j)==obyek) sum1=sum1+1; end %tambahkan 1 tiap
menemukan obyek
end
end

for i=1:25
for j=26:50
if (motif(i,j)==obyek) sum2=sum2+1; end
end
end

for i=1:25
for j=51:75
if (motif(i,j)==obyek) sum3=sum3+1; end
end
end

for i=1:25
for j=76:100
if (motif(i,j)==obyek) sum4=sum4+1; end
end
end

for i=1:25
for j=101:125
if (motif(i,j)==obyek) sum5=sum5+1; end
end
end

for i=1:25
for j=126:150
if (motif(i,j)==obyek) sum6=sum6+1; end
end
end

for i=1:25
for j=151:175
if (motif(i,j)==obyek) sum7=sum7+1; end
end
end

for i=1:25
for j=176:200
if (motif(i,j)==obyek) sum8=sum8+1; end
100

end
end

mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625;


mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625;
meanTot1=(mean1+mean2+mean3+mean4+mean5+mean6+mean7+mean8)/8;

for i=26:50
for j=1:25
if (motif(i,j)==obyek) sum9=sum9+1; end
end
end

........

for i=26:50
for j=176:200
if (motif(i,j)==obyek) sum16=sum16+1; end
end
end

mean9=sum9/625; mean10=sum10/625; mean11=sum11/625;


mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625;
mean16=sum16/625;

meanTot2=(mean9+mean10+mean11+mean12+mean13+mean14+mean15+mean16)/8;

for i=51:75
for j=1:25
if (motif(i,j)==obyek) sum17=sum17+1; end
end
end

.......

for i=51:75
for j=176:200
if (motif(i,j)==obyek) sum24=sum24+1; end
end
end

mean17=sum17/625; mean18=sum18/625; mean19=sum19/625;


mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625;
mean24=sum24/625;

meanTot3=(mean17+mean18+mean19+mean20+mean21+mean22+mean23+mean24)/8;

for i=76:100
for j=1:25
if (motif(i,j)==obyek) sum25=sum25+1; end
end
end

.......

for i=76:100
101

for j=176:200
if (motif(i,j)==obyek) sum32=sum32+1; end
end
end

mean25=sum25/625; mean26=sum26/625; mean27=sum27/625;


mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625;
mean32=sum32/625;

meanTot4=(mean25+mean26+mean27+mean28+mean29+mean30+mean31+mean32)/8;

for i=101:125
for j=1:25
if (motif(i,j)==obyek) sum33=sum33+1; end
end
end

........

for i=101:125
for j=176:200
if (motif(i,j)==obyek) sum40=sum40+1; end
end
end

mean33=sum33/625; mean34=sum34/625; mean35=sum35/625;


mean36=sum36/625;
mean37=sum37/625; mean38=sum38/625; mean39=sum39/625;
mean40=sum40/625;

meanTot5=(mean33+mean34+mean35+mean36+mean37+mean38+mean39+mean40)/8;

for i=126:150
for j=1:25
if (motif(i,j)==obyek) sum41=sum41+1; end
end
end

.......

for i=126:150
for j=176:200
if (motif(i,j)==obyek) sum48=sum48+1; end
end
end

mean41=sum41/625; mean42=sum42/625; mean43=sum43/625;


mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625;
mean48=sum48/625;

meanTot6=(mean41+mean42+mean43+mean44+mean45+mean46+mean47+mean48)/8;

for i=151:175
for j=1:25
if (motif(i,j)==obyek) sum49=sum49+1; end
end
102

end

......

for i=151:175
for j=176:200
if (motif(i,j)==obyek) sum56=sum56+1; end
end
end

mean49=sum49/625; mean50=sum50/625; mean51=sum51/625;


mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625;
mean56=sum56/625;

meanTot7=(mean49+mean50+mean51+mean52+mean53+mean54+mean55+mean56)/8;

for i=176:200
for j=1:25
if (motif(i,j)==obyek) sum57=sum57+1; end
end
end

......

for i=176:200
for j=176:200
if (motif(i,j)==obyek) sum64=sum64+1; end
end
end

mean57=sum57/625; mean58=sum58/625; mean59=sum59/625;


mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625;
mean64=sum64/625;

meanTot8=(mean57+mean58+mean59+mean60+mean61+mean62+mean63+mean64)/8;

%hasil rata-rata dimasukkan dalam variabel nfo


info = [info, meanTot1, meanTot2, meanTot3, meanTot4, meanTot5,
meanTot6, meanTot7, meanTot8];

%hasil feature ke dalam .nw


nama_file =[num2str(m) '_' num2str(n) '.h'];
fid1=fopen(nama_file,'w');
fwrite(fid1, [num2str(info)]);
fclose(fid1);
end
cd ..;
end

6. Listing program createFeature_1x8_V.m

function createFeature1x8_V()
103

dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ...


'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ...
'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ...
'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};

for m=1:length(dirData)
%masuk ke direktori dan membaca file
cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg
jum_jpg = length(fileJpg);

for n=1:length(fileJpg)

batik = imread(fileJpg(n).name); %baca citra


info=[]; % matriks info kepadatan

gray=rgb2gray(batik);
motif=edge(gray,'canny');
tinggi=size(motif,1);
lebar=size(motif,2);

%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0;
sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0;
sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0;
sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0;
sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0;
sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0;
sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0;
sum64=0;
meanTot1=0; meanTot2=0; meanTot3=0; meanTot4=0; meanTot5=0;
meanTot6=0; meanTot7=0; meanTot8=0;

obyek = 1;

for i=1:25
for j=1:25
if (motif(j,i)==obyek) sum1=sum1+1; end %tambahkan 1 tiap
menemukan obyek
end
end

for i=1:25
for j=26:50
if (motif(j,i)==obyek) sum2=sum2+1; end
end
end

for i=1:25
for j=51:75
if (motif(j,i)==obyek) sum3=sum3+1; end
104

end
end

for i=1:25
for j=76:100
if (motif(j,i)==obyek) sum4=sum4+1; end
end
end

for i=1:25
for j=101:125
if (motif(j,i)==obyek) sum5=sum5+1; end
end
end

for i=1:25
for j=126:150
if (motif(j,i)==obyek) sum6=sum6+1; end
end
end

for i=1:25
for j=151:175
if (motif(j,i)==obyek) sum7=sum7+1; end
end
end

for i=1:25
for j=176:200
if (motif(j,i)==obyek) sum8=sum8+1; end
end
end

mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625;


mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625;
meanTot1=(mean1+mean2+mean3+mean4+mean5+mean6+mean7+mean8)/8;

for i=26:50
for j=1:25
if (motif(j,i)==obyek) sum9=sum9+1; end
end
end

......

for i=26:50
for j=176:200
if (motif(j,i)==obyek) sum16=sum16+1; end
end
end

mean9=sum9/625; mean10=sum10/625; mean11=sum11/625;


mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625;
mean16=sum16/625;

meanTot2=(mean9+mean10+mean11+mean12+mean13+mean14+mean15+mean16)/8;
105

for i=51:75
for j=1:25
if (motif(j,i)==obyek) sum17=sum17+1; end
end
end

.........

for i=51:75
for j=176:200
if (motif(j,i)==obyek) sum24=sum24+1; end
end
end

mean17=sum17/625; mean18=sum18/625; mean19=sum19/625;


mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625;
mean24=sum24/625;

meanTot3=(mean17+mean18+mean19+mean20+mean21+mean22+mean23+mean24)/8;

for i=76:100
for j=1:25
if (motif(j,i)==obyek) sum25=sum25+1; end
end
end

.........

for i=76:100
for j=176:200
if (motif(j,i)==obyek) sum32=sum32+1; end
end
end

mean25=sum25/625; mean26=sum26/625; mean27=sum27/625;


mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625;
mean32=sum32/625;

meanTot4=(mean25+mean26+mean27+mean28+mean29+mean30+mean31+mean32)/8;

for i=101:125
for j=1:25
if (motif(j,i)==obyek) sum33=sum33+1; end
end
end

.........

for i=101:125
for j=176:200
if (motif(j,i)==obyek) sum40=sum40+1; end
end
end

mean33=sum33/625; mean34=sum34/625; mean35=sum35/625;


mean36=sum36/625;
106

mean37=sum37/625; mean38=sum38/625; mean39=sum39/625;


mean40=sum40/625;

meanTot5=(mean33+mean34+mean35+mean36+mean37+mean38+mean39+mean40)/8;

for i=126:150
for j=1:25
if (motif(j,i)==obyek) sum41=sum41+1; end
end
end

.........

for i=126:150
for j=176:200
if (motif(j,i)==obyek) sum48=sum48+1; end
end
end

mean41=sum41/625; mean42=sum42/625; mean43=sum43/625;


mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625;
mean48=sum48/625;

meanTot6=(mean41+mean42+mean43+mean44+mean45+mean46+mean47+mean48)/8;

for i=151:175
for j=1:25
if (motif(j,i)==obyek) sum49=sum49+1; end
end
end

.........

for i=151:175
for j=176:200
if (motif(j,i)==obyek) sum56=sum56+1; end
end
end

mean49=sum49/625; mean50=sum50/625; mean51=sum51/625;


mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625;
mean56=sum56/625;

meanTot7=(mean49+mean50+mean51+mean52+mean53+mean54+mean55+mean56)/8;

for i=176:200
for j=1:25
if (motif(j,i)==obyek) sum57=sum57+1; end
end
end

.........

for i=176:200
for j=176:200
if (motif(j,i)==obyek) sum64=sum64+1; end
107

end
end

mean57=sum57/625; mean58=sum58/625; mean59=sum59/625;


mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625;
mean64=sum64/625;

meanTot8=(mean57+mean58+mean59+mean60+mean61+mean62+mean63+mean64)/8;

%hasil rata-rata dimasukkan dalam variabel nfo


info = [info, meanTot1, meanTot2, meanTot3, meanTot4, meanTot5,
meanTot6, meanTot7, meanTot8];

%hasil feature ke dalam .v


nama_file =[num2str(m) '_' num2str(n) '.v'];
fid1=fopen(nama_file,'w');
fwrite(fid1, [num2str(info)]);
fclose(fid1);
end
cd ..;
end

7. Listing program createFeature_1x8_V_H.m

function createFeature1x8_V_H()

dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ...


'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ...
'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ...
'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};

for m=1:length(dirData)
%masuk ke direktori dan membaca file
cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg
jum_jpg = length(fileJpg);

for n=1:length(fileJpg)

batik = imread(fileJpg(n).name);
info=[];

gray=rgb2gray(batik);
motif = edge(gray, 'canny'); %deteksi tepi menggunakan canny
tinggi=size(motif,1);
lebar=size(motif,2);

%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0;
sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0;
sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0;
108

sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0;
sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0;
sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0;
sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0;
sum64=0;

obyek = 1;

for i=1:25
for j=1:25
if (motif(j,i)==obyek) sum1=sum1+1; end %tambahkan 1 tiap
menemukan obyek
end
end

for i=1:25
for j=26:50
if (motif(j,i)==obyek) sum2=sum2+1; end
end
end

for i=1:25
for j=51:75
if (motif(j,i)==obyek) sum3=sum3+1; end
end
end

for i=1:25
for j=76:100
if (motif(j,i)==obyek) sum4=sum4+1; end
end
end

for i=1:25
for j=101:125
if (motif(j,i)==obyek) sum5=sum5+1; end
end
end

for i=1:25
for j=126:150
if (motif(j,i)==obyek) sum6=sum6+1; end
end
end

for i=1:25
for j=151:175
if (motif(j,i)==obyek) sum7=sum7+1; end
end
end

for i=1:25
for j=176:200
if (motif(j,i)==obyek) sum8=sum8+1; end
109

end
end

mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625;


mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625;
meanTotV1=(mean1+mean2+mean3+mean4+mean5+mean6+mean7+mean8)/8;

for i=26:50
for j=1:25
if (motif(j,i)==obyek) sum9=sum9+1; end
end
end

.........

for i=26:50
for j=176:200
if (motif(j,i)==obyek) sum16=sum16+1; end
end
end

mean9=sum9/625; mean10=sum10/625; mean11=sum11/625;


mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625;
mean16=sum16/625;

meanTotV2=(mean9+mean10+mean11+mean12+mean13+mean14+mean15+mean16)/8;

for i=51:75
for j=1:25
if (motif(j,i)==obyek) sum17=sum17+1; end
end
end

.........

for i=51:75
for j=176:200
if (motif(j,i)==obyek) sum24=sum24+1; end
end
end

mean17=sum17/625; mean18=sum18/625; mean19=sum19/625;


mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625;
mean24=sum24/625;

meanTotV3=(mean17+mean18+mean19+mean20+mean21+mean22+mean23+mean24)/8;

for i=76:100
for j=1:25
if (motif(j,i)==obyek) sum25=sum25+1; end
end
end

.........

for i=76:100
110

for j=176:200
if (motif(j,i)==obyek) sum32=sum32+1; end
end
end

mean25=sum25/625; mean26=sum26/625; mean27=sum27/625;


mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625;
mean32=sum32/625;

meanTotV4=(mean25+mean26+mean27+mean28+mean29+mean30+mean31+mean32)/8;

for i=101:125
for j=1:25
if (motif(j,i)==obyek) sum33=sum33+1; end
end
end

.........

for i=101:125
for j=176:200
if (motif(j,i)==obyek) sum40=sum40+1; end
end
end

mean33=sum33/625; mean34=sum34/625; mean35=sum35/625;


mean36=sum36/625;
mean37=sum37/625; mean38=sum38/625; mean39=sum39/625;
mean40=sum40/625;

meanTotV5=(mean33+mean34+mean35+mean36+mean37+mean38+mean39+mean40)/8;

for i=126:150
for j=1:25
if (motif(j,i)==obyek) sum41=sum41+1; end
end
end

.........

for i=126:150
for j=176:200
if (motif(j,i)==obyek) sum48=sum48+1; end
end
end

mean41=sum41/625; mean42=sum42/625; mean43=sum43/625;


mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625;
mean48=sum48/625;

meanTotV6=(mean41+mean42+mean43+mean44+mean45+mean46+mean47+mean48)/8;

for i=151:175
for j=1:25
if (motif(j,i)==obyek) sum49=sum49+1; end
end
111

end

.........

for i=151:175
for j=176:200
if (motif(j,i)==obyek) sum56=sum56+1; end
end
end

mean49=sum49/625; mean50=sum50/625; mean51=sum51/625;


mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625;
mean56=sum56/625;

meanTotV7=(mean49+mean50+mean51+mean52+mean53+mean54+mean55+mean56)/8;

for i=176:200
for j=1:25
if (motif(j,i)==obyek) sum57=sum57+1; end
end
end

.........

for i=176:200
for j=176:200
if (motif(j,i)==obyek) sum64=sum64+1; end
end
end

mean57=sum57/625; mean58=sum58/625; mean59=sum59/625;


mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625;
mean64=sum64/625;

meanTotV8=(mean57+mean58+mean59+mean60+mean61+mean62+mean63+mean64)/8;

%rata-rata untuk 1x8 horizontal

meanTotH1=(mean1+mean9+mean17+mean25+mean33+mean41+mean49+mean57)/8;

meanTotH2=(mean2+mean10+mean18+mean26+mean34+mean42+mean50+mean58)/8;

meanTotH3=(mean3+mean11+mean19+mean27+mean35+mean43+mean51+mean59)/8;

meanTotH4=(mean4+mean12+mean20+mean28+mean36+mean44+mean52+mean60)/8;

meanTotH5=(mean5+mean13+mean21+mean29+mean37+mean45+mean53+mean61)/8;

meanTotH6=(mean6+mean14+mean22+mean30+mean38+mean46+mean54+mean62)/8;

meanTotH7=(mean7+mean15+mean23+mean31+mean39+mean47+mean55+mean63)/8;

meanTotH8=(mean8+mean16+mean24+mean32+mean40+mean48+mean56+mean64)/8;

%hasil rata-rata dimasukkan dalam variabel nfo


info = [info, meanTotV1, meanTotV2, meanTotV3, meanTotV4,
112

meanTotV5, meanTotV6, meanTotV7, meanTotV8,...


meanTotH1, meanTotH2, meanTotH3, meanTotH4, meanTotH5,
meanTotH6, meanTotH7, meanTotH8];

%hasil feature ke dalam .nw


nama_file =[num2str(m) '_' num2str(n) '.vh'];
fid1=fopen(nama_file,'w');
fwrite(fid1, [num2str(info)]);
nama_file=[num2str(m) '_' num2str(n) '.lt'];
fid2=fopen(nama_file,'w');
fwrite(fid2, [num2str(info)]);
fclose(fid1);
fclose(fid2);

end
cd ..;
end

8. Listing program createFeature_warna_1x64_H_V.m

function createFeatureWarna_H_V()

dirData={'data_1'; 'data_2'; 'data_3'; 'data_4'; 'data_5'; ...


'data_6'; 'data_7'; 'data_8'; 'data_9'; 'data_10'; ...
'data_11'; 'data_12'; 'data_13'; 'data_14'; 'data_15'; ...
'data_16'; 'data_17'; 'data_18'; 'data_19'; 'data_20';};

for m=1:length(dirData)
%masuk ke direktori dan membaca file
cd(dirData{m});
fileJpg = dir('*.jpg'); %ambil file *.jpg
jum_jpg = length(fileJpg);

for n=1:length(fileJpg)

batik = imread(fileJpg(n).name);

info=[];

dR = batik(:,:,1); %figure, imshow(dR), title('Merah');


dG = batik(:,:,2); %figure, imshow(dG), title('Hijau');
dB = batik(:,:,3); %figure, imshow(dB), title('Biru');
meanR = mean(mean(dR));
meanG = mean(mean(dG));
meanB = mean(mean(dB));
kadarR = meanR/(meanR+meanG+meanB);
kadarG = meanG/(meanR+meanG+meanB);
kadarB = meanB/(meanR+meanG+meanB);
meanRGB = (meanR+meanG+meanB)/3;

gray=rgb2gray(batik);
motif = edge(gray, 'canny'); %deteksi tepi menggunakan canny
tinggi=size(motif,1);
lebar=size(motif,2);
113

%penghitung kepadatan
sum1=0; sum2=0; sum3=0; sum4=0; sum5=0; sum6=0; sum7=0; sum8=0;
sum9=0; sum10=0; sum11=0; sum12=0; sum13=0; sum14=0; sum15=0;
sum16=0;
sum17=0; sum18=0; sum19=0; sum20=0; sum21=0; sum22=0; sum23=0;
sum24=0;
sum25=0; sum26=0; sum27=0; sum28=0; sum29=0; sum30=0; sum31=0;
sum32=0;
sum33=0; sum34=0; sum35=0; sum36=0; sum37=0; sum38=0; sum39=0;
sum40=0;
sum41=0; sum42=0; sum43=0; sum44=0; sum45=0; sum46=0; sum47=0;
sum48=0;
sum49=0; sum50=0; sum51=0; sum52=0; sum53=0; sum54=0; sum55=0;
sum56=0;
sum57=0; sum58=0; sum59=0; sum60=0; sum61=0; sum62=0; sum63=0;
sum64=0;

obyek = 1;

for i=1:25
for j=1:25
if (motif(i,j)==obyek) sum1=sum1+1; end %tambahkan 1 tiap
menemukan obyek
end
end

for i=1:25
for j=26:50
if (motif(i,j)==obyek) sum2=sum2+1; end
end
end

for i=1:25
for j=51:75
if (motif(i,j)==obyek) sum3=sum3+1; end
end
end

for i=1:25
for j=76:100
if (motif(i,j)==obyek) sum4=sum4+1; end
end
end

for i=1:25
for j=101:125
if (motif(i,j)==obyek) sum5=sum5+1; end
end
end

for i=1:25
for j=126:150
if (motif(i,j)==obyek) sum6=sum6+1; end
end
end

for i=1:25
for j=151:175
114

if (motif(i,j)==obyek) sum7=sum7+1; end


end
end

for i=1:25
for j=176:200
if (motif(i,j)==obyek) sum8=sum8+1; end
end
end

mean1=sum1/625; mean2=sum2/625; mean3=sum3/625; mean4=sum4/625;


mean5=sum5/625; mean6=sum6/625; mean7=sum7/625; mean8=sum8/625;
meanTotH1=(mean1+mean2+mean3+mean4+mean5+mean6+mean7+mean8)/8;

for i=26:50
for j=1:25
if (motif(i,j)==obyek) sum9=sum9+1; end
end
end

.........

for i=26:50
for j=176:200
if (motif(i,j)==obyek) sum16=sum16+1; end
end
end

mean9=sum9/625; mean10=sum10/625; mean11=sum11/625;


mean12=sum12/625;
mean13=sum13/625; mean14=sum14/625; mean15=sum15/625;
mean16=sum16/625;

meanTotH2=(mean9+mean10+mean11+mean12+mean13+mean14+mean15+mean16)/8;

for i=51:75
for j=1:25
if (motif(i,j)==obyek) sum17=sum17+1; end
end
end

.........

for i=51:75
for j=176:200
if (motif(i,j)==obyek) sum24=sum24+1; end
end
end

mean17=sum17/625; mean18=sum18/625; mean19=sum19/625;


mean20=sum20/625;
mean21=sum21/625; mean22=sum22/625; mean23=sum23/625;
mean24=sum24/625;

meanTotH3=(mean17+mean18+mean19+mean20+mean21+mean22+mean23+mean24)/8;

for i=76:100
for j=1:25
115

if (motif(i,j)==obyek) sum25=sum25+1; end


end
end

.........

for i=76:100
for j=176:200
if (motif(i,j)==obyek) sum32=sum32+1; end
end
end

mean25=sum25/625; mean26=sum26/625; mean27=sum27/625;


mean28=sum28/625;
mean29=sum29/625; mean30=sum30/625; mean31=sum31/625;
mean32=sum32/625;

meanTotH4=(mean25+mean26+mean27+mean28+mean29+mean30+mean31+mean32)/8;

for i=101:125
for j=1:25
if (motif(i,j)==obyek) sum33=sum33+1; end
end
end

.........

for i=101:125
for j=176:200
if (motif(i,j)==obyek) sum40=sum40+1; end
end
end

mean33=sum33/625; mean34=sum34/625; mean35=sum35/625;


mean36=sum36/625;
mean37=sum37/625; mean38=sum38/625; mean39=sum39/625;
mean40=sum40/625;

meanTotH5=(mean33+mean34+mean35+mean36+mean37+mean38+mean39+mean40)/8;

for i=126:150
for j=1:25
if (motif(i,j)==obyek) sum41=sum41+1; end
end
end

.........

for i=126:150
for j=176:200
if (motif(i,j)==obyek) sum48=sum48+1; end
end
end

mean41=sum41/625; mean42=sum42/625; mean43=sum43/625;


mean44=sum44/625;
mean45=sum45/625; mean46=sum46/625; mean47=sum47/625;
mean48=sum48/625;
116

meanTotH6=(mean41+mean42+mean43+mean44+mean45+mean46+mean47+mean48)/8;

for i=151:175
for j=1:25
if (motif(i,j)==obyek) sum49=sum49+1; end
end
end

.........

for i=151:175
for j=176:200
if (motif(i,j)==obyek) sum56=sum56+1; end
end
end

mean49=sum49/625; mean50=sum50/625; mean51=sum51/625;


mean52=sum52/625;
mean53=sum53/625; mean54=sum54/625; mean55=sum55/625;
mean56=sum56/625;

meanTotH7=(mean49+mean50+mean51+mean52+mean53+mean54+mean55+mean56)/8;

for i=176:200
for j=1:25
if (motif(i,j)==obyek) sum57=sum57+1; end
end
end

.........

for i=176:200
for j=176:200
if (motif(i,j)==obyek) sum64=sum64+1; end
end
end

mean57=sum57/625; mean58=sum58/625; mean59=sum59/625;


mean60=sum60/625;
mean61=sum61/625; mean62=sum62/625; mean63=sum63/625;
mean64=sum64/625;

meanTotH8=(mean57+mean58+mean59+mean60+mean61+mean62+mean63+mean64)/8;

%rata-rata untuk 1x8 vertikal

meanTotV1=(mean1+mean9+mean17+mean25+mean33+mean41+mean49+mean57)/8;

meanTotV2=(mean2+mean10+mean18+mean26+mean34+mean42+mean50+mean58)/8;

meanTotV3=(mean3+mean11+mean19+mean27+mean35+mean43+mean51+mean59)/8;

meanTotV4=(mean4+mean12+mean20+mean28+mean36+mean44+mean52+mean60)/8;

meanTotV5=(mean5+mean13+mean21+mean29+mean37+mean45+mean53+mean61)/8;

meanTotV6=(mean6+mean14+mean22+mean30+mean38+mean46+mean54+mean62)/8;
117

meanTotV7=(mean7+mean15+mean23+mean31+mean39+mean47+mean55+mean63)/8;

meanTotV8=(mean8+mean16+mean24+mean32+mean40+mean48+mean56+mean64)/8;

%hasil rata-rata dimasukkan dalam variabel info


info = [info, meanR, meanG, meanB, kadarR, kadarG, kadarB,
meanRGB,...
mean1, mean2, mean3, mean4, mean5, mean6, mean7, mean8,
mean9, mean10,...
mean11, mean12, mean13, mean14, mean15, mean16, mean17,
mean18, mean19, mean20,...
mean21, mean22, mean23, mean24, mean25, mean26, mean27,
mean28, mean29, mean30,...
mean31, mean32, mean33, mean34, mean35, mean36, mean37,
mean38, mean39, mean40,...
mean41, mean42, mean43, mean44, mean45, mean46, mean47,
mean48, mean49, mean50,...
mean51, mean52, mean53, mean54, mean55, mean56, mean57,
mean58, mean59, mean60,...
mean61, mean62, mean63, mean64, meanTotH1, meanTotH2,
meanTotH3, meanTotH4, meanTotH5, meanTotH6,...
meanTotH7, meanTotH8, meanTotV1, meanTotV2, meanTotV3,
meanTotV4, meanTotV5, meanTotV6, meanTotV7, meanTotV8];

%hasil feature ke dalam .nw


nama_file =[num2str(m) '_' num2str(n) '.txt'];
fid1=fopen(nama_file,'w');
fwrite(fid1, [num2str(info)]);
nama_file=[num2str(m) '_' num2str(n) '.lt'];
fid2=fopen(nama_file,'w');
fwrite(fid2, [num2str(info)]);
fclose(fid1);
fclose(fid2);

end
cd ..;
end

9. Listing program LDA_train.m

FNM=[]
for i=1:20
fn=readFeature(['data_' num2str(i)]);
FNM=[FNM; fn];
end

k=20; % jumlah hasil kelompok


njenis = 64; % jumlah kelompok ciri

n_train=20;
Q = ones(1,n_train);
for i=2:k
Q=[Q ones(1,n_train)*i];
end
118

n_total=25;
data=FNM(1:n_train,:);
data2=FNM(n_train+1:n_total,:);

for i=2:k
awal=(1+(i-1)*n_total);
akhir=n_train+((i-1)*n_total);
data;
FNM(awal:akhir, :);
data=[data; FNM(awal:akhir,:)];
awal2=1+n_train+((i-1)*n_total);
akhir2=n_total*i;
FNM(awal2:akhir2,:);
data2=[data2; FNM(awal2:akhir2,:)];
end

% U total
u_total=mean(data);
c=zeros(njenis,njenis,k);
for i=1:k
i;
idx=find(Q==i);
n(i)=length(idx);
x= data(idx,:);
mean(x);
U(i,:)= mean(x);
clear x0
for j=1:njenis
x0(:,j)=x(:,j)-u_total(j) ;
end
size(x0);
(x0' * x0) / n(i);
c(:,:,i)=(x0' * x0) / n(i);
end

nt=sum(n); % jumlah ni + n2 + .....


ct=(n(1)/nt)*c(:,:,1); % mencari matriks auto-covariance c1
for i=2:k
ct=ct+(n(i)/nt)*c(:,:,i); % looping c2 dst..
end
ct2=inv(ct);

ct_1x64 = ct2
u_1x64 = U
n_1x64 = n
nt_1x64 = nt

10. Listing program LDA_test.m

nt2 = size(data2,1)
ct2=ct_1x64 ;
U=u_1x64 ;
n=n_1x64;
nt=nt_1x64;
119

for i=1:k
U(i,:)
ct2;
f(i,:)=U(i,:)*ct2;
for j=1:nt2
s=data2(j,:)'-0.5*U(i,:)'; %
h(i,j)=f(i,:)*s+log(n(i)/nt);
end
end

disp (h')
set(handles.text7,'string',h);

set(handles.text13,'string','Menemukan angka kecocokan.');


for j=1:nt2
maks=max(h(:,j));
kel(j)=find(h(:,j)==maks);
end

disp (maks)
set(handles.text10,'string','Nilai maksimal:');
set(handles.text8,'string',maks);
disp (kel)
set(handles.text11,'string','Kelompok:');
set(handles.text12,'string',kel);
Kamus;

nt2;
kel2 = ones(1,nt2/20);
for i=2:k
kel2=[kel2 ones(1,nt2/20)*i];
end

size(kel)
size(kel2)
jumlah_dikenali = sum(kel==kel2)
akurasi = jumlah_dikenali/nt2*100

11. Listing program confusion_matrik.m

k = 20;
nkel=length(kel)/k; %klo data 100, 100/20=5
map=zeros(k,k);
for i=1:k
for j=1:nkel
x=kel((i-1)*nkel+j);
map(i,x)=map(i,x)+1;
end
end
disp(map);

jum=0;
for i=1:k
120

jum=jum+map(i,i);
end

disp(sprintf('Jumlah data yang sesuai = %d ',jum));

12. Listing program TrainingLDA_Horizontal.m

clc
n_rotasi = 5;
n_ciri = 8;
n_data_rotasi= 100;
n_kel = 20;
n_data1kel = 25;
data_rotasi = zeros(n_data_rotasi, n_ciri, n_rotasi);
for ii=1:n_rotasi
for jj=1:n_kel
awal=1+(jj-1)*n_data1kel+(ii-1)*5
akhir=5+(jj-1)*n_data1kel+(ii-1)*5
k=1+(jj-1)*5;
l=5+(jj-1)*5;
data_rotasi(k:l,:,ii)=FNM(awal:akhir,:);
end
end

% A B C D = training ; E = testing
k=20;
mapTotal=zeros(k,k);
for ii=1:5
kata1 = get(handles.textProses2,'String');
kata2 = sprintf ('Sedang memproses training ke-%d', ii);
kata3 = [kata1; kata2];
set(handles.textProses2,'String',kata3);
data1=zeros(400, n_ciri);
data2=zeros(100, n_ciri);
kk=0;
for jj=1:5
if(ii==jj)
data2=data_rotasi(:,:,ii);
else
kk=kk+1;
awal=(kk-1)*100+1;
akhir=kk*100;
data1(awal:akhir,:)=data_rotasi(:,:,jj);
end
end
LDAtrain_1x8H;
LDAtest_1x8H;
confusion_matrik;

sFile=sprintf('conf_%d',ii);
121

save(sFile,'map');
mapTotal=mapTotal+map;
end

load('conf_1.mat');
map1=map;
load('conf_2.mat');
map2=map;
load('conf_3.mat');
map3=map;
load('conf_4.mat');
map4=map;
load('conf_5.mat');
map5=map;

13. Listing program jumlahTotalConfusion.m

%total map confusion matrix


disp ('Matriks 1');
map1
jum=0;
for i=1:k
jum=jum+map1(i,i);
end
%disp(sprintf('Jumlah data = ',
jumlah_data = 100
jumlah_benar=jum
jumlah_salah=jumlah_data-jumlah_benar
akurasi=jumlah_benar/jumlah_data*100

disp ('Matriks 2');


map2
%total map confusion matrix
jum=0;
for i=1:k
jum=jum+map2(i,i);
end
%disp(sprintf('Jumlah data = ',
jumlah_data = 100
jumlah_benar=jum
jumlah_salah=jumlah_data-jumlah_benar
akurasi=jumlah_benar/jumlah_data*100

%total map confusion matrix


disp ('Matriks 3');
map3
jum=0;
for i=1:k
jum=jum+map3(i,i);
122

end
%disp(sprintf('Jumlah data = ',
jumlah_data = 100
jumlah_benar=jum
jumlah_salah=jumlah_data-jumlah_benar
akurasi=jumlah_benar/jumlah_data*100

%total map confusion matrix


disp ('Matriks 4');
map4
jum=0;
for i=1:k
jum=jum+map4(i,i);
end
%disp(sprintf('Jumlah data = ',
jumlah_data = 100
jumlah_benar=jum
jumlah_salah=jumlah_data-jumlah_benar
akurasi=jumlah_benar/jumlah_data*100

%total map confusion matrix


disp ('Matriks 5');
map5
jum=0;
for i=1:k
jum=jum+map5(i,i);
end
%disp(sprintf('Jumlah data = ',
jumlah_data = 100
jumlah_benar=jum
jumlah_salah=jumlah_data-jumlah_benar
akurasi=jumlah_benar/jumlah_data*100

%total map confusion matrix


disp ('Confusion Matrix');
mapTotal
jum=0;
for i=1:k
jum=jum+mapTotal(i,i);
end
%disp(sprintf('Jumlah data = ',
jumlah_data = 500
set(handles.textJumData,'string',jumlah_data);
jumlah_benar=jum
set(handles.textDikenal,'string',jumlah_benar);
jumlah_salah=jumlah_data-jumlah_benar
set(handles.textTakDikenal,'string',jumlah_salah);
akurasi=jumlah_benar/jumlah_data*100
set(handles.textAkurasi,'string',akurasi);
disp(sprintf('Jumlah data yang sesuai = %d ',jum));
LAMPIRAN II
DATA PENELITIAN
123

1. Confusion matriks untuk percobaan feature rata-rata edge horizontal.

A B C D E F G H I J K L M N O P Q R S T
A 3 6 1 1 4 0 1 4 0 0 0 0 0 0 4 0 0 0 1 0
B 2 11 0 0 0 0 0 1 1 0 1 4 0 0 0 1 1 1 0 2
C 2 1 10 0 0 0 4 1 0 0 0 0 0 1 0 0 3 1 2 0
D 0 0 0 7 1 0 4 0 0 4 0 0 1 2 0 0 0 3 3 0
E 0 1 2 0 13 0 0 0 0 2 0 3 1 0 0 0 0 2 1 0
F 0 0 0 0 0 14 0 0 2 0 4 0 0 0 0 1 0 0 0 4
G 1 1 3 1 0 0 0 1 0 4 0 0 1 4 1 0 2 1 5 0
H 2 0 0 0 5 0 1 8 4 0 0 0 1 1 0 0 0 0 3 0
I 1 1 0 0 1 0 0 2 7 0 6 5 0 0 0 0 1 1 0 0
J 0 0 0 1 0 0 5 1 0 5 0 0 1 3 0 0 0 6 3 0
K 0 0 0 0 0 2 0 0 1 0 18 2 0 0 0 0 0 0 0 2
L 0 0 0 0 0 0 0 0 1 0 0 14 1 0 0 4 0 0 0 5
M 0 0 0 1 0 0 2 0 0 2 0 0 8 3 0 0 0 7 2 0
N 2 0 1 0 1 0 5 2 0 4 0 0 1 4 1 0 1 2 1 0
O 5 2 0 0 0 0 0 0 2 0 0 2 0 0 5 0 9 0 0 0
P 0 0 0 0 0 0 0 0 0 0 3 1 0 0 3 13 0 0 0 5
Q 0 3 0 0 1 0 1 1 2 0 0 0 0 0 2 0 14 1 0 0
R 1 1 2 2 1 0 0 0 0 5 0 0 1 3 0 0 0 4 5 0
S 0 0 0 1 0 0 2 2 0 4 0 0 0 2 0 0 0 3 11 0
T 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 9 0 0 0 13
Jumlah data dikenali = 182
Jumlah data tak dikenali = 318
𝑗𝑢𝑚𝑙𝑎𝑕 𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 𝑚𝑎𝑡𝑟𝑖𝑘𝑠 182
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = × 100% = × 100% = 36.4%
𝑗𝑢𝑚𝑙𝑎𝑕 𝑠𝑒𝑙𝑢𝑟𝑢𝑕 𝑑𝑎𝑡𝑎 500

2. Confusion matriks untuk percobaan feature rata-rata keseluruhan edge.

A B C D E F G H I J K L M N O P Q R S T
A 3 2 0 1 0 2 2 0 0 0 0 0 0 1 4 4 1 2 2 1
B 2 7 0 1 0 0 5 1 0 0 0 0 0 0 0 5 2 0 0 2
C 1 1 13 0 0 0 2 2 0 1 0 0 1 1 0 0 0 0 3 0
D 0 0 2 10 0 0 1 0 0 1 0 0 2 1 0 0 1 4 3 0
E 2 0 0 0 13 0 0 0 2 1 0 0 5 1 0 0 0 0 1 0
F 0 1 0 2 0 7 0 0 1 0 2 0 0 0 0 5 0 0 0 7
124

G 2 0 5 1 0 0 5 0 0 1 0 0 2 2 0 0 4 0 1 2
H 1 4 1 1 1 0 2 2 4 1 0 1 0 0 2 1 0 1 2 1
I 1 1 0 2 0 2 0 0 4 0 3 0 1 3 0 0 6 0 1 1
J 2 0 4 1 1 0 3 1 0 7 0 0 0 5 0 0 0 0 1 0
K 1 1 0 0 0 2 0 0 0 0 14 1 0 0 0 3 1 0 0 2
L 2 1 0 0 1 1 0 1 0 0 1 11 1 0 1 1 1 0 0 3
M 2 0 1 1 3 0 0 0 0 1 0 1 12 2 0 0 0 1 1 0
N 0 0 1 2 0 0 0 2 1 4 0 1 2 6 1 1 1 1 2 0
O 6 1 1 0 0 0 1 0 0 0 0 2 0 0 8 1 4 0 0 1
P 2 1 0 0 0 1 0 0 0 0 1 0 0 0 0 10 3 0 0 7
Q 0 1 0 0 0 0 1 1 1 0 0 0 0 1 2 2 15 0 0 1
R 0 0 0 7 0 0 3 1 0 0 0 0 1 2 0 0 2 5 4 0
S 3 1 0 2 0 0 3 1 0 2 0 0 1 1 1 0 0 1 9 0
T 0 2 0 0 0 0 0 0 0 1 0 1 1 0 0 7 0 0 0 13
Jumlah data dikenali = 174
Jumlah data tak dikenali = 326
𝑗𝑢𝑚𝑙𝑎𝑕 𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 𝑚𝑎𝑡𝑟𝑖𝑘𝑠 174
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = × 100% = × 100% = 34.8%
𝑗𝑢𝑚𝑙𝑎𝑕 𝑠𝑒𝑙𝑢𝑟𝑢𝑕 𝑑𝑎𝑡𝑎 500

3. Confusion matriks untuk percobaan feature rata-rata edge vertikal.

A B C D E F G H I J K L M N O P Q R S T
A 0 4 0 0 4 0 1 4 2 0 0 1 2 0 3 0 2 2 0 0
B 1 14 0 0 0 0 0 1 2 0 0 1 0 0 1 3 1 0 0 1
C 0 0 9 2 4 0 2 2 0 2 0 0 1 1 0 0 0 0 2 0
D 0 0 2 4 1 0 2 1 0 8 0 0 1 2 0 0 0 2 2 0
E 0 0 1 2 13 0 0 0 1 1 0 2 2 1 0 0 0 0 2 0
F 0 0 0 0 0 9 0 0 0 0 9 0 0 0 0 3 0 0 0 4
G 1 0 0 1 0 0 4 0 1 4 0 0 4 1 0 0 7 0 2 0
H 0 3 1 1 3 0 2 3 1 2 2 0 4 1 2 0 0 0 0 0
I 5 3 0 1 5 0 0 1 5 1 1 2 0 0 1 0 0 0 0 0
J 0 0 1 6 3 0 2 0 2 2 0 0 1 3 0 0 0 1 4 0
K 0 1 0 0 0 1 0 0 0 0 14 2 0 0 0 5 0 0 0 2
L 3 3 0 0 2 1 0 0 3 0 2 7 0 0 2 1 0 0 0 1
M 1 1 0 2 7 0 2 3 0 1 0 0 4 3 0 0 0 0 1 0
N 4 0 0 1 2 0 3 0 1 5 0 0 0 2 0 0 1 2 4 0
O 1 3 0 0 0 0 0 3 1 0 1 0 0 0 3 1 10 0 0 2
125

P 0 2 0 0 0 0 0 0 4 0 2 4 0 0 4 4 0 0 0 5
Q 1 1 0 0 0 0 2 0 1 0 0 1 0 0 1 0 18 0 0 0
R 3 0 1 1 1 0 2 3 2 4 0 0 4 3 0 0 0 0 1 0
S 0 0 0 3 1 0 3 1 0 2 0 0 1 5 0 0 0 2 7 0
T 0 1 0 0 0 0 0 0 1 0 0 5 0 0 0 7 0 0 0 11
Jumlah data dikenali = 133
Jumlah data tak dikenali = 367
𝑗𝑢𝑚𝑙𝑎𝑕 𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 𝑚𝑎𝑡𝑟𝑖𝑘𝑠 133
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = × 100% = × 100% = 26.6%
𝑗𝑢𝑚𝑙𝑎𝑕 𝑠𝑒𝑙𝑢𝑟𝑢𝑕 𝑑𝑎𝑡𝑎 500

4. Confusion matriks untuk percobaan feature rata-rata gabungan edge


horizontal dan vertikal.
A B C D E F G H I J K L M N O P Q R S T
A 0 2 5 0 0 1 0 0 5 0 0 0 0 5 0 3 0 0 4 0
B 0 3 0 0 0 0 0 0 5 0 0 4 0 5 0 4 0 0 3 1
C 2 0 9 1 0 0 1 0 2 0 0 0 0 4 0 0 0 0 5 1
D 0 0 6 1 0 0 0 0 5 3 0 0 0 4 0 0 0 1 5 0
E 0 2 2 0 4 0 0 0 5 0 0 2 0 5 0 1 0 0 3 1
F 0 1 0 0 0 1 0 0 5 0 0 5 0 4 0 5 0 0 4 0
G 0 0 6 1 0 0 0 0 5 0 0 0 0 6 1 0 0 0 5 1
H 1 3 2 3 1 0 0 0 4 1 0 2 0 4 0 0 1 0 2 1
I 0 2 2 0 0 1 0 0 6 0 0 2 0 2 0 5 2 0 2 1
J 0 0 5 2 0 0 0 0 4 3 0 0 0 5 0 0 1 0 5 0
K 0 2 2 0 0 0 0 0 5 0 0 3 0 5 0 5 0 0 3 0
L 0 2 0 0 0 0 0 0 5 0 0 5 0 5 0 5 0 0 3 0
M 0 3 5 0 0 0 0 0 5 0 0 1 0 5 0 1 0 0 5 0
N 0 0 5 2 0 0 0 0 5 2 0 0 0 5 0 1 0 0 5 0
O 0 7 1 0 0 0 0 0 5 0 0 3 0 4 0 2 0 0 2 1
P 0 0 1 0 0 0 0 0 5 0 0 2 0 5 0 5 0 0 5 2
Q 0 0 4 0 0 0 0 0 5 0 0 1 0 5 0 5 0 0 5 0
R 0 0 7 1 0 0 0 0 5 2 0 0 0 5 0 0 0 0 5 0
S 1 0 7 3 0 0 0 0 4 0 0 0 0 5 0 0 0 0 5 0
T 0 0 0 0 0 0 0 0 5 0 0 5 0 5 0 5 0 0 5 0
Jumlah data dikenali = 47
Jumlah data tak dikenali = 453
126

𝑗𝑢𝑚𝑙𝑎𝑕 𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 𝑚𝑎𝑡𝑟𝑖𝑘𝑠 47


𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = × 100% = × 100% = 9.4%
𝑗𝑢𝑚𝑙𝑎𝑕 𝑠𝑒𝑙𝑢𝑟𝑢𝑕 𝑑𝑎𝑡𝑎 500

5. Confusion matriks untuk percobaan feature rata-rata gabungan keseluruhan


edge, rata-rata edge horizontal dan vertikal.
A B C D E F G H I J K L M N O P Q R S T
A 0 0 0 0 5 5 0 1 0 1 1 0 0 0 5 2 1 1 0 3
B 0 4 0 0 2 0 0 5 0 0 0 0 0 0 5 0 0 0 0 9
C 0 0 0 0 2 0 0 2 0 4 0 1 0 0 3 1 0 3 9 0
D 0 0 0 0 2 0 0 4 0 7 0 0 1 0 2 1 0 3 5 0
E 0 0 0 0 4 2 0 4 2 2 0 0 0 0 4 0 4 1 1 1
F 0 1 0 0 1 0 0 5 0 0 0 0 0 0 6 0 0 0 0 12
G 0 0 0 0 5 0 0 3 0 2 0 0 0 0 7 1 1 2 1 3
H 0 2 0 0 2 1 0 3 1 3 0 1 0 0 5 1 0 2 2 2
I 0 1 0 0 3 0 0 4 0 3 2 0 1 0 2 1 2 1 1 4
J 0 0 0 0 6 1 0 3 1 4 1 0 0 0 1 0 2 2 4 0
K 0 1 0 0 4 2 0 5 0 1 0 0 0 0 5 0 0 0 0 7
L 0 2 0 0 3 0 0 5 0 0 0 0 0 0 7 0 0 0 1 7
M 0 0 0 0 2 0 0 5 0 5 0 0 0 0 2 0 1 3 5 2
N 0 0 0 0 5 1 0 3 0 5 0 0 0 0 3 1 1 1 5 0
O 0 0 0 0 3 1 0 4 0 1 2 0 0 0 8 0 0 0 1 5
P 0 3 0 0 4 0 0 4 0 0 1 0 0 0 8 0 0 0 0 5
Q 0 1 0 0 5 0 0 4 0 2 0 0 0 0 5 1 2 0 1 4
R 0 1 0 0 3 0 0 1 1 1 0 0 1 1 3 1 1 6 3 2
S 0 0 0 0 4 0 0 5 0 7 0 0 1 0 0 0 0 2 6 0
T 0 2 0 0 3 0 0 5 0 0 1 0 0 0 8 0 0 0 0 6
Jumlah data dikenali = 43
Jumlah data tak dikenali = 457
𝑗𝑢𝑚𝑙𝑎𝑕 𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 𝑚𝑎𝑡𝑟𝑖𝑘𝑠 43
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = × 100% = × 100% = 8.6%
𝑗𝑢𝑚𝑙𝑎𝑕 𝑠𝑒𝑙𝑢𝑟𝑢𝑕 𝑑𝑎𝑡𝑎 500
127

6. Confusion matriks untuk percobaan feature rata-rata gabungan warna,


keseluruhan edge, rata-rata edge horizontal dan vertikal.
A B C D E F G H I J K L M N O P Q R S T
A 1 2 0 0 0 0 0 2 6 0 3 2 3 0 0 0 2 2 0 2
B 1 1 0 0 0 0 0 4 5 0 5 4 2 0 0 0 0 0 0 3
C 0 1 2 2 0 3 0 4 3 5 0 0 2 0 0 0 0 0 3 0
D 0 1 0 5 0 1 0 5 0 5 2 0 1 0 0 0 3 0 1 1
E 0 0 0 3 0 1 0 1 2 2 3 3 3 0 1 1 4 0 0 1
F 0 0 0 0 0 0 0 1 5 0 8 6 0 0 0 0 0 0 0 5
G 0 1 0 5 0 0 0 3 0 3 4 0 2 0 0 0 4 1 0 2
H 2 0 0 4 0 1 0 3 1 3 4 1 0 0 0 1 1 1 0 3
I 3 2 0 1 0 1 1 2 3 1 5 3 0 0 0 0 0 1 0 2
J 0 4 0 3 0 0 0 3 1 1 1 0 6 3 0 0 1 1 0 1
K 0 1 0 0 0 0 0 3 5 0 5 4 1 0 0 0 1 0 1 4
L 0 2 0 1 0 0 0 1 2 0 3 9 0 0 0 0 2 1 0 4
M 0 1 0 5 0 0 0 4 0 1 5 1 2 1 0 1 0 2 0 2
N 0 1 0 1 0 0 0 6 3 1 5 0 4 0 0 1 0 1 1 1
O 1 3 0 2 0 0 0 3 2 0 2 5 1 0 0 0 2 0 0 4
P 0 0 0 4 0 0 0 7 1 0 6 5 0 0 0 0 0 0 0 2
Q 0 1 0 5 0 0 0 4 0 0 4 3 1 0 0 0 3 1 1 2
R 0 1 0 1 0 3 0 5 4 3 2 1 1 1 0 0 0 2 1 0
S 1 1 0 5 0 1 0 3 0 2 3 0 5 0 0 0 0 1 2 1
T 1 1 0 0 0 0 0 3 5 0 6 4 1 0 0 0 0 1 0 3
Jumlah data dikenali = 42
Jumlah data tak dikenali = 458
𝑗𝑢𝑚𝑙𝑎𝑕 𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 𝑚𝑎𝑡𝑟𝑖𝑘𝑠 42
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = × 100% = × 100% = 8.4%
𝑗𝑢𝑚𝑙𝑎𝑕 𝑠𝑒𝑙𝑢𝑟𝑢𝑕 𝑑𝑎𝑡𝑎 500

Anda mungkin juga menyukai