Anda di halaman 1dari 86

1

KLASIFIKASI SEGMENT DARI KARAKTER TULISAN TANGAN MENGGUNAKAN MATLAB 7.0


Hasil penelitian Diajukan oleh Nama No. Mahasiswa Jurusan Angkatan

: Marnita Elfinta Br. Tampubolon : 50404468 : T.Informatika : 2004

Telah disetujui oleh Dosen Pembimbing Pada tanggal Dosen Pembimbing,

(Prof.Dr.B.E.F.da Silva,MSc.,DEA)

BAB I PENDAHULUAN
1.1 Latar Belakang Masalah Saat ini peranan komputer dalam peradaban manusia bukan hanya lagi sekedar sebagai alat bantu pekerjaan, namun sudah sampai ke arah pemenuhan kebutuhan. Termasuk kebutuhan manusia dalam hal hiburan, hobi, selera, gaya hidup dan lain lain. Inovasi inovasi baru terus dikembangkan untuk membuat komputer menjadi lebih user-friendly, lebih nyaman untuk dilihat, dan lebih nyaman dalam penggunaan. Salah satu alternatif untuk membuat pemakaian komputer lebih nyaman antara lain adalah inovasi dalam cara memasukkan data ke dalam komputer. Cara yang saat ini paling konvensional adalah dengan memasukkan data melalui device yang disebut keyboard, dengan cara diketik. Cara ini dapat diganti dengan metode lain yang lebih manusiawi, yaitu dengan cara ditulis. Menulis, dalam konteks membuat tulisan dengan cara menggoreskan alat tuliskertas, merupakan salah satu cara yang sangat alami bagi manusia untuk berkomunikasi, menuangkan ide, dan lain-lain. Cara ini bisa diterapkan untuk memasukkan data ke komputer, sehingga pengguna komputer tidak lagi harus mengetik, namun bisa dengan cara menulis. Tingkat kesulitan kegiatan menulis setiap orang berbeda beda, dalam hal ini khususnya anak anak. Seorang anak dianggap mahir menulis jika menghasilkan

2 tulisan tangan dengan usaha yang minimum. Untuk mengetahui tingkat kemahiran menulis seorang anak serta mengenali karakter dari tulisan tangan seorang anak maka dilakukan pengumpulan contoh tulisan tangan dengan mengunakan digitizer untuk dianalisis. Dalam pengenalan tulisan tangan, terdapat beberapa langkah, salah satunya adalah klasifikasi dari karakter yang telah disegmentasi. Dilatarbelakangi kondisi tersebut di atas, pada penulisan ini dibuat aplikasi untuk melakukan pengenalan tulisan tangan dengan klasifikasi dari karakter yang telah disegmentasi. Rumusan Masalah Rumusan masalah yang dapat dituliskan berdasarkan latar belakang di atas adalah melakukan proses klasifikasi dari karakter yang telah disegmentasi. Dengan a.) Membuat labeling dari setiap segmen potongan karakter huruf a sampai huruf e menjadi 16 segmen dasar. b.) Setiap segmen diperlakukan sebagai vektor, dimana setiap elemen vektornya memiliki dua nilai yaitu koordinat x dan y. c.) Membuat rumusan baru (fungsi) untuk membandingkan vektor. Dari hasil perbandingan tersebut, yang nilai errornya yang paling kecil adalah yang paling mirip 1.3 Batasan Masalah Dari rumusan masalah diatas, masalah yang akan dibahas hanya dibatasi pada proses klasifikasi dari karakter yang telah disegmentasi Aplikasi tersebut dibuat dengan menggunakan tools MATLAB 7. 1 1.4 Tujuan Penulisan Penulisan tugas akhir ini bertujuan untuk membuat suatu program klasifikasi dari karakter yang telah disegmentasi untuk memudahkan pengenalan tulisan tangan. Dimana sebelum tahap klasifikasi karakter terlebih dahulu tulisan tangan di segmentasi. Selain itu Penulisan tugas akhir ini juga bertujuan untuk mengaplikasikan materi kuliah yang telah dipelajari oleh penulis serta mengembangkan penulisan tentang Artificial inteligent Aplikasi ini dibuat dengan menggunakan tools MATLAB 7. 1 dikarenakan fasilitas yang disediakan oleh MATLAB 7. 1 telah berbasis GUI (Graphical User Interface ) sehingga lebih mudah digunakan oleh user atau user friendly. 1.5 Metode Penelitian Metode yang digunakan oleh penulis dalam membuat tugas akhir ini adalah: 1. Penelusuran Literatur Yaitu studi pustaka dengan membaca buku buku serta halaman halaman situs yang berhubungan dengan skripsi ini. 2. Melakukan Perancangan Perancangan diawali dengan mengumpulkan karakter huruf yang ada, dan dilakukan klasifikasi karakter. 3. Uji program Pengujian program ini dilakukan dengan memakai karakter yang telah dikumpulkan dan memastikan bahwa program ini dapat berfungsi untuk mengklasifikasikan dengan baik dan sesuai dengan rumusan rancangan yang telah ditetapkan sebelumnya. 1.2

3 1.6 Sistematika Penulisan Sistematika penulisan Tugas Akhir ini terdiri dari beberapa bab, yaitu : BAB I PENDAHULUAN Bab ini menguraikan tentang latar belakang masalah, rumusan masalah, batasan masalah, tujuan penulisan, metode penulisan, dan sistematika penulisan. BAB II LANDASAN TEORI Bab ini berisi pembahasan tentang konsep dasar dari aplikasi yang dibuat, Kecerdasan Buatan, Sistem Pakar, Flowchart. dan software Matlab 7.1. BAB III PERANCANGAN DAN PEMBUATAN PROGRAM Bab ini berisi pembahasan tahap tahap pembuatan Klasifikasi Segment dari Karakter Tulisan Tangan menggunakan Matlab 7.0 , mulai dari flowchart . dan implementasi dari perancangan tersebut. BAB IV PENGUJIAN PROGRAM Bab ini berisi mengenai hasil pengujian dari aplikasi yang telah dibuat, untuk menguji dan memastikan bahwa program yang dibuat dapat berfungsi untuk mengklasifikasikan sesuai dengan rumusan rancangan yang telah ditetapkan sebelumnya. PENUTUP Bab ini berisi tentang kesimpulan dari Tugas Akhir yang telah dibuat dan juga saransaran yang sekiranya diperlukan untuk menyempurnakan tugas akhir.

BAB V

BAB II LANDASAN TEORI


Kecerdasan Buatan ( Artificial Intelligence ) [1,2] Merupakan kawasan penelitian, aplikasi dan instruksi yang terkait dengan pemrograman komputer untuk melakukan sesuatu hal - yang dalam pandangan manusia adalah cerdas (H. A. Simon [1987]) Sebuah studi tentang bagaimana membuat komputer melakukan hal-hal yang pada saat ini dapat dilakukan lebih baik oleh manusia (Rich and Kinight [1991]) Teknik Kecerdasan buatan merupakan sebuah keajaiban dari dunia komputer, dapat kita bayangkan bahwa sebuah komputer dapat menggantikan tugas-tugas manusia, walaupun sampai saat ini hal itu masih merupakan perdebatan sengit dan terus dikembangkan keberadaanya. 2.1 Teknik kecerdasan buatan (artificial intelligence) adalah teknik untuk membuat komputer mampu mengolah pengetahuan tertentu.Bagaimana membuat komputer yang cerdas seperti manusia. Sehingga manusia mencoba membuat komputer yang dapat berpikir seperti yang dilakukan oleh manusia ketika menyelesaikan suatu masalah yang sedang dihadapi. Bidang teknik kecerdasan buatan yang paling populer saat ini adalah sistem pakar, disamping juga bidang-bidang lain di dalam intelegensi buatan yaitu: pengolahan bahasa alami (natural language) dan robotika (robotics). Sistem pakar

3 biasanya diterapkan di dalam bidang, seperti kedokteran, perekonomian, dan masih banyak bidang lainnya termasuk dalam bidang bisnis yang sering kali digunakan untuk pengambilan keputusan atau prediksi bursa saham. Tujuan Intelegensi Buatan : Simulator untuk mengerti mekanisme intelegensi manusia. Sebagai satu cara untuk menambah kemampuan komputer untuk menyelesaikan masalah-masalah yang perlu keahlian khusus. Dua Ide Dasar yang berkaitan dengan AI Pertama, ide yang melibatkan pembelajaran proses pemikiran manusia (untuk memahami apa yang dimaksud dengan kecerdasan) Kecerdasan adalah kemampuan untuk belajar atau mengerti dari pengalaman, memahami pesan yang kontradiktif dan ambigu, menanggapi dengan cepat dan baik atas situasi yang baru, menggunakan penalaran dalam memecahkan masalah serta menyelesaikannya dengan efektif (Winston dan Pendergast, 1994) Kedua, berkaitan dengan representasi dan duplikasi proses tersebut melalui mesin (misalnya, komputer dan robot). a. b. 2.1.1 Sistem Pakar [2] Sistem pakar adalah sebuah perangkat lunak komputer yang memiliki basis pengetahuan untuk domain tertentu dan menggunakan penalaran inferensi menyerupai seorang pakar dalam memecahkan suatu masalah yang sedang di hadapi. Sistem pakar adalah sebuah teknik inovatif baru dalam menangkap dan memadukan pengetahuan. Kemampuan sistem pakar ini karena didalamnya terdapat basis pengetahuan yang berupa pengetahuan non formal yang sebagian besar berasal dari pengalaman, bukan dari text book yang sudah baku. Pengetahuan ini diperoleh seorang (pakar) yang ahli dibidangnya dari pengalamannya bekerja selama bertahun-tahun pada suatu bidang keahlian tertentu yang telah ditekuni. 2.1.2 Ciri-ciri sistem pakar Ciri-ciri dari sistem pakar adalah sebagai berikut: a. Terbatas pada sebuah domain keahlian tertentu saja. b. Sistem dapat mengaktifkan kaidah secara searah yang sesuai, dituntun oleh dialog dengan user/pemakai. c. Keluaran bersifat anjuran/saran/nasihat. d. Berdasarkan pada kaidah/rule tertentu yang telah ditetapkan. e. Dapat memberikan penalaran untuk data-data yang tidak pasti. f. Dirancang untuk dapat dikembangkan secara bertahap. g. Pengetahuan dan mekanisme inferensi jelas terpisah. h. Dapat mengemukakan rangkaian alasan-alasan yang diberikannya dengan cara dapat dipahami. 2.1.3 Keuntungan sistem pakar Beberapa keuntungan penerapan sistem pakar adalah sebagai berikut: a. Waktu kerja menjadi lebih singkat. b. Pekerjaan menjadi lebih sederhana. c. Menjadikan seorang yang masih awam bekerja layaknya seorang pakar.

5 d. Asrip yang terpercaya dari sebuah keahlian tertentu, sehingga bagi pemakai sistem pakar akan seolah-olah berkonsultasi atau berkomunikasi langsung dengan sang pakar, walaupun mungkin pakar tersebut sudah meninggal. e. Produktivitas menjadi meningkat akibat meningkatnya kualitas hasil pekerjaan/produksi. Meningkatnya hal itu dikarenakan meningkatnya efisiensi kerja. f. Memperluas jangkuan, dari keahlian seorang pakar. Di mana sebuah sistem pakar yang telah disahkan, akan sama saja artinya dengan seorang pakar yang tersedia dalam jumlah besar (dapat diperbanyak dengan kemampuan yang sama persis), dapat diperoleh dan dipakai dimana saja. g. Dapat menggabungkan kemampuan/pengalaman seorang pakar dengan para pakar yang lain, sehingga diperoleh sebuah hasil layaknya kita berkonsultasi dengan banyak pakar. 2.1.4 Komponen Sistem Pakar Sebuah program sistem pakar terdiri atas komponen sebagai berikut: Basis pengetahuan (Knowledge Base), Basis Data (Data Base), Mesin Inferensi (Inference Engine), Antar Muka (User Interface).

Basis Pengetahuan Kaidah - Fakta

Memori Kerja Basis Data

Mesin Inferensi Inferensi - Kontrol

SubSistem Penerimaan Pengetahuan

SubSistem Penjelasan

Media Komunikasi

Pakar atau Knowledge engineer

Pemakai

Gambar 2.1 Hubungan komponen sistem pakar

