Anda di halaman 1dari 4

1

IMPLEMENTASI DAN ANALISIS PENGENALAN HURUF MENGGUNAKAN


ALGORITMA BERBASIS CHAIN CODE DAN K-NEAREST NEIGHBOR

Syilvia Vaulin
1
, Retno Novi Dayawati
2
, Tjokorda Agung Budi Wirayuda
3


Departemen Teknik Informatika Institut Teknologi Telkom, Bandung
1
olinehai@yahoo.com,
2
rvi@stttelkom.ac.id,
3
cok@stttelkom.ac.id

Abstrak
Pengenalan huruf adalah salah satu bagian aplikasi OCR yang berkembang pesat dengan didukung oleh
beberapa teori dan algoritma pemrograman yang baru. Permasalahan yang muncul adalah bagaimana
sebuah teknik pengenalan dapat mengenali berbagai jenis huruf dengan ukuran, ketebalan, dan bentuk
yang berbeda.
Permasalahan pengenalan tersebut diselesaikan dengan menerapkan teknik ekstraksi ciri
menggunakan algoritma berbasis chain code dan teknik klasifikasinya menggunakan k-Nearest Neighbor
(KNN) untuk mengenali huruf dengan benar. Kemudian menganalisa ciri-ciri dan tingkat akurasi dari
pengenalan huruf alfabet serta menganalisis faktor-faktor yang mempengaruhi tingkat akurasi hasil
pengenalan.
Algoritma chain code adalah suatu metode yang menelusuri pixel-pixel objek sesuai dengan arah
mata angin dan setiap arah diwakilkan dengan sebuah nilai unik. Arah transisi yang berupa nilai-nilai
disimpan menjadi rangkaian kode atau disebut chain code. Dari potongan chain code dan penambahan
chain code menjadi vektor ciri dapat memberikan keunikan untuk setiap karakter huruf sehingga hasil
pengenalan dapat menjadi maksimal.
Hasil penelitian menunjukkan bahwa algoritma berbasis chain code dapat digunakan sebagai
metode ekstraksi ciri huruf-huruf alfabet latin karena chain code dapat mendeskripsikan setiap pola
dengan rantai kode yang berbeda. Tingkat akurasi hasil pengenalan dipengaruhi oleh ukuran
normalisasi, panjang chain code, bentuk huruf, dan nilai k pada KNN.
Kata kunci: OCR, huruf alfabet, chain code, KNN

Abstract
Pattern recognition is one of OCR application which has grown fast and is supported by many new
theories and algorithm. The most important problem is how to recognize character with various size and
shapes.
The recognition problem can be solved by applying feature extraction technique using chain code
based algorithm and KNN for classification that can result the right output as expected. Then, analyze
features and accuracy level of system and factors that can change accuracy level.
Chain code is a method that extract boundary of object pixels by 8 connected and each neighbors is
represented by an integer. Transition value of pixels is inserted become chain code. Chain code and other
feature can be features vector that give uniqueness for each character so that recognition result has a good
accuracy.
Final result shows that chain code based algorithm can be used as a feature extraction method for
recognizing alphabet because it describes every pattern with different chain code. Accuracy level of
character recognition is influenced by normalization size of image, chain code digit number, shape of
character, and k value of KNN.
Keywords: OCR, alphabet character, chain code, KNN

1. Pendahuluan

Pengenalan huruf adalah salah satu bagian
aplikasi OCR yang berkembang pesat dengan
didukung oleh beberapa teori dan algoritma
pemrograman yang baru. Permasalahan yang
muncul adalah bagaimana sebuah teknik pengenalan
dapat mengenali berbagai jenis huruf dengan ukuran,
ketebalan, dan bentuk yang berbeda.
Dari permasalahan besar tersebut, dapat
didefinisikan beberapa permasalahan utama yaitu
bagaimana huruf alfabet dapat dikenali sebagai
huruf yang benar, bagaimana mekanisme algoritma
yang diterapkan sehingga meskipun ukuran dan
bentuk pola berbeda, pola tetap dikenali sebagai
huruf yang sama, dan faktor apa saja yang dapat
mempengaruhi hasil pengenalan huruf alfabet.
Permasalahan pengenalan tersebut diselesaikan
dengan menerapkan teknik ekstraksi ciri
menggunakan algoritma berbasis chain code dan
teknik klasifikasinya menggunakan k-Nearest
Neighbor (KNN) untuk mengenali huruf dengan
benar. Kemudian dilakukan analisa ciri-ciri dan
tingkat akurasi dari pengenalan huruf alfabet serta
menganalisis faktor-faktor yang mempengaruhi
tingkat akurasi hasil pengenalan.
Penelitian ini dilakukan dengan mencari dan
mempelajari literatur serta dasar teori yang kuat
2
mengenai chain code dan KNN. Setelah itu
kebutuhan penelitian dianalisa dan dirancang untuk
kemudian diimplementasikan dengan Matlab
sebagai simulasi perangkat lunak. Hasil
implementasi diuji dengan beberapa skenario
pengujian sehingga diperoleh faktor-faktor yang
mempengaruhi hasil pengenalan. Pada akhir
penelitian, semua pengerjaan disusun sebagai
laporan akhir yang merepresentasikan penelitian
secara rinci.

