PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PENGENALAN POLA ANGKA DENGAN WAVELET HAAR Skripsi Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Sains Program Studi Ilmu Komputer
Oleh : Fransisca Pramesti NIM: 023124019
PRODI ILMU KOMPUTER JURUSAN MATEMATIKA FAKULTAS MIPA UNIVERSITAS SANATA DHARMA YOGYAKARTA 2007
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 2
SKRIPSI
PENGENALAN POLA ANGKA DENGAN WAVELET HAAR
Oleh : Fransisca Pramesti NIM: 023124019
Telah disetujui oleh:
Pembimbing
A. Rita Widiarti, S.Si, M.Kom
Tanggal………………………...
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 3
HALAMAN PENGESAHAN
PENGENALAN POLA ANGKA DENGAN WAVELET HAAR
Dipersiapkan dan ditulis oleh FRANSISCA PRAMESTI
NIM : 023124019
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 4
PERNYATAAN KEASLIAN KARYA Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya/bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 5
Kesuksesan adalah kebanggaan, dan proses dibalik semua itu adalah pelajaran
Allah turut bekerja dalam segala sesuatu untuk mendatangkan kebaikan bagi mereka yang mengasihi Dia... Roma 8:28
Tugas akhir ini kupersembahkan untuk : TUHAN YESUS, BUNDA MARIA Bapak Nararyohadi &Ibu Dwi Purwaningsih Adikku Adi dan Tyas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 6
ABSTRAK Usaha untuk menghasilkan alat yang dapat meniru kemampuan manusia dalam pengenalan obyek terus dilakukan diberbagai bidang. Usaha-usaha tersebut telah mendukung berkembangnya suatu disiplin dan metodologi yang kemudian dikenal dengan nama Pengenalan Pola (Pattern Recognition). Salah satu yang populer adalah aplikasi Optical Character Recognition. Aplikasi dari Optical Character Recognition yang terdapat dalam tugas akhir ini digunakan untuk mengenali tulisan tangan yang ditulis dengan alat bantu mouse yang telah disimpan dalam bentuk file .bmp. Proses pengenalan karakter ini diterapkan menggunakan metode template matching, dimana cara kerja metode ini adalah melakukan pengenalan pola terhadap karakter yang ingin dikenali dengan membandingkan antara input pattern dengan template yang sudah disimpan. Proses recognition yang diterapkan menggunakan feature extraction dengan wavelet Daubechies 1 atau yang biasa disebut dengan wavelet Haar. Hasil yang dicapai dari sistem ini menunjukkan bahwa unjuk kerja pengenalan meningkat cukup signifikan
untuk masukan dengan dimensi 32 x 32
(dekomposisi wavelet level 1) yaitu sebesar 83.33%, untuk masukan berdimensi 16 x 16 (dekomposisi wavelet level 2) sebesar 63.33%, dan masukkan dengan dimensi 8 x 8 (dekomposisi wavelet
level 3) sebesar 60%. Prosentase
keberhasilan yang relatif kecil pada level 2 dan level 3 disebabkan karena semakin kecil dimensi gambar masukan, maka informasi yang tersimpan pada gambar masukan juga semakin sedikit.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 7
ABSTRACT Efforts for producting tools which can imitate human skill in recognizing an object have been conducting in many different aspects. The efforts support the development of a kind of disciplined methodology called Pattern Recognition. One of the most popular ones is Optical Character Recognition Application. The application of Optical Character Recognition which have been stored in this thesis is need to recognize handwriting written by mouse. The character recognition process is applied using template matching method, in which the method works by recognizing the pattern in the character which suppose to be recognized by comparing the input pattern with stored template. The recognition process applied uses feature extraction with daubechies1 wavelet, also known as Haar wavelet. The result achieved from this system shows that the recognition result increase significantly for the input with 32 x 32 dimensions (Level 1 of wavelet decomposition) that is for about 83.33%. Compared with the input with 16 x 16 dimensions (level 2 of wavelet decomposition) and the input with 8 x 8 dimensions (level 3 of wavelet decomposition). The percentage of the success on level 2 and level 3 caused by the input images dimension in become smaller. So the information which has been restore on the input image also become smaller.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 8
KATA PENGANTAR Puji dan syukur penulis ungkapkan pada Tuhan Yesus dan Bunda Maria, karena hanya berkat dan bimbingan-Nya penulis bisa menyelesaikan tugas akhir ini. Dengan usaha yang keras dan diiringi doa yang tiada henti juga atas bantuan semua pihak maka skripsi ini dapat diselesaikan. Dengan selesainya tugas akhir yang merupakan salah satu syarat untuk meraih gelar Sarjana pada Program Studi Ilmu Komputer Universitas Sanata Dharma Yogyakarta, penulis mengucapkan terima kasih yang sebesar - besarnya kepada: 1. Ibu PH Prima Rosa, S.Si., M.Sc selaku Ketua Program Studi Ilmu Komputer Universitas Sanata Dharma. 2. Ibu Rita Widiarti, S.Si, M.Kom selaku Dosen pembimbing atas segala pemikiran dalam membimbing, ide, tenaga dalam menyelesaikan skripsi ini, serta kesabaran dan sarana yang sangat penulis perlukan untuk menyelesaikan tugas akhir ini dari awal hingga selesai. 3. Bapak St. Eko Hari Permadi, S.Si., M.Kom dan Bapak Y.Joko Nugroho, S.Si selaku Dosen penguji dan semua dosen Ilmu Komputer Universitas Sanata Dharma yang telah memberikan dukungan dalam penyelesaian skripsi ini. 4. Orang tua tercinta Bapak Nararyohadi dan Ibu Dwi Purwaningsih. Terima kasih atas doa, dukungan untuk terus maju, cinta dan kesabaran dalam mendidik penulis.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 9
5. Adikku Adi dan Tyas, makasih buat dukungan dan hiburannya ☺ 6. Agustinus Adi Santoso, makasih buat doa, dukungan dan kesabaran menemani menyelesaikan tugas akhir ini. 7. Hendy, Agus, Uus, Oscar, Tina, Pipit, Evy, Agnes Putri, Ikoq, Lusi, Agnes Novens, dan Teman-teman IKOM 02 yang tidak bisa disebutkan satu per satu. 8. Bpk/Ibu Joko Pamungkas, dan teman-teman wisma Rosari yang telah bersedia menjadi pengisi template angka (Dinta+Yoyo, Nine+Presto, Devi, Agnes (D’ Patkay), Agnes Psi, Jean, Suci, Dewi, Vivi, Tina, Tika, Nice, De’ e, Sri ), dan seluruh penghuni Rosari!!!!! 9. Galuh, Titis dan Keluarga Besar Papringan. 10. Petugas Laboran dan Sekre MIPA (Pak Tukijo, Ibu Linda) terima kasih buat bantuannya. Penulis menyadari bahwa dalam penulisan tugas akhir ini masih banyak kekurangan, kelemahan dan jauh dari sempurna. Oleh sebab itu penulis dengan kerendahan hati mengharapkan kritik dan saran yang membangun untuk penyempurnaan tugas akhir ini.
Yogyakarta, April 2007 Penulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 10
DAFTAR ISI
HALAMAN JUDUL………………………………………………………..
i
HALAMAN PERSETUJUAN.......................................................................
ii
HALAMAN PENGESAHAN.......................................................................
iii
PERNYATAAN KEASLIAN KARYA……………………………………
iv
HALAMAN PERSEMBAHAN...................................................................
v
ABSTRAK…………………………………………………………………..
vi
ABSTRAC.....................................................................................................
vii
KATA PENGANTAR..................................................................................
viii
DAFTAR ISI………………………………………………………………..
x
DAFTAR TABEL……………………………………................................
xii
DAFTAR GAMBAR………………………………………………………..
xiii
BAB I PENDAHULUAN…………………………………………………..
1
A. Latar Belakang……………………………………………………….
1
B. Rumusan Masalah……………………………………………………
2
C. Batasan Masalah……………………………………………………..
2
D. Tujuan Penulisan……………………………………………………..
2
E. Manfaat Penulisan……………………………………………………
2
F. Metodologi Penelitian………………………………………………...
3
G. Sistematika Pembahasan……………………………………………..
3
BAB II LANDASAN TEORI………………………………………………
5
A. Pengertian Pengenalan Pola…………………………………………
5
B. Sistem Pengenalan Pola…………………………………..................
6
1. Pendekatan Statistik……………………………………………..
6
2. Pendekatan Sintaktik……………………………………………….10 C. Ekstraksi Ciri Dengan Dekomposisi Wavelet…………………… 1. Vektor………………………………………………………..
11 11
2. Wavelet……………………………………………………………12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 11
3. Transformasi Terhadap Citra…………………………………… 17 4. Contoh Dekomposisi Citra Dengan Wavelet Haar………………..18 D. Euclidean Algoritma………………………………………………
21
BAB III ANALISA DAN PERANCANGAN SISTEM…………………... 22 A. Analisa Sistem……………………………………............................. 22 1. Desain Sistem Pembuat Basis Data…………………………… 23 2. Desain Sistem Pengenalan Angka…………………………….. 24 B. Analisa Kebutuhan Hardware dan Software……………………….. 25 C. Perancangan User interface………………………………………… 26 D. Perancangan Proses………………………………………………… 35 1. Input Data Baru……………………………………………….. 35 2. Preprocessing ………………………………………………… 36. 3. Ekstraksi Ciri………………………………………………… 37 4. Pengenalan Angka……………………………………………. 38 BAB IV IMPLEMENTASI………………………………………………... 40 A. Algoritma..…………………………………………………………
40
B. Jalannya Program…….……………………………………………
43
BAB V HASIL DAN PEMBAHASAN…………………………………
55
C. Hasil Pengujian……………………………………………………… 55 D. Analisa Hasil………………………………………………………… 59 BAB VI KESIMPULAN DAN SARAN…………………………………… 60 DAFTAR PUSTAKA…………………………............................................. 61 LAMPIRAN A.............................................................................................
63
LAMPIRAN B.............................................................................................. 93 LAMPIRAN C............................................................................................... 95
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 12
DAFTAR TABEL Tabel 2.1 Tabel Pola dan Cirinya…………………………
5
Tabel 2.2 Analogi pendekatan statistika dan sintatik………………………
10
Tabel 2.3 Scalling, Mother Wavelet, Mother Wavelet Dilasi, Mother Wavelet Dilasi digeser..................................................................
14
Tabel 5.1 Hasil Pengujian…………………………………………………
55
Tabel 5.2 Prosentase Kebenaran Pengenalan…………………………….
59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 13
DAFTAR GAMBAR 2.1 Grafik fungsi kerapatan dan ciri diameter apel dan jeruk.........................
7
2.2 Diagrampendekatanstatistik.....................................................................
8
2.3 Contoh Pembagian Kelas Pola…………………………………………
9
2.4 Diagram Pendekatan Sintaktik………………………………………
10
2.5Vektor h0, h1, h2, h3 dalam Bentuk Sinyal………………………………
13
2.6 Algortima Pyramida Mallat……………………………………………..
15
2.7 Proses Dekomposisi wavelet……………………………………………..
17
2.8 Hasil Dekomposisi wavelet ……………………………………
18
2.9 Diagram Ruang ciri set sample belajar. Sampel i dimasukkan ke kategori k=3 berdasarkan metode tetangga terdekat dengan pengukuran jarak educlidean….....
21
3.1 Hubungan antara sistem pembuat basis data dengan sistem pengenalan angka………………………………………………………
22
3.2 DFD level 0…………………………………………………………….
23
3.3 DFD level 1 …………………………………………………………….
23
3.4 DFDlevel2……………………………………………………………
24
3.5 DFD level 0…………………………………………………………
24
3.6 DFD level 1………………………………………………………………
24
3.7 DFD level 2………………………………………………………………
25
3.8 Flowchart umum…………………………………………………………
27
3.9 Form awal………………………………………………………………..
28
3.10 Form menu utama………………………………………………………
29
3.11 Form perancangan struktur menu utama………………………………..
29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 14
3.12 Form ambil gambar………………………………………………………. 30 3.13 Form tampilan gambar masukan………………………………………
31
3.14 Perancangan form tampilan gambar preprocessing……………………… 32 3.15 Perancangan form tampilan gambar ekstraksi ciri……………………….. 33 3.16 Perancangan form hasil pengenalan……………………………………… 33 3.17 Perancangan peringatan………………………………………………….. 34 3.18 Perancangan konfirmasi………………………………………………….. 34 3.19 Perancangan informasi………………………………………………….. 34 3.20 Flowchart input data baru………………………………………………. 35 3.21 Flowchart preprocessing………………………………………………
36
3.22 Flowchart ekstraksi ciri…………………………………………………
37
3.23 Flowchart pengenalan angka……………………………………………
39
4.1 Form welcome…………………………………………………………… 43 4.2 menu utama………………………………………………………………
44
4.3 Open file gambar angka…………………………………………………
44
4.4 Form waitbar……………………………………………………………… 45 4.5 Form proses pengenalan tampil gambar…………………………………
45
4.6 Hasil preprocessing……………………………………………………… 46 4.7 ekstraksi ciri level 1……………………………………………………… 47 4.8 ekstraksi ciri level 2……………………………………………………… 48 4.9 ekstraksi ciri level 3……………………………………………………… 49 4.10 Hasil pengenalan………………………………………………………..
50
4.11 Input data baru…………………………………………………………
51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 15
4.12 Form data baru…………………………………………………………… 51 4.13 Form data baru preprocessing…………………………………………
52
4.14 Form vektor ciri………………………………………………………..
52
4.15 Form dialog simpan……………………………………………………
53
4.16 Kesalahan preprocessing………………………………………………
53
4.17 Kesalahan ekstraksi ciri………………………………………………… 53 4.18 Dialog keluar dari program……………………………………………… 54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 16
BAB I PENDAHULUAN
A. Latar Belakang Manusia mempunyai kemampuan luar biasa untuk mengenali obyekobyek berdasarkan ciri-ciri atau pengetahuan yang pernah diamatinya dari obyekobyek bersangkutan. Misalnya manusia dapat membedakan dengan mudah antara tiang listrik dengan pohon, atau antara kursi dengan meja. Begitu juga kemampuan pengenalan manusia dalam mengenali tulisan tangan maupun tulisan cetak dalam bentuk angka maupun huruf. Usaha untuk menghasilkan alat yang dapat meniru kemampuan manusia dalam pengenalan obyek terus dilakukan diberbagai bidang. Usaha-usaha tersebut telah mendukung berkembangnya suatu disiplin dan metodologi yang kemudian dikenal dengan nama Pengenalan Pola (Pattern Recognition). Salah satu yang populer adalah aplikasi Optical Character Recognition. Pada proses pengenalan itu sendiri, terdapat beberapa metode untuk mendapatkan hasil pengenalan yang lebih akurat. Salah satu yang populer adalah Dekomposisi Wavelet Haar. Disini Wavelet Haar digunakan untuk penarikan vektor ciri. Wavelet Haar merupakan wavelet yang paling sederhana. Selain itu, dibandingkan dengan penyimpanan langsung (tanpa transformasi), penyimpanan citra digital sebagai deret Haar (yang diwakili oleh koefisien Haar) mempunyai keunggulan yaitu semakin tinggi resolusi citra digital tersebut, semakin banyak koefisien Haar dan semakin kecil nilainya (banyak di antaranya malah akan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 17
bernilai nol). Pembulatan koefisien-koefisien Haar yang bernilai "kecil" menjadi nol akan menghemat banyak memori penyimpanan dan tidak akan mengubah banyak citra semula. Dan juga Wavelet Haar dapat membawa keluar ciri (feature) asli dari citra yang dikenainya. Dengan demikian penulis tertarik untuk membuat aplikasi pengenalan angka dengan ekstraksi ciri Wavelet Haar. B. Rumusan Masalah Membangun program apliksi untuk mengenali angka dengan Wavelet Haar. C. Batasan masalah 1. Metode ekstraksi ciri wavelet Haar yang dipakai hanya pada level 1, level 2, dan level 3 2. Gambar masukan berupa gambar angka yang ditulis dengan alat bantu mouse dengan format .bmp 3. Posisi gambar angka tegak 4. Ukuran gambar minimal 64 pixel x 64 pixel D. Tujuan Membuat aplikasi yang dapat mengenali gambar angka dengan pemrosesan awal wavelet . E. Manfaat Hasil pengenalan dapat dikembangkan untuk aplikasi pengenalan pola yang lain, misalnya pengenalan kode pos F. Metodologi Metodologi dalam Rekayasa Perangkat Lunak yang digunakan adalah metode Waterfall. Tahap-tahap yang akan dilakukan adalah :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 18
1. Perancangan sistem : mengumpulkan input untuk sistem dan output apa saja yang akan dihasilkan oleh sistem yang dibuat. 2. Analisis : Semua kebutuhan yang sudah dikumpulkan diidentifikasi dan difokuskan secara khusus pada program aplikasi. 3. Desain : Pada tahap ini semua kebutuhan yang sudah diidentifikasi akan diubah menjadi suatu representasi software sepert flowchart yang dapat dipelajari kualitasnya sebelum memasuki tahap coding. 4. Implementasi: Hasil dari tahap desain akan diubah menjadi bentuk yang dapat dibaca dan dieksekusi oleh mesin , dalam hal ini adalah dalam bentuk listing program. 5. Pengujian: Untuk menemukan error dan memastikan bahwa input yang sudah diidentifikasikan pada tahap perancangan dan analisis akan menghasilkan output seperti yang diinginkan. G. Sistematika Penulisan BAB I Pendahuluan Pada bab ini akan dibahas latar belakang masalah, rumusan masalah, batasan masalah, metodologi, tujuan dan manfaat, sistematika penulisan. BAB II Landasan Teori Dalam bab ini akan dijelaskan mengenai pengetahuan yang menjadi dasar teori untuk mengimplementasikan pengenalan pola dengan menggunakan transformasi wavelet sebagai pemrosesan awal dan euclidean algoritma sebagai metode pengambilan keputusan. BAB III Analisis Sistem Dalam bab ini akan diidentifikasikan masalah yang akan diselesaikan dan tahap-tahap penyelesaian masalah pengenalan pola BAB IV Implementasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 19
Dalam bab ini akan dibahas algoritma untuk implementasi pengenalan pola dan tampilan jalannya program BAB V Hasil dan Pembahasan Dalam bab ini akan ditampilkan hasil pengujian program dan analisa terhadap hasil pengujian. BAB VI Kesimpulan dan Saran Dalam bab ini memuat kesimpulan dan saran dari masalah yang telah dibahas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 20
BAB II DASAR TEORI
A.
Pengertian Pengenalan Pola Pola adalah entitas yang terdefinisi dan dapat didefinisikan melalui ciri-
cirinya (feture) (Rinaldi Munir, 2004). Feature adalah deskriptor yang menggambarkan karakteristik dari suatu obyek (Dina Chahyati, 2003). Ciri ini digunakan untuk membedakan suatu pola dengan pola lainnya. Ciri yang bagus adalah ciri yang memiliki daya pembeda yang tinggi, sehingga pengelompokan pola berdasarkan ciri yang dimiliki dapat dilakukan dengan keakuratan yang tinggi. Berikut contoh pola beserta ciri yang dimiliki sebagai pembeda Tabel 2.1 Contoh Pola dan Cirinya Pola
Ciri Tinggi, tebal, titik sudut, lengkungan
Huruf garis,dll Amplitude, frekuensi, nada, intonasi, Suara warna, dll Tanda tangan
Panjang, kerumitan, tekanan,dll
Sidik jari
Lengkungan, jumlah garis, dll
Sedangkan pengertian pengenalan pola sendiri adalah proses pengenalan suatu obyek dengan menggunakan berbagai metode dimana dalam proses pengenalannya memiliki tingkat akurasi yang tinggi (Suta Wijaya, 2004).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 21
Memiliki tingkat akurasi yang tinggi mengandung pengertian bahwa suatu objek yang secara manual tidak dapat dikenali, tetapi bila menggunakan salah suatu metode pengenalan yang diaplikasikan pada komputer masih dapat dikenali. Pengenalan pola bertujuan menentukan kelompok atau kategori pola berdasarkan ciri-ciri yang dimiliki oleh pola tersebut. Dengan kata lain, pengenalan pola membedakan suatu obyek dengan obyek lain ( Rinaldi Munir, 2004). B.
Sistem Pengenalan Pola Dalam pengenalan pola terbagi ke dalam dua fase proses pengenalan yaitu : 1) fase pelatihan, pada fase ini beberapa contoh citra dipelajari untuk menentukan ciri yang akan digunakan dalam proses pengenalan serta prosedur klasifikasinya. 2) Fase pengenalan, pada fase ini citra diambil cirinya kemudian ditentukan kelas kelompoknya. Pendekatan yang digunakan dalam sistem pengenalan pola yaitu
pendekatan secara statistik dan pendekatan secara sintatik atau struktural (Rinaldi Munir,2004) 1.
Pendekatan Statistik Pendekatan ini menggunakan teori-teori ilmu peluang dan statistik. Ciriciri yang dimiliki oleh suatu pola ditentukan distribusi statistiknya. Pola yang
berbeda
memiliki
distribusi
yang
berbeda
pula.
Dengan
menggunakan teori keputusan di dalam statistik, digunakan distribusi ciri untuk mengklasifikasi pola.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 22
Contoh teori keputusan: Misalkan ada N pola yang dikenali, yaitu w1, w2,...,wN dan fungsi peluang atau kerapatan dari ciri – ciri pada pola diketahui. Jika x merupakan hasil pengukuran ciri – ciri, maka P( x | wi ) , i = 1, 2, ..., N dapat dihitung. Sebagai contoh, misalkan diketahui fungsi kerapatan dari diameter buah jeruk dan apel. peluang 1
P ( diameter | jeruk )
P ( diameter | apel ) diameter 0
a
b
1
Gambar 2.1. : Grafik Fungsi Kerapatan dari ciri diameter jeruk dan apel Jika sebuah objek diukur dan diperoleh diameternya adalah a cm, maka dapat diklasifikasikan objek tersebut sebagai “ jeruk “, karena p ( a | jeruk ) > p ( a | apel ) dan jika sebuah objek diukur dan diperoleh diameternya adalah b cm, maka dapat diklasifikasikan objek tersebut sebagai “ apel “, karena p ( a | jeruk ) > p ( a | apel ). Gambar sistem pengenalan pola dengan pendekatan statistik ditunjukkan oleh diagram pada Gambar 2.2 (Rinaldi Munir,2004).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 23
Gambar 2.2 Diagram Pendekatan Statistik Langkah-langkah sistem pengenalan pola dengan pendekatan statistik pada gambar 2.2 diterangkan sebagai berikut : 1) Preprocessing Preprocessing adalah proses awal yang dilakukan untuk memperbaiki kualitas citra dengan menggunakan teknik-teknik pengolahan citra (Rinaldi Munir,2004). Teknik pengolahan citra yang digunakan dalam penulisan ini adalah binerisasi dan pengubahan ukuran (imresize). Binerisasi adalah proses mengubah pixel citra yang memiliki dua nilai keabuan yaitu hitam dan putih (Rinaldi Munir,2004). 2) Feature Extraction Feature Extraction adalah proses mengambil ciri-ciri yang terdapat pada obyek di dalam citra. Pada proses ini obyek di dalam citra mungkin perlu dideteksi seluruh tepinya lalu menghitung properti-properti obyek yang berkaitan sebagai ciri. Proses ekstraksi ciri menggunakan dekomposisi wavelet
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 24
3) Classification Classification adalah proses mengelompokkan obyek ke dalam kelas yang sesuai. 4) Feature Selection Feature selection adalah proses memilih ciri pada suatu obyek agar diperoleh ciri yang optimum, yaitu ciri yang dapat digunakan untuk membedakan suatu obyek dengan obyek lainnya. 5) Learning Learning adalah proses belajar membuat aturan klasifikasi sehingga jumlah kelas yang tumpang tindih dibuat sekecil mungkin. Kumpulan ciri dari suatu pola dinyatakan sebagai vektor ciri dalam ruang multi dimensi. Jadi, setiap pola dinyatakan sebagai sebuah titik dalam ruang multi dimensi. Ruang multi dimensi dibagi menjadi sejumlah subruang. Tiap subruang dibentuk berdasarkan pola-pola yang sudah dikenali kategori dan ciri-cirinya .
Gambar 2.3 Contoh Pembagian Kelas Pola (Sumber : Pengolahan Citra Digital Dengan Pendekatan Algoritmik, Rinaldi Munir)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 25
2.
Pendekatan sintatik Pendekatan sintaktik adalah pendekatan untuk pengenalan pola menggunakan teori bahasa formal. Ciri-ciri yang terdapat pada suatu pola ditentukan primitif dan hubungan struktural antara primitif kemudian menyusun tata bahasanya. Kelompok ini ditentukan dari aturan produksi pada tata bahasa yang telah disusun. Gambar 2.4 memperlihatkan sistem pengenalan pola dengan pendekatan sintaktik.
Gambar 2.4 Pendekatan sintaktik Pendekatan yang digunakan dalam membentuk tata bahasa untuk mengenali pola adalah mengikuti kontur atau tepi batas obyek dengan sejumlah segmen garis terhubung satu sama lain, lalu mengkodekan setiap garis tersebut, misalnya dengan kode rantai. Setiap segmen garis mempresentasikan primitif pembentuk obyek. Analogi Pendekatan Statistik dan Sintaktik pada tabel 2.2
Tabel 2.2 Analogi Pendekatan Statistik dan Sintatik Ciri/feture (warna,tekstur)
Primitif (garis lurus, orientasi)
Density Function (probabilitas)
Grammar (natural language)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 26
Estimation (mean, varian) Classification (kategori obyek)
Inferensi (aplikasi primitif pada grammar) Description (kategori obyek)
Contoh beberapa Sistem Pengenalan Pola : •
Prosedur dasar computer untuk klasifikasi obyek otomatis dan pembuatan keputusan.
C.
•
Pengenalan sidik jari, suara
•
Pengenalan barcode untuk industri
Ekstraksi Ciri Dengan Dekomposisi Wavelet
1. Vektor Apabila diketahui sebuah ruang vektor dua dimensi, maka akan terdapat vektor [1 0]T dan [0 1]T untuk merepresentasikan semua vektor yang dapat terbentuk di ruangan tersebut. Contoh : [2 3] T = 2 [1 0] T + 3 [0 1] T. Dengan demikian, dikatakan bahwa vektor [0 1]T dan [1 0]T merupakan basis dari ruang vektor dua dimensi karena dapat merepresentasikan semua vektor sebagai kombinasi linier dari basis [0 1]T dan [1 0]T. Atau dapat pula dikatakan bahwa basis [0 1]T, [1 0]T merentang ruang dua dimensi. Bila ingin mempresentasikan sebauh titik atau vektor, maka basis [0 1]T dan [1 0]T sudah cukup memadai. Tetapi, basis [0 1]T, [1 0]T bukan satu-satunya basis yang bisa merentang ruang dua dimensi. Ada basis-basis lainnya yang bisa digunakan, contohnya [1 2]T, [2 -1] T. Selain berbentuk kumpulan vektor, basis dapat juga berbentuk kumpulan fungsi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 27
2. Wavelet Wavelet juga merupakan sebuah basis. Basis wavelet berasal dari sebuah fungsi penskalaan atau dikatakan juga sebuah scaling function. Scaling function memiliki sifat yaitu dapat disusun dari sejumlah salinan dirinya yang telah didilasikan, ditranslasikan dan diskalakan . Fungsi ini diturunkan dari persamaan dilasi (dilation equation), yang dianggap sebagai dasar dari teori wavelet. Persamaan dilasi berbunyi demikian :
φ ( x) = ∑ c k φ (2 x − k ) ……………..
(2.1)
Dari persamaan scaling function ini dapat dibentuk persamaan wavelet yang pertama (atau disebut juga mother wavelet), dengan bentuk sebagai berikut :
ϕ 0 ( x) = ∑ (−1) k c1− k φ (2 x − k ) ………………(2.2) k
Dari mother wavelet ini kemudian dapat dibentuk wavelet-wavelet berikutnya (ψ1, ψ2 dan seterusnya) dengan cara mendilasikan (memampatkan atau meregangkan) dan menggeser mother wavelet. Scaling function yang dapat membentuk wavelet bermacam-macam jenisnya. Berdasarkan scaling function inilah basis wavelet memiliki nama yang berbeda-beda. •
Wavelet Haar memiliki scaling function dengan koefisien c0 = c1 = 1.
•
Wavelet Daubechies dengan 4 koefisien (DB4) memiliki scaling function dengan koefisien c0 = (1+√3)/4, c1 = (3+√3)/4, c2 = (3-√3)/4, c3 = (1√3)/4
•
Wavelet B-Spline kubik memiliki scalilng function dengan koefisien c0 = 1/8, c1 = 4/8, c2 = 6/8, c3 = 4/8, c4 = 1/8.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 28
Wavelet Haar dapat dijelaskan dalam ruang vektor 4 dimensi.
Basis paling
sederhana yang sudah sering digunakan adalah basis orthonormal sebagai berikut :
1 0 0 0 0 1 0 0 v 0 = , v 1 = , v 2 = , v 3 = 0 0 1 0 0 0 0 1 Wavelet Haar juga merentang ruang vektor 4 dimensi dengan vektor-vektor basis sebagai berikut 1 1 1 0 1 1 − 1 0 ,h = ,h = ,h = h0 = 1 1 − 1 2 0 3 1 1 − 1 0 − 1 yang bila digambarkan dalam bentuk sinyal akan berbentuk sebagai berikut :
Gambar 2.5 Gambar vektor h0, h1, h2, h3 dalam bentuk sinyal Sumber : Dina Chahyati. Fakultas Ilmu Komputer Universitas Indonesia Jakarta http://www.ui.cs.ac.id , diakses November 2006
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 29
Tabel 2. 3 Scaling, mother wavelet, mother wavelet dilasi, mother wavelet didilasi dan digeser
Jika menggunakan basis orthonormal v0, v1, v2, dan v3, dapat untuk merepresentasikan suatu vektor sebagai kombinasi linier dari v0, v1, v2, dan v3. Misalkan ada vektor 6 4 x= − 7 5 Jika vektor x dituliskan sebagai berikut,
x = a v0 + b v1 + c v2 + d v3 ………………………..
(2.3)
Maka dapat dengan mudah ditemukan bahwa a=6, b=4, c=-7, dan d=5 Jika suatu vektor dipresentasikan sebagai kombinasi linear dari vektorvektor dalam wavelet Haar, maka nilai a,b,c dan d dalam persamaan (2.4)
x0 1 1 1 x 1 1 1 = a + b + c − 1 + d x2 1 − 1 0 1 − 1 0 x3
0 0 ……………………. (2.4) 1 − 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 30
Dapat dicari dengan : Menurunkan persamaan (2.4) sebagai berikut : x0 = a + b + c x1 = a + b – c x2 = a – b
+d
x3 = a – b
–d
sehingga didapatkan : x2 – x3 = 2d x0 – x1 = 2c (x0 + x1) – (x2 + x3) = 4b (x0 + x1) + (x2 + x3) = 4a Dengan demikian dapat diambil kesimpulan bahwa d = ½ (x2 – x3) c = ½ (x0 – x1) b = ½ ( ½ (x0 + x1) – ½ (x2 + x3)) a = ½ ( ½ (x0 + x1) + ½ (x2 + x3)) Terlihat bahwa sebenarnya koefisien-koefisian a,b,c,d dapat diperoleh dari operasi averaging (penambahan) dan differencing (selisih) terhadap nilai x0, x1, x2 dan x3 dengan aturan tertentu. Stephane Mallat kemudian memperkenalkan cara mudah menghitung koefisien a, b, c dan d dengan cara yang dikenal dengan algoritma piramida Mallat. Algoritma tersebut dapat ditunjukkan dengan gambar berikut. L L L aj → a j −1 → a j − 2 ... → a0 H
H
d j −1
H
d j −2
d0
Gambar 2.6 Gambar algoritma pyramida Mallat dimana aj adalah vektor awal dengan ukuran 2j, dan koefisien a, b, c, d dapat diperoleh dari aproksimasi a0 detail-detail d0, d1 dan seterusnya. Matriks L dan H
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 31
masing masing adalah matriks lowpass (averaging) dan highpass (differencing) dengan bentuk:
L=
c0 1 . 2 . .c 2
c1
c2
c3
c0
c1
... c2
...
c3
. .
c0
c1
.
c3
c2 c0
c3 c1
H =
c3 1 . 2 . .c1
− c2
− c0
c1 c3
− c2
... c1 .
− c0 .
− c0
... c3
− c2
.
c1 c3
Matriks L dan H untuk basis Haar dimana c0 = c1 = 1 adalah sebagai berikut : 12 L= 0
1
2
0
0 1
2
12 − 12 H = 0 0
0 1 2
0 1
2
0 − 1 2
Proses mencari koefisien a, b, c dan d seperti ini disebut dengan proses dekomposisi. Sebagai contoh, untuk vektor x di atas didekomposisi menjadi: 6 1 1 4 L = 2 2 10 10 1 ] 0 0 L =[1 5 2 2 2 2→ → a 0 = [2] a 2 = a 1 = − 1 − 7 5 H =
12 0
−1 0
2
0 1 2
0
−1
2
H
1 d1 = − 6
= [1 2
− 12]
d 0 = [3]
Nilai a,b, c dan d pada persamaan 2.4 kemudian dapat diperoleh dengan melihat nilai aproksimasi terakhir a0 dan semua nilai-nilai detail d0,d1 dan d1 dimana a = 1 (1 2 (x0 ÷ x1 ) ÷ 1 2(x2 ÷ x3 )) = a 0 = 2 2 1 b= (1 2 (x0 ÷ x1 ) − 1 2(x2 ÷ x3 )) = d 0 = 3 2 c = 1 (1 2 ( x0 − x1 )) = d 1 (0 ) = 1 2 d = 1 (1 2 (x2 − x3 )) = d 1 (1) = −6 2
− c0 − c2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 32
0 6 1 1 1 4 = 2 1 + 3 1 + 1− 1 + ( −6) 0 1 − 7 1 − 1 0 − 1 5 1 − 1 0 3. Transformasi terhadap citra Untuk citra dua dimensi, prosedur dekomposisi level tunggal terdiri dari citra satu dimensi yang di-filter pada arah mendatar kemudian diikuti oleh citra satu dimensi yang di-filter pada arah tegak yang diutilisasi dengan menggunakan filter tapis rendah dan filter tapis tinggi. Proses dekomposisi transformasi wavelet untuk citra dua dimensi dapat dijelaskan pada gambar Lowpassi terhadap kolom Lowpass terhadap baris Highpass terhadap kolom Citra Highpass terhadap baris
Lowpassi terhadap kolom Highpass terhadap kolom
Gambar 2.7 Gambar proses dekomposisi wavelet Pada notasi Matlab, bagian LL disebut bagian aproksimasi (A), bagian LH disebut detail vertikal (V), bagian HL disebut detail horizontal (H), dan bagian HH disebut detail diagonal (D) (Dina Chahyati,2003).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 33
Gambar 2.8 Gambar hasil dekomposisi wavelet 4. Contoh Dekomposisi Citra Dengan Wavelet Haar citra berukuran 8x8 dengan nilai sebagai berikut: 47 67 72 67 39 51 64 86
73 69 40 35 37 70 50 46
47 46 59 72 65 54 44 50
30 42 36 52 61 68 50 37
45 63 62 51 41 37 44 34
37 27 8 26 24 14 11 15 57 35 30 83 20 24 70 36 111 88 48 119 148 86 99 145
Langkah-langkah dekomposisi wavelet Haar terhadap potongan citra tersebut adalah: 1. Tentukan filter dekomposisi LH, yaitu ½ ½ 0 0 0 0 0 0
½ -½ 0 0 0 0 0 0
0 0 ½ ½ 0 0 0 0
0 0 ½ -½ 0 0 0 0
0 0 0 0 ½ ½ 0 0
0 0 0 0 ½ -½ 0 0
0 0 0 0 0 0 ½ ½
0 0 0 0 0 0 ½ -½
2. Untuk setiap kolom, kalikan kolom tersebut dengan matriks dekomposisi di atas. Contoh untuk kolom pertama:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 34
½ ½ 0 0 0 0 0 0
½ -½ 0 0 0 0 0 0
0 0 ½ ½ 0 0 0 0
0 0 ½ -½ 0 0 0 0
0 0 0 0 ½ ½ 0 0
0 0 0 0 ½ -½ 0 0
0 0 0 0 0 0 ½ ½
0 0 0 0 0 0 ½ -½
*
47 67 72 67 39 51 64 86
=
57 -10 69 2.5 45 - 6 75 -11
Hasil dekomposisi perbaris ini akan menghasilkan matriks D2 sbb 57.0000 71.0000 -10.0000 2.0000 69.5000 37.5000 2.5000 2.5000 45.0000 53.5000 -6.0000 -16.5000 75.0000 48.0000 -11.0000 2.0000
46.5000 0.5000 65.5000 -6.5000 59.5000 5.5000 47.0000 -3.0000
36.0000 -6.0000 44.0000 -8.0000 64.5000 -3.5000 43.5000 6.5000
54.0000 31.5000 25.5000 11.0000 -9.0000 5.5000 1.5000 -3.0000 56.5000 23.0000 22.5000 70.0000 5.5000 -12.0000 -7.5000 -13.0000 39.0000 28.0000 67.5000 79.0000 2.0000 -8.0000 -43.5000 -9.0000 39.0000 67.0000 109.0000 146.5000 5.0000 -19.0000 10.0000 1.5000
Keterangan: - warna biru adalah hasil aproksimasi - warna merah adalah hasil detail 3.
Atur hasil pada point 3 supaya bagian aproksimasi berkumpul di bagian atas dan bagian detail mengumpul di bagian bawah (matriks D3)
57.0000 71.0000 46.5000 36.0000 54.0000 31.5000 69.5000 37.5000 65.5000 44.0000 56.5000 23.0000 45.0000 53.5000 59.5000 64.5000 39.0000 28.0000 75.0000 48.0000 47.0000 43.5000 39.0000 67.0000 -10.0000 2.0000 0.5000 -6.0000 -9.0000 5.5000 2.5000 2.5000 -6.5000 -8.0000 5.5000 -12.0000 -6.0000 -16.5000 5.5000 -3.5000 2.0000 -8.0000 -11.0000 2.0000 -3.0000 6.5000 5.0000 -19.0000
25.5000 11.0000 22.5000 70.0000 67.5000 79.0000 109.0000 146.5000 1.5000 -3.0000 -7.5000 -13.0000 -43.5000 -9.0000 10.0000 1.5000
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 35
4.
Setelah itu, lakukan hal yang sama dengan cara mengambil perbaris. ½ ½ 0 0 0 0 0 0
½ -½ 0 0 0 0 0 0
0 0 ½ ½ 0 0 0 0
0 0 ½ -½ 0 0 0 0
0 0 0 0 ½ ½ 0 0
0 0 0 0 ½ -½ 0 0
0 0 0 0 0 0 ½ ½
0 0 0 0 0 0 ½ -½
*
57 71 46.5 36 54 31.5 25.5 11
=
64 -7 41.25 5.25 72.7 11.25 18.25 7.25
Kemudian hasilnya diletakkan di matriks hasil kembali dalam bentuk baris, sehingga hasilnya (matriks D4) akan sebagai berikut: 64.0000 53.5000 49.2500 61.5000 -4.0000 2.5000 -11.2500 -4.5000 5.
-7.0000 41.2500 16.0000 54.7500 -4.2500 62.0000 13.5000 45.2500 -6.0000 -2.7500 0 -7.2500 5.2500 1.0000 -6.5000 1.7500
5.2500 42.7500 11.2500 18.2500 10.7500 39.7500 16.7500 46.2500 -2.5000 33.5000 5.5000 73.2500 1.7500 53.0000 -14.0000 127.7500 3.2500 -1.7500 -7.2500 -0.7500 0.7500 -3.2500 8.7500 -10.2500 4.5000 -3.0000 5.0000 -26.2500 -4.7500 -7.0000 12.0000 5.7500
7.2500 -23.7500 -5.7500 -18.7500 2.2500 2.7500 -17.2500 4.2500
Atur hasil pada point 4 supaya bagian aproksimasi berkumpul di bagian kiri dan bagian detail mengumpul di bagian kanan (matriks D5)
64.0000 53.5000 49.2500 61.5000 -4.0000 2.5000 -11.2500 -4.5000 6.
5.2500 11.2500 7.2500 41.2500 42.7500 18.2500 -7.0000 54.7500 39.7500 46.2500 16.0000 10.7500 16.7500 -23.7500 62.0000 33.5000 73.2500 -4.2500 -2.5000 5.5000 -5.7500 45.2500 53.0000 127.7500 13.5000 1.7500 -14.0000 -18.7500 -7.2500 2.2500 -2.7500 -1.7500 -0.7500 -6.0000 3.2500 0 0.7500 8.7500 2.7500 -7.2500 -3.2500 -10.2500 1.0000 -3.0000 -26.2500 5.2500 4.5000 5.0000 -17.2500 1.7500 -7.0000 5.7500 -6.5000 -4.7500 12.0000 4.2500
Hasilnya sebagai berikut :
64.0000 53.5000 49.2500 61.5000 -4.0000
41.2500 54.7500 62.0000 45.2500 -2.7500
42.7500 39.7500 33.5000 53.0000 -1.7500
18.2500 -7.0000 46.2500 16.0000 73.2500 -4.2500 127.7500 13.5000 -0.7500 -6.0000
5.2500 11.2500 7.2500 10.7500 16.7500 -23.7500 -2.5000 5.5000 -5.7500 1.7500 -14.0000 -18.7500 3.2500 -7.2500 2.2500
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 36
2.5000 -7.2500 -3.2500 -10.2500 0 0.7500 8.7500 2.7500 -11.2500 1.0000 -3.0000 -26.2500 5.2500 4.5000 5.0000 -17.2500 -4.5000 1.7500 -7.0000 5.7500 -6.5000 -4.7500 12.0000 4.2500 Keterangan: - warna biru adalah bagian aproksimasi - warna merah adalah bagian detail horizontal - warna coklat adalah bagian detai vertikal - warna hijau adalah bagian detail diagonal 7. Penentuan vektor ciri Dari masing-masing kelompok pada poin 6 tersebut kemudian diambil rataratanya.
D.
Euclidean Algoritma
Dari sampel i yang akan ditentukan kategorinya, dihitung jaraknya ke masingmasing template. Rumus jarak euclidean
((x − x )
2
d=
1
2
)
+ ( y1 − y 2 ) …………….(2.5) 2
Sampel i dimasukkan pada kategori obyek dengan harga d yang terkecil (Aniati Murni, 1992) Gambar klasifikasi berdasarkan Euclidean ditunjukkan pada gambar 2.9 Ciri 2
Sampel i
d1 Kelas 3
d3
Kelas1
d2
Kelas 2
Ciri 1 Gambar 2.9 Diagram ruang ciri set sampel belajar. Sampel i dimasukkan ke kategori obyek k = 3 berdasarkan metode tetangga terdekat dengan pengukuran jarak euclidean (Sumber : Aniati murni,1992)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 37
BAB III ANALISA DAN PERANCANGAN SISTEM
A. Analisa Sistem Sistem yang dibuat adalah sistem untuk pengenalan pola tulisan tangan, lebih khusus yaitu pola angka menggunakan metode statistik sederhana yaitu euclidean algoritma dengan ekstraksi ciri wavelet. Dalam sistem ini, gambar masukan akan dicari vektor ciri kemudian dibandingkan dengan vektor ciri pada template. Gambar akan dikenali ke template tertentu dengan melihat jarak euclidean yang paling minimal. Vektor ciri template disimpan dalam tabel tbciri pada database AngkaCetak Hubungan antara sistem pembuat basis data sebagai penyedia template dengan sistem pengenalan angka dapat digambarkan sebagai berikut : gambar Developer
gambar
Sistem Pembuat Basis Data
ciri
gambar User hasil_pengenalan
ciri
Sistem Pengenalan Angka
Gambar 3.1 Gambar hubungan antara Sistem Pembuat Basis Data dengan Sistem Pengenalan Angka Desain Sistem Pembuat Basis Data dan desain Sistem Pengenalan Angka dapat digambarkan dengan DFD sebagai berikut :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 38
1. Desain Sistem Pembuat Basis Data DFD Level 0 Developer memasukkan gambar angka ke dalam sistem pembuat basis data. Dari sistem pembuat basis data memperoleh ciri . Digambarkan pada DFD level 0 gambar 3.2
Gambar 3.2 DFD Level 0 DFD Level 1 Di dalam sistem pembuat basis data gambar angka akan diolah melalui proses preprocessing, dan ekstraksi ciri. Hasilnya berupa vektor ciri yang akan disimpan dalam tbciri. Digambarkan pada gambar 3.3
gambar_angka developer
gambar_angka 1. input
gambar_normal_biner 2. preprocessing
ciri 3. ekstraksi_ciri
ciri
ciri
Gambar 3.3 DFD Level 1 DFD Level 2 Pada proses preprocessing, gambar masukkan akan diubah menjadi gambar biner, dan normalisasi ukuran gambar. Proses preprocessing digambarkan pada gambar 3.4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 39
gambar_angka
gambar_biner 2.1 binerisasi
gambar_normal_biner 2.2 ubah_ukuran
Gambar 3.4 DFD Level 2 2. Desain Sistem Pengenalan Angka DFD Level 0 User memasukkan gambar angka ke sistem pengenalan angka. Dalam sistem ini gambar angka diproses sehingga menghasilkan hasil pengenalan angka sesuai gambar masukkan. Digambarkan pada DFD level 0 gambar 3.5
Gambar 3.5 DFD Level 0 DFD Level 1 gambar_angka user
gambar_angka 1 Input
2 Preprocessing
gambar_biner_normal
3 Ekstraksi ciri
ciri ciri
ciri
hasil_pengenalan_angka
4 keputusan
Gambar 3.6 DFD Level 1 User memasukkan gambar angka, kemudian gambar angka akan diproses pada proses preprocessing. Hasilnya adalah gambar biner dengan ukuran yang sudah disesuaikan yaitu 64 x 64. Hasil proses preprocessing masuk ke proses
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 40
ekstraksi ciri. Hasilnya berupa vektor ciri yang nantinya digunakan sebagai input pada proses pengenalan.
DFD Level 2
Gambar 3.7 DFD Level 2
Pola template yang disediakan berjumlah 50 buah. Terdiri dari pola angka 0 sampai dengan 9. Untuk ujicoba program akan dicobakan terhadap 30 pola angka. Sistem akan memberi informasi hasil pengenalan pola masukkan sebagai pola angka tertentu.
B.
Analisa Kebutuhan Hardware dan Software 1. Analisa kebutuhan hardware Kebutuhan hardware merupakan kebutuhan akan perangkat keras komputer untuk mendukung sistem yang akan dibuat. Yang dibutuhkan untuk membangun sistem ini antara lain : 1. Main board
: MSI PM8M2 V
2. Procesor
: Intel P4 2.66 GHz
3. Memori
: RAM 256 MB
4. Hard disk
: HDD 40 Gbyte
5. Monitor
: LG 15’
6. Disk Drive
: Samsung 52x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 41
2. Analisis kebutuhan software Analisis kebutuhan software untuk mendukung pengoperasian dan pengembangan sistem.
C.
1. Sistem operasi
: Sistem Operasi Windows XP
2. Source Code
: Matlab 6.5
3. Browser
: Internet Explorer
4. Data base
: SQLyog
Perancangan User Interface
Sistem yang dibuat terdiri dari 2 menu yaitu : File dan Informasi. 1. Menu File terdiri dari sub menu Input pola yaitu untuk memasukkan pola angka yang ingin dikenali, Input Data Baru yaitu untuk memasukkan data baru. Sub menu keluar untuk menutup program 2. Menu informasi untuk menampilkan informasi tentang penggunaan program. Gambaran sistem secara umum adalah sebagai berikut :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 42
mulai
Menu Pilihan 1. File 2. Informasi Masukkan pilihan(pil)?
If pil=1
ya
Menu Pilihan 1. Input Pola 2. Input Data Baru 3.Keluar Masukkan pilihan(x)?
tidak
If pil=2
ya
informasi If x=1
ya
Input pola
ya
Input data baru
tidak
tidak
If x=2
tidak
Selesai If x=3
Gambar 3.8 Flowchart secara umum
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 43
a. Form awal program dimulai
Gambar 3.9 Form Awal (Welcome) Dalam form awal ini terdiri dari 1. 4 buah static text yang digunakan sebagai pembuat dua garis siku atas dan bawah. 2. Satu buah axes untuk menampilkan gambar pada tulisan judul : Program pengenalan angka. 3. Satu buah pushbutton (tombol) untuk masuk ke menu utama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 44
b. Form Menu Utama
LOGO
Gambar 3.10 Form Menu Utama Form ini terdiri dari satu buah axes yang menampilkan latar belakang menu utama Pada form ini terdiri dari sebuah menu editor dimana terdapat menu-menu sebagai berikut : File
Informasi
Input Pola
Input Data Baru Keluar
Gambar 3.11 Perancangan Menu Utama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 45
Gambar 3.12 Form ambil gambar Form ini untuk mengambil pola yang akan dijadikan data baru dan juga pola yang akan dikenali.
c. Perancangan form proses pengenalan angka Dalam form ini semua proses pengenalan ditampilkan mulai dari tampil hasil input , preprocessing, ekstraksi ciri, dan pengenalan angka.
Pada saat form
muncul pertama kali yang ditampilkan adalah : 1. axes untuk menampilkan gambar masukkan 2. Static text dibawah axes untuk menampilkan tulisan ‘gambar asli’ 3. 3 buah pushbutton (tombol) untuk proses preprocessing, pengenalan, dan kembali ke menu utama.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 46
Gambar 3.13 Perancangan Form tampilan gambar masukkan
Saat memilih tombol preprocessing maka akan muncul axes yang menampilkan gambar hasil preprocessing. Axes ini tidak terlihat ketika user belum memilih tombol preprocessing.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 47
Gambar 3.14 Perancangan Form tampilan gambar preprocessing
Untuk memilih dan menampilkan hasil ekstraksi ciri pilih popupmenu sesuai level. Level pilihan akan muncul pada ‘edittext’ disebelah popupmenu.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 48
Gambar 3.15 Perancangan Form tampilan gambar ekstraksi ciri Axes warna putih muncul saat memilih level 1, axes warna biru muncul pada saat memilih level 2, axes warna abu-abu muncul pada saat memilih level 3
d. Perancangan form pengenalan angka Form ini terdiri dari statictext sebagai keterangan ‘gambar dikenali sebagai angka’ dan edit text untuk menampilkan hasil pengenalan. Pushbutton untuk menutup form hasil pengenalan
Gambar 3.16 Perancangan Form hasil pengenalan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 49
e. Perancangan form peringatan Ada dua form yaitu peringantan preprocessing, dan ekstraksi ciri
Gambar 3.17 Perancangan Form peringatan f. Perancangan form konfirmasi Ada dua form yaitu dialog keluar program dan simpan data baru
Gambar 3.18 Perancangan Form konfirmasi g. Perancangan Form Informasi Terdiri 1 buah axes untuk gambar background, dan static text untuk penulisan informasi program, nama pembuat, dan dosen pembimbing
Gambar 3.19 Perancangan Form informasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 50
D.
Perancangan proses 1.
Input Data Baru Cara kerja proses ini a. Ambil gambar baru b. Preprocessing c. Ekstraksi ciri untuk penarikan vektor ciri d. Simpan vektor ciri mulai
Input gambar
preprocessing
If preprocessing= 0
ya
Pesan kesalahan
tidak
Ekstraksi ambil vektor ciri
simpan
selesai
Gambar 3.20 Flowchart input data baru
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 51
2.
Preprocessing Cara kerja proses ini a. Ambil gambar dari input b. binerisasi citra, yaitu pengubahan citra grayscale menjadi citra hitam putih yang bernilai 1 dan 0. angka 1 menyatakan warna putih, dan 0 menyatakan warna hitam c. Pengubahan ukuran citra menjadi citra dengan ukuran 64 x 64. mulai
Ambil gambar angka
binerisasi
Ubah ukuran
Citra normal biner
selesai
Gambar 3.21 Flowchart Preprocessing
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 52
3.
Proses Ekstraksi ciri mulai
Input gambar
preprocessimg
If preprocessing= 0
ya
Pesan kesalahan
tidak
Dekomposisi wavelet
Hitung rata approksimasi,horis ontal,diagonal,verti kal
Vektor ciri
selesai
Gambar 3.22 Flowchart proses ekstraksi ciri
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 53
Pada proses ini langkah-langkah yang dilakukan sehingga mendapatkan vektor ciri : 1. Ambil gambar hasil preprocessing yaitu gambar normal biner 2. Kenai dengan dekomposisi wavelet 3. Hasil
dekomposisi
wavelet
adalah
approksimasi,
detail
vertikal,
horisontal,dan diagonal hitung rata-rata sehingga menjadi vektor ciri
4.
Proses pengenalan angka
Dalam proses ini gambar input setelah dicari vektor cirinya akan dibandingkan dengan vektor ciri yang ada pada template. Dengan melihat nilai paling minimum jarak antara vektor ciri input dengan vektor ciri masing-masing template. Gambar akan dikenali sebagai anggota template tertentu jika memiliki jarak yang paling dekat.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 54
mulai
Ambil vektor ciri input
i=1
ya
If i<=panjangbaris
Hitung d
tidak Cari nilai d paling min
Tampil hasil pengenalan
selesai
Gambar 3.23 Flowchart proses pengenalan angka
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 55
BAB IV IMPLEMENTASI A. Algoritma Program Sistem yang dibangun terdiri dari proses masukkan data baru, proses preprocessing, proses ekstraksi ciri, dan proses pengenalan angka. Dalam bab ini akan diuraikan algoritma tiap proses.
1.
Algoritma proses masukkan data baru a.
Ambil gambar hasil preprocessing
b.
Kenai dengan filter dekomposisi wavelet
c.
Untuk setiap kolom gambar hasil preprocessing kalikan dengan matrik dekomposisi
d.
Hasilnya, baris ganjil letakkan di bagian atas, baris genap di bagian bawah. (dalam penulisan ini implementasi menggunakan toolbox matlab sehingga sehingga secara langsung akan diatur demikian)
e.
Lakukan hal yang sama dengan mengambil per baris
f.
Kolom ganjil disebelah kanan kolom genap disebelah kiri
g.
Untuk penarikan vektor ciri hasil dekomposisi terbagi menjadi 4 bagian. ¼ approksimasi, ¼ horisontal, ¼ vertikal, dan ¼ diagonal. Masing-masing bagian hitung rata-rata. Hasilnya gunakan sebagai vektor ciri.
h.
Untuk level 2 dan level 3 juga dengan cara yang sama yaitu lakukan pada operasi baris dan kolom. Hanya pada level 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 56
dekomposisi dikenakan pada hasil approksimasi level 1, dan pada level 3 dekomposisi dikenakan pada hasil approksimasi level 2. i.
Pada penyimpanan vektor ciri, koneksikan dengan database perintah yang digunakan : conn=database('myodbc','root',''); ping(conn);
q.
masukkan data ke tabel tempbaru curs = exec(conn, 'select * from tempbaru'); setdbprefs('DataReturnFormat','cellarray'); curs = fetch(curs); AA=curs.Data;
r.
Simpan data hasil vektor ciri dalam variabel data1
s.
Simpan variabel vektor ciri yang ada pada tabel di data2
t.
Masukkan data1 pada data2 di tabel tempbaru insert(conn, 'tempbaru', data2, data1);
2.
Proses Preprocessing a.
Ambil gambar input
b.
Lakukan ubah ukuran (imresize), pola masukkan diubah ke ukuran 64 x 64 ubah= imresize(citra,[64 64]);
c.
Binerisasi, ubah pixel gambar menjadi 2 nilai derajat keabuan yaitu 0 dan 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 57
3.
Proses ekstraksi ciri a.
Ambil gambar hasil preprocessing
b.
Lakukan dekomposisi wavelet dengan operasi baris dan operasi kolom,
c.
Hasil dekomposisi bagi menjadi 4 bagian dengan ukuran ¼ citra awal,
d.
Untuk semua level langkah-langkah sama, hanya untuk level 2 citra awal yang didekomposisi adalah approksimasi level 1, dan untuk level 3 adalah aprroksimasi level 2
4.
Proses pengenalan angka a.
Ambil vektor ciri hasil dekomposisi
b.
Hitung jarak vektor ciri hasil dekomposisi dengan vektor ciri yang ada pada template, dengan euclidean pada rumus (2.5)
d.
a2, b2, c2, d2 adalah ciri dari pola masukkan
f.
Jarak euclidean disimpan pada variabel d
g.
Cari nilai d yang paling minimum.
h.
Pola masukkan akan dikenali ke template sesuai dengan nilai d yang paling minimum.
i.
Langkah-langkah yang sama untuk level 2 dan level 3
j.
Jika level 2 template yang digunakan template vektor ciri level 2, jika level 3 template yang digunakan template vektor ciri level 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 58
B.
Jalannya Program
Pertama kali program dijalankan akan keluar form WELCOME, ini adalah form awal sebelum masuk ke menu utama
Gambar 4.1 Form welcome Pilih tombol MASUK untuk ke menu utama. Dalam menu utama terdapat menu File dan Informasi Untuk mengenali gambar pilih menu File Input Pola
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 59
Gambar 4.2 Menu Utama
Masuk ke form menu utama pilih input pola akan keluat jendela open file gambar
Gambar 4.3 Jendela Open File gambar angka
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 60
Pada saat tampil gambar masukkan akan muncul form waitbar sebagai tanda program sedang memproses gambar masukan
Gambar 4.4 Form waitbar Gambar Masukkan tampil dalam Form proses, disini semua proses pengenalan akan dilakukan.
Gambar 4.5 Form proses pengenalan tampil gambar
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 61
Pilih tombol preprocessing untuk menampilkan gambar hasil preprocessing
Gambar 4.6 Hasil preprocessing
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 62
Pilih level wavelet pilihan pada popupmenu jika level 1 maka akan tampil
Gambar 4.7 Hasil ekstraksi level 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 63
Jika yang dipilih level 2 maka hasil ekstraksi akan tampil sebagai berikut :
Gambar 4.8 Hasil ekstraksi level 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 64
Jika yang dipilih level 3 maka akan tampil hasil ekstraksi sebagai berikut :
Gambar 4.9 Hasil ekstraksi level 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 65
Pilih hasil pengenalan maka akan tampil hasil pengenalan gambar yang dimasukkan
Gambar 4.10 Hasil pengenalan Jika user menginginkan untuk input data baru, Pada form data baru user cukup memasukkan gambar pola baru yang ingin dijadikan template
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 66
Gambar 4.11 input data baru
Gambar 4.12 Form data baru
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 67
Data baru juga harus melalui tahap preprocessing.
Gambar 4.13 Form data baru preprocessing
Pilih tombol simpan maka akan tersimpan dalam tabel Gambar 4.14 Form vektor ciri
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 68
Ketika memilih tombol simpan akan ada konfirmasi ulang apakah benar-benar ingin menyimpan atau tidak, jika ya maka akan langsung masuk ke tabel
Gambar 4.15 Form dialog simpan Terdapat form peringatan jika belum melakukan tahap preprocessing dan ekstraksi ciri pada proses pengenalan
Gambar 4.16 Form pesan kesalahan preprocessing
Gambar 4.17 Form pesan kesalahan ekstraksi ciri
Jika akan keluar dari program pilih sub menu keluar dari menu file, akan muncul dialog untuk memastikan user benar-benar keluar dari program
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 69
Gambar 4.18 Form dialog keluar dari program
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 70
BAB V HASIL DAN PEMBAHASAN A. Hasil Pengujian Pengujian dilakukan terhadap 30 sampel gambar angka. Dari masing-masing level ekstraksi menghasilkan hasil pengenalan yang berbeda. Berikut disajikan tabel hasil pengujian pada tiga level ekstraksi.
Tabel 5.1 Hasil pengujian Gambar Level 1
Hasil Pengujian Level 2
Level 3
0
0
9
0
0
8
8
8
9
1
1
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 71
1
1
1
1
1
1
2
2
2
2
2
2
2
2
5
3
0
3
3
3
0
3
8
0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 72
4
4
4
8
8
4
4
8
4
5
5
7
7
7
5
7
5
5
6
6
6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 73
6
6
6
6
6
6
7
2
5
7
4
3
7
8
2
8
8
8
8
8
8
8
8
0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 74
6
9
6
9
9
9
9
8
9
Bagian tabel yang berwarna abu-abu adalah hasil gambar yang dikenali sebagai obyek lain. Dari hasil 30 kali pengujian dapat dilihat ketepatan dan kesalahan pengenalan sebagai berikut :
Tabel 5.2 Prosentase kebenaran pengenalan
Level 1 Level 2 Level 3
Jumlah Pengenalan Benar 25 19 18
Jumlah Pengenalan Salah 5 11 12
Keterangan Prosentase Pengenalan Benar 25/30 x 100% =83.33% 19/30 x 100%=63.33% 18/30 x 100%=60%
B. ANALISA HASIL Dari hasil pengujian terlihat bahwa masukkan dengan dimensi lebih besar memberikan unjuk kerja yang lebih baik dibandingkan dengan masukkan dengan dimensi yang lebih kecil. Dari ketiga level masukkan untuk proses pengenalan yang mempunyai dimensi lebih besar dibanding yang lain adalah level 1, sehingga
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 75
level pengenalan paling baik didapat pada level 1 dengan prosentase kebenaran
83.33%. Pada level 2 dan level 3 hasilnya masing-masing adalah 63.33% dan 60%. Hal ini karena gambar masukan pada level 2 dan level 3 mempunyai ukuran lebih kecil, sehingga informasi yang ada pada gambar juga lebih sedikit.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 76
BAB VI KESIMPULAN DAN SARAN
A. Kesimpulan 1.
Unjuk kerja pengenalan meningkat cukup signifikan untuk masukan dengan dimensi 32 x 32 (dekomposisi level 1) yaitu sebesar 83.33%, sedangkan masukan berdimensi 16 x 16 (dekomposisi level 2) sebesar 63,33%, dan masukkan dengan dimensi 8 x 8 (dekomposisi level 3) sebesar 60%. Pada level 2 dan level 3 prosentase keberhasilan kecil dikarenakan semakin kecil dimensi gambar masukan, maka informasi yang diwakili gambar juga semakin sedikit.
2.
Wavelet Haar relatif bisa dipakai untuk ekstraksi ciri pada pengenalan gambar angka.
B. Saran Berdasarkan hasil dari analisa tugas akhir, program masih belum sempurna sehingga penulis memberi saran untuk pengembangan lebih lanjut antara lain: 1.
Perlu dicoba metode ekstraksi ciri yang lain sehingga didapatkan ciri yang benar-benar mewakili suatu pola, dengan demikian dapat meningkatkan prosentase kebenaran pengenalan pola
2.
Program dapat juga dikembangkan dengan metode pengenalan yang lain, misalnya Metode bayes, Mahalanobis distance atau juga
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 77
dengan jaringan syaraf tiruan, untuk mengurangi kesalahan pengenalan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 78
DAFTAR PUSTAKA
Anonymous. Haar Transform. http://www.math.rutgers.edu/courses/357/s06lab4.pdf , diakses Desember 2006 Chahyati, Dina. Fakultas Ilmu Komputer Universitas Indonesia Jakarta http://www.ui.cs.ac.id , diakses November 2006 Gonzales, Rafael C, Woods, Richard E and Eddins, Steven L. Digital Image Processing Using Matlab. New Jersey: Prentice-Hall, Inc., 2004 Murni, Aniati dan Suryana, Setiawan. Pengantar Pengolahan Citra. Jakarta : PT. Elex Media Komputindo. 1992 Munir, Rinaldi. Pengolahan Citra Digital dengan Pendekatan Algoritmik. Bandung: Penerbit Informatika. 2004 Minarni. Klasifikasi Sidik Jari dengan Pemrosesan Awal Transformasi Wavelet. Fakultas Teknik Industri jurusan Teknik Elektro Institut Teknologi Padang.2004 Wijaya, I Gede Pasek Suta dan Kanata, Bulkis. Pengenalan Citra Sidik jari Berbasis Transformasi Wavelet dan Jaringan Syaraf Tiruan. Fakultas Teknik Universitas Mataram. http://mathworld.wolfram.com/EuclideanAlgorithm, diakses Februari 2007
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 61
LAMPIRAN A A.
Listing Program Proses Preprocessing,Ekstraksi ciri
function varargout = coba_proses(varargin) % COBA_PROSES M-file for coba_proses.fig % COBA_PROSES, by itself, creates a new COBA_PROSES or raises the existing % singleton*. % % H = COBA_PROSES returns the handle to a new COBA_PROSES or the handle to % the existing singleton*. % % COBA_PROSES('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in COBA_PROSES.M with the given input arguments. % % COBA_PROSES('Property','Value',...) creates a new COBA_PROSES or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before coba_proses_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to coba_proses_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help coba_proses % Last Modified by GUIDE v2.5 23-Mar-2007 08:28:25 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @coba_proses_OpeningFcn, ... 'gui_OutputFcn', @coba_proses_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before coba_proses is made visible. function coba_proses_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to coba_proses (see VARARGIN) % Choose default command line output for coba_proses handles.output = hObject;
61
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 62
% Update handles structure guidata(hObject, handles); % UIWAIT makes coba_proses wait for user response (see UIRESUME) % uiwait(handles.figure1); data = [1]; imwrite(uint8(data),'cek_preprocessing.bmp'); data = [0]; imwrite(uint8(data),'cek_ekstraksiciri.bmp'); imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); tunggu; c=imread('gambar_awal.bmp'); imwrite(uint8(c),'gambar_awal.bmp'); cek_input = 0; cek_input = imread('cek_input.bmp'); data = [1]; position = get(hObject, 'Position'); axes(handles.axes1); imshow(c); %set(handles.axes1,'visible','on') %set(handles.axes2,'visible','off') % --- Outputs from this function are returned to the command line. function varargout = coba_proses_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) citra = imread('gambar_awal.bmp'); data = [1]; imwrite(uint8(data),'cek_preprocessing.bmp'); data = [0]; imwrite(uint8(data),'cek_ekstraksiciri.bmp'); imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); tunggu; ubah= imresize(citra,[64 ,64]); % untuk mengubah ukuran citra menjadi 64 x 64 [m,n]=size(ubah) for i=1:m for j=1:n if ubah(i,j)<= 128 ubah1(i,j)=0; else ubah1(i,j)=1; end end end whos ubah %ubah=im2bw(ubah) imwrite(uint8(data),'cek_input.bmp'); position2 = get(hObject, 'Position'); axes(handles.axes2); imshow(ubah1); imwrite(uint8(ubah1),'gambar_openfile.bmp');
62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 63 set(handles.text38,'visible','on') set(handles.axes2,'visible','on') % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) data=[1] imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); cek_preprocessing = imread('cek_preprocessing.bmp'); cek_ekstraksiciri = imread('cek_ekstraksiciri.bmp'); cek_kesimpulan = imread('cek_kesimpulan.bmp'); if( cek_preprocessing == 0 ) % % button = questdlg('Maaf.. Anda belum melakukan Tahap Preprocessing. Apakah Anda mau melakukannya ?',... 'Pesan Kesalahan Preprocessing Citra','Yes','No','No'); if strcmp(button,'Yes') close; gambar_proses; break; elseif strcmp(button,'No') close; break; end break; end if( cek_preprocessing == 1 ) if ( cek_ekstraksiciri == 0) button = questdlg('Maaf.. Anda melewatkan tahap Ekstraksi Ciri. Apakah Anda mau melakukannya?',... 'Pesan Kesalahan ','Yes','No','No'); if strcmp(button,'Yes') close; coba_proses; break; elseif strcmp(button,'No') menunya; % break; end break; end end end end %cek level wavelet %cek level wavelet obyek = imread('gambar_wav0.bmp'); obyek = double(mean2(obyek)); % % obyek1 = imread('gambar_wav1.bmp'); obyek1 = double(mean2(obyek1)); % % obyek2 = imread('gambar_wav2.bmp'); obyek2 = double(mean2(obyek2)); % % obyek3 = imread('gambar_wav3.bmp'); obyek3 = double(mean2(obyek3)); % % % % % untuk mengetahui tingkatan level wavelet
63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 64 if (obyek == obyek1) wav_nilai = 1; else if (obyek == obyek2) wav_nilai = 2; else if (obyek == obyek3) wav_nilai = 3; end end end for z = 1 : 3 if (wav_nilai == 1) level = 1; break; else if(wav_nilai == 2) level = 2; break; else if(wav_nilai == 3) level = 3; break; end end end end if (wav_nilai==1) %kenaldata formhasil elseif (wav_nilai==2) formhasilL2 elseif (wav_nilai==3) formhasilL3 end % --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 cb_cek; global isi global val_lp
64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 65 val_lp = get(hObject,'Value') string_list = get(hObject,'String') isi = string_list{val_lp} set(handles.edit1,'string',isi) if (isi=='Level 1') data1 = [3]; imwrite(uint8(data1),'cek_ekstraksiciri.bmp'); c=imread('gambar_openfile.bmp'); load wbarb; whos; %image(c); colormap(map);colorbar; [cA1,cH1,cV1,cD1] = dwt2(c,'db1'); A1 = upcoef2('a',cA1,'db1',1); H1 = upcoef2('h',cH1,'db1',1); V1 = upcoef2('v',cV1,'db1',1); D1 = upcoef2('d',cD1,'db1',1); colormap(map); position2 = get(hObject, 'Position'); axes(handles.axes3); image(wcodemat(abs(A1),192)); set(handles.axes3,'visible','on') set(handles.text33,'visible','on') position3 = get(hObject, 'Position'); axes(handles.axes4); image(wcodemat(abs(H1),192)); set(handles.axes4,'visible','on') set(handles.text34,'visible','on') position4 = get(hObject, 'Position'); axes(handles.axes5); image(wcodemat(abs(V1),192)); set(handles.axes5,'visible','on') set(handles.text35,'visible','on') position5 = get(hObject, 'Position'); axes(handles.axes6); image(wcodemat(abs(D1),192)); set(handles.axes6,'visible','on') set(handles.text36,'visible','on') data = [1]; imwrite(uint8(data),'gambar_wav1.bmp'); imwrite(uint8(data),'gambar_wav0.bmp'); %set(handles.popupmenu1,'enable','off') %menuekstraksi; elseif (isi=='Level 2') data1 = [3]; imwrite(uint8(data1),'cek_ekstraksiciri.bmp'); c=imread('gambar_openfile.bmp'); load wbarb; whos; %image(c); colormap(map);colorbar; [cA1,cH1,cV1,cD1] = dwt2(c,'db1'); A1 = upcoef2('a',cA1,'db1',1) H1 = upcoef2('h',cH1,'db1',1) V1 = upcoef2('v',cV1,'db1',1); D1 = upcoef2('d',cD1,'db1',1); Xsyn = idwt2(cA1,cH1,cV1,cD1,'db1'); [C,S] = wavedec2(c,2,'db1'); cA2 = appcoef2(C,S,'db1',2); cH2 cV2 cD2 cH1
= = = =
detcoef2('h',C,S,2); detcoef2('v',C,S,2); detcoef2('d',C,S,2); detcoef2('h',C,S,1);
65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 66 cV1 = detcoef2('v',C,S,1); cD1 = detcoef2('d',C,S,1); A2 = wrcoef2('a',C,S,'db1',2); H1 = wrcoef2('h',C,S,'db1',1); V1 = wrcoef2('v',C,S,'db1',1); D1 = wrcoef2('d',C,S,'db1',1); H2 = wrcoef2('h',C,S,'db1',2); V2 = wrcoef2('v',C,S,'db1',2); D2 = wrcoef2('d',C,S,'db1',2); colormap(map); position2 = get(hObject, 'Position'); axes(handles.axes7); image(wcodemat(abs(A2),192)); set(handles.text39,'visible','on') set(handles.axes3,'visible','off') set(handles.text33,'visible','off') position3 = get(hObject, 'Position'); axes(handles.axes8); image(wcodemat(abs(H2),192)); set(handles.text40,'visible','on') set(handles.axes4,'visible','off') set(handles.text34,'visible','off') position4 = get(hObject, 'Position'); axes(handles.axes9); image(wcodemat(abs(V2),192)); set(handles.text41,'visible','on') set(handles.axes5,'visible','off') set(handles.text35,'visible','off') position5 = get(hObject, 'Position'); axes(handles.axes10); image(wcodemat(abs(D2),192)); set(handles.text42,'visible','on') set(handles.axes6,'visible','off') set(handles.text36,'visible','off') data = [2]; imwrite(uint8(data),'gambar_wav2.bmp'); imwrite(uint8(data),'gambar_wav0.bmp'); %set(handles.popupmenu1,'enable','off') elseif (isi=='Level 3') data1 = [3]; imwrite(uint8(data1),'cek_ekstraksiciri.bmp'); c=imread('gambar_openfile.bmp'); load wbarb; whos; %image(c); colormap(map);colorbar; [cA1,cH1,cV1,cD1] = dwt2(c,'db1'); A1 = upcoef2('a',cA1,'db1',1); H1 = upcoef2('h',cH1,'db1',1); V1 = upcoef2('v',cV1,'db1',1); D1 = upcoef2('d',cD1,'db1',1); Xsyn = idwt2(cA1,cH1,cV1,cD1,'db1'); [C,S] = wavedec2(c,2,'db1'); cA2 = appcoef2(C,S,'db1',2); cH2 cV2 cD2 cH1 cV1 cD1
= = = = = =
detcoef2('h',C,S,2); detcoef2('v',C,S,2); detcoef2('d',C,S,2); detcoef2('h',C,S,1); detcoef2('v',C,S,1); detcoef2('d',C,S,1);
66
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 67 A2 = wrcoef2('a',C,S,'db1',2); H1 V1 D1 H2 V2 D2
= = = = = =
wrcoef2('h',C,S,'db1',1); wrcoef2('v',C,S,'db1',1); wrcoef2('d',C,S,'db1',1); wrcoef2('h',C,S,'db1',2); wrcoef2('v',C,S,'db1',2); wrcoef2('d',C,S,'db1',2);
Xsyn = idwt2(cA1,cH1,cV1,cD1,'db1'); [C,S] = wavedec2(c,3,'db1'); cA3 = appcoef2(C,S,'db1',3); cH3 cV3 cD3 cH2 cV2 cD2 cH1 cV1 cD1
= = = = = = = = =
detcoef2('h',C,S,3); detcoef2('v',C,S,3); detcoef2('d',C,S,3); detcoef2('h',C,S,2); detcoef2('v',C,S,2); detcoef2('d',C,S,2); detcoef2('h',C,S,1); detcoef2('v',C,S,1); detcoef2('d',C,S,1);
A3 = wrcoef2('a',C,S,'db1',3); H1 V1 D1 H2 V2 D2 H3 V3 D3
= = = = = = = = =
wrcoef2('h',C,S,'db1',1); wrcoef2('v',C,S,'db1',1); wrcoef2('d',C,S,'db1',1); wrcoef2('h',C,S,'db1',2); wrcoef2('v',C,S,'db1',2); wrcoef2('d',C,S,'db1',2); wrcoef2('h',C,S,'db1',3); wrcoef2('v',C,S,'db1',3); wrcoef2('d',C,S,'db1',3); colormap(map); position2 = get(hObject, 'Position'); axes(handles.axes11); image(wcodemat(abs(A3),192)); set(handles.text43,'visible','on') set(handles.axes3,'visible','off') set(handles.text33,'visible','off') set(handles.axes7,'visible','off') set(handles.text39,'visible','off') position3 = get(hObject, 'Position'); axes(handles.axes12); image(wcodemat(abs(H3),192)); set(handles.text44,'visible','on') set(handles.axes4,'visible','off') set(handles.text34,'visible','off') set(handles.axes8,'visible','off') set(handles.text40,'visible','off') position4 = get(hObject, 'Position'); axes(handles.axes13); image(wcodemat(abs(V3),192)); set(handles.text45,'visible','on') set(handles.axes5,'visible','off') set(handles.text35,'visible','off') set(handles.axes9,'visible','off') set(handles.text41,'visible','off') position5 = get(hObject, 'Position'); axes(handles.axes14); image(wcodemat(abs(D3),192)); set(handles.text46,'visible','on') set(handles.axes6,'visible','off')
67
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 68 set(handles.text36,'visible','off') set(handles.axes10,'visible','off') set(handles.text42,'visible','off') data = [ 3 ]; imwrite(uint8(data),'gambar_wav3.bmp'); imwrite(uint8(data),'gambar_wav0.bmp'); %set(handles.popupmenu1,'enable','off') end % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close menunya % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
68
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 69 % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double global n n=get(str2num(handles.edit2,'string')) % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close menunya;
B.
Listing Program Tampil Hasil Pengenalan
function varargout = formhasil(varargin) % FORMHASIL M-file for formhasil.fig % FORMHASIL, by itself, creates a new FORMHASIL or raises the existing % singleton*. % % H = FORMHASIL returns the handle to a new FORMHASIL or the handle to % the existing singleton*. % % FORMHASIL('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in FORMHASIL.M with the given input arguments. % % FORMHASIL('Property','Value',...) creates a new FORMHASIL or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before formhasil_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to formhasil_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help formhasil % Last Modified by GUIDE v2.5 23-Mar-2007 08:06:55 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @formhasil_OpeningFcn, ... 'gui_OutputFcn', @formhasil_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 70 % --- Executes just before formhasil is made visible. function formhasil_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to formhasil (see VARARGIN) % Choose default command line output for formhasil handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes formhasil wait for user response (see UIRESUME) % uiwait(handles.figure1); data=[1] imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); cek_preprocessing = imread('cek_preprocessing.bmp'); cek_ekstraksiciri = imread('cek_ekstraksiciri.bmp'); cek_kesimpulan = imread('cek_kesimpulan.bmp'); citra = imread('gambar_openfile.bmp'); ubah=citra; [cA1,cH1,cV1,cD1] = dwt2(ubah,'db1'); %dekomposisi level 1 %membangun detail dan approksimasi dari koefisien matrik diatas A1 = upcoef2('a',cA1,'db1',1); H1 = upcoef2('h',cH1,'db1',1); V1 = upcoef2('v',cV1,'db1',1); D1 = upcoef2('d',cD1,'db1',1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %menampilkan dekomposisi level 1 A1 = wcodemat(abs(A1)); ciri_A1 = double(mean2(A1)); H1 = wcodemat(abs(H1)); ciri_H1 = double(mean2(H1)); V1 = wcodemat(abs(V1)); ciri_V1 = double(mean2(V1)); D1 = wcodemat(abs(D1)); ciri_D1 = double(mean2(D1)); L1=[ciri_A1 ciri_H1 ciri_V1 ciri_D1]; a2=ciri_A1; b2=ciri_H1; c2=ciri_V1; d2=ciri_D1; conn=database('myodbc','root',''); ping(conn); curs_kelas = exec(conn, 'select * from tbciri'); curs_kelas = fetch(curs_kelas); panjangbaris = rows(curs_kelas); for i=1:panjangbaris temp{i}=cell2mat([curs_kelas.Data(i,1) curs_kelas.Data(i,2) curs_kelas.Data(i,3) curs_kelas.Data(i,4)]); x{i}=cell2mat(curs_kelas.Data(i,1)); y{i}=cell2mat(curs_kelas.Data(i,2)); z{i}=cell2mat(curs_kelas.Data(i,3)); v{i}=cell2mat(curs_kelas.Data(i,4)); d{i}=abs(sqrt(((x{i}-a2)^2)+((y{i}-b2)^2)+((z{i}-c2)^2)+((v{i}-d2)^2))); end %hitung nilai d h=[d{1} d{2} d{3} d{4} d{5} d{6} d{7} d{8} d{9} d{10} d{11} d{12} d{13} d{14} d{15} d{16} d{17} d{18} d{19} d{20} d{21} d{22} d{23} d{24} d{25} d{26} d{27} d{28} d{29} d{30} d{31} d{32} d{33} d{34} d{35} d{36} d{37}
70
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 71 d{38} d{39} d{40} d{41} d{42} d{43} d{44} d{45} d{46} d{47} d{48} d{49} d{50}] hmin=min(h) if hmin==d{1} disp('0') set(handles.edit1,'string','0') elseif hmin==d{2} disp('0') set(handles.edit1,'string','0') elseif hmin==d{3} disp('0') set(handles.edit1,'string','0') elseif hmin==d{31} disp('0') set(handles.edit1,'string','0') elseif hmin==d{32} disp('0') set(handles.edit1,'string','0') elseif hmin==d{4} disp('1') set(handles.edit1,'string','1') elseif hmin==d{5} disp('1') set(handles.edit1,'string','1') elseif hmin==d{6} disp('1') set(handles.edit1,'string','1') elseif hmin==d{33} disp('1') set(handles.edit1,'string','1') elseif hmin==d{34} disp('1') set(handles.edit1,'string','1') elseif hmin==d{7} disp('2') set(handles.edit1,'string','2') elseif hmin==d{8} disp('2') set(handles.edit1,'string','2') elseif hmin==d{9} disp('2') set(handles.edit1,'string','2') elseif hmin==d{35} disp('2') set(handles.edit1,'string','2') elseif hmin==d{36} disp('2') set(handles.edit1,'string','2') elseif hmin==d{10} disp('3') set(handles.edit1,'string','3') elseif hmin==d{11} disp('3') set(handles.edit1,'string','3') elseif hmin==d{12} disp('3') set(handles.edit1,'string','3') elseif hmin==d{37} disp('3') set(handles.edit1,'string','3') elseif hmin==d{38} disp('3') set(handles.edit1,'string','3') elseif hmin==d{13} disp('4') set(handles.edit1,'string','4') elseif hmin==d{14}
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 72 disp('4') set(handles.edit1,'string','4') elseif hmin==d{15} disp('4') set(handles.edit1,'string','4') elseif hmin==d{39} disp('4') set(handles.edit1,'string','4') elseif hmin==d{40} disp('4') set(handles.edit1,'string','4') elseif hmin==d{16} disp('5') set(handles.edit1,'string','5') elseif hmin==d{17} disp('5') set(handles.edit1,'string','5') elseif hmin==d{18} disp('5') elseif hmin==d{41} disp('5') set(handles.edit1,'string','5') elseif hmin==d{42} disp('5') set(handles.edit1,'string','5') elseif hmin==d{19} disp('6') set(handles.edit1,'string','6') elseif hmin==d{20} disp('6') set(handles.edit1,'string','6') elseif hmin==d{21} disp('6') set(handles.edit1,'string','6') elseif hmin==d{43} disp('6') set(handles.edit1,'string','6') elseif hmin==d{44} disp('6') set(handles.edit1,'string','6') elseif hmin==d{22} disp('7') set(handles.edit1,'string','7') elseif hmin==d{23} disp('7') set(handles.edit1,'string','7') elseif hmin==d{24} disp('7') set(handles.edit1,'string','7') elseif hmin==d{45} disp('7') set(handles.edit1,'string','7') elseif hmin==d{46} disp('7') set(handles.edit1,'string','7') elseif hmin==d{25} disp('8') set(handles.edit1,'string','8') elseif hmin==d{26} disp('8') set(handles.edit1,'string','8') elseif hmin==d{27} disp('8') set(handles.edit1,'string','8') elseif hmin==d{47} disp('8') set(handles.edit1,'string','8') elseif hmin==d{48}
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 73 disp('8') set(handles.edit1,'string','8') elseif hmin==d{28} disp('9') set(handles.edit1,'string','9') elseif hmin==d{29} disp('9') set(handles.edit1,'string','9') elseif hmin==d{30} disp('9') set(handles.edit1,'string','9') elseif hmin==d{49} disp('9') set(handles.edit1,'string','9') elseif hmin==d{50} disp('9') set(handles.edit1,'string','9') end % --- Outputs from this function are returned to the command line. function varargout = formhasil_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Close Level 2 function varargout = formhasil(varargin) % FORMHASIL M-file for formhasil.fig
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 74 % FORMHASIL, by itself, creates a new FORMHASIL or raises the existing % singleton*. % % H = FORMHASIL returns the handle to a new FORMHASIL or the handle to % the existing singleton*. % % FORMHASIL('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in FORMHASIL.M with the given input arguments. % % FORMHASIL('Property','Value',...) creates a new FORMHASIL or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before formhasil_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to formhasil_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help formhasil % Last Modified by GUIDE v2.5 23-Mar-2007 08:06:55 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @formhasil_OpeningFcn, ... 'gui_OutputFcn', @formhasil_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before formhasil is made visible. function formhasil_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to formhasil (see VARARGIN) % Choose default command line output for formhasil handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes formhasil wait for user response (see UIRESUME) % uiwait(handles.figure1); data=[1] imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); cek_preprocessing = imread('cek_preprocessing.bmp');
74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 75 cek_ekstraksiciri = imread('cek_ekstraksiciri.bmp'); cek_kesimpulan = imread('cek_kesimpulan.bmp'); citra = imread('gambar_openfile.bmp'); ubah=citra; [cA1,cH1,cV1,cD1] = dwt2(ubah,'db1'); %dekomposisi level 1 %membangun detail dan approksimasi dari koefisien matrik diatas A1 = upcoef2('a',cA1,'db1',1); H1 = upcoef2('h',cH1,'db1',1); V1 = upcoef2('v',cV1,'db1',1); D1 = upcoef2('d',cD1,'db1',1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %dekomposisi level 2 [C,S] = wavedec2(ubah,2,'db1'); %ekstraksi koefisien approksimasi level 2 cA2 = appcoef2(C,S,'db1',2); %ekstraksi keofisien detail level 1 dan level 2 cH2 = detcoef2('h',C,S,2); cV2 = detcoef2('v',C,S,2); cD2 = detcoef2('d',C,S,2); cH1 = detcoef2('h',C,S,1); cV1 = detcoef2('v',C,S,1); cD1 = detcoef2('d',C,S,1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%Ciri Level 2%%%%%%%%%%%%%%% A2 = wcodemat(abs(cA2)); ciri_A2 = double(mean2(cA2)); H2 = wcodemat(abs(cH2)); ciri_H2 = double(mean2(cH2)); V2 = wcodemat(abs(cV2)); ciri_V2 = double(mean2(cV2)); D2 = wcodemat(abs(cD2)); ciri_D2 = double(mean2(cD2)); L1=[ciri_A2 ciri_H2 ciri_V2 ciri_D2] x2=ciri_A2; y2=ciri_H2; z2=ciri_V2; v2=ciri_D2; conn=database('myodbc','root',''); ping(conn); curs_kelas = exec(conn, 'select * from tbciri'); curs_kelas = fetch(curs_kelas); panjangbaris = rows(curs_kelas); for i=1:panjangbaris temp{i}=cell2mat([curs_kelas.Data(i,5) curs_kelas.Data(i,6) curs_kelas.Data(i,7) curs_kelas.Data(i,8)]); x{i}=cell2mat(curs_kelas.Data(i,5)); y{i}=cell2mat(curs_kelas.Data(i,6)); z{i}=cell2mat(curs_kelas.Data(i,7)); v{i}=cell2mat(curs_kelas.Data(i,8)); d{i}=abs(sqrt(((x{i}-x2)^2)+((y{i}-y2)^2)+((z{i}-z2)^2)+((v{i}-v2)^2))); end %hitung nilai d h=[d{1} d{2} d{3} d{4} d{5} d{6} d{14} d{15} d{16} d{17} d{18} d{19} d{26} d{27} d{28} d{29} d{30} d{31} d{38} d{39} d{40} d{41} d{42} d{43} d{50}] hmin=min(h)
d{7} d{8} d{9} d{10} d{11} d{12} d{13} d{20} d{21} d{22} d{23} d{24} d{25} d{32} d{33} d{34} d{35} d{36} d{37} d{44} d{45} d{46} d{47} d{48} d{49}
if hmin==d{1} disp('0') set(handles.edit1,'string','0') elseif hmin==d{2}
75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 76 disp('0') set(handles.edit1,'string','0') elseif hmin==d{3} disp('0') set(handles.edit1,'string','0') elseif hmin==d{31} disp('0') set(handles.edit1,'string','0') elseif hmin==d{32} disp('0') set(handles.edit1,'string','0') elseif hmin==d{4} disp('1') set(handles.edit1,'string','1') elseif hmin==d{5} disp('1') set(handles.edit1,'string','1') elseif hmin==d{6} disp('1') set(handles.edit1,'string','1') elseif hmin==d{33} disp('1') set(handles.edit1,'string','1') elseif hmin==d{34} disp('1') set(handles.edit1,'string','1') elseif hmin==d{7} disp('2') set(handles.edit1,'string','2') elseif hmin==d{8} disp('2') set(handles.edit1,'string','2') elseif hmin==d{9} disp('2') set(handles.edit1,'string','2') elseif hmin==d{35} disp('2') set(handles.edit1,'string','2') elseif hmin==d{36} disp('2') set(handles.edit1,'string','2') elseif hmin==d{10} disp('3') set(handles.edit1,'string','3') elseif hmin==d{11} disp('3') set(handles.edit1,'string','3') elseif hmin==d{12} disp('3') set(handles.edit1,'string','3') elseif hmin==d{37} disp('3') set(handles.edit1,'string','3') elseif hmin==d{38} disp('3') set(handles.edit1,'string','3') elseif hmin==d{13} disp('4') set(handles.edit1,'string','4') elseif hmin==d{14} disp('4') set(handles.edit1,'string','4') elseif hmin==d{15} disp('4') set(handles.edit1,'string','4') elseif hmin==d{39} disp('4') set(handles.edit1,'string','4')
76
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 77 elseif hmin==d{40} disp('4') set(handles.edit1,'string','4') elseif hmin==d{16} disp('5') set(handles.edit1,'string','5') elseif hmin==d{17} disp('5') set(handles.edit1,'string','5') elseif hmin==d{18} disp('5') elseif hmin==d{41} disp('5') set(handles.edit1,'string','5') elseif hmin==d{42} disp('5') set(handles.edit1,'string','5') elseif hmin==d{19} disp('6') set(handles.edit1,'string','6') elseif hmin==d{20} disp('6') set(handles.edit1,'string','6') elseif hmin==d{21} disp('6') set(handles.edit1,'string','6') elseif hmin==d{43} disp('6') set(handles.edit1,'string','6') elseif hmin==d{44} disp('6') set(handles.edit1,'string','6') elseif hmin==d{22} disp('7') set(handles.edit1,'string','7') elseif hmin==d{23} disp('7') set(handles.edit1,'string','7') elseif hmin==d{24} disp('7') set(handles.edit1,'string','7') elseif hmin==d{45} disp('7') set(handles.edit1,'string','7') elseif hmin==d{46} disp('7') set(handles.edit1,'string','7') elseif hmin==d{25} disp('8') set(handles.edit1,'string','8') elseif hmin==d{26} disp('8') set(handles.edit1,'string','8') elseif hmin==d{27} disp('8') set(handles.edit1,'string','8') elseif hmin==d{47} disp('8') set(handles.edit1,'string','8') elseif hmin==d{48} disp('8') set(handles.edit1,'string','8') elseif hmin==d{28} disp('9') set(handles.edit1,'string','9') elseif hmin==d{29} disp('9') set(handles.edit1,'string','9')
77
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 78 elseif hmin==d{30} disp('9') set(handles.edit1,'string','9') elseif hmin==d{49} disp('9') set(handles.edit1,'string','9') elseif hmin==d{50} disp('9') set(handles.edit1,'string','9') end % --- Outputs from this function are returned to the command line. function varargout = formhasil_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Close Level 3 function varargout = formhasil(varargin) % FORMHASIL M-file for formhasil.fig % FORMHASIL, by itself, creates a new FORMHASIL or raises the existing % singleton*. % % H = FORMHASIL returns the handle to a new FORMHASIL or the handle to % the existing singleton*. % % FORMHASIL('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in FORMHASIL.M with the given input arguments. %
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 79 % FORMHASIL('Property','Value',...) creates a new FORMHASIL or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before formhasil_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to formhasil_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help formhasil % Last Modified by GUIDE v2.5 23-Mar-2007 08:06:55 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @formhasil_OpeningFcn, ... 'gui_OutputFcn', @formhasil_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before formhasil is made visible. function formhasil_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to formhasil (see VARARGIN) % Choose default command line output for formhasil handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes formhasil wait for user response (see UIRESUME) % uiwait(handles.figure1); data=[3] imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); cek_preprocessing = imread('cek_preprocessing.bmp'); cek_ekstraksiciri = imread('cek_ekstraksiciri.bmp'); cek_kesimpulan = imread('cek_kesimpulan.bmp'); citra = imread('gambar_openfile.bmp'); ubah=citra; [cA1,cH1,cV1,cD1] = dwt2(ubah,'db1'); %dekomposisi level 1 %membangun detail dan approksimasi dari koefisien matrik diatas A1 = upcoef2('a',cA1,'db1',1); H1 = upcoef2('h',cH1,'db1',1); V1 = upcoef2('v',cV1,'db1',1); D1 = upcoef2('d',cD1,'db1',1);
79
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 80 % % %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %dekomposisi level 2 [C,S] = wavedec2(ubah,2,'db1'); %ekstraksi koefisien approksimasi level 2 cA2 = appcoef2(C,S,'db1',2); %ekstraksi keofisien detail level 1 dan level 2 cH2 = detcoef2('h',C,S,2); cV2 = detcoef2('v',C,S,2); cD2 = detcoef2('d',C,S,2); cH1 = detcoef2('h',C,S,1); cV1 = detcoef2('v',C,S,1); cD1 = detcoef2('d',C,S,1);
% % %%%%%%%%%%level 3%%%%%%%%%%%%%%%%%%%%%%% [C,S] = wavedec2(ubah,3,'db1'); % % %ekstraksi koefisien approksimasi level 3 cA3 = appcoef2(C,S,'db1',3); % %ekstraksi keofisien detail level 1 dan level 2 dan 3 cH3 = detcoef2('h',C,S,3); cV3 = detcoef2('v',C,S,3); cD3 = detcoef2('d',C,S,3); cH2 = detcoef2('h',C,S,2); cV2 = detcoef2('v',C,S,2); cD2 = detcoef2('d',C,S,2); cH1 = detcoef2('h',C,S,1); cV1 = detcoef2('v',C,S,1); cD1 = detcoef2('d',C,S,1); % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % %%%%%%Ciri Level 3%%%%%%%%%%%%%%% A3 = wcodemat(abs(cA3)); ciri_A3 = double(mean2(cA3)); H3 = wcodemat(abs(cH3)); ciri_H3 = double(mean2(cH3)); V3 = wcodemat(abs(cV3)); ciri_V3 = double(mean2(cV3)); D2 = wcodemat(abs(cD3)); ciri_D3 = double(mean2(cD3)); L1=[ciri_A3 ciri_H3 ciri_V3 ciri_D3] x2=ciri_A3; y2=ciri_H3; z2=ciri_V3; v2=ciri_D3; conn=database('myodbc','root',''); ping(conn); curs_kelas = exec(conn, 'select * from tbciri'); curs_kelas = fetch(curs_kelas); panjangbaris = rows(curs_kelas); for i=1:panjangbaris temp{i}=cell2mat([curs_kelas.Data(i,9) curs_kelas.Data(i,10) curs_kelas.Data(i,11) curs_kelas.Data(i,12)]); x{i}=cell2mat(curs_kelas.Data(i,9)); y{i}=cell2mat(curs_kelas.Data(i,10)); z{i}=cell2mat(curs_kelas.Data(i,11)); v{i}=cell2mat(curs_kelas.Data(i,12)); d{i}=abs(sqrt(((x{i}-x2)^2)+((y{i}-y2)^2)+((z{i}-z2)^2)+((v{i}-v2)^2))); end %hitung nilai d h=[d{1} d{2} d{3} d{4} d{5} d{6} d{7} d{14} d{15} d{16} d{17} d{18} d{19} d{20} d{26} d{27} d{28} d{29} d{30} d{31} d{32} d{38} d{39} d{40} d{41} d{42} d{43} d{44} d{50}] hmin=min(h)
80
d{8} d{9} d{10} d{11} d{12} d{13} d{21} d{22} d{23} d{24} d{25} d{33} d{34} d{35} d{36} d{37} d{45} d{46} d{47} d{48} d{49}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 81
if hmin==d{1} disp('0') set(handles.edit1,'string','0') elseif hmin==d{2} disp('0') set(handles.edit1,'string','0') elseif hmin==d{3} disp('0') set(handles.edit1,'string','0') elseif hmin==d{31} disp('0') set(handles.edit1,'string','0') elseif hmin==d{32} disp('0') set(handles.edit1,'string','0') elseif hmin==d{4} disp('1') set(handles.edit1,'string','1') elseif hmin==d{5} disp('1') set(handles.edit1,'string','1') elseif hmin==d{6} disp('1') set(handles.edit1,'string','1') elseif hmin==d{33} disp('1') set(handles.edit1,'string','1') elseif hmin==d{34} disp('1') set(handles.edit1,'string','1') elseif hmin==d{7} disp('2') set(handles.edit1,'string','2') elseif hmin==d{8} disp('2') set(handles.edit1,'string','2') elseif hmin==d{9} disp('2') set(handles.edit1,'string','2') elseif hmin==d{35} disp('2') set(handles.edit1,'string','2') elseif hmin==d{36} disp('2') set(handles.edit1,'string','2') elseif hmin==d{10} disp('3') set(handles.edit1,'string','3') elseif hmin==d{11} disp('3') set(handles.edit1,'string','3') elseif hmin==d{12} disp('3') set(handles.edit1,'string','3') elseif hmin==d{37} disp('3') set(handles.edit1,'string','3') elseif hmin==d{38} disp('3') set(handles.edit1,'string','3') elseif hmin==d{13} disp('4') set(handles.edit1,'string','4') elseif hmin==d{14} disp('4') set(handles.edit1,'string','4') elseif hmin==d{15}
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 82 disp('4') set(handles.edit1,'string','4') elseif hmin==d{39} disp('4') set(handles.edit1,'string','4') elseif hmin==d{40} disp('4') set(handles.edit1,'string','4') elseif hmin==d{16} disp('5') set(handles.edit1,'string','5') elseif hmin==d{17} disp('5') set(handles.edit1,'string','5') elseif hmin==d{18} disp('5') elseif hmin==d{41} disp('5') set(handles.edit1,'string','5') elseif hmin==d{42} disp('5') set(handles.edit1,'string','5') elseif hmin==d{19} disp('6') set(handles.edit1,'string','6') elseif hmin==d{20} disp('6') set(handles.edit1,'string','6') elseif hmin==d{21} disp('6') set(handles.edit1,'string','6') elseif hmin==d{43} disp('6') set(handles.edit1,'string','6') elseif hmin==d{44} disp('6') set(handles.edit1,'string','6') elseif hmin==d{22} disp('7') set(handles.edit1,'string','7') elseif hmin==d{23} disp('7') set(handles.edit1,'string','7') elseif hmin==d{24} disp('7') set(handles.edit1,'string','7') elseif hmin==d{45} disp('7') set(handles.edit1,'string','7') elseif hmin==d{46} disp('7') set(handles.edit1,'string','7') elseif hmin==d{25} disp('8') set(handles.edit1,'string','8') elseif hmin==d{26} disp('8') set(handles.edit1,'string','8') elseif hmin==d{27} disp('8') set(handles.edit1,'string','8') elseif hmin==d{47} disp('8') set(handles.edit1,'string','8') elseif hmin==d{48} disp('8') set(handles.edit1,'string','8') elseif hmin==d{28}
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 83 disp('9') set(handles.edit1,'string','9') elseif hmin==d{29} disp('9') set(handles.edit1,'string','9') elseif hmin==d{30} disp('9') set(handles.edit1,'string','9') elseif hmin==d{49} disp('9') set(handles.edit1,'string','9') elseif hmin==d{50} disp('9') set(handles.edit1,'string','9') end % --- Outputs from this function are returned to the command line. function varargout = formhasil_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close
C.
Listing Program Tambah Template Baru
function varargout = newtemplate(varargin) % NEWTEMPLATE M-file for newtemplate.fig % NEWTEMPLATE, by itself, creates a new NEWTEMPLATE or raises the existing
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 84 % singleton*. % % H = NEWTEMPLATE returns the handle to a new NEWTEMPLATE or the handle to % the existing singleton*. % % NEWTEMPLATE('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in NEWTEMPLATE.M with the given input arguments. % % NEWTEMPLATE('Property','Value',...) creates a new NEWTEMPLATE or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before newtemplate_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to newtemplate_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help newtemplate % Last Modified by GUIDE v2.5 20-Mar-2007 10:58:15 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @newtemplate_OpeningFcn, ... 'gui_OutputFcn', @newtemplate_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before newtemplate is made visible. function newtemplate_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to newtemplate (see VARARGIN) % Choose default command line output for newtemplate handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes newtemplate wait for user response (see UIRESUME) % uiwait(handles.figure1); data = [1]; imwrite(uint8(data),'cek_preprocessing.bmp'); data = [0];
84
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 85 imwrite(uint8(data),'cek_ekstraksiciri.bmp'); imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); tunggu; c=imread('gambar_awal.bmp'); imwrite(uint8(c),'gambar_awal.bmp'); cek_input = 0; cek_input = imread('cek_input.bmp'); data = [1]; position = get(hObject, 'Position'); axes(handles.axes1); imshow(c); % --- Outputs from this function are returned to the command line. function varargout = newtemplate_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) citra = imread('gambar_awal.bmp'); data = [1]; imwrite(uint8(data),'cek_preprocessing.bmp'); data = [0]; imwrite(uint8(data),'cek_ekstraksiciri.bmp'); imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); tunggu; ubah= imresize(citra,[64 64]); % untuk mengubah ukuran citra menjadi 64 x 64 ubah=im2bw(ubah) imwrite(uint8(data),'cek_input.bmp'); position2 = get(hObject, 'Position'); axes(handles.axes2); imshow(ubah); imwrite(uint8(ubah),'gambar_openfile.bmp'); % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
85
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 86
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double % --- Executes during object creation, after setting all properties. function edit3_CreateFcn(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit3_Callback(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit3 as text % str2double(get(hObject,'String')) returns contents of edit3 as a double % --- Executes during object creation, after setting all properties. function edit4_CreateFcn(hObject, eventdata, handles) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
86
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 87
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit4_Callback(hObject, eventdata, handles) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit4 as text % str2double(get(hObject,'String')) returns contents of edit4 as a double % --- Executes during object creation, after setting all properties. function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit5_Callback(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit5 as text % str2double(get(hObject,'String')) returns contents of edit5 as a double % --- Executes during object creation, after setting all properties. function edit6_CreateFcn(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit6_Callback(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
87
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 88 % Hints: get(hObject,'String') returns contents of edit6 as text % str2double(get(hObject,'String')) returns contents of edit6 as a double % --- Executes during object creation, after setting all properties. function edit7_CreateFcn(hObject, eventdata, handles) % hObject handle to edit7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit7_Callback(hObject, eventdata, handles) % hObject handle to edit7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit7 as text % str2double(get(hObject,'String')) returns contents of edit7 as a double % --- Executes during object creation, after setting all properties. function edit8_CreateFcn(hObject, eventdata, handles) % hObject handle to edit8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit8_Callback(hObject, eventdata, handles) % hObject handle to edit8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit8 as text % str2double(get(hObject,'String')) returns contents of edit8 as a double % --- Executes during object creation, after setting all properties. function edit9_CreateFcn(hObject, eventdata, handles) % hObject handle to edit9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else
88
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 89 set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit9_Callback(hObject, eventdata, handles) % hObject handle to edit9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit9 as text % str2double(get(hObject,'String')) returns contents of edit9 as a double % --- Executes during object creation, after setting all properties. function edit10_CreateFcn(hObject, eventdata, handles) % hObject handle to edit10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit10_Callback(hObject, eventdata, handles) % hObject handle to edit10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit10 as text % str2double(get(hObject,'String')) returns contents of edit10 as a double % --- Executes during object creation, after setting all properties. function edit11_CreateFcn(hObject, eventdata, handles) % hObject handle to edit11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit11_Callback(hObject, eventdata, handles) % hObject handle to edit11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit11 as text % str2double(get(hObject,'String')) returns contents of edit11 as a double % --- Executes during object creation, after setting all properties.
89
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 90 function edit12_CreateFcn(hObject, eventdata, handles) % hObject handle to edit12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end
function edit12_Callback(hObject, eventdata, handles) % hObject handle to edit12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit12 as text % str2double(get(hObject,'String')) returns contents of edit12 as a double % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global ciri_A1 global ciri_H1 global ciri_V1 global ciri_D1 global ciri_A2 global ciri_H2 global ciri_V2 global ciri_D2 global ciri_A3 global ciri_H3 global ciri_V3 global ciri_D3 data=[1] imwrite(uint8(data),'cek_kesimpulan.bmp'); cek_input = imread('cek_input.bmp'); cek_preprocessing = imread('cek_preprocessing.bmp'); cek_ekstraksiciri = imread('cek_ekstraksiciri.bmp'); cek_kesimpulan = imread('cek_kesimpulan.bmp'); citra = imread('gambar_openfile.bmp'); ubah=citra; [cA1,cH1,cV1,cD1] = dwt2(ubah,'db1'); %dekomposisi level 1 %membangun detail dan approksimasi dari koefisien matrik diatas A1 = upcoef2('a',cA1,'db1',1); H1 = upcoef2('h',cH1,'db1',1); V1 = upcoef2('v',cV1,'db1',1); D1 = upcoef2('d',cD1,'db1',1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %menampilkan dekomposisi level 1 A1 = wcodemat(abs(A1)); ciri_A1 = double(mean2(A1)); H1 = wcodemat(abs(H1)); ciri_H1 = double(mean2(H1)); V1 = wcodemat(abs(V1)); ciri_V1 = double(mean2(V1)); D1 = wcodemat(abs(D1));
90
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 91 ciri_D1 = double(mean2(D1)); L1=[ciri_A1 ciri_H1 ciri_V1 ciri_D1] [C,S] = wavedec2(ubah,2,'db1'); %ekstraksi koefisien approksimasi level 2 cA2 = appcoef2(C,S,'db1',2); %ekstraksi keofisien detail level 1 dan level 2 cH2 = detcoef2('h',C,S,2); cV2 = detcoef2('v',C,S,2); cD2 = detcoef2('d',C,S,2); cH1 = detcoef2('h',C,S,1); cV1 = detcoef2('v',C,S,1); cD1 = detcoef2('d',C,S,1); A2 = wcodemat(abs(cA2)); ciri_A2 = double(mean2(cA2)); H2 = wcodemat(abs(cH2)); ciri_H2 = double(mean2(cH2)); V2 = wcodemat(abs(cV2)); ciri_V2 = double(mean2(cV2)); D2 = wcodemat(abs(cD2)); ciri_D2 = double(mean2(cD2)); L2=[ciri_A2 ciri_H2 ciri_V2 ciri_D2] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%level 3 [C,S] = wavedec2(ubah,3,'db1'); %ekstraksi koefisien approksimasi level 3 cA3 = appcoef2(C,S,'db1',3); %ekstraksi keofisien detail level 1 dan level 2 dan 3 cH3 = detcoef2('h',C,S,3); cV3 = detcoef2('v',C,S,3); cD3 = detcoef2('d',C,S,3); cH2 = detcoef2('h',C,S,2); cV2 = detcoef2('v',C,S,2); cD2 = detcoef2('d',C,S,2); cH1 = detcoef2('h',C,S,1); cV1 = detcoef2('v',C,S,1); cD1 = detcoef2('d',C,S,1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%Ciri Level 3%%%%%%%%%%%%%%% A3 = wcodemat(abs(cA3)); ciri_A3 = double(mean2(cA3)); H3 = wcodemat(abs(cH3)); ciri_H3 = double(mean2(cH3)); V3 = wcodemat(abs(cV3)); ciri_V3 = double(mean2(cV3)); D2 = wcodemat(abs(cD3)); ciri_D3 = double(mean2(cD3)); L3=[ciri_A3 ciri_H3 ciri_V3 ciri_D3] set(handles.edit1,'string',(ciri_A1)) set(handles.edit1,'visible','on') set(handles.edit2,'string',(ciri_H1)) set(handles.edit2,'visible','on') set(handles.edit3,'string',(ciri_V1)) set(handles.edit3,'visible','on') set(handles.edit4,'string',(ciri_D1)) set(handles.edit4,'visible','on') set(handles.edit5,'string',(ciri_A2)) set(handles.edit5,'visible','on') set(handles.edit6,'string',(ciri_H2)) set(handles.edit6,'visible','on') set(handles.edit7,'string',(ciri_V2)) set(handles.edit7,'visible','on') set(handles.edit8,'string',(ciri_D2)) set(handles.edit8,'visible','on') set(handles.edit9,'string',(ciri_A3)) set(handles.edit9,'visible','on')
91
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 92 set(handles.edit10,'string',(ciri_H3)) set(handles.edit10,'visible','on') set(handles.edit11,'string',(ciri_V3)) set(handles.edit11,'visible','on') set(handles.edit12,'string',(ciri_D3)) set(handles.edit12,'visible','on') set(handles.text1,'visible','on') set(handles.text2,'visible','on') set(handles.text3,'visible','on') set(handles.text4,'visible','on') set(handles.text5,'visible','on') set(handles.text6,'visible','on') set(handles.text7,'visible','on') set(handles.text8,'visible','on') set(handles.text9,'visible','on') set(handles.text10,'visible','on') set(handles.text11,'visible','on') set(handles.text12,'visible','on') % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global ciri_A1 global ciri_H1 global ciri_V1 global ciri_D1 global ciri_A2 global ciri_H2 global ciri_V2 global ciri_D2 global ciri_A3 global ciri_H3 global ciri_V3 global ciri_D3 button = questdlg('Anda Akan Menyimpan ?',... 'Message Box','Yes','No','No'); if strcmp(button,'Yes') h = waitbar(0,'Sedang Menyimpan ...'); for i=1:1000 waitbar(i/100) end conn=database('myodbc','root',''); ping(conn); %masukkan data ke database ESTI tabel curs = exec(conn, 'select * from tempbaru'); setdbprefs('DataReturnFormat','cellarray'); curs = fetch(curs); AA=curs.Data; data1 = {ciri_A1,ciri_H1,ciri_V1,ciri_D1,ciri_A2,ciri_H2,ciri_V2,ciri_D2,ciri_A3,cir i_H3,ciri_V3,ciri_D3}; data2 = {'app1', 'hor1','ver1','det1','app2', 'hor2','ver2','det2','app3', 'hor3','ver3','det3'}; insert(conn, 'tempbaru', data2, data1); commit(conn); cursor = exec(conn,'commit'); close (curs); close (conn); close(h) elseif strcmp(button,'No') end
92
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 93 % --- Executes on button press in pushbutton5. function pushbutton5_Callback(hObject, eventdata, handles) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close; menunya
93
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 93
LAMPIRAN B User Guide •
Sebelum menjalankan program ini, pastikan matlab 6.5 sudah terinstall dengan sukses,
•
SQL Yog sudah terinstall dengan baik,
•
MyODBC-3.51.06 sudah terinstall dengan baik,
•
Koneksikan matlab dengan database penyimpanan tabel ciri template. Langkah-langkah sebagai berikut :
•
Control Panel Administrative Tools Data Source (ODBC)myodbc configureisikan database name : AngkaCetak Test Data Source OK
Pada program ini terdapat menu-menu untuk menjalankan proses pengenalan A. Menu File 1. Input Pola Pada sub menu ini user memilih pola angka yang ingin dikenali, Pola hasil pilihan akan tampil pada form Proses Pengenalan. Di dalam form ini semua tahapan proses pengenalan dilakukan. User harus mengikuti semua tahapan proses sesuai urutan gambar tanda panah pada form. Urutan pertama adalah tahapan preprocessing, tahapan kedua, gambar hasil preprocessing akan diekstraksi. Pada pilihan level ekstraksi, user memilih level pada popupmenu, maka hasil pilihan akan tampil pada edit text disamping popupmenu. Setelah ekstraksi ciri user dapat melakukan proses pengenalan angka dengan memilih push button (tombol) Pengenalan Angka. Tahapan preprocessing, dan ekstraksi ciri tidak boleh dilewatkan. Jika sampai terlewat maka akan muncul peringatan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 94 2. Input Data Baru Pada sub menu ini user dapat memasukkan gambar baru sebagai template. Gambar baru dicari vektor cirinya kemudian vektor cirinya akan disimpan atau tidak. Mencari vektor ciri dengan memilih tombol Penarikan Vektor Ciri. Tombol simpan adalah pilihan untk menyimpan vektor ciri jika tidak ingin menyimpan bisa langsung memilih tombol keluar 3. Keluar Sub menu ini untuk keluar dari program B. Menu Informasi Berisi software yang dipakai dalam pembuatan program dan tentang pembuat
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 95
LAMPIRAN C Template
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 96
Contoh Hasil Running Dari masuk ke menu memilih gambar angka untuk dikenali tambah template baru lihat informasi keluar
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 97
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 98
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 99
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 101