Basis Pengetahuan Basis Pengetahuan merupakan inti program sistem pakar di mana basis pengetahuan merupakan representasi pengetahuan dari seorang pakar yang telah ahli di bidangnya. Basis pengetahuan tersusun atas fakta-fakta berupa objek. b. Basis Data Basis Data merupakan bagian yang mengandung semua fakta,baik fakta awal pada saat sistem mulai dijalankan maupun fakta yang diperoleh saat pengambilan keputusan sedang dilakukan. Biasanya basis data berada di dalam memori komputer. b. Mesin Inferensi merupakan bagian yang mengandung mekanisme fungsi berpikir dan pola-pola penalaran sistem yang digunakan oleh seorang pakar. Mekanisme akan menganalisa suatu masalah tertentu dan selanjutnya akan mencari jawaban, kesimpulan atau keputusan yang terbaik. Teknik Inferensi ada dua macam yaitu : Pelacakan ke belakang (Backward Chaining) yang memulai penalarannya dari sekumpulan hipotesa menuju fakta yang mendukungnya. Dan Pelacakan ke depan (Forward Chaining) yang merupakan kebalikan dari pelacakan ke belakang, memulai dari sekumpulan data menuju keputusan. Sebenarnya metode tersebut dipengaruhi oleh tiga macam teknik penelusuran yaitu: depth-first seach (melakukan penelusuran kaidah secara mendalam dari simpul akar bergerak menurun ke tingkat dalam yang berurutan), breadth-first search (Bergerak dari simpul akar, simpul yang ada pada setiap tingkat diuji sebelum pindah ke tingkat selanjutnya), dan best-first search (bekerja berdasarkan kombinasi dari kedua teknik tersebut). c. Antarmuka Pemakai Antar pemakai merupakan bagian penghubung antara program aplikasi sistem pakar dengan pemakai. Biasanya pada bagian ini akan terjadi dialog atau menu-menu pilihan yang nantinya harus dijawab oleh pemakai agar sistem pakar dapat mengambil keputusan berdasarkan jawaban dari pemakai tersebut. Selain komponen tersebut ,agar sistem pakar lebih baik dalam mengambil keputusan diperlukan komponen-komponen tambahan lain yaitu : Kemampuan Belajar Kompatibilitas Fasilitas Penjelasan Kemudahan Memodifikasi 2.1.5 Pembagian Sistem Pakar Sistem pakar dibagi berdasarkan kegunaannya yaitu: 1. Diagnosis Diagnosis digunakan untuk mendiagnosis obat untuk orang sakit, kerusakan mesin mobil, kerusakan perangkat komputer dan sebagainya. 2. Perencanaan Perencanaan penggunaan untuk perencanaan sangatlah luas, mulai dari perancanaan mesin sampai manajemen bisnis. 3. Prediksi

a.

7 Predikdi digunakan untuk memprediksi sesuatu hal, seperti ramalan cuaca, ataupun bursa saham. Prediksi biasanya dilakukan dengan melihat data-data ataupun informasi yang sebelumnya telah diperoleh. 4. Pengajaran Pengajaran digunakan untuk media pengajaran, kemampuannya dapat mendiagnosis apa penyebab kekurangan seorang siswa kemudian memberi solusi cara memperbaiki. 5. Interpretasi Interpretasi digunakan untuk menganalisa data yang tidak lengkap, tidak teratur dan data yang kontradiktif. Misal untuk interpretasi citra digital. 6. Kontrol Kontrol digunakan untuk mengontrol suatu sistem, seperti pengontrolan pada industri berteknologi tinggi. 7. Simulasi Simulais digunakan untuk mensimulasikan sebuah permasalahan dan menemukan jawaban atas permasalahan tersebut. 2.2 Matlab 7.1 [3,4] MATLAB (Matrix Laboratory) merupakan suatu bahasa pemrograman lanjutan yang dibentuk dengan dasar pemikiran menggunakan sifat dan bentuk dari matriks. Pada awalnya, program ini merupakan antar muka untuk koleksi rutin-rutin numerik dari proyek LINPACK dan EASTPACK. MATLAB awalnya dikembangkan dengan menggunakan bahasa pemrograman FORTRAN, namun sekarang ini sudah merupakan produk komersial dari perusahaan Mathworks.Inc yang dalam perkembangan selanjutnya dikembangkan menggunakan bahasa C++ dan Assembler (terutama untuk fungsi-fungsi dasar). MATLAB merupakan bahasa canggih untuk komputasi teknik. MATLAB merupakan integrasi dari komputasi, visualisasi dan pemrograman dalam suatu lingkungan yang mudah digunakan, karena permasalahan dan pemecahannya dinyatakan dalam notasi matematika biasa. Kegunaan MATLAB secara umum : Matematika dan komputansi Pengembangan algoritma Pemodelan, simulasi dan pembuatan prototype Analisa data, eksplorasi, dan visualisasi Pembuatan aplikasi termasuk pembuatan graphical user interface MATLAB adalah sistem interaktif dengan elemen dasar array yang merupakan basis datanya. Array tersebut tidak perlu dinyatakan khusus seperti di bahasa pemograman yang ada sekarang. Hal ini memungkinkan anda untuk memecahkan banyak masalah perhitungan teknik, khususnya yang melibatkan matriks dan vektor dengan waktu yang lebih singkat dari waktu yang dibutuhkan untuk menulis program dalam bahasa C atau FORTRAN. Untuk memahami MATLAB, terlebih dahulu anda harus sudah paham mengenai matematika terutama operasi vektor dan matriks, karena operasi matriks merupakan inti utama dari MATLAB. Pada intinya MATLAB merupakan sekumpulan fungsi-fungsi yang dapat dipanggil dan dieksekusi. Fungsi-fungsi tersebut dibagi-bagi berdasarkan kegunaannya yang dikelompokan didalam toolbox-toolbox yang ada pada MATLAB. Toolbox merupakan kompulan koleksi dari fungsi-fungsi MATLAB (M-files) yang memperluas

8 lingkungan MATLAB untuk memecahkan masalah-masalah tertentu. Toolbox-toolbox yang tersedia pada MATLAB antara lain: Signal Processing Toolbox Control Systems Toolbox Neural Networks Toolbox Fuzzy Logic Toolbox Wavelets Toolbox Simulation Toolbox Image Processing Toolbox MATLAB juga memiliki sifat extensible, dalam arti bahwa pengguna dari MATLAB dapat membuat suatu fungsi baru untuk ditambahkan kedalam library jika fungsi-fungsi built-in yang tersedia tidak dapat melakukan tugas tertentu. 2.2.1 Desktop MATLAB Ketika mulai membuka program MATLAB, akan muncul desktop MATLAB yang berisi tools (Graphical User Interface) untuk mengatur file, variabel dan aplikasi yang berhubungan dengan MATLAB. Gambar 2.2 merupakan tampilan desktop yang pertama muncul ketika menjalankan MATLAB 7.1.

Gambar 2.2 Desktop MATLAB versi 7.1 Ada beberapa desktop tools yang terdapat pada MATLAB, antara lain: 1. Jendela perintah (Command Window) Jendela ini merupakan tempat untuk memasukkan variabel dan menjalankan function atau M-files. Setiap perintah yang ditulis pada jendela ini akan langsung ditampilkan hasilnya. Tampilan jendela ini bisa dilihat pada gambar 2.3 2. Jendela daftar perintah (Command History) Jendela ini memuat daftar perintah yang pernah diketikkan pada jendela perintah. Pada jendela ini perintah yang pernah diketikkan dapat dikopi kedalam jendela perintah lalu mengeksekusi perintah tersebut. Tampilan jendela ini bisa dilihat pada gambar 2.4

Gambar 2.3 Tampilan Jendela Perintah

Gambar 2.4 Tampilan Jendela Command History 3. Jendela direktori (Current Directory) Jendela ini menampilkan file-file yang terdapat pada direktori yang aktif. . Tampilan jendela ini bisa dilihat pada gambar 2.5

Gambar 2.5 Tampilan Jendela Current Directory

10 4. Jendela Workspace Jendela ini menampilkan variabel-variabel yang pernah dibuat selama menjalankan MATLAB. Tampilan jendela ini bisa dilihat pada gambar 2.6

Gambar 2.6 Tampilan Jendela Workspace 5. Tombol Start Tombol ini memudahkan akses ke tools, demo dan dokumentasi. Tampilan dari menu ini bisa dilihat pada gambar 2.7

Gambar 2.7 Tampilan Tombol Start 6. Teks Editor MATLAB juga menyediakan fasilitas editor program. Cara membukanya adalah dengan memilih menu File New M-file atau dengan menekan tombol shortcut Alt+n, atau bisa juga dengan mengetikkan edit pada jendela perintah. Tampilan jendela ini bisa dilihat pada gambar 2.8

Gambar 2.8 Tampilan Teks Editor Pada MATLAB

11

2.2.2 DasarDasar Matriks dalam MATLAB Array (matriks) merupakan variabel dengan tipe data tunggal (skalar) hanya dapat digunakan untuk meyimpan sebuah nilai saja, sehingga untuk menyimpan beberapa nilai sekaligus dalam suatu variabel khusus dibutuhkan variabel array atau variabel berindeks. Variabel array dapat digunakan untuk menampung banyak data yang sejenis (numerik atau string). Karena array atau matriks merupakan hal yang mendasar dalam MATLAB, maka terdapat banyak cara untuk memanipulasinya. Sekali matriks dibuat, MATLAB menyediakan cara untuk meyisipkan, mengambil dan mengatur kembali isi matriks tersebut. Penguasaan akan hal ini merupakan kunci untuk menggunakan MATLAB secara efisien. Untuk membuat matriks dalam MATLAB, yang perlu dilakukan hanyalah mengetikkan kurung kotak kiri ([) diikuti dengan elemen-elemen yang dipisahkan spasi atau tanda koma (,), lalu ditutup dengan kurung kotak kanan (]).
x = [2 3 4] x = 2 3 4

Untuk membuat suatu array berdimensi dua (matriks) sama saja, hanya untuk memisahkan elemen yang berbeda baris digunakan simbol titik koma (;).
x = [4 x = 4 7 1 5 6; 7 8 9; 1 2 3] 5 6 8 9 2 3

Berikut ini akan diberikan beberapa contoh manipulasi array : Pengalamatan array Dalam MATLAB elemen-elemen array diakses menggunakan subscript, misalnya x(1) adalah elemen pertama dari x atau y(1,3) adalah elemen pada baris 1 kolom 3 pada matriks y. Selain dengan cara sebelumnya suatu array juga bisa diidikan dengan cara sebagai berikut :
x = 1: 1: 5 x = 1 2 3 4 5

Artinya bahwa array x diisikan dengan angka dari 1 sampai 5 dengan penambahan 1 (default). Penambahan dapat bernilai sembarang, bahkan bisa bernilai negatif, seperti contoh berikut :
y = 5: -2: 1 y = 5 3 1

Nilai dari suatu array juga dapat diisikan dengan bilangan 1 atau 0 saja, seperti contoh berikut :
z = ones(3, 3) z = 1 1 1 1 1 1 1 1 1

12
a = zeros(3, 3) a = 0 0 0 0 0 0 0 0 0

Menambahkan elemen array Misalkan suatu array sebagai berikut :


b = [2 4] b = 2 4

Untuk menambahkan 2 elemen dibelakang array diatas maka dapat dilakukan seperti berikut ini :
b = [b 3 4] b = 2 4 3 4

Atau untuk menambahkan 1 baris baru pada array diatas, sehingga menjadi suatu matriks maka dapat dilakukan seperti berikut ini :
b = [b; 3 4] b = 2 4 3 4

Mengakses sebagian elemen array Misalkan suatu array sebagai berikut:


b = [1 2 3 4 5 6] b = 1 2 3 4 5 6

Maka untuk mengakses elemen yang ke-2 sampai elemen ke-4, dilakukan sebagai berikut :
c = b(2: 4) c = 2 3 4

Menghapus elemen array Misalkan suatu array sebagai berikut :


b = [1 2 3 4 5 6] b = 1 2 3 4 5 6

Maka untuk menghapus elemen terakhir dari array, dilakukan sebagai berikut :
b = b(1: length(b) b = 1 2 3 4 5 1)

Sedangkan, untuk menghapus elemen pada indeks tertentu, dilakukan sebagai berikut :
b([2 4]) = [] b = 1 3 5