2. Gambaran Sistem

2.1 Preprocessing

Urutan preprocessing yang dilakukan yaitu
threshold, cropping, normalisasi, thinning, cropping.
Threshold adalah proses merubah citra awal menjadi
citra biner dengan level 0,9. Nilai ini digunakan
untuk mengantisipasi warna abu-abu agar tetap
dikenali sebagai pixel objek. Normalisasi diterapkan
dengan menetapkan ukuran tertentu sebagai ukuran
minimum kemudian dilakukan penskalaan agar tidak
terjadi perubahan ukuran yang tidak sesuai. Proses
thinning dilakukan dengan menerapkan fungsi thin
yang telah disediakan di Matlab.

2.2 Pembentukan Chain Code

Chain code adalah metode yang menelusuri
pixel-pixel objek dengan panduan arah mata angin.
Arah mata angin yang digunakan yaitu:

Gambar 1: Arah mata angin sebagai panduan
Pada penelitian ini, langkah-langkah yang
dilakukan untuk menghasilkan chain code adalah
sbb:
a. Menentukan titik awal penelusuran
Titik awal penelusuran yang dipilih adalah
pixel bernilai 1 yang pertama kali ditemui saat
raster
b. Menentukan aturan prioritas saat terjadi
percabangan pixel
Saat terjadi percabangan pixel maka harus ada
satu pixel yang dipilih. Pada penelitian ini arah
yang diprioritaskan adalah arah dengan nilai
integer terkecil.
c. Normalisasi chain code
Chain code untuk setiap huruf dapat berbeda
panjangnya, sehingga diperlukan sebuah
mekanisme untuk menyamakan panjang chain
code agar dapat digunakan sebagai input pada
proses klasifikasi. Langkah-langkah
normalisasi yang dilakukan yaitu merubah
chain code menjadi matriks berisi nilai dan
frekuensinya, menghapus nilai dengan
frekuensi 1, menerapkan rumus normalisasi
untuk mencari frekuensi sesuai yang
diinginkan, dan membangun ulang chain code
sesuai frekuensi yang baru [1]. Nilai frekuensi
baru code ke-i didapatkan dengan rumus
normalisasi yang diterapkan sbb [1]:

(1)

Fi adalah frekuensi code ke-i
Fi adalah total frekuensi semua code
N adalah nilai frekuensi yang diinginkan

2.3 Ekstraksi Ciri

Ciri-ciri yang didefinisikan yaitu:
a. Jumlah Garis Horisontal
Didapatkan dengan menghitung kemunculan
deretan nilai 1 dan 5
b. Jumlah Garis Vertikal
Didapatkan dengan menghitung kemunculan
deretan nilai 3 dan 7
c. Jumlah Garis Miring
Didapatkan dengan menghitung kemunculan
deretan nilai 2, 4, 6, dan 8
d. Jumlah Kurva
Didapatkan dengan menghitung kemunculan
deretan nilai 234, 432, 218, 812, 678, 876, 456,
dan 654
e. Jumlah Loop
Didapatkan saat penelusuran chain code yaitu
memeriksa 8 tetangga apabila pixel sudah
mencapai titik ujung. Jika salah satu atau lebih
tetangganya merupakan percabangan pixel
maka terdapat loop
f. Jumlah Titik Ujung
Didapatkan dengan menghitung jumlah pixel
yang hanya memiliki 1 tetangga
g. Jumlah Cabang
Didapatkan dengan menghitung jumlah pixel
yang memiliki lebih dari 2 tetangga
h. Chain Code
Chain code yang digunakan sebagai ciri adalah
chain code yang sudah mengalami normalisasi.

2.4 Klasifikasi

