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