Operasi-operasi aritmatika yang bisa digunakan pada array hampir sama dengan operasi pada tipe data skalar, hanya saja ada beberapa operasi tambahan sebagai berikut : Transpose non-konjugasi (.`)

13 2.3 Perkalian antar elemen array (.*) Perpangkatan antar elemen array (.^) Pembagian kiri antar elemen array (.\ ) Pembagian kanan antar elemen array (./)

Tipe Data Dalam MATLAB MATLAB mengenal 3 tipe data yaitu : 1. String String dalam MATLAB adalah tipe data yang terdiri dari huruf-huruf dan atau nilai-nilai ASCII yang ditampilkan representasinya. String adalah teks yang diawali dan diakhiri dengan apostrof ( ). Berikut contoh memasukkan suatu string kedalam variabel :
p = hallo semua p disini merupakan variabel yang bertipe data string, dan dibaca sebagai array dengan

jumlah 11 elemen , karena setiap karakter dalam suatu string adalah satu elemen dalam array, dengan setiap elemen berukuran 2 byte. Berikut merupakan beberapa perintah MATLAB yang berkaitan dengan tipe data string : Disp, digunakan untuk menampilkan string tanpa menampilkan variabelnya. Input, digunakan untuk menampung variabel input dari user. Fprintf, digunakan untuk menampilkan output dilayar atau menyimpan output di suatu external file (sama halnya dengan command fprint di C atau C++). 2. Skalar Skalar adalah nama lain dari data numerik. Dalam MATLAB data skalar dapat dimanipulasi dengan menggunakan beberapa fungsi seperti tipe string sebelumnya. 3. Matriks Matriks merupakan bentuk utama MATLAB. Seperti halnya array, matriks juga didefinisikan elemen demi elemen.

2.3.1 Bilangan dan Operator Matematika dalam MATLAB Terdapat 3 tipe bilangan MATLAB , yaitu : 1. Bilangan bulat (integer), contoh :
x = 12 x = 12

2. Bilangan real, contoh :


x = 20.02 x = 20.0200

3. Bilangan kompleks. Di dalam MATLAB tidak perlukan penanganan khusus untuk bilangan kompleks. Bilangan kompleks di beri i atau j, contoh :
y = sqrt(-3)

14
y = 0 + 1.7321i

Selain tipe bilangan diatas, MATLAB juga mempunyai variabel yang bukan merupakan bilangan, yang di lambangkan dengan : -inf inf Nan Berikut merupakan daftar operasi-operasi aritmatika dasar dalam MATLAB yang diurutkan berdasarkan prioritas dari yang tertinggi hingga yang terendah : Tanda kurung (()) Tranpose (`) Pangkat (^) Pembagian Kiri (\) Pembagian (/) Perkalian (*) Pengurangan (-) Pertambahan (+) 2.3.2 Operator Logika dan Relasional dalam MATLAB MATLAB menyediakan operasi logika dan relasional, hal ini diperlukan untuk menjawab pertanyaan benar atau salah. Salah satu manfaat yang penting dari kemampuan ini adalah untuk mnegontrol urutan eksekusi sederetan perintah MATLAB (biasanya dalam M-file) berdasarkan hasil pertanyaan benar atau salah. Sebagai masukan pada semua ekspresi relasi dan logika, MATLAB menganggap semua angka tidak nol sebagai benar dan nol sebagai salah. Hasil semua ekspresi logika relasi dan logika adalah satu untuk benar dan nol untuk salah dengan tipe array logika, yaitu hasilnya memuat bilangan 1 dan 0 yang tidak saja dapat digunakan untuk pengalamatan. Berikut adalah operator-operator logika dalam MATLAB : ~ (not) & (and) ! (or) Operator-operator logika tersebut diurutkan berdasarkan prioritas dari yang tertinggi hingga yang terendah. Operator-operator relasional pada MATLAB : Kurang dari (<) Lebih dari (> ) Kurang dari atau sama dengan (<=) Lebih dari atau sama dengan (>=) Sama dengan (=) Tidak sama dengan (~=) Fungsi-Fungsi Matematik Umum pada MATLAB

2.3.3

15 MATLAB mempunyai berbagai fungsi matematik umum yang biasa di gunakan dalam matematika. Sebagian besar fungsi tersebut hampir sama dengan bila anda menuliskannya secara matematis . Sebagai contoh:
pi ans = 3.1416 y= sin(pi / 5) y = 0.5878 y = asin(0.6) y = 0.6435

Berikut beberapa fungsi trigonometri pada MATLAB : 2.4 sin, asin, sinh, asinh cos, acos, cosh, acosh tan, atan, tanh, atanh cot, acot, coth, acoth sec, asec, sech, asech csc, acsc, csh, acsh Berikut beberapa fungsi matematika dasar pada MATLAB : abs, nilai absolut atau amplitudo bilangan kompleks. sqrt, akar kuadrat. real, bagian real dari bilangan kompleks. imag, bagian imajiner dari bilangan kompleks. round, pembulatan ke bilangan terdekat. fix, pembulatan kearah nol. floor, pembulatan kearah -. ceil, pembulatan kearah . rem, sisa hasil bagi. exp, eksponensial berbasis bilangan e log, logaritma murni.

Fungsi M-File dalam MATLAB Fungsi M-File harus mengikuti beberapa aturan dan sejumlah sifat penting. Aturan-aturan dan sifat-sifat tersebut meliputi : Nama fungsi dan nama file harus identik misalnya akan dibuat suatu fungsi dengan nama pangkat maka nama M-file harus pangkat juga. Setiap fungsi mempunyai ruang kerjanya sendiri yang berbeda dengan ruang kerja MATLAB. Satu-satunya hubungan antara ruang kerja MATLAB dengan variabelvariabel dalam fungsi adalah variabel-variabel input dan dan output fungsi. Jika suatu fungsi mengubah nilai dalam suatu variabel input, perubahan itu hanya tampak dalam fungsi dan tidak mempengaruhi variabel yang ada dalam ruang kerja

16 MATLAB. Variabel yang dibuat oleh suatu fungsi tinggal hanya dalam ruang kerja fungsi. Jumlah dari argumen input dan output yang digunakan jika suatu fungsi dipanggil hanya ada dalam fungsi tersebut. Fungsi ruang kerja memuat jumlah argumen input. Fungsi kerja nargout memuat jumlah argumen output. Dalam praktek,variabelvariabel nargout dan nargin biasanya digunakan untuk mengeset variabel input standar dan menentukan variabel output yang diperlukan user. Berikut merupakan syntaks untuk membuat fungsi : function y = nama_fungsi (x) y merupakan keluaran dari fungsi, keluaran dapat berupa 1 variabel atau lebih dari 1 variabel, jika keluaran lebih dari 1 variabel maka digunakan sintaks sebagai berikut : function [y,z,a,b] = nama_fungsi (x) x merupakan masukan dari fungsi, masukan dapat berupa 1 variabel atau lebih dari 1 variabel, jika masukan lebih dari 1 variabel maka digunakan sintaks sebagai berikut : function y = nama_fungsi (a,b,c,d) 2.4.1 FungsiFungsi Image Processing dalam MATLAB Fungsi-fungsi yang terdapat pada image processing toolbox, berhubung akan dilakukan pemrosesan terhadap suatu citra. Berikut beberapa fungsi dalam image processing toolbox : 1. Image file I/O imread, untuk membaca citra dari suatu file kedalam variabel. imwrite, untuk menyimpan citra dari suatu variabel kedalam file. iminfo, untuk mengetahui informasi dari suatu citra. 2. Menampilkan citra imshow, untuk menampilkan citra. imagesc, untuk menampilkan citra berdasarkan skala. 3. Konversi ruang warna hsv2rgb, mengkonversi nilai HSV kedalam nilai RGB. ntsc2rgb, mengkonversi nilai NTSC kedalam nilai RGB. ycbcr2rgb, mengkonversi nilai YCbCr kedalam nilai RGB. rgb2hsv, mengkonversi nilai RGB kedalam nilai HSV. rgb2ntsc, mengkonversi nilai RGB kedalam nilai NTSC. rgb2ycbcr, mengkonversi nilai RGB kedalam nilai YCbCr. 2.4.2 Membuat Graphical User Interface dalam MATLAB MATLAB menyediakan suatu fasilitas untuk merancang dan membuat suatu user interface, yaitu GUIDE (Graphical User Interface Development Interface). Untuk memulai editor perancangan GUI pada MATLAB 7. 1 adalah dengan mengetikkan guide pada jendela perintah atau dengan mengklik tombol Start MATLAB dan pilih MATLAB, lalu pilih GUIDE (GUI Builder), seperti terlihat pada gambar 2. 9, maka akan muncul suatu jendela baru seperti terlihat pada gambar 2.10. Pada jendela tersebut terdapat dua pilihan untuk masuk kedalam editor tampilan GUI, yaitu membuat rancangan GUI yang baru (Create New GUI) atau membuka rancangan GUI yang telah

17 ada (Open Existing GUI). Untuk membuat suatu rancangan GUI yang baru, MATLAB menyediakan suatu bantuan berupa beberapa template GUI yang bisa dimodifikasi.

Gambar 2. 9 Memulai editor perancangan GUI pada MATLAB 7. 1

Gambar 2.10 Jendela GUIDE Pada MATLAB 7. 1 Untuk memulai proses perancangan, kemudian akan muncul suatu editor tampilan GUI seperti terlihat pada gambar 2. 11. Pada editor tersebut terdapat beberapa tools yang tersedia untuk membuat suatu GUI, seperti static text, push buttons, axes, frame, dan sebagainya. GUIDE secara otomatis akan menyimpan GUI kedalam 2 buah file yang terbentuk pada saat pertama kali menyimpan (save) atau menjalankan (run) GUI tersebut, file-file tersebut adalah : File berekstension .fig, yang berisi rancangan tampilan GUI. File berekstension .m, yang berisi kode-kode yang mengatur tampilan GUI.

18

Gambar 2. 11 Editor Tampilan GUI Pengenalan Flowchart [5] Flowchart adalah gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta instruksinya gambaran ini dinyatakan dengan simbol. Flowchart merupakan langkah awal dalam melakukan pembuatan program sehingga sebelum membuat suatu program kita dapat membuat suatu rancangannya terlebih dahulu. Dengan flowchart para analis dan programmer terbantu untuk memecahkan masalah ke dalam segmen segmen yang lebih kecil dan menolong dalam menganalisis alternative alternative lain dalam pengoperasian. Terdapat dua macam flowchart yang menggambarkan proses dengan computer, yaitu: Sistem Flowchart Adalah gambar yang memperlihatkan urutan prosedur dan proses dari beberapa file di dalammedia tertentu. Program Flowchart Adalah bagian yang memperlihatkan urutan dan hubungan di dalam program menjadi jelas. Simbol - simbol Flowchart Flowchart terbagi atas tiga simbol, yaitu Flow Direction symbols, Prosessing Symbol, Input Output Simbol. 1. Flow Direction Symbol : Adalah simbol yang dipakai untuk menghubungkan antar simbol satu dengan simbol yang lainnya, simbol ini sering disebut juga dengan Connecting Line. 2.5

19 Tabel 2.1 Flow Direction Symbol Simbol Penjelasan

Simbol Penghubung antar prosedur

Simbol arus/ flow

Simbol Transmisi untuk inf dari 1 lokasi ke lokasi yang lain

Simbol Comunication Simbol untuk keluar/masuk prosedure atau proses dalam lembar/ hal yang sama Simbol Connector Simbol Untuk Keluar / masuk prosedur / proses dalam lembar / halaman lain Simbol Off-line Control

2.

Prossesing Simbol Adalah simbol yang menunjukkan jenis operasi pengolahan dalam suatu prosedur. Tabel 2.2 Prossesing Symbol Simbol Penjelasan Simbol yang menunjukkan pengolahan yang dilakukan oleh computer Simbol yang menunjukkan pengolahan yang tidak dilakukan oleh komputer Simbol untuk kondisi yang akan menghasilkan beberapa kemungkinan jawaban

Simbol Proses

Simbol Manual Operation

Simbol Decision

20 Simbol untuk mempersiapkan penyimpanan yang akan digunakan sebagai tempat pengolahan di dalam storage Simbol untuk permulaan dan akhir dari suatu program Simbol Terminal

Simbol Predifined Process

Simbol Keying Operation

Simbol operasi menggunakan mesin mempunyai keyboard

dengan yang

Simbol Off-Line Storage

Simbol yang menunjukkan bahwa data di dalam simbol akan disimpan

Simbol untuk pemasukkan data secara manual on-line keyboard Simbol Manual Input

3.

Input Output Symbol Adalah simbol yang digunakan untuk menyatakan jenis peralatan yang dipakai sebagai media input/ output. Tabel 2.3 Input Output Symbol Simbol Penjelasan

Simbol Punched Card

Simbol yang menyatakan input berasal dari kartu

21

Simbol yang menyatakan input berasal dari pita magnetik Simbol Magnetik Tape

Simbol Disk and On Line Storage

Simbol yang menyatakan input berasal dari kertas atau diketik ke kertas

Simbol Dokumen

Simbol yang menyatakan input berasal dari dokumen dari kertas atau diketik ke kertas

Simbol Display

Simbol yang menyatakan peralatan output yang digunakan yaitu layar, printer dll

BAB III PERANCANGAN DAN PEMBUATAN PROGRAM


Penulisan ini dirancang dengan mengurangi noise pada karakter tulisan tangan dengan menggunakan frekuensi kecepatan dan frekuensi percepatan. Data input yang berupa karakter masih memiliki banyak getaran yang mengandung dua komponen yaitu, frekuensi getaran tinggi ( getaran yang mengandung noise ) dan frekuensi rendah ( getaran yang membentuk huruf asli ). Sehingga untuk mengenali huruf harus meminimalkan noise. Gambar 3.1 dibawah ini didasarkan pada sistem pakar berbasis pengetahuan yang merupakan representasi pengetahuan dari seorang pakar yang telah ahli dibidangnya. Basis pengetahuan tersusun atas fakta-fakta berupa objek. Dan kaidah yang merupakan informasi tentang cara menemukan fakta baru atas fakta yang telah ditemukan sebelumnya

22

1 2 3 4 1 6 4

2 3 4

5 4

7 1

4 3 4
3.1 Struktur Menu

1 Gambar 3.1 Sistem3 Pakar Berbasis Pengetahuan 2 2 4

23 Gambar 3. 2 Struktur Menu

3.2 Flowchart 2

start

Load File Cari percepatan Cari min data dari x,y Filter percepatan Ubah posisi x-minx, yminy pada huruf lain