Klasifikasi dilakukan menggunakan metode
KNN. Metode ini mengambil sejumlah k tetangga
terdekat untuk kemudian diterapkan mekanisme vote
dalam pengelompokannya. Jauh dekatnya tetangga
diperoleh dengan menggunakan jarak Euclidean
seperti rumus sbb [2,3]:
(2)

3
Setelah mendapatkan jarak Euclidean untuk
tiap instance, klasifikasi dilanjutkan dengan
menerapkan aturan sbb:
a. Urutkan jarak Euclidean dimulai dari yang
terkecil sampai yang terbesar
b. Simpan nilai minimal dari jarak Euclidean
c. Jika nilai minimal hanya ada 1 dan k=1,
keluarkan hasil huruf
d. Apabila nilai minimal > 1 maka buat matriks
2xn untuk menyimpan label dan frekuensinya
1) Untuk k=1, ada 2 kemungkinan:
a) Apabila nilai minimal > 1 dan
labelnya berbeda maka huruf tidak
akan dikenali
b) Apabila nilai minimal > 1 dan
labelnya sam, huruf dikenali
2) Untuk k>1
a) Apabila jumlah label yang memiliki
nilai minimal > nilai k, ambil label
yang memiliki frekuensi terbesar
(vote)
b) Apabila sebaliknya (nilai minimal
nilai k), ambil sejumlah k dari
matriks nilai perbedaan yang sudah
diurutkan. Buat matriks 2xn untuk
menyimpan label dan frekuensinya.
Jika ada data dengan label yang
sama, jumlahkan frekuensinya.
Simpan nilai frekuensi tertinggi, jika
terdapat lebih dari 1 data yang
memiliki frekuensi tertinggi (vote
gagal), ambil data tersebut (label
dengan frekuensi tertinggi) dan cari
yang nilai perbedaannya terkecil.
Jika data dengan nilai perbedaan
terkecil hanya 1, keluarkan data
tersebut, jika > 1, huruf tidak
dikenali.
3. Pengujian dan Analisis

Setelah melakukan implementasi, penelitian
dilanjutkan dengan menguji hasil pengenalan. Pada
pengujian ini dibutuhkan data latih dan data uji. Data
latih yang digunakan adalah font standar Arial,
Calibri, dan Times New Roman berukuran 8, 12, 16,
20, dan 36 pts. Data uji terdiri dari 2 jenis yaitu data
uji latih dan data uji asing. Data uji latih berasal dari
font-font yang sama dengan data latih tetapi
ukurannya berbeda (10, 14, dan 72 pts). Sedangkan
data uji asing berasal dari font standar yang berbeda
yaitu Tahoma, Verdana, dan Courier New berukuran
10, 14, dan 72 pts.
Hasil pengujian dijabarkan sbb:
a. Pengujian terhadap ukuran normalisasi citra
dan panjang chain code

Gambar 2: Grafik hasil uji terhadap ukuran
normalisasi dan panjang chain code
b. Pengujian terhadap ukuran dan bentuk huruf

Gambar 3: Grafik hasil uji terhadap ukuran huruf.
Tabel 1: Tabel hasil uji terhadap bentuk huruf
menggunakan data uji latih
Font uji
Hasil uji
terhadap
BP
Arial(%)
Hasil uji
terhadap
BP
Calibri(%)
Hasil uji
terhadap
BP
Times
Grup Arial - 93,84615 49,23077
Grup Calibri 80 - 40
Grup Times
50,76923 53,07692 -

Tabel 2: Tabel hasil uji terhadap bentuk huruf
menggunakan data uji asing
Font Data Uji
Asing
Hasil uji
terhadap
BP Arial
(%)
Hasil uji
dengan BP
Calibri
(%)
Hasil uji
dengan
BP
Times
NR (%)
Tahoma 10 pts 96,15385 92,30769 50
Tahoma 14 pts 84,61538 88,46154
34,6153
Tahoma 72 pts 84,61538 92,30769
42,3076
Rata-rata 88,46153 91,02564 42,3076
Verdana 10
92,30769 84,61538 50
Verdana 14
92,30769 92,30769
38,4615
Verdana 72
92,30769 92,30769 50
Rata-rata
92,30769 89,743586 46,1538
Courier New
10 pts
53,84615 57,69231
88,4615
4
Courier New
14 pts
61,53846 57,69231
80,7692
3
Courier New
72 pts
46,15385 34,61538
57,6923
1
Rata-rata
53,84615
50
75,6410
4

c. Pengujian terhadap nilai k pada KNN

