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
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
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
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)
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
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 :
mk
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:
mj
t j
j
x
x
x
m
x
V
1
/
/
/
………....(3.4)
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:
pq
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 1qp. Konstanta q merupakan nomor pemotongan dari nilai eigen.
vi. Perancangan Basis Data Acuan
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’
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
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
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)
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..
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
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
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;
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
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
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;
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
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
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);
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.
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);
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 :
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;
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;
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]);
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
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;
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
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;
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
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
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
[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
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
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
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]
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]
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;
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]
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
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
Tabel 4.3
Fr