Cari kecepatan

Filter kecepatan

Cari percepatan Cetak figure 3 Filter percepatan

Cetak Figure 1

Segmentasi huruf lain

Segmentasi huruf data pembanding

Cari kecepatan Cari min data dari ex1,ex2,ex3, es4,ex5

Filter percepatan

Cari max,min,panjang ,tinggi,normal huruf lain

Cetak figure 2

Ubah posisi dari ex1,ex2,ex3,es 4,ex5

1 2

24

Cari max,min,panjang ,tinggi,normal data pembanding

Perbandingan kemiripan

if 0.5<mirip<1.5

Labeling

Cetak segmen huruf lain

25 Struktur menu dari aplikasi program yang dibuat, digambarkan pada gambar 3.2 diatas. Dimana pada program dipanggil sebuah karakter huruf kemudian dilakukan proses segmentasi. Pada aplikasi ini terdapat 4 Figure yaitu, a. Figure 1 merupakan tampilan dari karakter huruf yang dipanggil dalam program yang ada b. Figure 2 merupakan tampilan dari grafik kecepatan c. Figure 3 merupakan tampilan grafik percepatan d. Figure 4 merupakan tampilan figure hasil segmentasi, setelah proses segmentasi kemudian dibuat klasifikasinya. 3.3 Klasifikasi Segmen huruf a sampai huruf e
%Loading database load data/lettrea.dat; load data/lettreb.dat; load data/lettrec.dat; load data/lettred.dat; load data/lettree.dat; ex1=lettrea; ex2=lettreb; ex3=lettrec; ex4=lettred; ex5=lettree;

Aplikasi ini akan membentuk klasifikasi segmen yang diambil dari huruf a sampai huruf e menjadi 15 segmen dasar. Dimana komputer akan menyimpan potongan 15 segmen ini tanpa ditampilkan. Ketika huruf lain diinput, maka huruf lain tersebut akan diproses dengan rumus yang ada dan membentuk segment.
%Data Pembanding min_xex1=min(min(ex1(:,1))); %mengambil posisi X min_xex2=min(min(ex2(:,1))); min_xex3=min(min(ex3(:,1))); min_xex4=min(min(ex4(:,1))); min_xex5=min(min(ex5(:,1))); min_yex1=min(min(ex1(:,2))); %mengambil posisi Y min_yex2=min(min(ex2(:,2))); min_yex3=min(min(ex3(:,2))); min_yex4=min(min(ex4(:,2))); min_yex5=min(min(ex5(:,2))); xex1=ex1(:,1)-min_xex1; % merubah koordinat xex2=ex2(:,1)-min_xex2; xex3=ex3(:,1)-min_xex3; xex4=ex4(:,1)-min_xex4; xex5=ex5(:,1)-min_xex5; yex1=ex1(:,2)-min_yex1; yex2=ex2(:,2)-min_yex2; yex3=ex3(:,2)-min_yex3; yex4=ex4(:,2)-min_yex4; yex5=ex5(:,2)-min_yex5;

Untuk membuat data pembanding ini diambil dari grafik percepatan, dimana akan membentuk histogram, dan diambil lima titik yaitu - Titik max - Tinggi - Titik min - Panjang - Titik normal

26
%Perbandingan temp=0; lbl_segment(1)=0; k=1; jml_segment=nb_segmentsEx1+nb_segmentsEx2+nb_segmentsEx3+nb_segmentsEx4 +nb_segmentsEx5; for i=1:nb_segments lbl=1; for j=1:jml_segment if ((j>0)&&(j<=nb_segmentsEx1))%huruf a n1=max_l(i)/max_lex1(j); n2=min_l(i)/min_lex1(j); n3=norm(i)/normex1(j); n4=panjang(i)/panjangex1(j); n5=tinggi(i)/tinggiex1(j); if (((n1>0.5) && (n1<1.5)) && ((n2>0.5) && (n2<1.5)) && ((n3>0.5) && (n3<1.5)) && ((n4>0.5) && (n4<1.5)) && ((n5>0.5) && (n5<1.5))) lbl_segment(i)=lbl; break; %Berpindah ke i end;

3.3.1 Tampilan Huruf a Pada figure 1 menampilkan karakter huruf yang dipanggil dalam sebuah program yang ada. Labeling atau penamaan berdasarkan segmen potongan karakter huruf a sampai huruf e menjadi 15 segmen dasar , sehingga digunakan sebagai pembanding untuk karakter yang lain. Contoh dibawah ini adalah karakter a

Gambar 3. 3 Huruf a
clear; close all; load LETTRE_OASIS/lettrea.dat; lettre=lettrea;

27
%load LETTRE_OASIS/let_C.txt; % modifications january 07 %lettre=LETTRE_OASIS_let_C; % %taille_fichier=size(lettre); min_x=min(min(lettre(:,1))); % coordonnee x minimum min_y=min(min(lettre(:,2))); % coordonnee y minimum x=lettre(:,1)-min_x; % chgt origine y=lettre(:,2)-min_y; figure(1); plot(x,y);%cetak matriks X&Y di figure 1

Pada program diatas merupakan listing untuk memanggil karakter huruf a dimana huruf a terdiri dari piksel piksel. Akan diambil titik x minimum dan titik y minimum yang disimpan pada variabel min_x dan variabel min_y, dimana titik diperoleh dari piksel yang ada. Ketika variabel min_x dan variabel min_y didapat maka dilakukan proses perhitungan dengan rumus x=lettre(:,1)-min_x ; y=lettre(:,2)min_y, sehingga diperoleh titik yang baru yang disimpan dalam variabel x dan variabel y. Tabel 3.1 Piksel huruf a

Tekanan X 8084 8084 8085 8086 8086 8083 8086 8078 8078 8077 8071 8067 8063 8059 8044 8034 8026 8017 8001 Y 5690 5689 5692 5694 5695 5696 5705 5708 5710 5721 5724 5737 5740 5740 5744 5755 5758 5760 5770 Z 1 2 4 5 7 8 9 10 11 12 12 14 17 17 17 17 18 18 18 X 22 22 22 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21

Tekanan Y -38 -38 -38 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37

28
7987 7971 7949 7925 7901 7874 7856 7829 7803 7761 7730 7697 7661 7630 7601 7570 7575 7514 7483 7460 7436 7413 7396 7376 7370 7359 7346 7343 7329 7326 7317 7316 7313 7308 7308 7313 5773 5773 5776 5787 5787 5787 5786 5787 5776 5773 5758 5753 5737 5722 5705 5679 5661 5642 5610 5583 5565 5545 5517 5497 5469 5449 5422 5390 5369 5337 5305 5276 5244 5211 5178 5148 18 19 19 19 19 19 19 19 18 18 18 18 18 18 18 18 18 18 17 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 23 -37 -37 -37 -37 -37 -37 -37 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -37 -37 -37 -37 -37 -37 -37 -36 -36 -36 -36 -36 -35 -35 -35

29
7322 7325 7336 7342 7353 7364 7380 7394 7410 7427 7449 7470 7490 7513 7536 7571 7600 7621 7650 7681 7715 7740 7771 7797 7823 7844 7862 7891 7913 7939 7958 7975 7990 8004 8020 8034 5113 5084 5040 5006 4976 4944 4911 4891 4875 4860 4847 4841 4830 4828 4827 4831 4843 4848 4873 4889 4909 4940 4971 5004 5035 5054 5088 5129 5164 5196 5226 5260 5292 5324 5356 5388 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 19 19 18 19 19 19 19 19 19 19 19 19 23 23 23 23 23 23 23 23 23 23 23 23 23 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 -35 -34 -34 -34 -34 -34 -34 -34 -34 -34 -33 -33 -33 -33 -33 -33 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32

30
8038 8045 8051 8053 8054 8061 8064 8062 8059 8059 8061 8057 8054 8051 8050 8047 8047 8046 8043 8044 8044 8047 8043 8045 8045 8044 8044 8049 8051 8049 8051 8044 8044 8051 8055 8053 5420 5451 5483 5516 5549 5583 5625 5659 5691 5710 5738 5756 5770 5775 5776 5787 5788 5787 5788 5787 5786 5776 5785 5771 5759 5753 5740 5726 5711 5693 5677 5661 5645 5627 5600 5582 19 19 19 19 18 18 19 18 18 18 18 18 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 -32 -32 -32 -32 -32 -33 -33 -33 -33 -34 -34 -34 -34 -35 -35 -35 -35 -35 -35 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36 -35 -35 -35

31
8059 8058 8058 8053 8050 8049 8050 8049 8049 8051 8056 8056 8059 8066 8070 8076 8084 8099 8110 8117 8133 8148 8162 8177 8198 8220 8234 8256 8273 8289 8307 8330 8340 8350 8367 8387 5563 5536 5516 5482 5450 5417 5385 5355 5323 5280 5244 5200 5167 5134 5101 5069 5050 5022 4990 4960 4941 4924 4908 4894 4880 4877 4873 4859 4858 4858 4857 4846 4847 4847 4859 4863 22 22 23 23 23 24 24 24 24 24 25 25 26 26 26 26 26 26 27 26 27 26 27 27 27 26 27 26 26 26 27 27 27 26 27 27 23 23 23 23 23 23 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 20 20 20 20 20 20 20 20 20 20 20 -35 -35 -35 -34 -34 -34 -34 -34 -33 -33 -33 -33 -32 -32 -32 -32 -31 -31 -31 -31 -31 -31 -31 -31 -30 -30 -30 -30 -30 -29 -29 -29 -29 -29 -29 -28

32
8395 8416 8436 8459 8479 8504 8520 8541 8559 4874 4880 4894 4910 4928 4959 4990 5019 5049 27 27 27 26 24 23 20 15 7 20 19 19 19 19 19 19 19 19 -28 -28 -28 -28 -28 -28 -28 -28 -28

3.3.2

Grafik Kecepatan Grafik kecepatan terdapat pada figure 2, dimana ketika telah diperoleh titik titik baru yang disimpan pada variable x dan variabel y maka dilakukan filterisasi dengan mengurangi noise yang ada melalui kecepatannya.

Gambar 3.4 Grafik Kecepatan

Pada Gambar 3.4 merupakan grafik kecepatan pada huruf a, dimana terdapat dua plot yaitu plot yang atas merupakan grafik yang belum difilter sedangkan grafik pada plot yang dibawah telah di filter.
%=================================================== % % Calcul des vetesses:kecepatan % kecepatan_x=diff(x,1);

33
kecepatan_y=diff(y,1); taille=length(kecepatan_x); for i=1:taille, kecepatan(i)=sqrt(kecepatan_x(i)^2 + kecepatan_y(i)^2); end, h=ones(1,15); kecepatan_filter=conv(kecepatan,h);%conv=filter figure(2); subplot(2,1,1); plot(kecepatan); subplot(2,1,2); plot(kecepatan_filter); %========================================================

Pada listing diatas merupakan program untuk mencari kecepatan yang memudahkan dalam segmentasi. Rumus kecepatan yang digunakan yaitu , Kec :
X 2 + Y 2 . Kecepatan yang telah di filter disimpan pada variabel kecepatan_filter 3.3.3 Grafik Percepatan Grafik percepatan terdapat pada figure 3, dimana ketika telah diperoleh titik titik baru yang disimpan pada variable x dan variabel y maka dilakukan filterisasi dengan mengurangi noise yang ada melalui kecepatannya yang disimpan pada variabel kecepatan_filter. Seteleh diperoleh grafik kecepatannya maka dihitung percepatan untuk menuju tahap segmentasi.

Gambar 3.5 Grafik Percepatan Pada Gambar 3.5 merupakan Grafik Percepatan pada huruf a, dimana terdapat dua plot yaitu plot yang atas merupakan grafik yang belum difilter sedangkan grafik pada plot yang dibawah telah di filter. Percepatan didapat setelah dilakukan proses perhitungan kecepatan. Dimana percepatan yang ada disimpan dalam percepatan_filter
Calcul des acclrations:percepatan % percepatan=diff(kecepatan_filter,1); percepatan_filter=conv(percepatan,h);

34
figure(3); %cetak percepatan subplot(2,1,1); plot(percepatan); subplot(2,1,2); plot(percepatan_filter); %======================================================

3.3.4

Karakter Huruf b Sampai Huruf e Pada saat klasifikasi huruf yang digunakan sebagai pembanding yaitu huruf a sampai huruf e. Huruf a dapat dilihat pada proses sebelumnya. Dibawah ini merupakan tampilan proses segmentasi pada huruf b sampai huruf e . 3.3.4.1 Tampilan Huruf b Sampai Huruf e

Gambar 3.6 Huruf b

Gambar 3.7 Huruf c

35

Gambar 3.8 Huruf d

Gambar 3.9 Huruf e

36

3.3.4.2 Piksel Huruf b Sampai Huruf e Tabel 3.2 Piksel huruf b


