• Tidak ada hasil yang ditemukan

Aplikasi Pengenalan Aksara Bali dengan Pola Model Khusus berbasis Pola Busur Terlokalisasi.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Aplikasi Pengenalan Aksara Bali dengan Pola Model Khusus berbasis Pola Busur Terlokalisasi."

Copied!
80
0
0

Teks penuh

(1)
(2)
(3)
(4)

3.1. Tempat dan Waktu Penelitian

Penelitian mengenai Pengembangan Pola Khusus berbasis Metode Pola Busur Terlokalisasiini dilakukan di Bali, khususnya di Denpasar, Badung, Tabanan, Gianyar, Klungkung dan Bangli. Waktu pengambilan data tersebut dilaksanakan selama Bulan Juli sampai dengan Agustus 2012 melalui penelitian langsung dilapangan dengan mengambil foto aksara dari sumber buku-buku bacaan Aksara Bali dan Lontar. Pengembangan dan implementasi sistem dilakukan di Laboratorium Komputasi, Jurusan Teknologi Informasi, Fakultas Teknik Uiversitas Udayana Denpasar.

3.2. Data

3.2.1. Sumber Data

Sumber data yang dipakai sebagai sampel Aksara Bali yang digunakan untuk melakukan pembentukan pola model dan pengujian sistem pengenalan karakter ini adalah sebagian diambil dari data citra Aksara Bali dalam penelitian I Komang Gede Suamba Dharmayasa (Dharmayasa, 2009). Sampel Aksara Bali yang digunakan diperoleh dari hasil scan buku ajar Bahasa Bali yang diambil menggunakan segmentasi per blok karakter dan juga dari internet.

Pola Model dari Pola Busur Terlokalisasi yang digunakan dalam penelitian ini adalah pola model yang dikembangkan dari bentuk pola busur dan dipilih sesuai dengan frekuensi kemunculan terbanyak khusus untuk citra Aksara Bali, serta pola model pembanding pada saat pengujian unjuk kerja sistem dari Prof. Isao Yoshimura (Yoshimura, 1993) dan AA. Kompiang Oka Sudana (Sudana, 2007).

3.2.2. Metode Pengumpulan Data

1. Metode Observasi, yaitu pengumpulan data dengan mengadakan penelitian secara langsung pada instansi-instansi yang terkait.

2. Metode Interview, yaitu pengumpulan data dengan mengadakan wawancara dan tanya jawab secara langsung pada pihak-pihak yang terkait.

DOKUMENTASI SISTEM

(5)

3. Metode Studi Literatur, yaitu mengumpulkan data dari buku-buku referensi, modul-modul yang relevan dengan objek permasalahan.

3.3. Bahasa Pemrograman

Bahasa pemrograman yang digunakan pada Penelitian Pengembangan Pola Khusus berbasis Metode Pola Busur Terlokalisasi ini adalah Borland Delphi 7.2. Perangkat lunak lain yang diperlukan adalah program paket pengolahan citra, dan dipergunakan pada tahapan prapemrosesan seperti Paint Shop Pro.

3.4. Metode Penyelesaian Masalah

Langkah-langkah yang dilakukan dalam penelitian ini adalah:

1. Pengumpulan literatur yang berhubungan dengan perancangan dan pembuatan perangkat lunak pengenalan karakter.

2. Mempelajari dan memahami proses yang terjadi dalam perancangan dan pembuatan perangkat lunak pengenalan karakter.

3. Penyusunan perangkat lunak (software). 4. Pengujian perangkat lunak (software). 5. Analisis hasil dan pengambilan kesimpulan.

3.5. Perangkat Pemodelan Sistem

3.5.1 Gambaran Umum Sistem Pengenalan Karakter Aksara Bali

(6)

Gambar 3.1

Gambaran Umum Sistem Pengenalan Aksara Bali

3.5.2 Pembentukan dan Pemilihan Pola Model

Pembentukan pola model baru yang didasarkan pada batasan-batasan dalam Metode Pola Busur Terlokalisasi untuk Tulisan Jepang dan Tandatangan Latin dengan tujuan untuk mengurangi banyaknya pola model yang digunakan, sehingga waktu proses sistem bisa lebih singkat. Batasan utamanya yaitu lokalisasi permasalahan pada pola model yang didefinisikan di dalam sebuah bujur sangkar kecil berukuran 5 x 5, tetapi pemilihannya berbasis pada sampel Aksara Bali yang dimiliki.

Laporan hasil pengenalan Keluaran nilai ketidaksamaan

terkecil dan ID Aksara Proses

pendaftaran Masukan citra

karakter Aksara Bali

Masukan citra karakter Aksara Bali Pengembang

sistem

Basisdata pola model

Basisdata acuan

Proses pembuatan pola model

Proses Pengambilan

Keputusan

Nilai threshold Proses Pencarian Nilai Terkecil Ketidaksamaan

(7)

3.5.3 Tahapan Pengenalan Karakter Aksara Bali

Secara umum dalam pengolahan citra, untuk mendapatkan informasi yang terkandung di dalamnya maka biasanya dilakukan proses-proses pendahulu pada citra tersebut. Setelah itu baru dilakukan proses-proses berikutnya yang berkenaan dengan informasi apa yang diinginkan untuk diolah, demikian juga halnya pada pengenalan Tulisan Bali. Adapun tahapan-tahapan yang dilakukan dalam sistem Pengenalan Karakter Aksara Bali, khususnya Metode Pola Busur Terlokalisasi adalah sebagai berikut:

i. Akuisisi data (dataacquisition)

Akuisisi data merupakan proses pengubahan data dari data analog Aksara Bali, menjadi citra dengan scanner. Citra yang disimpan dalam format file bitmap berupa data kasar dan selanjutnya akan diproses pada tahapan selanjutnya.

ii. Pra pemrosesan (preprocessing)

Tahap awal pra pemrosesan ini, jika file bitmap yang dihasilkan pada tahap pengambilan data belum berbentuk dua warna (hitam putih) maka terlebih dahulu dilakukan konversi menjadi data citra dua warna (proses binerisasi), karena citra Aksara Bali yang nantinya diperlukan berupa citra biner. Setelah itu dilakukan eliminasi terhadap data yang tidak diperlukan, guna memastikan bahwa data yang akan diproses pada tahapan berikutnya sudah merupakan data yang sahih.

iii.Ekstraksi ciri (feature extraction)

(8)

berbeda, frekuensi kemunculannya dijumlahkan untuk mendapatkan frekuensi kemunculan dari pola model tersebut. Cara penghitungannya adalah dengan menggerakkan setiap pola model di atas pola biner citra Aksara Bali, sebagai patokan adalah titik yang berbentuk lingkaran penuh. Titik ini digeser secara teratur satu grid ke arah horisontal atau vertikal, sampai semua titik pada citra biner Aksara Bali terlewati. Setiap pergeseran dilakukan pembandingan terhadap ruang yang dilingkupi oleh model tersebut, apakah sama ataukah tidak. Jika sama maka frekuensi kemunculan pola model tersebut ditambahkan. Misalkan citra Aksara Bali dilambangkan dengan f dan terdapat 23 pola model maka citra Aksara Bali tersebut dapat diekspresikan sebagai vektor kolom x berdimensi p, dengan p adalah 23 yaitu sesuai dengan pola model yang ada. Dalam matriks bentuk tersebut dapat dituliskan sebagai berikut :

...(3.1)

Elemen-elemen x yaitu x1, x2,… x23 adalah frekuensi kemunculan dari masing-masing pola model sesuai dengan nomor modelnya.

iv.Pendaftaran (enrollment)

Tahapan pendaftaran Aksara Bali acuan dilakukan dengan mengekstraksi ciri dari beberapa Aksara Bali acuan dan hasil yang diperoleh disimpan pada sebuah file basisdata acuan. Misalkan masing-masing Aksara Bali ke i disebut dengan Pi digunakan sebagai Aksara Bali acuan sebanyak

m, maka dari m buah Aksara Bali ini diekstraksi ciri menggunakan Metode Pola Busur Terlokalisasi menghasilkan m buah vektor kolom x berdimensi p, hasil ini dijadikan satu matriks vektor berukuran p x m

(9)

Nilai m yang digunakan pada sistem ini adalah 3 Aksara Bali yang diambil dari beberapa buku cetak, dengan pertimbangan bahwa 3 Aksara Bali tersebut diharapkan mampu untuk mewakili variasi yang ada dari sebuah karakter Aksara Bali, di samping itu sistem nantinya bekerja dengan tidak terlalu lambat. Jadi ukuran matriks vektor acuan pada sistem pengenalan ini adalah 23 x 3 untuk 23 pola model serta 42 x 3 untuk 42 pola model. Matriks vektor yang didapatkan disimpan pada basisdata acuan dengan kata kunci nomor identitas Aksara Bali.

v. Pembandingan (comparison)

