Pengenalan Karakter Sintaktik menggunakan Algoritma Otsu dan Zhang-Suen Yusfia Hafid Aristyagama (23214355) Electrical Engineering, Digital Media and Game Technology Institut Teknologi Bandung Bandung, Indonesia
[email protected] AbstrakβMakalah ini mengajukan ulasan tentang metode pengenalan karakter huruf dan angka dengan metode sintaktik. Algoritma Otsu digunakan untuk melakukan proses thresholding citra huruf dan angka, sementara algoritma Zhang-suen dipakai untuk melakukan proses thinning agar citra tersebut siap diproses lebih lanjut. Setelah itu proses ekstraksi fitur dilakukan dengan menggunakan algoritma Depth First Search (DFS). Hasilnya menunjukkan bahwa metode sintaktik ini efektif digunakan untuk membedakan pola karakter yang secara fitur dapat dibedakan dengan jelas.
yaitu thresholding dan thinning. Pada proses thresholding digunakan algoritma Otsu thresholding yang akan dibahas pada sub bab II. Untuk proses skeletonizing/thinning digunakan algoritma thinning Zhang-Suen yang akan dibahas pada sub bab III. Untuk tahapan selanjutnya adalah ekstraksi fitur yang akan dibahas pada sub bab III dengan menggunakan algoritma DFS. Kemudian proses klasifikasi akan dilakukan berdasarkan fitur-fitur yang sudah didapatkan dari proses ekstraksi fitur.
Kata kunciβotsu, zhang suen, depth first search, sintaktik, citra, huruf, angka
Otsu thresholding merupakan suatu metode untuk yang membantu untuk melakukan segmentasi citra digital dengan cara mencari threshold menggunakan analisa statistik histogram. Secara definitif, proses tresholding adalah proses untuk mengubah citra grayscale multi value, menjadi citra biner bivalue (dua nilai saja). Proses tersebut dapat di simbolkan dengan notasi matematis berikut: 1 ππ π(π₯, π¦) β₯ π π(π₯, π¦) { 0 ππ π(π₯, π¦) < π di mana g(x,y) adalah nilai pixel hasil threshold pada baris x dan kolom y, f(x,y) adalah nilai pixel dari citra input asal pada baris x dan kolom y, sedangkan T adalah nilai threshold sebagai batas nilai keabuan untuk mengkonversi nilai pixel f(x,y) menjadi nilai pixel g(x,y). Otsu tresholding didasarkan pada ide untuk menemukan threshold yang meminimasi bobot variansi within-class. Hal tersebut sama saja dengan memaksimal variansi beetwen-class. Otsu tresholding bekerja pada citra dengan model warna grayscale. Berikut ini adalah algoritma untuk menghitung threshold menggunakan metode Otsu:
I.
Pendahuluan
Pengenalan pola karakter adalah suatu aktifitas yang saat ini banyak dipelajari oleh banyak orang. Pengenalan pola karakter merupakan salah satu bidang pengenalan pola yang bisa dibilang paling sukses untuk diterapkan dalam aplikasi pengenalan pola otomatis. Sejak tahun 1950, pengenalan pola karakter ini telah menjadi bidang riset dan pengembangan yang aktif [3]. Proses pengolahan citra mulai dari pre-processing hingga proses ekstraksi fitur menjadi hal yang sangat penting, karena proses tersebut saling berurutan dan memiliki keterkaitan. Pre-processing yang bagus akan menghasilkan data umpan yang bagus untuk diolah, sehingga fitur-fitur yang didapatkan juga akan representatif terhadap interpretasi maksud citra yang sebenarnya. Dalam makalah ini diajukan sebuah kerangka kerja yang terdiri dari beberapa langkah untuk melakukan pengenalan pola karakter menggunan metode sintaktik.
Gambar 1. Tahapan pengolahan data
Kerangka kerja pengolahan data dibagi menjadi tiga bagian, yaitu preprocessing, ekstraksi fitur, dan klasifikasi. Preprocessing dibagi menjadi dua tahap,
II. Otsu Thresholding
public void findThreshold() { /*hist.lv[3] adalah histogram citra dalam model warna grayscale*/ double sum = 0; for (int i = 1; i < 256; ++i)
sum += i * hist.lv[3][i]; double sumB = 0; double wB = 0; double wF = 0; double mB; double mF; double max = 0.0; double between = 0.0; double threshold1 = 0.0; double threshold2 = 0.0; for (int i = 0; i < 256; ++i) { wB += hist.lv[3][i]; if (wB == 0) continue; wF = hist.totalPix - wB; if (wF == 0) break; sumB += i * hist.lv[3][i]; mB = sumB / wB; mF = (sum - sumB) / wF; between = wB * wF * (mB - mF) * (mB - mF); if ( between >= max ) { threshold1 = i; if ( between > max ) { threshold2 = i; } max = between; } } thresholdValue = (int)(( threshold1 + threshold2 ) / 2.0); }
Setelah nilai threshold didapatkan dengan algoritma otsu tresholding, maka selanjutnya nilai threshold ini tinggal dimasukkan saja sebagai inputan bagi fungsi threshold untuk melakukan binerisasi pada setiap pixel yang ada dalam citra tersebut. Untuk hasil tresholding yang didapatkan akan sangat bergantung pada histogram citra input. Gambar 2 menunjukkan hasil tresholding dari citra input.
Gambar 2. Citra Input (kiri)-Hasil Threshold (kanan)
III. Zhang-Suen Dalam hal ini skeletonizing digunakan untuk melakukan penipisan citra. Tujuannya adalah agar citra yang menjadi umpan untuk input algoritma
zhang-suen memiliki ketebalan sebesar 1 pixel sebagai outputnya. Hal tersebut dapat mempermudah dan menyederhanakan proses ekstraksi fitur. Proses yang dilakukan dalam algorima zhang suen adalah sebagai berikut : Algoritma beroperasi pada pixel warna hitam P1 yang mempunyai 8 tetangga dengan urutan sebagai berikut:
Gambar 3. Kernel operasi Zhang-suen
π΄(π1) adalah jumlah transisi dari putih ke hitam dalam urutan π2, π3, π4, π5, π6, π7, π8, π9, π2. π΅(π1) adalah jumlah pixel berwarna hitam yang menjadi tetangga dari π1. Step Pertama, pastikan kondisi-kondisi berikut terpenuhi untuk 1 : 1. π1 adalah pixel hitam dan memiliki 8 tetangga. 2. 2 β€ π΅(π1) β€ 6 3. π΄(π1) = 1 4. Setidaknya satu diantara π2, π4, π6 adalah pixel putih 5. Setidaknya satu diantara π4, π6, π8 adalah pixel putih Setelah dilakukan iterasi total terhadap citra, semua pixel yang memenuhi kondisi step pertama, maka pixel di ubah menjadi putih. Step Kedua, semua pixel di tes lagi dan dipastikan kondisi-kondisi berikut terpenuhi untuk π1: 1. π1 adalah pixel hitam dan memiliki 8 tetangga. 2. 2 β€ π΅(π1) β€ 6 3. π΄(π1) = 1 4. Setidaknya satu diantara π2, π4, π8 adalah pixel putih 5. Setidaknya satu diantara π2, π6, π8 adalah pixel putih Setelah dilakukan iterasi terhadap seluruh pixel pada image, maka pixel yang memenuhi kondisi pada step kedua akan diubah menjadi putih. Setelah itu lakukan iterasi step pertama dan step kedua secara berurutan hingga tidak ada pixel yang bisa dirubah didalam image tersebut. Dalam implementasinya, algoritma Zhang-suen ini tidak selalu menghasilkan output dengan ketebalan 1 pixel, sehingga hal ini akan menjadi kendala pada proses ekstraksi fitur. Oleh karena itu, diperlukan beberapa perbaikan lebih lanjut dengan menghilangkan pixel-pixel yang masih bisa untuk dikikis agar ketebalannya menjadi benar-benar 1 pixel.
Proses untuk melakukan pengikisan tersebut dibagi menjadi dua tahap. Misal terdapat delapan jenis kernel yang akan dipakai untuk melakukan pengikisan, ke delapan kernel tersebut adalah sebagai berikut:
Gambar 4. Secara berturut turut Kernel1-Kernel2-Kernel3-Kernel4Kernel5-Kernel6-Kernel7-Kernel8
Untuk melakukan perbaikan lebih lanjut dengan menggunakan delapan kernel tersebut adalah dengan melakukan dua tahap sebagai berikut: Step pertama, semua pixel dites dan dipastikan memenuhi kondisi berikut: 1. Jika pixel berwarna hitam maka cek ketetanggaannya 2. Jika pixel dan tetangganya bersesuaian dengan Kernel8 atau Kernel7 atau Kernel6 atau kernel5 maka pixel tersebut diubah menjadi putih Step kedua, semua pixel dites kembali dan dipastikan memenuhi kondisi berikut: 1. Jika pixel berwarna hitam maka cek ketetanggaannya 2. Jika pixel dan tetangganya bersesuaian dengan Kernel4 atau Kernel3 atau Kernel2 atau Kernel1 maka pixel tersebut diubah menjadi putih Pada akhirnya, proses deteksi perubahan citra biner menjadi citra dengan skeleton dapat dilihat pada Gambar 5.
Gambar 5. Binnary image (kiri) dan Skeleton image (kanan)
IV. Ekstraksi Fitur Algoritma DFS (Depth First Search), digunakan untuk menelusuri skeleton dan fitur-fitur yang dibutuhkan. Fitur tersebut semisal jumlah intersection dalam skeleton beserta jumlah simpangannya, letak intersection, jumlah ujung dan posisi tiap ujung dari skeleton, dan lubang yang terdapat dalam skeleton. Jumlah intersection menyatakan banyaknya cabang yang ada dalam suatu karakter. Misalnya pada huruf βAβ terdapat dua buah intersection. Sedangkan simpangan menyatakan banyaknya cabang dalam
satu intersection. Misalnya pada intersection pertama huruf βAβ terdapat 3 simpangan. Pada intersection kedua pun juga terdapat 3 intersection. Sedangkan letak intersection menyatakan posisi intersection. Misal pada huruf βAβ letak intersection pertama berada diposisi kiri bawah, sedangkan intersection kedua berada diposisi kanan bawah. Jumlah ujung menyatakan banyaknya ujung yang ada pada satu huruf. Misalnya pada huruf βAβ terdapat dua buah ujung. Kemudian letak ujung menyatakan posisi dimana ujung-ujung huruf tersebut berada. Misal pada huruf βAβ ujung pertama terletak di kiri bawah, sedangkan ujung kedua terletak di kanan bawah. Lubang menyatakan jumlah bangun ruang tertutup yang terdapat dalam huruf tersebut. Misal, pada huruf βAβ terdapat satu buah lubang di tengah yang berbentuk segitiga. Pada huruf βBβ terdapat dua buah lubang. Cara kerja ekstraksi fitur ini adalah dengan melakukan penelusuran pada skeleton. Setiap kali penelusuran dilakukan akan dicatat nilai x maksimum, x minimum, y maksimum dan y minimum. Informasi tersebut dijadikan acuan letak suatu titik. (x maksimum, y maksimum) berarti referensi letak kanan bawah. (x maksimum, y minimum) berarti referensi untuk letak kanan atas. (x minimum, y maksimum) sebagai referensi letak kiri bawah, dan yang terakhir adalah (x minimum, y minimum) yang menandakan referensi kiri atas. Pada setiap kali penelusuran, DFS juga menyimpan titik yang menjadi intersection dan titik yang menjadi ujung. Penyimpanan informasi ini dengan harapan dapat dibandingkan dengan titik referensi yang telah dijelaskan sebelumnya, sehingga titik tersebut letaknya menjadi lebih jelas saat dibandingkan dengan titik referensi. Dalam proses ekstraksi fitur yang disebut ujung adalah titik yang hanya mempunyai satu tetangga dengan warna yang sama (dalam hal ini adalah warna foreground). Intersection adalah pixel yang memiliki jumlah transisi dari warna background ke warna foreground di mana jumlah transisi tersebut adalah lebih dari 2. Jumlah simpangan bisa didapatkan dengan cara menghitung jumlah transisi yang telah dihitung saat mencari intersection. Sementara itu lubang dinyatakan sebagai kondisi dimana penelusuran kembali ke titik yang pernah ditelusuri oleh DFS sebelumnya, sehingga membentuk bangun ruang tertutup dalam karakter yang sedang diamati. Hal ini dapat dilakukan dengan syarat tebal dari citra maksimal adalah 1 pixel.
V. Pengenalan Huruf dan Angka Pengenalan huruf dan angka dapat dilakukan setelah semua fitur telah didapatkan. Pengenalan dilakukan dengan membanding-bandingkan fitur dengan model fitur yang sesunggunya. Misal pada huruf βAβ yang sebenarnya maka model pembandingnya adalah fitur 2 ujung dikiri bawah dan
dikanan bawah, 1 lubang, 2 intersection dengan letak di kiri bawah dan kanan bawah, dan masing-masing intersection memiliki 3 simpangan. Apabila saat melakukan uji coba terhadap suatu citra ternyata fitur citra tersebut sama dengan model fitur yang dimiliki oleh huruf βAβ maka citra yang diuji tersebut akan diklasifikasikan sebagai huruf A. Hal yang sama juga berlaku untuk mengklasifikasikan pola angka.
VI. Implementasi Untuk implementasi dalam aplikasinya, hal yang harus dilakukan adalah sebagai berikut: 1. Pilih tab OCR 2. Klik Browse untuk mencari file input yang akan diproses 3. Klik Convert to Skeleton untuk mendapatkan hasil akhir (hasil skeleton dan hasil klasifikasinya).
Referensi [1] K. Dikky, βImplementasi Threshold Metode Otsu untuk Segmentasi Citra dan Algoritma Mountain Function untuk Deteksi Gambarβ [2] J. Miss Hetal, B.Ashtha, βA Review on Otsu Image Segmentation Algorithm,β International Journal of Advanced Research in Computer Engineering & Technology (IJARCET), Volume 2, Issue 2, February 2013. [3] T. Due, K. Anil, T.Torfinn, βFeature Extraction Methods for Character Recognition,β Department of Informatics, University of Oslo, P.O.Box 1080 Blindern, N-0316 Oslo, Norway, Department of Computer Science, Michigan State University, A714 Wells Hall, East Lansing, MI 48824-1027, USA [4] T. Zhang, C. Suen, βA Fast Parallel Algorithm for Thinning Digital Patterns,β Communication of ACM, March 1984 Volume 27, Number 3