Tekanan X 11293 11284 11287 11285 11286 11281 11284 11286 11286 11287 11287 11285 11286 11290 11296 11296 11300 11305 11311 11327 11342 11365 11384 11402 11438 11466 11501 11538 11573 11604 11644 Y 4142 4153 4153 4153 4153 4154 4153 4154 4154 4154 4153 4154 4154 4154 4154 4155 4154 4154 4156 4160 4172 4185 4192 4205 4224 4253 4284 4313 4336 4368 4410 Z 1 1 1 1 1 3 4 5 6 7 7 8 9 10 10 11 12 12 13 14 14 15 16 16 16 17 18 18 18 18 19 X 23 23 23 23 22 22 22 21 21 21 21 21 20 20 20 20 20 20 20 20 20 20 20 21 21 21 20 20 20 20 20 Tekanan Y -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -31

37
11668 11704 11732 11762 11790 11816 11838 11865 11878 11890 11913 11929 11952 11960 11960 11964 11982 11987 11991 11986 11977 11978 11977 11967 11955 11939 11927 11918 11909 11898 11893 11879 11868 11848 11832 11821 4445 4489 4526 4572 4608 4652 4697 4732 4777 4813 4857 4905 4944 4985 5023 5069 5113 5146 5166 5181 5199 5225 5243 5258 5261 5262 5264 5274 5275 5274 5263 5260 5246 5228 5209 5179 19 19 19 19 19 19 19 20 20 20 20 20 21 20 20 20 20 20 21 21 20 20 20 21 21 21 21 21 21 21 21 20 20 20 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 -31 -31 -31 -31 -31 -31 -32 -32 -32 -32 -32 -33 -33 -33 -34 -34 -34 -34 -35 -35 -35 -35 -35 -35 -35 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36

38
11804 11789 11773 11759 11746 11736 11730 11718 11707 11704 11700 11689 11679 11671 11670 11673 11663 11659 11651 11644 11636 11640 11637 11647 11651 11662 11670 11680 11694 11707 11716 11732 11745 11758 11770 11784 5147 5114 5067 5018 4971 4928 4890 4843 4795 4747 4699 4640 4589 4528 4478 4427 4368 4314 4252 4201 4142 4080 4016 3963 3917 3871 3839 3807 3785 3757 3741 3725 3710 3696 3694 3693 20 21 21 21 21 21 21 21 22 22 22 22 23 23 23 23 24 24 24 24 24 24 24 24 24 24 24 25 24 24 24 24 23 23 22 22 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 17 -36 -36 -36 -36 -36 -36 -36 -36 -36 -35 -35 -35 -35 -34 -34 -34 -33 -33 -32 -32 -31 -31 -30 -30 -29 -29 -29 -29 -28 -28 -28 -28 -28 -28 -28 -27

39
11800 11821 11842 11863 11881 11888 11904 11910 11917 11930 11934 11938 11934 11923 11917 11912 11899 11883 11875 11861 11858 11843 11843 11840 11830 11825 11823 11825 11825 11820 11825 11828 11830 11835 11849 11867 3693 3696 3712 3728 3757 3786 3808 3835 3865 3898 3936 3981 4012 4045 4074 4092 4110 4127 4141 4154 4157 4170 4172 4173 4174 4175 4185 4176 4176 4186 4176 4174 4175 4173 4172 4170 22 22 22 22 22 22 23 22 22 22 22 22 22 22 22 23 23 23 25 25 25 26 27 27 27 27 27 27 27 26 26 26 25 25 26 26 17 17 17 17 17 17 17 17 17 17 17 17 17 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -28 -28 -28 -28 -28 -28 -28 -28 -28 -28 -28 -28 -28 -28

40
11884 11898 11926 11953 11994 12031 12070 12110 12141 12170 12204 12240 12268 12292 12315 12331 12348 12356 12361 12366 12363 12360 12369 12368 12366 12369 12366 12362 12366 12366 12364 4158 4156 4156 4155 4154 4154 4156 4158 4158 4160 4170 4174 4188 4190 4201 4206 4208 4220 4219 4208 4218 4220 4218 4220 4219 4217 4219 4218 4218 4217 4217 26 26 26 27 27 27 27 27 27 27 27 27 28 28 28 28 28 28 29 30 31 31 32 32 32 32 31 29 24 19 10 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 -28 -28 -28 -28 -28 -28 -28 -28 -28 -28 -28 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27 -27

41 Tabel 3.3 Piksel huruf c


Tekanan X 11801 11795 11757 11727 11706 11680 11639 11609 11577 11530 11502 11469 11444 11428 11405 11392 11369 11352 11339 11320 11317 11318 11300 11294 11300 11299 11300 11291 11299 11306 11307 11312 11322 Y 7422 7421 7418 7407 7402 7387 7372 7355 7340 7323 7295 7276 7258 7232 7225 7198 7181 7162 7132 7104 7083 7052 7018 7001 6973 6944 6921 6880 6859 6841 6814 6794 6768 Z 23 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 X 16 17 17 17 17 18 18 18 18 18 19 19 19 19 19 19 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 Tekanan Y -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34

42
11332 11348 11351 11375 11393 11428 11451 11470 11509 11541 11568 11600 11633 11671 11701 11731 11760 11789 11803 11822 11842 6750 6729 6713 6700 6685 6665 6639 6637 6623 6620 6618 6608 6618 6621 6623 6634 6637 6639 6650 6653 6667 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 20 20 20 20 20 20 20 20 -35 -35 -34 -34 -34 -34 -33 -33 -33 -33 -33 -32 -32 -32 -32 -32 -32 -32 -32 -31 -31

Tabel 3.4 Piksel huruf d


Tekanan X 13410 13410 13409 13407 13410 13411 13410 13413 13408 13412 13408 Y 7627 7628 7630 7630 7631 7631 7641 7642 7643 7643 7643 Z 0 2 4 5 7 8 9 10 11 12 13 X 17 17 17 17 16 16 16 16 16 16 16 Tekanan Y -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35

43
13415 13408 13410 13404 13400 13401 13396 13399 13399 13397 13386 13391 13382 13385 13376 13373 13368 13355 13355 13350 13343 13320 13307 13279 13263 13245 13228 13203 13188 13164 13146 13136 13120 13098 13075 13055 7642 7645 7645 7646 7648 7648 7660 7660 7660 7661 7664 7663 7674 7674 7675 7678 7680 7695 7696 7695 7696 7709 7709 7712 7721 7721 7711 7711 7706 7706 7706 7695 7695 7680 7676 7661 14 15 16 17 18 19 20 22 22 23 24 25 26 26 26 27 26 28 28 28 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -36 -36 -36 -36 -36 -36 -36 -35

44
13025 13018 13003 12992 12974 12964 12954 12940 12938 12931 12923 12915 12917 12913 12917 12913 12918 12918 12930 12929 12928 12942 12948 12960 12973 12983 12994 13007 13028 13046 13067 13096 13119 13137 13156 13176 13191 7648 7632 7627 7610 7581 7563 7548 7520 7503 7481 7455 7437 7419 7390 7370 7344 7324 7308 7289 7274 7261 7246 7242 7229 7225 7213 7213 7212 7211 7214 7227 7242 7257 7273 7292 7306 7324 26 27 26 27 26 26 26 26 26 26 26 26 26 26 25 25 25 24 24 24 24 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 18 18 18 17 17 17 17 17 17 17 16 17 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 18 18 18 18 18 18 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -34 -34 -34 -34 -34 -34 -33 -33 -33 -33 -33 -33 -33 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -31 -31 -31 -32

45
13221 13231 13250 13267 13284 13294 13316 13323 13329 13349 13350 13350 13366 13384 13388 13404 13398 13398 13408 13424 13425 13425 13426 13425 13429 13428 13432 13434 13435 13431 13434 13433 13430 13437 13433 13430 13430 7353 7373 7402 7422 7440 7469 7500 7516 7546 7578 7597 7630 7663 7710 7741 7772 7817 7850 7884 7919 7951 7980 8010 8027 8044 8060 8063 8076 8077 8079 8080 8077 8080 8080 8079 8080 8078 23 23 23 23 24 24 24 25 25 25 26 25 25 27 27 27 27 27 26 27 27 27 27 27 28 28 28 28 29 29 29 30 30 30 30 29 29 18 18 18 18 18 18 18 18 18 18 19 19 19 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 17 17 17 17 17 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -33 -33 -33 -33 -33 -34 -34 -34 -34 -34 -35 -35 -35 -35 -36 -36 -36 -36 -37 -37 -37 -37 -37 -37 -37 -37

46
13432 13428 13426 13432 13426 13425 13426 13423 13422 13411 13417 13405 13408 13409 13401 13390 13382 13384 13371 13362 13370 13355 13349 13350 13339 13339 13341 13336 13340 13354 13361 13371 13381 13386 13395 13403 13431 8079 8076 8076 8062 8058 8043 8030 8026 8012 7995 7977 7951 7935 7904 7869 7822 7771 7723 7659 7614 7565 7503 7453 7405 7358 7312 7280 7246 7212 7181 7152 7136 7116 7102 7087 7084 7071 29 28 28 28 28 28 28 28 29 29 29 28 29 30 30 31 32 33 33 33 34 34 35 35 35 36 36 36 36 36 36 36 36 35 35 35 36 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 17 17 17 17 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -37 -36 -36 -36 -36 -36 -35 -35 -35 -34 -34 -34 -33 -33 -33 -32 -32 -31 -31 -31 -31 -31 -30 -30

47
13448 13461 13468 13489 13522 13546 13593 13634 13658 13688 13715 13738 7068 7068 7069 7072 7099 7115 7132 7152 7178 7194 7214 7241 35 34 34 34 34 32 30 29 25 21 16 9 17 17 17 17 17 17 17 17 16 16 16 16 -30 -30 -30 -30 -30 -30 -30 -30 -30 -30 -30 -31

Tabel 3.5 Piksel huruf e


Tekanan X 10225 10220 10217 10213 10213 10209 10209 10209 10210 10214 10212 10214 10215 10217 10222 10226 10229 10236 10245 10257 Y 4971 4973 4973 4973 4971 4971 4971 4972 4971 4969 4971 4971 4969 4969 4959 4957 4957 4955 4953 4944 Z 4 5 6 6 8 10 12 13 14 15 16 16 17 17 18 18 18 18 18 19 X 26 26 25 25 25 25 24 24 24 24 24 24 23 23 23 23 23 23 23 23 Tekanan Y -42 -41 -41 -40 -39 -39 -38 -37 -37 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36 -36

48
10272 10288 10314 10336 10358 10387 10419 10448 10480 10508 10533 10560 10587 10618 10638 10654 10667 10678 10687 10694 10693 10700 10696 10685 10684 10680 10670 10662 10649 10635 10628 10609 10589 10565 10548 10537 4940 4942 4953 4959 4969 4976 5001 5022 5037 5053 5072 5099 5120 5146 5165 5182 5199 5225 5244 5261 5279 5259 5311 5327 5343 5357 5373 5386 5401 5406 5418 5420 5421 5420 5417 5404 19 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 23 23 23 23 23 24 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 20 20 20 -36 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -34 -34 -34 -34 -34 -34 -34 -34 -33 -33 -33 -33 -33 -33 -33 -34 -34 -34 -34 -34 -35 -35 -35 -35 -35

49
10518 10495 10471 10460 10447 10428 10412 10396 10378 10366 10365 10352 10341 10348 10353 10356 10358 10359 10370 10383 10396 10415 10426 10452 10479 10507 10537 10564 10590 10620 10652 10683 10709 10728 10741 10754 5392 5374 5356 5328 5308 5275 5243 5200 5165 5136 5099 5039 4992 4959 4923 4892 4858 4827 4799 4780 4763 4746 4733 4717 4713 4713 4704 4704 4715 4718 4730 4746 4761 4764 4767 4779 23 23 23 23 23 23 23 23 23 23 23 24 24 24 24 24 24 25 25 25 25 25 25 25 25 25 26 25 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 20 20 20 20 20 19 19 19 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34 -34

50
10764 10775 10778 10778 10781 10778 10777 10776 10778 10776 10777 10770 4783 4784 4793 4794 4795 4795 4797 4797 4798 4800 4800 4800 26 26 26 26 26 26 25 24 23 20 15 6 19 19 19 19 19 19 18 18 18 18 18 18 -34 -34 -34 -34 -34 -34 -34 -34 -34 -33 -33 -33

3.3.4.3 Tampilan Grafik Kecepatan Huruf b sampai Huruf e

Gambar 3.10 Grafik Kecepatan Huruf b

51

Gambar 3.11 Grafik Kecepatan Huruf c

Gambar 3.12 Grafik Kecepatan Huruf d

Gambar 3.13 Grafik Kecepatan Huruf e

52

3.3.4.4 Tampilan Grafik Percepatan Huruf b sampai Huruf e

Gambar 3.14 Grafik Percepatan Huruf b

Gambar 3.15 Grafik Percepatan Huruf c

53

Gambar 3.16 Grafik Percepatan Huruf d

Gambar 3.17 Grafik Percepatan Huruf e 3.3.5 Segmentasi dan Klasifikasi Segmentasi karakter diperoleh perhitungannya dari grafik percepatan yang telah difilterisasi. Untuk menentukan setiap segment diperoleh dari histogram grafik percepatan dengan membentuk satu lembah dan satu bukit, dimana titik awal dan titik akhir terdapat pada sejajar sumbu x = 0. Hasil segmentasi terdapat pada figure 4.
% Segmentation: % j=1; for i= 2:length(percepatan_filter)-1; if (percepatan_filter(i-1)<0) && (percepatan_filter(i)>0) % segmente(j)=i; j=j+1; end; end;