Tahap pembandingan merupakan inti dari keseluruhan proses pengenalan. Pada tahap pembandingan ini, ciri citra Aksara Bali masukan akan dibandingkan dengan ciri acuan yang ada pada basis data. Pada tahap inilah dilakukan perhitungan-perhitungan dari frekuensi yang didapat pada proses ekstraksi ciri. Berdasarkan proses pembandingan tersebut didapatkan nilai ketidaksamaan (dissimilarity measure) masing-masing acuan dengan citra input. Nilai ketidaksamaan atau nilai beda inilah yang digunakan sebagai dasar untuk pengambilan keputusan hasil pengenalan. Basisdata acuan dibaca satu record data acuan karakter. Acuan yang berbentuk matriks p x m ini selanjutnya dihitung rata-rata kemunculan setiap pola model dengan cara :

m

k

ik

i

m

x

x

1 ……….(3.3)

Nilai-nilai yang dihasilkan yaitu x1/, x2/, … xp/, ditempatkan sebagai elemen vektor kolom x/ berdimensi p, yang merupakan rata-rata acuan. Lalu dicari matriks varians V berdimensi p x p dari acuan dengan persamaan:



m

j

t j

j

x

x

x

m

x

V

1

/

/

/

………....(3.4)
(10)

Misalkan Aksara Bali yang dibandingkan disebut Q maka vektor kolom hasilnya adalah xq. Varians V, rata-rata acuan x/ dan vektor kolom xq, digunakan menghitung nilai beda (Yoshimura I. dkk, 1994, hal.61) dengan persamaan sebagai berikut:

p

q

k q

k k

Q q

k k

k k

Q

Z

Z

Z

Z

Q

Pi

D

1

2 /

1

2

/

)

(

)

(

)

,