Tabel 3: Tabel hasil uji terhadap nilai k
Nilai k
Akurasi tiap k terhadap data uji
1 91,02564
2 91,02564
3 90,59829
4 90,59829
5 91,02564
10 85,47009
15 80,34188

d. Analisis
Dari hasil pengujian yang dilakukan, dapat
diambil beberapa analisis yaitu:
1) Normalisasi: Ukuran pembanding 20 dapat
menjaga struktur pixel data citra sehingga tidak
menghilangkan informasi pixel penting
2) Panjang chain code: Saat panjang chain code
40 digit, kontur semakin tergambar dengan
rinci dan ciri-ciri tetap terjaga. Pada proses
normalisasi chain code, code-code yang
penting juga tidak akan hilang karena
frekuensinya > 1
3) Ukuran huruf: Perubahan akurasi yang tidak
terlalu signifikan pada pengujian dengan
beberapa ukuran huruf dapat terjadi karena
huruf-huruf baik dari data latih maupun data uji
telah mengalami normalisasi atau penyamaan
ukuran
4) Bentuk huruf: Hasil pengenalan sangat
dipengaruhi bentuk atau pola karakter huruf.
Arial dan Calibri bentuknya standar, tanpa
goresan tambahan pada huruf utama sedangkan
font Times New Roman, semua hurufnya (A-
Z) memiliki setidaknya 1 goresan kecil di
setiap ujung karakter. Hal ini menyebabkan
titik awal penelusuran chain code, jumlah titik
ujung, dan jumlah cabang menjadi berbeda
dengan huruf standar yang lain.
5) Nilai k pada KNN: Jarak antar vektor ciri huruf
tidak berbeda jauh dan nilai perbedaan setiap
data sangat bervariasi mengakibatkan sebuah
data uji dapat mirip dengan banyak huruf.
Sebaran data memungkinkan pembentukan
kelompok yang saling beririsan antara huruf
satu dengan huruf lain.
4. Kesimpulan dan Saran

a. Ciri-ciri yang dihasilkan oleh algoritma
berbasis chain code sudah unik sehingga
dapat membedakan antara huruf yang satu
dengan huruf lainnya. Keunikan vektor ciri
didapatkan dengan menambahkan chain
code sebagai salah satu ciri
b. Tingkat akurasi pada pengenalan huruf
alfabet menggunakan algoritma berbasis
chain code dan KNN dipengaruhi oleh
ukuran normalisasi citra, panjang chain
code yang digunakan untuk ekstraksi ciri,
bentuk huruf, dan nilai k pada KNN.
c. Font standar seni mempunyai tambahan
garis di setiap ujungnya sehingga
penelusuran pixel menghasilkan chain code
yang berbeda dengan font standar biasa
d. Tingkat akurasi terbaik diperoleh dengan
menggunakan ukuran normalisasi 20 pixel,
panjang chain code 40 digit, dan k=1 untuk
KNN
e. Algoritma berbasis chain code dapat
digunakan sebagai metode ekstraksi ciri
huruf pada permasalahan pengenalan huruf
alfabet Latin. Hal ini dapat dilihat dari
beberapa hasil pengujian dengan rata-rata
tingkat akurasi di atas 75% bahkan
mencapai 90% pada font tertentu.
Beberapa saran pengembangan yang bisa dilakukan
yaitu:
a. Pengembangan dapat dilakukan dengan
menggunakan huruf tulisan tangan sebagai
data input yang akan dikenali
b. Penelitian lebih mendalam dapat dilakukan
pada aturan yang diterapkan di KNN
c. Pemakaian metode KNN sebagai classifier
pada TA menghasilkan akurasi yang kurang
bagus untuk font standar seni. Untuk
memperbaiki hasil pengenalan, dapat
digunakan algoritma klasifikasi alternatif
misalnya Sequence Alignment dan LCS
(Longest Common Sequence)
Daftar Pustaka:

[1] H. Izakian, S. A. Monadjemi, B. Tork Ladani,
and K. Zamanifar, 2008, Multi-Font
Farsi/Arabic Isolated Character Recognition
Using Chain Codes, Proceeding of World
Academy of Science, Engineering and
Technology Volume 33 Sepetember 2008
ISSN 2070-3740
[2] K-Nearest Neighbor,
http://www.cra.org/Activities/craw_archive/
dmp/awards/2003/Mower/KNN.html, 6 April
2009
[3] T. Mitchell, 1997, Machine Learning, McGraw
Hill, New York