54
%segmente=segmente-30 segmente=segmente-10; % nb_segments=length(segmente)+1; % %num_figure=4; %

3.3.5.1 Klasifikasi Huruf a Sampai Huruf e Setiap huruf yang telah di segmen akan dibuat klasifikasinya. Seperti dijelaskan sebelumnya, aplikasi ini membuat dasar labeling atau penamaan menjadi 15 segment yang diperoleh dari huruf a sampai huruf e, sehingga setiap ada input karakter selain dari huruf a sampai huruf e akan dibandingkan dengan 15 segment tersebut dan dibuat klasifikasinya.
%Loading database load data/lettrea.dat; load data/lettreb.dat; load data/lettrec.dat; load data/lettred.dat; load data/lettree.dat; ex1=lettrea; ex2=lettreb; ex3=lettrec; ex4=lettred; ex5=lettree;

Program diatas akan diambil file huruf a sampai huruf e dan disimpan pada variabel ex.
in_lex1(j);%labeling %Pengambilan Nilai max_l(1)=0; min_l(1)=0; max_lex1(1)=0; min_lex1(1)=0; max_lex2(1)=0; min_lex2(1)=0; max_lex3(1)=0; min_lex3(1)=0; max_lex4(1)=0; min_lex4(1)=0; max_lex5(1)=0; min_lex5(1)=0; for i=1:nb_segments; if (i==1) for j=1:segmente(i); if (percepatan_filter(j) > max_l(i)) max_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)<min_l(i)) min_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)>=0 && percepatan_filter(j+1)<0) norm(i)=j; end; panjang(i)=segmente(i); tinggi(i)=max_l(i)-min_l(i); end; elseif (i==nb_segments)

55
max_l(i)=0; min_l(i)=0; for j=segmente(i-1):length(percepatan_filter); if (percepatan_filter(j) > max_l(i)) max_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)<min_l(i)) min_l(i)=percepatan_filter(j); end; if (percepatan_filter(j-1)>=0 && percepatan_filter(j)<0) norm(i)=j-1; end; panjang(i)=length(percepatan_filter)-segmente(i-1); tinggi(i)=max_l(i)-min_l(i); end; else max_l(i)=0; min_l(i)=0; for j=segmente(i-1):segmente(i); if (percepatan_filter(j) > max_l(i)) max_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)<min_l(i)) min_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)>=0 && percepatan_filter(j+1)<0) norm(i)=j; end; panjang(i)=segmente(i); tinggi(i)=max_l(i)-min_l(i); end; end end; %Nilai X1 for i=1:nb_segmentsEx1; if (i==1) for j=1:segmenteex1(i); if (percepatan_filterex1(j) > max_lex1(i)) max_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)<min_lex1(i)) min_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)>=0 && percepatan_filterex1(j+1)<0) normex1(i)=j; end; panjangex1(i)=segmenteex1(i); tinggiex1(i)=max_lex1(i)-min_lex1(i); end; elseif (i==nb_segmentsEx1) max_lex1(i)=0; min_lex1(i)=0; for j=segmenteex1(i-1):length(percepatan_filterex1); if (percepatan_filterex1(j) > max_lex1(i)) max_lex1(i)=percepatan_filterex1(j);

56
end; if (percepatan_filterex1(j)<min_lex1(i)) min_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j-1)>=0 && percepatan_filterex1(j)<0) normex1(i)=j-1; end; panjangex1(i)=length(percepatan_filterex1)-segmenteex1(i1); tinggiex1(i)=max_lex1(i)-min_lex1(i); end; else max_lex1(i)=0; min_lex1(i)=0; for j=segmenteex1(i-1):segmenteex1(i); if (percepatan_filterex1(j) > max_lex1(i)) max_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)<min_lex1(i)) min_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)>=0 && percepatan_filterex1(j+1)<0) normex1(i)=j; end; panjangex1(i)=segmenteex1(i); tinggiex1(i)=max_lex1(i)-min_lex1(i); end; end end;

Program diatas merupakan kalsifikasi untuk huruf a sampai huruf e.sehingga membentuk 16 segmen dasar. 3.1.6 Tampilan Klasifikasi Segmen Huruf a Sampai Huruf e

Gambar 3.18 Klasifikasi Segmen Huruf a

57

Gambar 3.19 Klasifikasi Segmen Huruf b

Gambar 3.20 Klasifikasi Segmen Huruf c

58

Gambar 3.21 Klasifikasi Segmen Huruf d

Gambar 3.22 Klasifikasi Segmen Huruf e

59

BAB IV PENGUJIAN PROGRAM


Tujuan Pengujian Percobaan ini bertujuan untuk membuktikan apakah program aplikasi ini mampu mengklasifikasi setiap karakter yang diinput. 4.2 Kerangka Sistem yang Diuji Kerangka sistem yang akan diuji adalah program aplikasi perbaikan kualitas citra digital untuk menghasilkan citra keluaran yang mempunyai kualitas lebih baik daripada citra masukan. Spesifikasi perangkat keras yang digunakan oleh penulis adalah sebagai berikut : Hardware : - Prosesor Intel Pentium 4 2.26 GHz. - Memori 256 MB. - Harddisk 80GB. Software : - Windows XP Profesional - Matlab 7.1 4.3 Cara Pengujian Hal utama yang perlu dilakukan untuk melakukan pengujian program adalah meng-install software Matlab 7.1 pada komputer yang akan menjalankan program ini. Setelah itu, jalankan aplikasi Matlab 7.1 tersebut dengan meng-klik ikon Matlab 7.1 pada desktop window atau dari toolbar Start Windows, lalu klik All Programs dan pilih Matlab 7.1, kemudian browse (pilih direktori) file yang akan di ujikan. 4.4 Contoh Kasus 4.4.1 Kasus Akan disegmentasi dan dibuat Klasifikasinya Huruf m 4.4.2 Penyelesaian 1. Untuk Huruf m Karakter yang telah diinput disimpan dalam sebuah file, file yang disimpan berupa piksel piksel. Kemudian buka aplikasi yang telah dibuat., dengan memanggil file yang telah disimpan tadi seperti dibawah ini..
clear; close all; load LETTRE_OASIS/lettrem.dat; lettre=lettrem;

4.1

Gambar 4.1 Tampilan Karakter m

60

%Mengambil data dari lettre min_x=min(min(lettre(:,1))); % coordonnee x minimum min_y=min(min(lettre(:,2))); % coordonnee y minimum x=lettre(:,1)-min_x; % chgt origine y=lettre(:,2)-min_y; figure(1); plot(x,y);%cetak matriks X&Y di figure 1 %===================================================

Pada program diatas merupakan listing untuk memanggil karakter huruf m dimana huruf m terdiri dari piksel piksel. Akan diambil titik x minimum dan titik y minimum yang disimpan pada variabel min_x dan variabel min_y, dimana titik diperoleh dari piksel yang ada. Ketika variabel min_x dan variabel min_y didapat maka dilakukan proses perhitungan dengan rumus x=lettre(:,1)-min_x ; y=lettre(:,2)min_y, sehingga diperoleh titik yang baru yang disimpan dalam variabel x dan variabel y Tabel 4.1 Piksel Huruf m
X 4327 4327 4327 4325 4327 4325 4321 4321 4322 4319 4321 4323 4319 4323 4324 4324 4327 4331 4338 4339 4347 4351 4351 4362 4369 4377 4387 4395 Y 17645 17642 17642 17641 17631 17630 17629 17628 17628 17628 17628 17628 17629 17630 17632 17641 17644 17657 17661 17677 17696 17726 17755 17785 17803 17819 17850 17871 Z 0 1 3 4 5 6 7 9 10 11 12 14 15 17 18 19 20 21 22 22 22 22 22 23 24 24 24 24 Tekanan X 23 23 23 23 23 23 23 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 Tekanan Y -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32

61
4413 4431 4448 4469 4482 4490 4504 4510 4515 4524 4545 4551 4564 4565 4570 4572 4580 4585 4596 4606 4619 4632 4649 4664 4678 4688 4696 4711 4723 4716 4727 4726 4731 4724 4721 4723 4730 4720 4716 4714 4713 4714 4711 4713 4713 4714 4714 4714 17903 17935 17978 18009 18028 18042 18062 18076 18089 18105 18110 18124 18128 18128 18128 18127 18127 18124 18110 18096 18078 18057 18029 17999 17965 17931 17898 17867 17836 17805 17760 17727 17695 17663 17641 17599 17580 17550 17532 17518 17513 17499 17488 17487 17488 17487 17486 17488 24 24 24 24 25 25 25 25 25 25 25 25 25 24 24 24 23 23 23 23 23 23 23 23 23 23 23 23 24 24 24 24 24 24 24 24 24 25 24 24 24 24 24 24 24 24 25 25 24 24 24 24 24 24 24 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 24 24 24 24 24 23 23 23 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 -33 -33 -33 -33 -33 -33 -33 -34 -34 -34 -34 -34 -34 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -34 -34 -34 -34 -33 -33 -33 -33 -32 -32 -32 -31 -31 -31 -31 -31 -31 -31 -31 -30 -30

62
4709 4715 4716 4719 4725 4728 4734 4736 4749 4751 4765 4780 4792 4812 4828 4840 4862 4873 4885 4892 4902 4913 4913 4918 4927 4934 4942 4950 4957 4968 4976 4986 4994 4999 5004 5011 5018 5019 5019 5023 5022 5024 5021 5020 5020 5022 5021 5022 17497 17500 17514 17534 17561 17580 17612 17628 17660 17692 17726 17758 17803 17835 17869 17900 17919 17935 17952 17968 17981 17982 17982 17981 17977 17966 17951 17933 17913 17884 17854 17822 17790 17757 17723 17692 17660 17632 17613 17593 17568 17552 17548 17535 17529 17519 17518 17518 25 25 25 25 25 25 25 25 24 24 24 24 23 23 23 23 23 23 23 23 23 23 22 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 23 23 23 23 24 24 24 24 24 25 25 25 25 25 25 24 24 24 24 24 23 23 23 23 23 23 23 22 22 22 22 -30 -30 -29 -29 -30 -30 -30 -30 -30 -30 -30 -30 -31 -31 -31 -31 -31 -32 -32 -32 -32 -32 -32 -32 -33 -33 -33 -33 -33 -33 -33 -32 -32 -32 -32 -32 -32 -32 -32 -32 -31 -31 -31 -31 -31 -31 -30 -30

63
5023 5021 5018 5019 5017 5023 5024 5027 5033 5034 5039 5053 5067 5080 5092 5103 5125 5141 5160 5170 5175 5184 5191 5197 5201 5211 5222 5224 5228 5237 5234 5237 5244 5246 5250 5259 5262 5276 5283 5297 5304 5320 5335 5347 5361 5382 5394 5410 17517 17520 17529 17545 17564 17582 17609 17631 17661 17689 17722 17756 17791 17824 17856 17897 17920 17948 17965 17978 17982 17994 17995 17994 17983 17967 17950 17919 17888 17853 17820 17789 17757 17725 17695 17675 17661 17645 17625 17600 17584 17581 17578 17577 17577 17578 17583 17597 21 22 22 22 22 21 21 21 21 21 21 20 20 21 21 21 21 21 21 21 21 21 21 20 20 20 20 20 20 21 21 21 21 22 22 22 22 22 23 23 23 23 23 23 24 24 24 24 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 22 22 22 22 22 22 22 22 22 22 21 21 21 21 21 21 21 21 21 21 21 -30 -30 -30 -30 -30 -30 -30 -30 -30 -30 -30 -30 -30 -31 -31 -31 -31 -31 -31 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -32 -31 -31 -31 -31 -31 -30 -30 -30 -30 -30 -30

64
5423 5444 5457 5478 5495 5508 5521 17613 17629 17647 17675 17691 17708 17728 24 23 22 21 19 12 6 20 20 20 20 20 20 20 -30 -29 -29 -29 -29 -29 -29

Grafik Kecepatan Grafik kecepatan terdapat pada figure 2, dimana ketika telah diperoleh titik titik baru yang disimpan pada variable x dan variabel y maka dilakukan filterisasi dengan mengurangi noise yang ada melalui kecepatannya.
% Calcul des vetesses:kecepatan% kecepatan_x=diff(x,1); kecepatan_y=diff(y,1); taille=length(kecepatan_x); for i=1:taille, kecepatan(i)=sqrt(kecepatan_x(i)^2 + kecepatan_y(i)^2); end; h=ones(1,15); kecepatan_filter=conv(kecepatan,h); figure(2); subplot(2,1,1); plot(kecepatan); subplot(2,1,2); plot(kecepatan_filter); %========================================================

4.4.3