(

... (3.5)

Q t k k

Q

l

x

Z

………. (3.6)

/ /

l

x

Z

k

kt ………...(3.7) dengan ketentuan :

 D(Pi,Q) : nilai ketidaksamaan antara acuan Pi dengan pembanding Q.   : vektor kolom yang berisi nilai eigen dengan urutan menurun

(descending order) yaitu (, , …, p)

 lk : vektor eigen yang berbentuk vektor kolom terurut sesuai dengan nilai eigen yang berhubungan.

 xQ : vektor kolom yang berisi frekuensi munculnya pola model pada citra karakter pembanding.

 x/ : vektor kolom rata-rata acuan.  t : transpose.

 p : dimensi vektor kolom

 q : suatu integer dengan syarat 1qp. Konstanta q merupakan nomor pemotongan dari nilai eigen.

vi. Perancangan Basis Data Acuan

(11)

Aksara Bali sisanya sebagai pembanding untuk menentukan nilai ambang. Tahap perancangan basisdata acuan terdiri dari dua pokok penting yaitu pendaftaran Aksara Bali acuan dan penentuan nilai ambang batas yang akan disimpan dalam satu record dengan kata kunci nomor identitas. Setelah dilakukan proses pendaftaran tersebut dilanjutkan dengan membandingkan Aksara Bali yang akan dipergunakan untuk menentukan nilai ambang. Berdasarkan hasil pembandingan tiga Aksara Bali ini didapatkan nilai ketidaksamaannya masing-masing. Median dari nilai ketidaksamaan inilah yang disimpan pada basisdata acuan melengkapi frekuensi sampel sebelumnya, dan dipergunakan sebagai nilai ambang (threshold) atau nilai kritis yang dikalikan dengan suatu konstanta Cd. Nilai kritis dilambangkan dengan Cc. Besarnya konstanta pengali nilai kritis untuk keseluruhan sistem ditentukan melalui proses pengujian, yang dipengaruhi oleh prosentase terjadinya kesalahan.

vii.Pengambilan keputusan (decision making)

Tahap ini bertugas untuk memberikan keputusan dari proses pembandingan yang telah dilakukan. Nilai-nilai ketidaksamaan yang didapatkan pada proses sebelumnya diurutkan. Identitas acuan dengan nilai ketidaksamaan terkecil dan memenuhi nilai ambang batas (thereshold) diputuskan sebagai jenis karakter Aksara Bali yang sesuai dengan citra Aksara Bali yang diinputkan. Jika nilai ketidaksamaan terkecil yang didapatkan masih diatas nilai ambang batas, maka disimpulkan karakter Aksara Bali masukan tersebut tidak dikenali. Nilai ambang batas didapatkan dengan pengujian-pengujian sebelumnya. Apabila d(Pj, Qi) didefinisikan sebagai nilai ketidaksamaan antara

Aksara Bali acuan yang dimiliki oleh sebuah karakter Aksara Bali Pj

dengan Aksara Bali yang diuji Qi, Ccj adalah nilai kritis yang telah

didapat sebelumnya dari sebuah karakter Aksara Bali Pj serta Cd adalah

konstanta pengali, maka berlaku hubungan :

Jika d(Pj, Qi)  Ccj x Cd maka keputusannya ‘DIKENALI’

(12)

3.6Perancangan Sistem

Perancangan sistem merupakan tahap untuk mentransformasikan berbagai kebutuhan ke bentuk data dan arsitektur program yang akan diimplementasikan pada tahap pembuatan sistem nantinya. Perancangan tersebut meliputi penjelasan dalam bentuk bagan alir proses, serta perancangan struktur data.

3.7.1 Diagram Jackson Sistem Pengenalan

Rancangan sistem pengenalan yang berupa struktur program, ditampilkan dalam Diagram Jackson yang direpresentasikan dalam bentuk struktur diagram dan struktur teks. Adapun struktur diagram sistem pengenalan ini adalah seperti yang terlihat pada Gambar 3.2. Pada struktur diagram sistem pengenalan tersebut terlihat gambaran sistem secara lebih rinci, pendefinisian kebutuhan menu-menu pokok dan modul-modul program yang nantinya diperlukan oleh sistem pengenalan, baik modul-modul yang dijalankan secara iterasi ataupun yang bersifat pilihan.

Sistem pengenalan dibagi menjadi dua modul utama yaitu modul

PERSIAPAN LINGKUNGAN SISTEM dan modul SISTEM UTAMA. Hal terpenting

(13)

Gambar 3.2

Struktur Diagram Jackson Sistem Pengenalan PERSIAPAN

LINGKUNGAN SISTEM

o

MASUKAN POLA MODEL

KEFILE

o

SETTING KONSTANTA

SISTEM PENGENALAN

*

SISTEM UTAMA

Keterangan

* : iterasi o : pilihan o

UBAH LINGKUNGAN SISTEM

o

MASUKAN POLA MODEL

KE FILE

o

SETTING KONSTANTA

o

PEMBUATAN

DATA ACUAN

o

PENGENALAN

* PROSES PENGENALAN

BUAT LAPORAN

BACA CITRA AKSARA

EKSTRAKSI CIRI

PEMBANDINGAN

PENGAMBILAN KEPUTUSAN

*

PROSES PEMBUATAN

DATA ACUAN

*

CARI FREKUENSI ACUAN

*

CARI NILAI AMBANG

CARI MEDIAN NILAI AMBANG

TULIS KE FILE ACUAN

BACA CITRA AKSARA MASUKAN

IDENTITAS AKSARA

BACA CITRA AKSARA

EKSTRAKSI CIRI

EKSTRAKSI CIRI

(14)

Struktur Diagram Jackson sistem pengenalan pada Gambar 3.2 selanjutnya ditulis dalam bentuk struktur teks sebagai berikut :

SISTEM_PENGENALAN seq

PERSIAPAN_LINGKUNGAN_SISTEM

PERSIAPAN_LINGKUNGAN_SISTEM sel (MASUKAN_POLA_MODEL_KE_FILE) MASUKAN_POLA_MODEL_KE_FILE;

PERSIAPAN_LINGKUNGAN_SISTEM alt (SETTING_KONSTANTA)

SETTING_KONSTANTA;

PERSIAPAN_LINGKUNGAN_SISTEM end;

SISTEM_UTAMA itr while (UBAH_LINGKUNGAN_SISTEM or PEMBUATAN_DATA_ACUAN or PENGENALAN)

SISTEM_UTAMA sel (UBAH_LINGKUNGAN_SISTEM)

UBAH_LINGKUNGAN_SISTEM

UBAH_LINGKUNGAN_SISTEM sel (MASUKAN_POLA_MODEL_KE_FILE) MASUKAN_POLA_MODEL_KE_FILE;

UBAH_LINGKUNGAN_SISTEM alt (SETTING_KONSTANTA)

SETTING_KONSTANTA;

UBAH_LINGKUNGAN_SISTEM end;

SISTEM_UTAMA sel (PEMBUATAN_DATA_ACUAN)

PEMBUATAN_DATA_ACUAN

c_aksara  1;

PROSES_PEMBUATAN_DATA_ACUAN itr while (c_aksara  banyak_aksara) MASUKAN_IDENTITAS_AKSARA;

c_acuan  1;

CARI_FREKUENSI_ACUAN itr while (c_acuan  banyak_acuan) BACA_CITRA_AKSARA;

EKSTRAKSI_CIRI;

CARI_FREKUENSI_ACUAN end;

c_banding  1;

CARI_NILAI_AMBANG itr while (c_banding  banyak_banding) BACA_CITRA_AKSARA;

EKSTRAKSI_CIRI;

PEMBANDINGAN;

CARI_NILAI_AMBANG end:

CARI_MEDIAN_NILAI_AMBANG;

TULIS_KE_FILE_ACUAN;

PROSES_PEMBUATAN_DATA_ACUAN end;

PEMBUATAN_DATA_ACUAN end;

SISTEM_UTAMA alt (PENGENALAN)

RECOGNATION seq

AKTIFKAN_DATAAKSARA;

PROSES_PENGENALAN itr while (banyak_uji_coba)

(15)

EKSTRAKSI_CIRI;

PEMBANDINGAN;

PENGAMBILAN_KEPUTUSAN;

PROSES_PENGENALAN end;

BUAT_LAPORAN;

PENGENALAN end;

SISTEM_UTAMA end;

SISTEM_PENGENALAN end.

Variabel pembantu dalam struktur teks di atas (c_aksara, c_acuan dan

c_banding) serta konstanta pembantu (banyak_aksara, banyak_acuan dan

banyak_banding) digunakan untuk menentukan berapa kali pengulangan proses

(iterasi) pada masing-masing modul, yang pada struktur diagram belum terlihat secara jelas. Banyak_aksara adalah banyak aksara yang akan didaftar,

banyak_acuan adalah banyak aksara acuan, banyak_banding adalah banyak aksara

pembanding yang dicari median nilai bedanya sebagai nilai ambang.

3.7.2 Bagan Alir Proses

Bagan alir diperlukan untuk memperjelas proses-proses yang dilakukan, terutama pada proses pengenalan dan tahap pendaftaran. Langkah-langkah yang dilakukan sehingga bisa menghasilkan suatu keputusan yang dapat mengenali jenis karakter yang diuji, mencakup tahap ekstraksi ciri, tahap pembandingan dan tahap pengambilan keputusan terlihat pada Gambar 3.3 mengenai bagan alir proses pengenalan Aksara Bali. Bagan alir ini sebagai perincian dari langkah-langkah dan perhitungan yang terjadi pada modul Pengenalan. Sedangkan bagan alir yang merupakan perincian dari langkah-langkah serta perhitungan pada modul

PEMBUATAN_DATA_ACUAN diperlihatkan dalam Gambar 3.4..

(16)

Gambar 3.3

Gambar 3.3.

Bagan alir proses pengenalan Aksara Bali

Ya

Tidak Ya

Start

Aktifkan data acuan ke i, Pi

Hitung varians (V )

Hitung nilai eigen (), vektor eigen (l) serta

urutannya secaramenurun

Simpan di Array Nilai Ketidaksamaan Aksara uji Q

Ekstraksi ciri citra Aksara Bali uji Q

Hitung ketidaksamaan D(Pi,Q)

Uji lagi ?

Stop D(Pi,Q) 

Cci x Cd

Hasil uji Q “Tidak Terdaftar”

Hasil uji Q “Dikenali Sebagai

aksara ke-i”

Laporan

- daftarhasil

- daftarD(Pi,Q) - waktu proses

Tidak

Tidak Ya

Masukkan Aksara Uji

Record Terakhir

? Hitung frekuensi

rata-rata (x/)

Proses Pencarian Nilai D(Pii,Q) Terkecil

(17)

Gambar 3.4

Bagan alir tahap pendaftaran

Tidak

Tidak Ya

Ya

Aktifkan citra Aksara Bali Acuan

Stop Id sudah

terdaftar ?

Hitung frekuensi rata-rata (x/) dari Pid

Hitung varians ( V )

Hitung nilai eigen (), vektor eigen (l) serta

urutannya secara menurun

Mendaftarkan Aksara Bali

baru lagi?

Baca citra

Ekstraksi ciri, simpan ke arrayPid[m]

Masukkan Nomor Id

Masukkan namaAksara Bali

m = 0 t = 0

Ya

m > 3

Tidak

Inc(m)

Ya

t > 3

Tidak

Inc(t)

Hitung nilai ketidaksamaanD(Pid,Qt)

Baca citra

Ekstraksi ciri Aksara Bali ke-t+3 Cari median dari

D(Pid,Qt) sebagai

nilaiambang (Ccid)

Tulis Pid

ke file basis data

acuan

(18)

3.6.3. Struktur Data

Melihat rancangan sistem yang ada maka selanjutnya disiapkan struktur data dari rancangan sistem pengenalan yang nantinya dipergunakan pada saat implementasi ke dalam bentuk program berbasis Borland Delphi. Adapun struktur data utama dari program sistem pengenalan ini adalah sebagai berikut :

TModelPattern = record

Nomor : byte; //nomor pola Model : byte; //nomor model

Pattern : array[0..4,0..4] of byte;

//pola model 5x5

end;

TArrModelPattern = array [1..DimVector] of TModelPattern;

Struktur “TModelPattern” dipakai sebagai struktur record dari file

pola model dan disimpan dalam struktur array “TArrModelPattern”. Besarnya array yang dialokasikan untuk struktur “TArrModelPattern“ adalah sebanyak

jumlah maksimum pola model yang ada, dalam hal ini diwakili oleh konstanta

DimVector”.

THuruf = record

IdNumber : word;

Name : string[35];

Freq :array[1.. DimVector,1..6] of word;

RefFileName : string[70];

ADis : array[1..3] of real;

Critical : real; end;

Person : THuruf;

FileReference : file of THuruf;

Struktur “THuruf” dipakai sebagai struktur record dari variabel “Huruf

yang berisi data masing-masing karakter Aksara Bali, selanjutnya nanti juga akan dipergunakan sebagai struktur record dari variabel file basisdata acuan. Struktur

THuruf” ini berisi nomor identitas, nama karakter Aksara Bali, frekuensi kemunculan pola model dari 3 Aksara Bali acuan, nama file beserta directory dari lokasi penyimpan file citra acuan, nilai ketidaksamaan yang dihasilkan dari 3 Aksara Bali pembanding yang dipakai untuk mencari nilai ambang, serta nilai ambang terpilih yang dicari dari median ketiga nilai ketidaksamaan Aksara Bali tersebut.

TPosGambar = record

AwalX, AkhirX, AwalY, AkhirY : integer;

(19)

Struktur “TPosGambar” merupakan struktur variabel dari posisi koordinat pojok masing-masing citra Aksara Bali.

Struktur data pendukung yang diperlukan dalam proses-proses perhitungan maupun penyimpanan data adalah sebagai berikut:

TFrequency = array[1.. DimVector] of word;

Struktur “TFrequency” merupakan struktur variabel penyimpan frekuensi

kemunculan masing-masing pola model dari hasil ekstraksi ciri Aksara Bali.

TMeanFrequency = array[1.. DimVector] of real;

Struktur “TMeanFrequency” merupakan struktur variabel penyimpan nilai r ata-rata kemunculan setiap pola model dari ekstraksi ciri beberapa Aksara Bali acuan.

TFreqMinMean = array[1.. DimVector,1..Number] of real;

Struktur “TFreqMinMean” merupakan struktur variabel penyimpan nilai frekuensi

kemunculan masing-masing pola model dari setiap Aksara Bali acuan yang telah dikurangi dengan frekuensi rata-rata yang bersesuaian, juga merupakan struktur dari variabel yang menyimpan perhitungan nilai eigen.

TVariance = array[1.. DimVector,1.. DimVector] of real;

Struktur “TVariance” merupakan struktur dari variabel penyimpan hasil perhitungan varians dan vektor eigen.

TGambar = array[1..SignHeigh,1..SignWidth] of byte;

Struktur “TGambar” merupakan struktur variabel penyimpan nilai pola biner dari

setiap piksel citra Aksara Bali, yang dalam hal ini bernilai 0 untuk piksel berwarna

putih dan bernilai 1 untuk piksel berwarna hitam. Konstanta “SignHeigh” dan “SignWidth” adalah ukuran ruang pembatas Aksara Bali, yang dalam hal ini nilai

konstanta tersebut masing-masingnya adalah 140 piksel dan 165 piksel.

TSort = array[1.. DimVector] of byte;

Struktur “TSort” merupakan struktur variabel penyimpan hasil pengurutan dari

(20)

3.7 Pembuatan Sistem

Pembuatan sistem merupakan tahap pengembangan dan implementasi dari rancangan sistem yang telah dibuat sebelumnya menjadi suatu sistem pengenalan Aksara Bali dalam bentuk program komputer. Tahapan ini meliputi penentuan kebutuhan sistem dan pemrograman yang di dalamnya.

3.7.1 Kebutuhan Sistem

Pembuatan sistem pengenalan Aksara Bali yang intinya pengembangan rancangan sistem sebelumnya melalui pemrograman komputer, memerlukan perangkat-perangkat pendukung berupa perangkat keras (hardware) dan perangkat lunak (software) yang dibutuhkan agar sistem dapat bekerja dengan baik. Kebutuhan-kebutuhan tersebut dijelaskan sebagai berikut.

3.7.1.1 Kebutuhan Perangkat Keras

Spesifikasi komputer yang digunakan untuk mengembangkan maupun pengujian sistem pengenalan ini adalah prosesor Intel Core i5 M 450 @2.40 GHz, dengan memori SDRAM 2 GB dan kapasitas harddisk 500 GB.

3.7.1.2 Kebutuhan Perangkat Lunak

Sistem pengenalan ini dikembangkan dalam lingkungan sistem operasi Microsoft Windows 7 ultimate. Pemilihan sistem operasi tersebut didasarkan atas pertimbangan bahwa sistem pengenalan Aksara Bali secara baik hanya dapat diimplementasikan dalam modus grafik. Microsoft Windows 7 ultimate merupakan suatu sistem operasi berbasis grafik yang banyak menjadi pilihan saat ini. Dalam lingkungan Windows, pembuatan antar muka grafis dapat dilakukan dengan lebih mudah. Di samping itu Windows 7 ultimate juga mendukung bahasa pemrograman yang dipakai mengembangkan sistem ini yaitu Borland Delphi 7.0.

Perangkat lunak lain yang diperlukan adalah program paket pengolahan citra, dan dipergunakan pada tahapan prapemrosesan. Dalam pengerjaan penelitian ini perangkat lunak paket pengolahan citra yang dipergunakan adalah Paint Shop

(21)

3.7.2 Pemrograman

Aspek pemrograman yang dibuat dalam sistem pengenalan Aksara Bali ini meliputi implementasi struktur program yang telah dirancang ke dalam kode-kode bahasa pemrograman. Implementasi pemrogramannya menggunakan perangkat lunak Borland Delphi 7.0, yaitu perangkat lunak pemrograman visual yang dijalankan di bawah sistem operasi Windows, dengan bahasa pemrograman berbasis

Pascal.

3.7.2.1Konstanta dan Variabel Global

Konstanta-konstanta beserta nilainya yang digunakan pada keseluruhan program dari sistem verifikasi ini adalah sebagai berikut:

MaxHuruf = 255; DimVector23 = 23; DimVector42 = 42;

JumModel23 = 23; JumModel42 = 52;

Number = 3; DefaultQi = 3;

DefaultReferName = 'R2331.Dat'; PatternName23 = 'Model23.Dat'; PatternName42 = 'Model42.Dat';

DefPartName = 'Aksara1.Dat'; DefaultCd = 3;

SignWidth = 165; SignHeigh = 140;

Variabel global merupakan variabel yang dideklarasikan di luar semua fungsi dan prosedur yang ada, sehingga ia dapat diakses (dibaca, ditulisi atau diubah) oleh fungsi dan prosedur apapun yang ada dalam program itu. Adapun variabel-variabel global yang dipakai dalam sistem pengenalan ini adalah :

FileReference : file of THuruf; Person : THuruf;

ArrModelPattern : TArrModelPattern; Berubah : Boolean;

Cd : Real; Qi : Integer;

FParticipantName, FReferName, FPatternName :

String;

(22)

Error, CountPattern, CounterList, PrevCounterList : byte;

PosGambar : Array[1..9] of TPosGambar; awalX,awalY,akhirX,akhirY : Integer; DefDirectory : String;

EnrollLoad : Boolean;

PrMeanFreq, PrEigenValue: TMeanFrequency; PrVariance,PrEigenVector : TVariance; PrSort : TSort;

JumPattern : Byte; //banyaknya keseluruhan pola DimVector : Byte; //banyaknya model

ArrHuruf : Array[1..MaxHuruf] of THuruf; BanyakHuruf : Byte;

Participant : TParticipant;

FileParticipant : File Of TParticipant;

3.7.2.2Form Utama

(23)

Gambar 3.5

Tampilan Form Utama sistem pengenalan

Selanjutnya diuraikan mengenai keterangan masing-masing nomor dan tombol-tombol pada tampilan Gambar 3.5 beserta beberapa baris penting dari fungsi atau prosedur pendukungnya.

Grup 1

Grup 1 merupakan panel yang digunakan untuk melakukan proses pengenalan sebuah aksara uji serta menampilkan hasilnya, juga menampilkan citra aksara yang sedang aktif.

1. Nomor 1a adalah panel yang digunakan untuk menampilkan nama file citra aksara aktif.

2. Nomor 1b adalah tempat menampilkan citra aksara aktif. Grup 1

Grup 2 Grup 3

Grup 4 1a

2b

2a 1b

1e 1d 1c

3a

(24)

3. Nomor 1c adalah tempat menampilkan hasil pengenalan, yaitu “Huruf ke-K” untuk aksara yang dikenali atau “Tidak Terdaftar” untuk huruf

yang tidak dikenali oleh sistem.

4. Nomor 1d adalah tempat untuk menampilkan nilai beda dari hasil pengenalan.

5. Nomor 1e adalah tempat menampilkan waktu proses.

6. Tombol Proses digunakan untuk menjalankan proses pengenalan terhadap aksara aktif. Adapun program yang dijalankan adalah :

procedure TFUtama.SBVerifyClick(Sender: TObject); var Beda : Real;

S : String;

WaktuMulai, WaktuSelesai : TDateTime;

JamMulai, JamSelesai, Menit, Detik, MDetik : Word; MDetikMulai, MDetikSelesai, TotalWaktu : Double; i : byte;

ArrayBeda : TArrBeda; Gambar : TGambar; Hurufke : Byte;

begin

//FVerificate.Show; FGauge.Height := 134;

FGauge.Gauge1.Progress := 0; FGauge.Show;

FGauge.Refresh; WaktuMulai := Time; Gambar := BacaHuruf;

for i := 1 to BanyakHuruf do Begin

{Mencari Variance, EigenVektor, EigenValue dan MeanFrek} Person := ArrHuruf[i];

PrMeanFreq := CountMeanFrequency(Person);

PrVariance := CountVariance(PrMeanFreq,Person);

EigenSort(PrVariance,PrEigenVector,PrEigenValue,PrSort; ArrayBeda[i] := Recognice(Gambar)

End;

Hurufke := Terkecil(ArrayBeda);

WaktuSelesai := Time; Fgauge.Close;

FGauge.Height := 238;

If ArrayBeda[Hurufke] <= Cd * ArrHuruf[Hurufke].Critical Then Begin

ST_Status.Font.Color := clBlue; Str(ArrayBeda[Hurufke],S); ST_Dissimilarity.Caption := S; Str(Hurufke,S);

(25)

End Else Begin

ST_Status.Font.Color := clRed; Str(ArrayBeda[Hurufke],S); ST_Dissimilarity.Caption := S; Str(Hurufke,S);

ST_Status.Caption := '(' + S + ')' + ' Tidak Terdaftar' ; End;

//Hitung waktu proses

DecodeTime(WaktuMulai,JamMulai,Menit,Detik,MDetik);

MDetikMulai :=((JamMulai*60+Menit)*60 + Detik)*1000 + MDetik; DecodeTime(WaktuSelesai,JamSelesai,Menit,Detik,MDetik);

If JamSelesai >= JamMulai Then

MDetikSelesai:=((JamSelesai*60+Menit)*60+Detik)*1000+MDetik Else //antisipasi melewati jam 12

MDetikSelesai:=(((JamSelesai+12)*60+Menit)*60+Detik)*1000 MDetik;

TotalWaktu := MDetikSelesai - MDetikMulai;

ST_Time.Caption := ' ' + FloatToStr(TotalWaktu) + ' Milli Second';

end;

Grup 2

Grup 2 adalah panel untuk tempat memilih Aksara Bali yang akan dikenali, baik nama file, filter, drive, maupun directory citra Aksara.

1. Nomor 2a adalah filter combo box, yang digunakan untuk menyaring file-file yang ditampilkan yaitu file-file citra yang penamaannya disesuaikan khusus untuk citra Aksara Bali pada penelitian ini, filter tersebut adalah : All Bitmap File (*.bmp), adalah filter untuk semua nama file citra bitmap.

2. Nomor 2b adalah file list box yang digunakan untuk tempat menampilkan nama-nama file citra yang telah disaring menurut filter yang telah dipilih, dari nama-nama file ini dipilih Aksara Bali mana saja yang akan dikenali.

3. Nomor 2c adalah drive combo box yang digunakan untuk memilih drive. 4. Nomor 2d adalah directory list box yang digunakan sebagai tempat

untuk memilih direktori.

(26)

Grup 3 List of Selected Files

Grup 3 adalah panel untuk tempat menampilkan daftar Aksara bali yang telah dipilih dan akan dikenali, beserta tombol-tombol untuk mengurangi pilihan dan melihat hasil pengenalan.

1. Nomor 3a adalah obyek list box, yang digunakan untuk menampung nama-nama file citra Aksara Bali terpilih yang akan dikenali.

2. Tombol Verify List digunakan untuk menjalankan proses pengenalan

terhadap file-file citra Aksara Bali yang ada dalam daftar dan selanjutnya menampilkan hasilnya dalam form F RptGroup.frm. Adapun program yang dijalankan adalah sebagai berikut :

procedure TFUtama.SBVerifyListClick(Sender: TObject); var i,j,k, HurufKe : byte;

S : String; Beda : Real;

WaktuMulai, WaktuSelesai : TDateTime;

JamMulai, JamSelesai, Menit, Detik, MDetik : Word; MDetikMulai, MDetikSelesai, TotalWaktu : Double; Gambar : TGambar;

ArrayBeda : TArrBeda;

begin

FGauge.Gauge1.Progress := 0; FGauge.Gauge2.Progress := 0;

FGauge.Label4.Caption := IntToStr(CounterList); FGauge.Show;

FGauge.Refresh;

For i := 0 To PrevCounterList-1 Do For j := 0 To 3 Do

FRptGroup.StringGrid1.Cells[j,i] := '';

WaktuMulai := Time;

For i := 1 To CounterList Do Begin

Image1.Picture.LoadFromFile(ListBox2.Items[i-1]); Gambar := BacaHuruf;

for k := 1 to BanyakHuruf do Begin

{Mencari Variance,EigenVektor,EigenValuedan MeanFrek} Person := ArrHuruf[k];

PrMeanFreq := CountMeanFrequency(Person);

PrVariance := CountVariance(PrMeanFreq,Person); EigenSort(PrVariance,PrEigenVector,PrEigenValue, PrSort);

ArrayBeda[k] := Recognice(Gambar) End;

Hurufke := Terkecil(ArrayBeda);

FRptGroup.StringGrid1.Cells[0,i-1] := IntToStr(i);

FRptGroup.StringGrid1.Cells[1,i-1] := ListBox1.Items[i-1]; Str(ArrayBeda[Hurufke],S);

(27)

Str(Hurufke,S);

If ArrayBeda[Hurufke]<= Cd*ArrHuruf[Hurufke].Critical Then FRptGroup.StringGrid1.Cells[3,i-1] := '(' + S + ')' + ArrHuruf[Hurufke].Name

Else

FRptGroup.StringGrid1.Cells[3,i-1] := '(' + S + ')' + ' Tidak Terdaftar';

FGauge.Gauge2.Progress := (i*100) div CounterList; End;

WaktuSelesai := Time; Fgauge.Close;

PrevCounterList := CounterList;

//Hitung waktu proses

DecodeTime(WaktuMulai,JamMulai,Menit,Detik,MDetik);

MDetikMulai :=((JamMulai*60+Menit)*60 + Detik)*1000 + MDetik; DecodeTime(WaktuSelesai,JamSelesai,Menit,Detik,MDetik);

If JamSelesai >= JamMulai Then

MDetikSelesai := ((JamSelesai*60+Menit)*60+Detik)*1000

+MDetik Else //antisipasi melewati jam 12

MDetikSelesai :=(((JamSelesai+12)*60+Menit)*60+ Detik)*1000 + MDetik;

TotalWaktu := MDetikSelesai - MDetikMulai;

FRptGroup.STVer.Caption := ' ' + IntToStr(CounterList);

FRptGroup.STTime.Caption := ' ' + FloatToStr(TotalWaktu) + ' Milli Second';

SBResult.Enabled := True;

FRptGroup.Position := poScreenCenter; FRptGroup.ShowModal;

end;

1. Tombol New List digunakan untuk mengosongkan daftar nama file yang ada pada obyek list box nomor 3a.

2. Tombol Unselect digunakan untuk membuang nama file citra Aksara Bali yang ditunjuk pada obyek list box nomor 3a.

3. Tombol Result digunakan untuk melihat kembali daftar hasil pengenalan yang telah dilakukan sebelumnya dengan memanggil form F RptGroup.frm.

Grup 4

Grup 4 merupakan panel tempat tombol-tombol perintah umum yang digunakan dalam sistem pengenalan ini. Adapun tombol-tombolnya adalah :

(28)

2. Tombol Setting digunakan untuk memanggil form F SetEnv.frm yang berisi tempat untuk mengubah nilai variabel lingkungan sistem.

3. Tombol Enrollment digunakan untuk memanggil form F EnrollGroup.frm yang merupakan tempat pendaftaran aksara baru. 4. Tombol Browse digunakan untuk memanggil form F Browse.frm yang

berisi nama-nama aksara yang telah terdaftar pada basisdata acuan. 5. Tombol New Model digunakan untuk memasukkan pola model baru ke

file referensi melalui pemanggilan form F Model.frm.

6. Tombol Show Model digunakan untuk menampilkan pola model referensi yang telah ada melalui pemanggilan form F Model.frm.

7. Tombol Exit digunakan untuk keluar dari sistem pengenalan.

Selain fungsi dan prosedur yang telah dipaparkan di atas, juga ada beberapa fungsi dan prosedur penting lainnya dalam unit Sign1.pas ini. Fungsi dan prosedur tersebut diantaranya :

Rutin untuk menghitung nilai eigen serta vektor eigen

procedure ROTATE(s, tau : real; var ATemp : TVariance; i,j,k,l : integer);

var g, h : real;

begin

g := ATemp[i,j]; h := ATemp[k,l];

ATemp[i,j] := g-s*(h+g*tau); ATemp[k,l] := h+s*(g-h*tau);

end;

procedure Jakobi(A :TVariance;var V : TVariance;

var D:TMeanFrequency);

var B,Z : array[1..DimVector67] of real;

ip,iq, i, j : integer;

sm,tresh,theta,t,c,s,tau,g,h : double;

begin

for ip := 1 to DimVector do

begin

for iq := 1 to DimVector do V[ip,iq] := 0;

V[ip,ip] := 1; B[ip] := A[ip,ip]; D[ip] := A[ip,ip]; Z[ip] := 0;

end;

for i := 1 to 50 do

begin

sm := 0;

(29)

for iq := ip+1 to DimVector do sm := sm + abs(A[ip,iq]);

if sm = 0 then exit;

if i < 4 then tresh := 0.2*sm/(DimVector*DimVector)

else tresh := 0;

for ip := 1 to DimVector-1 do

begin

for iq := ip+1 to DimVector do

begin

g := 100 * abs(A[ip,iq]);

if ((i>4) and ((abs(d[ip])+g) = abs(d[ip]))

and ((abs(d[iq])+g) = abs(d[iq])))

then A[ip,iq] := 0

else if abs(A[ip,iq]) > tresh then

begin

h := d[iq]-d[ip];

if ((abs(h)+g) = abs(h)) then

t := A[ip,iq]/h

else begin

theta := 0.5*h/A[ip,iq];

t := 1/(abs(theta)+sqrt(1+theta*theta)); if theta < 0 then t := -t;

end;

c := 1/sqrt(1+t*t); s := t*c;

tau := s/(1+c); h := t*A[ip,iq]; Z[ip] := Z[ip] - h; Z[iq] := Z[iq] + h; D[ip] := D[ip] - h; D[iq] := D[iq] + h; A[ip,iq] := 0;

for j := 1 to ip-1 do ROTATE(s,tau,A,j,ip,j,iq);

for j := ip+1 to iq-1 do ROTATE(s,tau,A,ip,j,j,iq);

for j := iq+1 to DimVector do

ROTATE(s,tau,A,ip,j,iq,j);

for j := 1 to DimVector do ROTATE(s,tau,V,j,ip,j,iq);

end; end; end;

for ip := 1 to DimVector do

begin

b[ip] := b[ip] + z[ip]; d[ip] := b[ip];

z[ip] := 0; end;

end;

ShowMessage('error : terlalu banyak iterasi');

end;

procedure Eigensort(A : TVariance; var V : TVariance;

var D : TMeanFrequency; var Urut : TSort);

var i,j,k,temp : integer;

pe : real;

TD : TMeanFrequency;

begin

for i:= 1 to DimVector do

begin

D[i] := 0; Urut[i] := i; end;

(30)

TD := D;

for i := 1 to DimVector do

begin

pe := TD[i]; k := i;

for j := i+1 to DimVector do

if TD[j] >= pe then

begin

pe := TD[j]; k := j;

end;

if k <> i then

begin

TD[k] := TD[i]; TD[i] := pe; temp := Urut[i]; Urut[i] := Urut[k]; Urut[k] := temp;

end;

end;

end;

Prosedur untuk menghitung frekuensi kemunculan pola model

[image:30.595.136.353.81.327.2]

procedure CountFrequency(var Freq:TFrequency; Gambar : TGambar);

var i,j,x,y : integer;

CountPattern : byte; cocok : boolean;

awalX_L, awalY_L,akhirX_L, akhirY_L : byte;

begin

awalX_L := 1; awalY_L := 1; akhirX_L := SignHeigh; akhirY_L := SignWidth; for i := 1 to DimVector do

freq[i] := 0;

for CountPattern := 1 to JumPattern do

begin

ModelPattern := ArrMOdelPattern[CountPattern];

for x := (awalX_L-4) to (akhirX_L - 4) do

for y := (awalY_L-4) to (akhirY_L - 4) do

begin

i := 0; cocok := true;

repeat

inc(i); j := 0;

repeat

inc(j);

if ((i+x-1)<awalX_L) or ((j+y-1)<awalY_L) then

begin

if ModelPattern.Pattern[i-1,j-1] <> 0

then cocok := false;

end else

if ModelPattern.Pattern[i-1,j-1] <>

gambar[i+x-1,j+y-1] then cocok := false;

until (cocok = false) or (j = 5);

until (cocok = false) or (i = 5);

if (cocok = true) and (i=5) and (j=5)

then inc(Freq[ModelPattern.Model]);

(31)

FGauge.Gauge1.Progress := CountPattern; end;

end;

Rutin untuk menghitung matriks varians

function CountMeanFrequency(sampel: TPersonSign) : TmeanFrequency;

var i : integer; bantu : word;

Mi : byte;

begin

for i := 1 to DimVector do

begin

bantu := 0;

for Mi := 1 to Number do

bantu := bantu + sampel.freq[i,Mi]; CountMeanFrequency[i] := bantu / number; end;

end;

function CountFreqMinMean(Mean : TMeanFrequency; Pr : TPersonSign) : TFreqMinMean;

var i,j : integer;

begin

for i := 1 to Number do

for j := 1 to DimVector do

CountFreqMinMean[j,i] := Pr.Freq[j,i];//-Mean[j];

end;

function CountVariance(Mean : TMeanFrequency;

Pr : TpersonSign): TVariance;

var Bantu : TVariance;

i,j,k : integer; temp : real; vector : TFreqMinMean;

begin

Vector := CountFreqMinMean(Mean,Pr); for i := 1 to DimVector do

for j := 1 to DimVector do

begin

Temp := 0;

for k := 1 to Number do

Temp := Temp + Vector[i,k]*Vector[j,k]; Bantu[i,j] := Temp/Number;

end;

CountVariance := Bantu;

end;

Rutin untuk menghitung nilai ketidaksamaan

function CountZ1(L : TVariance; k : integer; X : TFrequency; Urut : TSort) : real;

var bantu : real; i : integer;

begin

bantu := 0;

for i := 1 to DimVector do

(32)

end;

function CountZ2(L : TVariance; k : integer;

X : TMeanFrequency; Urut : TSort) : real;

var bantu : real;

i : integer;

begin

bantu := 0;

for i := 1 to DimVector do

bantu := bantu + L[i,Urut[k]]*X[Urut[i]]; CountZ2 := bantu;

end;

function CountDissimilarity (L : TVariance; Lamda, XMean : TMeanFrequency; X : TFrequency; Urut : TSort) : real;

var dis1, dis2 : real;

k : integer;

begin

dis1 := 0;

for k := 1 to qi do

begin

if Lamda[Urut[k]] <> 0 then

dis1 := dis1 +

(SQR(CountZ1(L,k,X,Urut)-countZ2(L,k,XMean,Urut))/Lamda[Urut[k]])

else begin

if error <> 2 then Error := 1; exit;

end; end; dis2 := 0;

for k := qi+1 to DimVector do

dis2 := dis2 +

(SQR(CountZ1(L,k,X,Urut)-countZ2(L,k,XMean,Urut))/Lamda[Urut[qi]]); CountDissimilarity := dis1 + dis2;

end;

Rutin pengenalan

Function BacaHuruf : TGambar; var i,j : byte;

Gambar : TGambar; Begin

for i := 1 to SignHeigh do for j := 1 to SignWidth do Gambar[i,j] := 0;

for i := 0 to SignHeigh-1 do for j := 0 to SignWidth-1 do Begin

if FUtama.Image1.Canvas.Pixels[j,i] >= (clWhite -

(clWhite div 3)) Then Gambar[i+1,j+1] := 0 else Gambar[i+1,j+1] := 1; End;

BacaHuruf := Gambar; End;

(33)

Begin

CountFrequency(FreqCounterSign,Gambar);

Recognice := CountDissimilarity(PrEigenVector,

PrEigenValue,PrMeanFreq,FreqCounterSign,PrSort); End;

3.7.2.3Form Pendaftaran

[image:33.595.124.530.327.611.2]

Form pendaftaran diberi nama F EnrollGroup.frm (terlihat pada Gambar 3.6) dengan unit programnya bernama UEnrollGroup.pas. Form ini digunakan sebagai form tempat pendaftaran aksara baru yang datanya akan dimasukkan ke dalam file basisdata acuan. Dalam sekali pemanggilannya bisa digunakan untuk mendaftarkan lebih dari satu aksara baru. Selain itu form ini juga digunakan untuk menampilkan citra Aksara Bali acuan tersebut

Gambar 3.6

Tampilan Form Pendaftaran

1. Nomor 1 adalah tempat untuk menampilkan nomor identitas Aksara Bali yang akan didaftarkan.

2. Nomor 2 adalah tempat memasukkan atau menampilkan nama Aksara Bali.

3. Nomor 3 adalah tempat untuk menampilkan waktu proses. 4. Nomor 4 adalah tempat menampilkan citra Aksara Bali acuan.

1

7 6

5

4 3

(34)

5. Nomor 5 adalah tempat menampilkan nilai beda antara aksara acuan dengan aksara pembanding C1.

6. Nomor 6 adalah tempat menampilkan nilai beda antara aksara acuan dengan aksara pembanding C2.

7. Nomor 7 adalah tempat menampilkan nilai beda antara aksara acuan dengan aksara pembanding C3.

8. Tombol Close digunakan untuk keluar dari form pendaftaran. Adapun program yang dijalankan adalah sebagai berikut :

procedure TFEnrollGroup.BBProcessClick(Sender: TObject); var Mi,Ms : byte;

i,j, Code : integer; TempPerson : THuruf; Freq : TFrequency;

EGMeanFreq, EGEigenValue: TMeanFrequency; TempFreq :Array[1..DimVector67,1..3] Of Real; EGVariance,EGEigenVector : TVariance;

EGSort : TSort;

Temp : Array[1..3] of Real; S : String;

IDNumber : word;

Dissimilarity, Selisih, selisih2, bantu : real; Gambar : TGambar;

WaktuMulai, WaktuSelesai : TDateTime;

JamMulai, JamSelesai, Menit, Detik, MDetik : Word; MDetikMulai, MDetikSelesai, TotalWaktu : Double; k : String;

begin

BBProcess.Enabled := False; error := 0;

FGauge.Show;

FGauge.Label4.Caption := '6'; FGauge.Refresh;

FGauge.Gauge1.Progress := 0; FGauge.Gauge2.Progress := 0; WaktuMulai := Time;

Val(EdIDNumber.Text,IDNumber,Code); TempPerson.IDNumber := IDNumber; TempPerson.Name := EdName.Text;

TempPerson.RefFileName := RefFileName;

For Mi := 1 to Number do Begin

Image1.Picture.LoadFromFile(ListBox2.Items[Mi-1]); AwalX := 1;//PosGambar[1].AwalX;

AkhirX := 1;//PosGambar[1].AkhirX; AwalY := 1;//PosGambar[1].AwalY; AkhirY := 1;//PosGambar[1].AkhirY;

for i := 1 to SignHeigh do for j := 1 to SignWidth do Gambar[i,j] := 0;

(35)

for j := AwalY to AkhirY do Begin

if Image1.Canvas.Pixels[j,i] >= (clWhite -

(clWhite div 3)) Then

Gambar[i-AwalX+1,j-AwalY+1] := 0 else Gambar[i-AwalX+1,j-AwalY+1] := 1; End;

CountFrequency(Freq, Gambar); for i := 1 to DimVector do

TempPerson.freq[i,Mi] := Freq[i];

FGauge.Gauge2.Progress := 10*Mi; End;

EGMeanFreq := CountMeanFrequency(TempPerson);

EGVariance := CountVariance(EGMeanFreq, TempPerson);

EigenSort(EGVariance,EGEigenVector, EGEigenValue, EGSort); FGauge.Gauge2.Progress := 70;

For Ms := 1 to 3 do Begin

Image1.Picture.LoadFromFile(LstBox2.Items[Number+Ms1]); for i := 1 to SignHeigh do

for j := 1 to SignWidth do Gambar[i,j] := 0;

for i := AwalX to AkhirX do for j := AwalY to AkhirY do Begin

if Image1.Canvas.Pixels[j,i] >= (clWhite -

(clWhite div 3)) Then

Gambar[i-AwalX+1,j-AwalY+1] := 0 else Gambar[i-AwalX+1,j-AwalY+1] := 1; End;

CountFrequency(Freq, Gambar);

Dissimilarity:=CountDissimilarity(EGEigenVector,EGEigen Value, EGMeanFreq,Freq,EGSort);

If error = 1 Then Begin

EdDissC1.Text := ''; EdDissC2.Text := ''; EdDissC3.Text := '';

ShowMessage('Divided by zero, next or be smaller Qi !')

End else Begin

TempPerson.ADis[Ms] := Dissimilarity; Temp[Ms] := Dissimilarity;

Str(Temp[Ms], S); Case Ms of

1 : EdDissC1.Text := S; 2 : EdDissC2.Text := S; 3 : EdDissC3.Text := S; End;

End;

FGauge.Gauge2.Progress := 10*(Ms+7); End;

If Error <> 1 Then Begin

(36)

if Temp[i] < Temp[j] Then Begin

bantu := Temp[i]; Temp[i] := Temp[j]; Temp[j] := bantu; End;

TempPerson.Critical := Temp[2]; Write(FileReference,TempPerson); Inc(BanyakHuruf);

ArrHuruf[BanyakHuruf] := TempPerson; FUtama.SBVerify.Enabled := True;

FUtama.SBBrowsePerson.Enabled := True; End;

WaktuSelesai := Time; FGauge.Close;

//Hitung waktu proses

DecodeTime(WaktuMulai,JamMulai,Menit,Detik,MDetik);

MDetikMulai := ((JamMulai*60+Menit)*60+ Detik)*1000 + MDetik; DecodeTime(WaktuSelesai,JamSelesai,Menit,Detik,MDetik);

If JamSelesai >= JamMulai Then

MDetikSelesai :=((JamSelesai*60 + Menit)*60 + Detik)*1000 + MDetik

Else //antisipasi melewati jam 12

MDetikSelesai := (((JamSelesai+12)*60 + Menit)*60 + Detik) *1000 + MDetik;

TotalWaktu := MDetikSelesai - MDetikMulai;

STTime.Caption := ' ' + FloatToStr(TotalWaktu) + ' Milli Second';

EdIDNumber.SetFocus; //FCoba1.Show; end;

3.7.2.4Form-Form Pendukung

(37)
[image:37.595.118.558.83.368.2]

Gambar 3.7

Tampilan Form Daftar Aksara Bali

Form Daftar Aksara Bali

Form daftar Aksara Bali dinamakan F Browse.frm seperti yang terlihat pada

Gambar 3.7 dengan unit UBrowse.pas digunakan sebagai tempat untuk menampilkan data aksara yang telah terdaftar pada file basisdata acuan. Data tersebut diantaranya nomor identitas aksara, nama aksara, nilai ambang dan nilai ketidaksamaan aksara acuan dengan aksara pembanding C1, C2 dan C3.

Form Lingkungan Sistem

Form lingkungan sistem dinamakan F SetEnv.frm seperti yang terlihat pada

(38)

[image:38.595.133.507.82.316.2]

b Gambar 3.8

Tampilan Form Lingkungan Sistem

Form Pola Model

Form pola model dinamakan F Model.frm seperti yang terlihat pada

Gambar 3.9 dengan unit UModel.pas digunakan sebagai tempat untuk menampilkan pola model yang sedang aktif dan memasukkan pola model baru yang akan digunakan dalam sistem pengenalan. Form pola model akan menampilkan sebuah pola dalam tabel berukuran 5 x 5 kotak beserta nomor urut dan nomor modelnya. Form ini juga menyediakan fasilitas untuk menyimpan pola model (melalui tombol Save), untuk melihat pola nomor urut sebelumnya (menggunakan tombol Back), serta pola nomor urut sesudahnya (menggunakan tombol Next).

Form Indikator Proses

Form indikator proses dinamakan F Gauge.frm seperti yang terlihat pada

Gambar 3.10 dengan unit UTtdGauge.pas digunakan sebagai tempat indikator proses pengenalan sedang berlangsung, baik pengenalan untuk sebuah Aksara bali maupun pengenalan Aksara Bali secara berkelompok. Indikator ini memanfaatkan fasilitas obyek gauge.

Form Informasi Sistem

Form informasi sistem dinamakan F SignAbout.frm seperti yang terlihat

(39)

untuk menampilkan informasi tentang sistem pengenalan. Informasi ini berupa judul sistem, gambar, nama pengembang sistem, serta nama instansi program pascasarjana

Gambar 3.9

Tampilan Form Pola Model

Gambar 3.10

(40)

BAB IV. HASIL DAN PEMBAHASAN

Bab Pengujian dan Analisis Hasil ini diawali dengan pembahasan mengenai implementasi sistem, dilanjutkan dengan pengujian sistem serta analisis dari hasil pengujian tersebut. Sebelum itu terlebih dahulu dijelaskan faktor-faktor yang berpengaruh terhadap proses pengujian. Kemudian dibahas mengenai hasil pengujian beserta analisisnya. Selain itu juga dilengkapi dengan analisis terhadap kompleksitas waktu eksekusi dan ruang penyimpanan.

4.1 Pengujian

Pembuatan sistem pengenalan Aksara Bali dalam penelitian ini memakai pola-pola model dari Metode Pola Busur Terlokalisasi untuk mengekstraksi ciri Aksara Bali masukan. Di samping menggunakan 52 buah pola (dikelompokkan menjadi 42 pola model) seperti yang terlihat pada Gambar 2.4, juga akan dipakai pola model baru yang pembuatannya tetap mengacu kepada batasan yang ada dalam Metode Pola Busur Terlokalisasi ini, yaitu lokalisasi permasalahan pada pola model yang didefinisikan di dalam sebuah bujur sangkar kecil berukuran 5 x 5, tetapi pemilihannya berbasis pada sampel Aksara Bali yang dimasukkan.

4.1.1 Pembentukan Pola Model

(41)

Gambar 4.1 (a)

Kemungkinan pola-pola dari Pola Busur Terlokalisasi untuk Pola Bujursangkar 5X5 (nomor urut 1 sampai 63) No.1 Model 1

No.2 Model 2

 

No.3 Model 3

 

No.4 Model 4

 

No.5 Model 5

No.6 Model 6

 

No.7 Model 7

 

No.8 Model 8

 

No.9 Model 9

 

No.10 Model 10

No.11 Model 11

 

No.12 Model 12

 

No.13 Model 13

 

No.14 Model 14

  

No.15 Model 15

  

No.16 Model 16

  

No.17 Model 17

 

No.18 Model 18

 

No.19 Model 19

  

No.20 Model 20

  

No.21 Model 21

 

No.22 Model 22

 

No.23 Model 23

 

No.24 Model 24

 

No.25 Model 25

No.26 Model 26

No.27 Model 27

 

No.28 Model 28

 

No.29 Model 29

 

No.30 Model 30

 

No.31 Model 31

  

No.32 Model 32

 

No.33 Model 33

 

No.34 Model 34

 

No.35 Model 35

 

No.36 Model 36

 

No.37 Model 37

 

No.38 Model 38

 

No.39 Model 39

  

No.40 Model 40

 

No.41 Model 41

  

No.42 Model 42

 

No.43 Model 43

  

No.44 Model 44

  

No.45 Model 45

  

No.46 Model 46

  

No.47 Model 47

  

No.48 Model 48

 

No.49 Model 49

  

No.50 Model 50

  

No.51 Model 51

 

No.52 Model 52

 

No.53 Model 53

  

No.54 Model 54

  

No.55 Model 55

  

No.56 Model 56

  

No.57 Model 57

  

No.58 Model 58

 

  

No.59 Model 59

   

No.60 Model 59

    

No.61 Model 59

    

No.62 Model 60

    

No.63 Model 61

[image:41.595.117.510.87.692.2]
(42)

Gambar 4.1(b)

Kemungkinan pola-pola dari Pola Busur Terlokalisasi untuk Pola Bujursangkar 5X5 (nomor urut 64 sampai 125) No.64 Model 61

 

  

No.65 Model 61

 

  

No.66 Model 62

 

 

No.67 Model 63

  

No.68 Model 64

  

No.69 Model 64

  

No.70 Model 64

 

No.71 Model 65

   

No.72 Model 66

   

No.73 Model 66

 



No.74 Model 66

 

  

No.75 Model 67

 

  

No.76 Model 68

  

No.77 Model 69

  

No.78 Model 69

  

No.79 Model 70

 

 

No.80 Model 71

  

No.81 Model 71

 

No.82 Model 72

  

No.83 Model 73

 

 

No.84 Model 74

 

  

No.85 Model 74

  

 

No.86 Model 75

  

 

No.87 Model 76

 

  

No.88 Model 76

 

 

No.89 Model 77

 

  

No.90 Model 78

 

 

No.91 Model 78

  

 

No.92 Model 79

  

 

No.93 Model 80

   

No.94 Model 81

    

No.95 Model 81

    

No.96 Model 82

    

No.97 Model 83

    

No.98 Model 84

   

No.99 Model 85

    

No.100 Model 86

  

 

No.101 Model 87

  

 

No.102 Model 88

    

No.103 Model 89

 

  

No.104 Model 90

 

  

No.105 Model 91

 

  

No.106 Model 92

   

No.107 Model 92

   

No.108 Model 92

   

No.109 Model 93

   

No.110 Model 94

 

 

No.111 Model 94

 

  

No.112 Model 94

 

 

No.113 Model 95

 

 

No.114 Model 96

  

No.115 Model 97

   

No.116 Model 98

  

 

No.117 Model 98

 

 

No.118 Model 98

 

  

No.119 Model 99

 

  

No.120 Model 100

   

No.121 Model 101

    

No.122 Model 101

    

No.123 Model 101

    

No.124 Model 102

    

No.125 Model 103

[image:42.595.112.514.90.696.2]
(43)

4.1.2 Pemilihan Pola Model

Pengurangan waktu proses dilakukan dengan pemilihan pola dari 125 pola di atas yang memang sering muncul pada Aksara Bali. Pemilihan pola-pola itu dilakukan dengan menggunakan bantuan program untuk menghitung keseringan muncul masing-masing pola tersebut pada sejumlah citra biner Aksara Bali. Sampel data yang dipergunakan untuk membentuk pola model dalam penelitian sebanyak 600 buah citra Aksara Bali yang diambil dari beberapa buku cetak dan internet. Adapun tipe data dan potongan program (berupa fungsi dan prosedur) yang dipergunakan adalah sebagai berikut:

SignWidth = 165; SignHeigh = 140; MaxModel = 1500;

PatternName125 = 'WModel125.dat';

type

TPattern = array[0..4,0..4] of byte;

TAGambar = array[1..SignHeigh,1..SignWidth] of byte;

TWModelPattern = record

Nomor : byte; Model : byte; Pattern : TPattern;

Freq : word;

end;

TWArrModelPattern = array [1..125] of TWModelPattern;

var

WArrModelPattern : TWArrModelPattern;

TotalSampelSign : word;

function BacaGambar : TAGambar;

var i,j : byte;

Gambar : TAGambar;

begin

for i := 1 to SignHeigh do

for j := 1 to SignWidth do

Gambar[i,j] := 0;

for i := 0 to SignHeigh-1 do

for j := 0 to SignWidth-1 do

begin

if FModelDesign.Image1.Canvas.Pixels[j,i] >= (clWhite - (clWhite div 3)) Then Gambar[i+1,j+1] := 0

else Gambar[i+1,j+1] := 1;

end;

BacaGambar := Gambar;

(44)

procedure TFModelDesign.SBCount125Click(Sender: TObject);

var NSign : word;

Gambar : TAGambar; i,j,x,y : integer; cocok : boolean;

NM : byte

awalX_L, awalY_L,akhirX_L, akhirY_L : byte;

begin

awalX_L := 1;

akhirX_L := SignHeigh; awalY_L := 1;

akhirY_L := SignWidth;

for NM := 1 to 125 do WArrModelPattern[NM].Freq := 0;

for NSign := 1 to TotalSampelSign do

begin

Image1.Picture.LoadFromFile(ListBox2.Items[NSign-1]); Gambar := BacaGambar;

for NM := 1 to 125 do begin

for x := (awalX_L-4) to (akhirX_L - 4) do

for y := (awalY_L-4) to (akhirY_L - 4) do

begin

i := 0;

cocok := true;

repeat

inc(i);

j := 0;

repeat

inc(j);

if ((i+x-1)<awalX_L) or ((j+y-1)<awalY_L) then

begin

if WArrModelPattern[NM].Pattern[i-1,j-1] <> 0

then cocok := false;

end else

if WArrModelPattern[NM].Pattern[i-1,j-1] <>

Gambar[i+x-1,j+y-1]

then cocok := false;

until (cocok = false) or (j = 5);

until (cocok = false) or (i = 5);

if (cocok = true) and (i=5) and (j=5)

then inc(WArrModelPattern[NM].Freq);

end;

end; end;

end;

Setelah dieksekusi dengan mempergunakan 600 buah sampel citra Aksara Bali, hasil dari potongan program di atas adalah berupa cacah keseringan muncul masing-masing pola model yang tersimpan pada variabel freq dalam variabel

WArrModelPattern. Tabel cacah keseringan muncul dari 125 pola tersebut seperti

[image:44.595.115.484.79.650.2]
(45)
[image:45.595.113.517.117.594.2]

Tabel 4.1

Frekuensi kemunculan masing-masing pola pada 600 citra biner Aksara Bali

No Model Freq No Model Freq No Model Freq No Model Fr

eq No Model

Fr eq

1 1 36365 26 26 19 51 51 0 76 68 0 101 87 0

2 2 489 27 27 0 52 52 0 77 69 0 102 88 8

3 3 223 28 28 9 53 53 0 78 69 0 103 89 0

4 4 743 29 29 0 54 54 2 79 70 0 104 90 15

5 5 226 30 30 0 55 55 6 80 71 0 105 91 0

6 6 244 31 31 15 56 56 0 81 71 0 106 92 1

7 7 5 32 32 0 57 57 0 82 72 0 107 92 0

8 8 171 33 33 6 58 58 58154 83 73 0 108 92 0

9 9 4 34 34 1 59 59 0 84 74 0 109 93 3

10 10 23 35 35 0 60 59 0 85 74 0 110 94 0

11 11 8 36 36 1 61 59 0 86 75 0 111 94 0

12 12 49 37 37 0 62 60 0 87 76 0 112 94 0

13 13 14 38 38 0 63 61 0 88 76 0 113 95 0

14 14 68 39 39 0 64 61 0 89 77 0 114 96 0

15 15 0 40 40 0 65 61 2 90 78 5 115 97 1

16 16 0 41 41 0 66 62 0 91 78 0 116 98 0

17 17 0 42 42 0 67 63 17262 92 79 6 117 98 1

18 18 0 43 43 0 68 64 2 93 80 2 118 98 0

19 19 30 44 44 0 69 64 0 94 81 0 119 99 0

20 20 0 45 45 0 70 64 0 95 81 0 120 100 0

21 21 0 46 46 11319 71 65 0 96 82 126 121 101 0

22 22 0 47 47 10 72 66 0 97 83 539 122 101 0

23 23 0 48 48 0 73 66 0 98 84 0 123 101 3

24 24 0 49 49 8896 74 66 0 99 85 7 124 102 3

25 25 0 50 50 2 75 67 0 100 86 32 125 103 0

(46)

Tabel 4.2

Frekuensi kemunculan masing-masing pola pada 600 citra Aksara Bali yang sudah diurut

No Model Freq No Model Freq No Model Freq No Model Freq No Model Freq

1 58 58154 26 11 8 51 103 0 76 92 0 101 87 0

2 1 36365 27 85 7 52 98 0 77 94 0 102 69 0

3 63 17262 28 79 6 53 68 0 78 59 0 103 69 0

4 46 11319 29 33 6 54 92 0 79 103 0 104 70 0

5 49 8896 30 55 6 55 78 0 80 17 0 105 71 0

6 4 743 31 78 5 56 64 0 81 38 0 106 71 0

7 83 539 32 7 5 57 84 0 82 44 0 107 72 0

8 2 489 33 9 4 58 81 0 83 66 0 108 56 0

9 6 244 34 102 3 59 101 0 84 62 0 109 74 0

10 5 226 35 93 3 60 66 0 85 53 0 110 75 0

11 3 223 36 101 3 61 101 0 86 57 0 111 76 0

12 8 171 37 64 2 62 73 0 87 66 0 112 76 0

13 82 126 38 50 2 63 94 0 88 41 0 113 95 0

14 14 68 39 61 2 64 81 0 89 35 0 114 77 0

15 12 49 40 54 2 65 24 0 90 100 0 115 59 0

16 86 32 41 80 2 66 52 0 91 27 0 116 37 0

17 19 30 42 34 1 67 95 0 92 30 0 117 45 0

18 10 23 43 92 1 68 51 0 93 29 0 118 64 0

19 26 19 44 98 1 69 22 0 94 25 0 119 60 0

20 90 15 45 97 1 70 59 0 95 16 0 120 65 0

21 31 15 46 36 1 71 15 0 96 48 0 121 61 0

22 13 14 47 94 0 72 40 0 97 21 0 122 23 0

23 47 10 48 48 0 73 99 0 98 42 0 123 66 0

24 28 9 49 98 0 74 32 0 99 91 0 124 61 0

25 88 8 50 43 0 75 94 0 100 18 0 125 75 0

(47)
[image:47.595.235.409.137.399.2]

Tabel 4.3

Fr

Gambar

Gambar : TGambar);
Gambar 3.6 Tampilan Form Pendaftaran
Gambar 3.7 Tampilan Form Daftar Aksara Bali
Gambar 3.8 Tampilan Form Lingkungan Sistem
+7

Referensi

Dokumen terkait

Kesalahan pengenalan pada perangkat aplikasi dipengaruhi oleh beberapa hal yaitu bentuk karakter aksara, proses pengolahan citra, keberagaman bentuk tulisan tangan

Penelitian mengenai pengenalan Aksara Bali telah dilakukan melalui beberapa penelitian pengolahan citra digital tetapi dari penelitian-penelitian tersebut, dilakukan

Game aplikasi pengenalan Aksara Jawa “Hanacaraka” berbasis android yang dibangun dapat membantu minat siswa dalam proses memahami jenis-jenis Aksara Jawa seperti

Bagaimana mendapatkan tiap-tiap karakter pada tulisan Aksara Bali, dapat dilakukan dengan menggunakan beberapa metode segmentasi salah satunya adalah metode Watershed

Bagaimana mendapatkan tiap-tiap karakter pada tulisan Aksara Bali, dapat dilakukan dengan menggunakan beberapa metode segmentasi salah satunya adalah metode Watershed

Metode yang digunakan untuk merancang sistem pengenalan aksara Bali, pada penelitian ini yaitu Local Binary Pattern untuk ekstraksi ciri dan menggunakan

Pada tampilan tebak aksara tampak tombol dalam bentuk gambar aksara bali yang dapat dipilih sesuai dengan aksara yang disuarakan.. Pelafalan aksara dilakukan secara

Adapun hasil pengujian hipotesis yang diperoleh yakni, sebagian besar responden tidak terlalu fasih dalam menulis Aksara Bali, sebagian besar responden memiliki permasalahan dalam