Gambar 4.2Grafik Kecepatan Karakter m Pada gambar 4.2 terdapat dua plot yaitu plot yang atas merupakan histogram yang belum difilter. Untuk plot yang bawah merupakam histogram yang telah di filter. Untuk menentukan kecepatan digunakan rumus kecepatan(i)=sqrt(kecepatan_x(i)^2 + kecepatan_y(i)^2).
x2 + y2 .

Sintaxnya:

65 Grafik Percepatan Pada grafik percepatan ini merupakan dasar dari segmentasi. Dimana histogram kecepatan akan diproses kembali yang disimpan dalam variabel percepatan dan difilter. Grafik percepatan terdapat pada figure 3, dimana ketika telah diperoleh titik titik baru yang disimpan pada variable percepatan.
Calcul des acclrations:percepatan % percepatan=diff(kecepatan_filter,1); percepatan_filter=conv(percepatan,h); figure(3); %cetak percepatan subplot(2,1,1); plot(percepatan); subplot(2,1,2); plot(percepatan_filter); %======================================================

4.4.4

Gambar 4.3 Grafik Percepatan Karakter m 4.4.5 Segmentasi dan Klasifikasi Tahap ini diperoleh setelah dilakukan proses perhitungan kecepatan dan proses perhitungan percepatan yang telah di filterisasi. Hasil segmentasi terdapat pada figure 4. Klasifikasi dilakukan dari huruf yang diinput berdasarkan grafik percepatan. Dimana dicari perbandingan nilai pada piksel yang ada, dan pada saat klasifikasi segmen huruf m akan dibandingkan dengan segmen yang telah ada yaitu 15 segmen yang diperoleh dari segmen karakter huruf a sampai huruf e. Jika pada saat dibandingkan ternyata segmen pada huruf m tidak ada yang mirip dengan 15 segmen dasar maka akan dibuat penamaan baru.

66

Gambar 4.4 Hasil Segmentasi Dan Klasifikasi Huruf m Pada gambar 4.3 dapat dilihat klasifikasi segmen. Dimana huruf m ini terdiri dari : a.Segmen 14 b.Segmen 5 c.Segmen 3 d.Segmen 15 e.Segmen 1 Hasil Pengujian Hasil pengujian dari program aplikasi ini adalah : 1. Program ini mampu melakukan perbandingan pada setiap segmen yang telah dihasilkan pada aplikasi yang dibuat. 2. Program ini mampu melakukan Klasifikasi untuk memudahkan pengenalan tulisan tangan 4.6 Pembahasan Dari hasil pengujian ternyata program ini mampu melakukan segmentasi pada setiap karakter yang diinput dan disimpan dalam sebuah file. Karakter yang diinput berupa piksel dan piksel ini akan diproses melalui beberapa tahap yaitu, tahap filterisasi Kecepatan, filterisasi Percepatan kemudian dilakukan segmentasi berdasarkan grafik Percepatan. Karakter yang disegmentasi akan diklasifikasi dan dilakukan labeling atau penamaan. Aplikasi ini mengambil huruf a sampai huruf e sebagai dasar labeling. Kemudian huruf yang diinput akan disegmen dan dibandingakan 15 dasar segmen yang ada. 4.5

67

BAB V PENUTUP
5. 1 Simpulan Dari hasil percobaan di atas ternyata aplikasi ini mampu melakukan klasifikasi dari karakter yang diinput, dimana data input yang berupa karakter difilterisasi oleh proses kecepatan dan proses percepatan kemudian disegmentasi. Penulisan ini dibuat untuk membantu melakukan pengenalan tulisan tangan dengan tahap hanya klasifikasi dari karakter yang telah disegmentasi, yang kemudian dapat dikembangkan kembali. 5. 2 Saran Untuk mendapatkan analisa dari karakter tulisan tangan maka penulisan ini dikembangkan kembali untuk penentuan karakter, sehingga memudahkan sejauh mana kemapuan seorang anak dapat menulis.

LAMPIRAN
A. LISTING PROGRAM
%Programme de lecture/affichage fichier lettre.dat et calcul/affichage vitesse clear; close all; load LETTRE_OASIS/lettre.dat; lettre=lettrea; %Loading database load data/lettrea.dat; load data/lettreb.dat; load data/lettrec.dat; load data/lettred.dat; load data/lettree.dat; ex1=lettrea; ex2=lettreb; ex3=lettrec; ex4=lettred; ex5=lettree; % % %Mengambil data dari lettre min_x=min(min(lettre(:,1))); % coordonnee x minimum min_y=min(min(lettre(:,2))); % coordonnee y minimum x=lettre(:,1)-min_x; % chgt origine y=lettre(:,2)-min_y; figure(1); plot(x,y);%cetak matriks X&Y di figure 1 %=================================================== % Calcul des vetesses:kecepatan % kecepatan_x=diff(x,1); kecepatan_y=diff(y,1); taille=length(kecepatan_x); for i=1:taille, kecepatan(i)=sqrt(kecepatan_x(i)^2 + kecepatan_y(i)^2);

68
end; h=ones(1,15); kecepatan_filter=conv(kecepatan,h); figure(2); subplot(2,1,1); plot(kecepatan); subplot(2,1,2); plot(kecepatan_filter); %======================================================== % Calcul des acclrations:percepatan % percepatan=diff(kecepatan_filter,1); percepatan_filter=conv(percepatan,h); figure(3); %cetak percepatan subplot(2,1,1); plot(percepatan); subplot(2,1,2); plot(percepatan_filter); %======================================================

% Segmentation: % j=1; for i= 2:length(percepatan_filter)-1; if (percepatan_filter(i-1)<0) && (percepatan_filter(i)>0) % modifications january 07 segmente(j)=i; j=j+1; end; end; %segmente=segmente-30 segmente=segmente-10; % modifications january 07 nb_segments=length(segmente)+1; % modifications january 07 %num_figure=4; % % %Data Pembanding % % min_xex1=min(min(ex1(:,1))); %mengambil posisi X min_xex2=min(min(ex2(:,1))); min_xex3=min(min(ex3(:,1))); min_xex4=min(min(ex4(:,1))); min_xex5=min(min(ex5(:,1))); min_yex1=min(min(ex1(:,2))); %mengambil posisi Y min_yex2=min(min(ex2(:,2))); min_yex3=min(min(ex3(:,2))); min_yex4=min(min(ex4(:,2))); min_yex5=min(min(ex5(:,2))); xex1=ex1(:,1)-min_xex1; % merubah koordinat xex2=ex2(:,1)-min_xex2; xex3=ex3(:,1)-min_xex3;

69
xex4=ex4(:,1)-min_xex4; xex5=ex5(:,1)-min_xex5; yex1=ex1(:,2)-min_yex1; yex2=ex2(:,2)-min_yex2; yex3=ex3(:,2)-min_yex3; yex4=ex4(:,2)-min_yex4; yex5=ex5(:,2)-min_yex5; kecepatan_xex1=diff(xex1,1); %mencari diff X kecepatan_xex2=diff(xex2,1); kecepatan_xex3=diff(xex3,1); kecepatan_xex4=diff(xex4,1); kecepatan_xex5=diff(xex5,1); kecepatan_yex1=diff(yex1,1); %mencari diff Y kecepatan_yex2=diff(yex2,1); kecepatan_yex3=diff(yex3,1); kecepatan_yex4=diff(yex4,1); kecepatan_yex5=diff(yex5,1); %Mencari Kecepatan taille=length(kecepatan_xex1); for i=1:taille, kecepatanex1(i)=sqrt(kecepatan_xex1(i)^2 end; taille=length(kecepatan_xex2); for i=1:taille, kecepatanex2(i)=sqrt(kecepatan_xex2(i)^2 end; taille=length(kecepatan_xex3); for i=1:taille, kecepatanex3(i)=sqrt(kecepatan_xex3(i)^2 end; taille=length(kecepatan_xex4); for i=1:taille, kecepatanex4(i)=sqrt(kecepatan_xex4(i)^2 end; taille=length(kecepatan_xex5); for i=1:taille, kecepatanex5(i)=sqrt(kecepatan_xex5(i)^2 end; %Filter kecepatan kecepatan_filterex1=conv(kecepatanex1,h); kecepatan_filterex2=conv(kecepatanex2,h); kecepatan_filterex3=conv(kecepatanex3,h); kecepatan_filterex4=conv(kecepatanex4,h); kecepatan_filterex5=conv(kecepatanex5,h); %Percepatan percepatanex1=diff(kecepatan_filterex1,1); percepatanex2=diff(kecepatan_filterex2,1); percepatanex3=diff(kecepatan_filterex3,1); percepatanex4=diff(kecepatan_filterex4,1); percepatanex5=diff(kecepatan_filterex5,1); %Filter Percepatan

+ kecepatan_yex1(i)^2);

+ kecepatan_yex2(i)^2);

+ kecepatan_yex3(i)^2);

+ kecepatan_yex4(i)^2);

+ kecepatan_yex5(i)^2);

70
percepatan_filterex1=conv(percepatanex1,h); percepatan_filterex2=conv(percepatanex2,h); percepatan_filterex3=conv(percepatanex3,h); percepatan_filterex4=conv(percepatanex4,h); percepatan_filterex5=conv(percepatanex5,h); %Memisahkan Segmen j=1; for i= 2:length(percepatan_filterex1)-1; if (percepatan_filterex1(i-1)<0) && (percepatan_filterex1(i)>0) segmenteex1(j)=i; j=j+1; end; end; j=1; for i= 2:length(percepatan_filterex2)-1; if (percepatan_filterex2(i-1)<0) && (percepatan_filterex2(i)>0) segmenteex2(j)=i; j=j+1; end; end; j=1; for i= 2:length(percepatan_filterex3)-1; if (percepatan_filterex3(i-1)<0) && (percepatan_filterex3(i)>0) segmenteex3(j)=i; j=j+1; end; end; j=1; for i= 2:length(percepatan_filterex4)-1; if (percepatan_filterex4(i-1)<0) && (percepatan_filterex4(i)>0) segmenteex4(j)=i; j=j+1; end; end; j=1; for i= 2:length(percepatan_filterex5)-1; if (percepatan_filterex5(i-1)<0) && (percepatan_filterex5(i)>0) segmenteex5(j)=i; j=j+1; end; end;

%memperhaluskan segment segmenteex1=segmenteex1-10; segmenteex2=segmenteex2-10; segmenteex3=segmenteex3-10; segmenteex4=segmenteex4-10; segmenteex5=segmenteex5-10; %Menentukan banyaknya segment nb_segmentsEx1=length(segmenteex1)+1; nb_segmentsEx2=length(segmenteex2)+1; nb_segmentsEx3=length(segmenteex3)+1; nb_segmentsEx4=length(segmenteex4)+1;

71
nb_segmentsEx5=length(segmenteex5)+1;

%labeling % % %Pengambilan Nilai max_l(1)=0; min_l(1)=0; max_lex1(1)=0; min_lex1(1)=0; max_lex2(1)=0; min_lex2(1)=0; max_lex3(1)=0; min_lex3(1)=0; max_lex4(1)=0; min_lex4(1)=0; max_lex5(1)=0; min_lex5(1)=0; for i=1:nb_segments; if (i==1) for j=1:segmente(i); if (percepatan_filter(j) > max_l(i)) max_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)<min_l(i)) min_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)>=0 && percepatan_filter(j+1)<0) norm(i)=j; end; panjang(i)=segmente(i); tinggi(i)=max_l(i)-min_l(i); end; elseif (i==nb_segments) max_l(i)=0; min_l(i)=0; for j=segmente(i-1):length(percepatan_filter); if (percepatan_filter(j) > max_l(i)) max_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)<min_l(i)) min_l(i)=percepatan_filter(j); end; if (percepatan_filter(j-1)>=0 && percepatan_filter(j)<0) norm(i)=j-1; end; panjang(i)=length(percepatan_filter)-segmente(i-1); tinggi(i)=max_l(i)-min_l(i); end; else max_l(i)=0; min_l(i)=0; for j=segmente(i-1):segmente(i);

72
if (percepatan_filter(j) > max_l(i)) max_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)<min_l(i)) min_l(i)=percepatan_filter(j); end; if (percepatan_filter(j)>=0 && percepatan_filter(j+1)<0) norm(i)=j; end; panjang(i)=segmente(i); tinggi(i)=max_l(i)-min_l(i); end; end end;

%Nilai X1 for i=1:nb_segmentsEx1; if (i==1) for j=1:segmenteex1(i); if (percepatan_filterex1(j) > max_lex1(i)) max_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)<min_lex1(i)) min_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)>=0 && percepatan_filterex1(j+1)<0) normex1(i)=j; end; panjangex1(i)=segmenteex1(i); tinggiex1(i)=max_lex1(i)-min_lex1(i); end; elseif (i==nb_segmentsEx1) max_lex1(i)=0; min_lex1(i)=0; for j=segmenteex1(i-1):length(percepatan_filterex1); if (percepatan_filterex1(j) > max_lex1(i)) max_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)<min_lex1(i)) min_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j-1)>=0 && percepatan_filterex1(j)<0) normex1(i)=j-1; end; panjangex1(i)=length(percepatan_filterex1)-segmenteex1(i1); tinggiex1(i)=max_lex1(i)-min_lex1(i); end; else max_lex1(i)=0; min_lex1(i)=0; for j=segmenteex1(i-1):segmenteex1(i); if (percepatan_filterex1(j) > max_lex1(i))

73
max_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)<min_lex1(i)) min_lex1(i)=percepatan_filterex1(j); end; if (percepatan_filterex1(j)>=0 && percepatan_filterex1(j+1)<0) normex1(i)=j; end; panjangex1(i)=segmenteex1(i); tinggiex1(i)=max_lex1(i)-min_lex1(i); end; end end; %Nilai X2 for i=1:nb_segmentsEx2; if (i==1) for j=1:segmenteex2(i); if (percepatan_filterex2(j) > max_lex2(i)) max_lex2(i)=percepatan_filterex2(j); end; if (percepatan_filterex2(j)<min_lex2(i)) min_lex2(i)=percepatan_filterex2(j); end; if (percepatan_filterex2(j)>=0 && percepatan_filterex2(j+1)<0) normex2(i)=j; end; panjangex2(i)=segmenteex2(i); tinggiex2(i)=max_lex2(i)-min_lex2(i); end; elseif (i==nb_segmentsEx2) max_lex2(i)=0; min_lex2(i)=0; for j=segmenteex2(i-1):length(percepatan_filterex2); if (percepatan_filterex2(j) > max_lex2(i)) max_lex2(i)=percepatan_filterex2(j); end; if (percepatan_filterex2(j)<min_lex2(i)) min_lex2(i)=percepatan_filterex2(j); end; if (percepatan_filterex2(j-1)>=0 && percepatan_filterex2(j)<0) normex2(i)=j-1; end; panjangex2(i)=length(percepatan_filterex2)-segmenteex2(i1); tinggiex2(i)=max_lex2(i)-min_lex2(i); end; else max_lex2(i)=0; min_lex2(i)=0; for j=segmenteex2(i-1):segmenteex2(i); if (percepatan_filterex2(j) > max_lex2(i)) max_lex2(i)=percepatan_filterex2(j); end;

74
if (percepatan_filterex2(j)<min_lex2(i)) min_lex2(i)=percepatan_filterex2(j); end; if (percepatan_filterex2(j)>=0 && percepatan_filterex2(j+1)<0) normex2(i)=j; end; panjangex2(i)=segmenteex2(i); tinggiex2(i)=max_lex2(i)-min_lex2(i); end; end end; %Nilai X3 for i=1:nb_segmentsEx3; if (i==1) for j=1:segmenteex3(i); if (percepatan_filterex3(j) > max_lex3(i)) max_lex3(i)=percepatan_filterex3(j); end; if (percepatan_filterex3(j)<min_lex3(i)) min_lex3(i)=percepatan_filterex3(j); end; if (percepatan_filterex3(j)>=0 && percepatan_filterex3(j+1)<0) normex3(i)=j; end; panjangex3(i)=segmenteex3(i); tinggiex3(i)=max_lex3(i)-min_lex3(i); end; elseif (i==nb_segmentsEx3) max_lex3(i)=0; min_lex3(i)=0; for j=segmenteex3(i-1):length(percepatan_filterex3); if (percepatan_filterex3(j) > max_lex3(i)) max_lex3(i)=percepatan_filterex3(j); end; if (percepatan_filterex3(j)<min_lex3(i)) min_lex3(i)=percepatan_filterex3(j); end; if (percepatan_filterex3(j-1)>=0 && percepatan_filterex3(j)<0) normex3(i)=j-1; end; panjangex3(i)=length(percepatan_filterex3)-segmenteex3(i1); tinggiex3(i)=max_lex3(i)-min_lex3(i); end; else max_lex3(i)=0; min_lex3(i)=0; for j=segmenteex3(i-1):segmenteex3(i); if (percepatan_filterex3(j) > max_lex3(i)) max_lex3(i)=percepatan_filterex3(j); end; if (percepatan_filterex3(j)<min_lex3(i)) min_lex3(i)=percepatan_filterex3(j);

75
end; if (percepatan_filterex3(j)>=0 && percepatan_filterex3(j+1)<0) normex3(i)=j; end; panjangex3(i)=segmenteex3(i); tinggiex3(i)=max_lex3(i)-min_lex3(i); end; end end; %Nilai X4 for i=1:nb_segmentsEx4; if (i==1) for j=1:segmenteex4(i); if (percepatan_filterex4(j) > max_lex4(i)) max_lex4(i)=percepatan_filterex4(j); end; if (percepatan_filterex4(j)<min_lex4(i)) min_lex4(i)=percepatan_filterex4(j); end; if (percepatan_filterex4(j)>=0 && percepatan_filterex4(j+1)<0) normex4(i)=j; end; panjangex4(i)=segmenteex4(i); tinggiex4(i)=max_lex4(i)-min_lex4(i); end; elseif (i==nb_segmentsEx4) max_lex4(i)=0; min_lex4(i)=0; for j=segmenteex4(i-1):length(percepatan_filterex4); if (percepatan_filterex4(j) > max_lex4(i)) max_lex4(i)=percepatan_filterex4(j); end; if (percepatan_filterex4(j)<min_lex4(i)) min_lex4(i)=percepatan_filterex4(j); end; if (percepatan_filterex4(j-1)>=0 && percepatan_filterex4(j)<0) normex4(i)=j-1; end; panjangex4(i)=length(percepatan_filterex4)-segmenteex4(i1); tinggiex4(i)=max_lex4(i)-min_lex4(i); end; else max_lex4(i)=0; min_lex4(i)=0; for j=segmenteex4(i-1):segmenteex4(i); if (percepatan_filterex4(j) > max_lex4(i)) max_lex4(i)=percepatan_filterex4(j); end; if (percepatan_filterex4(j)<min_lex4(i)) min_lex4(i)=percepatan_filterex4(j); end;

76
if (percepatan_filterex4(j)>=0 && percepatan_filterex4(j+1)<0) normex4(i)=j; end; panjangex4(i)=segmenteex4(i); tinggiex4(i)=max_lex4(i)-min_lex4(i); end; end end; %Nilai X5 for i=1:nb_segmentsEx5; if (i==1) for j=1:segmenteex5(i); if (percepatan_filterex5(j) > max_lex5(i)) max_lex5(i)=percepatan_filterex5(j); end; if (percepatan_filterex5(j)<min_lex5(i)) min_lex5(i)=percepatan_filterex5(j); end; if (percepatan_filterex5(j)>=0 && percepatan_filterex5(j+1)<0) normex5(i)=j; end; panjangex5(i)=segmenteex5(i); tinggiex5(i)=max_lex5(i)-min_lex5(i); end; elseif (i==nb_segmentsEx5) max_lex5(i)=0; min_lex5(i)=0; for j=segmenteex5(i-1):length(percepatan_filterex5); if (percepatan_filterex5(j) > max_lex5(i)) max_lex5(i)=percepatan_filterex5(j); end; if (percepatan_filterex5(j)<min_lex5(i)) min_lex5(i)=percepatan_filterex5(j); end; if (percepatan_filterex5(j-1)>=0 && percepatan_filterex5(j)<0) normex5(i)=j-1; end; panjangex5(i)=length(percepatan_filterex5)-segmenteex5(i1); tinggiex5(i)=max_lex5(i)-min_lex5(i); end; else max_lex5(i)=0; min_lex5(i)=0; for j=segmenteex5(i-1):segmenteex5(i); if (percepatan_filterex5(j) > max_lex5(i)) max_lex5(i)=percepatan_filterex5(j); end; if (percepatan_filterex5(j)<min_lex5(i)) min_lex5(i)=percepatan_filterex5(j); end; if (percepatan_filterex5(j)>=0 && percepatan_filterex5(j+1)<0)

77
normex5(i)=j; end; panjangex5(i)=segmenteex5(i); tinggiex5(i)=max_lex5(i)-min_l(i); end; end end; % % %Perbandingan temp=0; lbl_segment(1)=0; k=1; jml_segment=nb_segmentsEx1+nb_segmentsEx2+nb_segmentsEx3+nb_segmentsEx4 +nb_segmentsEx5; for i=1:nb_segments lbl=1; for j=1:jml_segment if ((j>0)&&(j<=nb_segmentsEx1))%huruf a n1=max_l(i)/max_lex1(j); n2=min_l(i)/min_lex1(j); n3=norm(i)/normex1(j); n4=panjang(i)/panjangex1(j); n5=tinggi(i)/tinggiex1(j); if (((n1>0.5) && (n1<1.5)) && ((n2>0.5) && (n2<1.5)) && ((n3>0.5) && (n3<1.5)) && ((n4>0.5) && (n4<1.5)) && ((n5>0.5) && (n5<1.5))) lbl_segment(i)=lbl; break; %Berpindah ke i end; elseif ((j>nb_segmentsEx1)&&(j<=nb_segmentsEx1+nb_segmentsEx2)) if (j==nb_segmentsEx1+1) k=1; %huruf b end; n1=max_l(i)/max_lex2(k); n2=min_l(i)/min_lex2(k); n3=norm(i)/normex2(k); n4=panjang(i)/panjangex2(k); n5=tinggi(i)/tinggiex2(k); if (((n1>0.5) && (n1<1.5)) && ((n2>0.5) && (n2<1.5)) && ((n3>0.5) && (n3<1.5)) && ((n4>0.5) && (n4<1.5)) && ((n5>0.5) && (n5<1.5))) lbl_segment(i)=lbl; break; %Berpindah ke i end; k=k+1; elseif ((j>nb_segmentsEx1+nb_segmentsEx2)&&(j<=nb_segmentsEx1+nb_segmentsEx2+n b_segmentsEx3)) if (j==nb_segmentsEx1+nb_segmentsEx2+1) k=1; %huruf c end; n1=max_l(i)/max_lex3(k); n2=min_l(i)/min_lex3(k); n3=norm(i)/normex3(k); n4=panjang(i)/panjangex3(k);

78
n5=tinggi(i)/tinggiex3(k); if (((n1>0.5) && (n1<1.5)) && ((n2>0.5) && (n2<1.5)) && ((n3>0.5) && (n3<1.5)) && ((n4>0.5) && (n4<1.5)) && ((n5>0.5) && (n5<1.5))) lbl_segment(i)=lbl; break; %Berpindah ke i end; k=k+1; elseif ((j>nb_segmentsEx1+nb_segmentsEx2+nb_segmentsEx3)&&(j<=nb_segmentsEx1+n b_segmentsEx2+nb_segmentsEx3+nb_segmentsEx4)) if (j==nb_segmentsEx1+nb_segmentsEx2+nb_segmentsEx3+1) k=1;%huruf d end; n1=max_l(i)/max_lex4(k); n2=min_l(i)/min_lex4(k); n3=norm(i)/normex4(k); n4=panjang(i)/panjangex4(k); n5=tinggi(i)/tinggiex4(k); if (((n1>0.5) && (n1<1.5)) && ((n2>0.5) && (n2<1.5)) && ((n3>0.5) && (n3<1.5)) && ((n4>0.5) && (n4<1.5)) && ((n5>0.5) && (n5<1.5))) lbl_segment(i)=lbl; break; %Berpindah ke i end; k=k+1; elseif (j>nb_segmentsEx1+nb_segmentsEx2+nb_segmentsEx3+nb_segmentsEx4) if (j==nb_segmentsEx1+nb_segmentsEx2+nb_segmentsEx3+nb_segmentsEx4+1) k=1;%huruf e end; n1=max_l(i)/max_lex5(k); n2=min_l(i)/min_lex5(k); n3=norm(i)/normex5(k); n4=panjang(i)/panjangex5(k); n5=tinggi(i)/tinggiex5(k); if (((n1>0.5) && (n1<1.5)) && ((n2>0.5) && (n2<1.5)) && ((n3>0.5) && (n3<1.5)) && ((n4>0.5) && (n4<1.5)) && ((n5>0.5) && (n5<1.5))) lbl_segment(i)=lbl; break; %Berpindah ke i elseif (j==jml_segment) lbl_segment(i)=lbl+temp; temp=temp+1; end; k=k+1; end; lbl=lbl+1; end; end;

%============================================================= %

79
% %Menampilkan segmentasi figure(4); nama='Segment ='; x1=x(1:segmente(1)); % first segment y1=y(1:segmente(1)); subplot(nb_segments,1,1); plot(x1,y1); title(strcat(nama,int2str(lbl_segment(1)))); %num_figure=num_figure+1; clear x1; clear y1; for j=2:nb_segments-1 %modifications january 07 x1=x(segmente(j-1):segmente(j)); y1=y(segmente(j-1):segmente(j)); subplot(nb_segments,1,j); figure(4); plot(x1,y1); title(strcat(nama,int2str(lbl_segment(j)))); clear x1; clear y1; end; if (nb_segments==2) %jk segment cm ada 2 j=1; end; x1=x(segmente(j):length(x)); % last segment (modifications january 07) y1=y(segmente(j):length(y)); subplot(nb_segments,1,nb_segments); plot(x1,y1); title(strcat(nama,int2str(lbl_segment(nb_segments))));

B. OUTPUT

80

81

82

83

84

85

86