BAB 2 LANDASAN TEORI 2.1 Pengenalan Teks Teknologi pengenalan teks merupakan teknologi yang mampu mengenali teks pada citra digital dan mengalihkannya pada dokumen digital. Aplikasi dari teknologi pengenalan teks ini dikenal dengan nama Optical Character Recognition (OCR). OCR sendiri digunakan untuk mengenali teks hasil cetakan mesin (Machine-Printed Text). OCR dipatenkan pada tahun 1929 di Jerman oleh Gustav Tauschek. Pada saat itu, diterapkan pada mesin yang menggunakan alat optik (sekarang ini umumnya kita menggunakan alat optik berupa scanner). Saat ini konsep dasar dari OCR banyak digunakan di beberapa aplikasi pengenalan teks. Berikut ilustrasi dari proses OCR: Gambar 2.1 Proses pada OCR (Tri, 2007, p5) 8 Prinsip kerja dari aplikasi OCR adalah sebagai berikut. 1. Memasukkan dokumen berisi teks (teks cetakan mesin) ke dalam alat optik (scanner) sehingga didapat sebuah file citra. 2. File citra tersebut diproses menggunakan perangkat lunak aplikasi pengenalan teks, di mana perangkat ini melakukan proses pengenalan terhadap karakter-karakter yang ada pada file citra tersebut. 3. Keluaran dari perangkat lunak aplikasi pengenalan teks ini berupa file teks yang berisi karakter-karakter yang telah dikenali dan siap untuk diolah lebih lanjut. Oleh karena itu, tingkat keberhasilan dari perangkat lunak aplikasi pengenalan teks ini sangat bergantung dari sejumlah faktor berikut. 1. Kualitas gambar teks yang ada pada dokumen yang dibaca serta tingkat kompleksitasnya (ukuran, format teks, warna, latar belakang). 2. Kualitas alat optik yang dipakai (scanner). 3. Kualitas perangkat lunak aplikasi pengenalan teks itu sendiri. Dalam penelitian mengenai pengenalan teks digunakan beberapa pendekatan, yaitu: 1. Pendekatan statistik (statistical approach) 2. Pendekatan sintaktik (syntactic approach) 9 3. Pendekatan neural network, dan 4. Pendekatan fuzzy logic 2.2 Konsep Dasar Citra Digital “Citra” menurut kamus webster adalah suatu representasi, kemiripan, atau imitasi dari suatu objek atau benda. Sedangkan pada pengolahan citra digital, istilah “citra” merupakan representasi dari fungsi dua dimensi citra, dinyatakan juga sebagai fungsi kontinu dari intensitas cahaya dalam bidang dua dimensi f(x,y). Nilai x dan y merupakan titik koordinat bidang citra yang masing-masing mewakili elemen terkecil dalam citra yang disebut sebagai pixel. Citra digital terdiri dari jumlah pixel per baris dan jumlah pixel per kolom yang terbatas. 2.2.1 Pixel Pixel kependekan picture element, merupakan komponen terkecil yang menyusun sebuah citra bitmap. Setiap pixel menyimpan berbagai informasi, yaitu informasi berupa warna dan letak/posisi pixel tersebut pada citra. Dari pixel inilah kualitas sebuah citra dapat ditentukan. Makin besar jumlah pixel tiap satuan panjang berarti makin tinggi tingkat resolusi citra tersebut, maka kualitas citra yang dihasilkan semakin baik. 10 A. Kedalaman Warna Kedalaman warna (color depth) menentukan keanekaragaman warna dari sebuah pixel. Makin besar nilai kedalaman warna, makin banyak pula variasi warna yang terkandung dalam setiap pixel warna. Perhitungan mengenai kedalaman warna adalah sebagai berikut. 1 bit = 21 = 2 warna = 0 dan 1 (hitam dan putih) 8 bit = 28 = 256 warna 16 bit = 216 = 65536 warna (high color) 24 bit = 224 = 16.7 juta warna (true color) Pada kedalaman warna 24 bit disebut true color karena mendekati warna sebenarnya. Kedalaman warna 24 bit sendiri dimiliki oleh citra dengan format bitmap (.bmp). B. Posisi Pixel Posisi pixel pada sebuah citra dinyatakan dengan nilai m dan n, dimana nilai ini mewakili koordinat bidang dua dimensi (x, y), seperti dinyatakan di bawah ini. m = baris 0 ≤ x ≤ m-1 n = kolom 0 ≤ y ≤ n-1 11 Pada layar monitor nilai x mewakili nilai kolom sedangkan nilai y mewakili nilai baris, seperti terlihat pada gambar di bawah ini. f(0,0) f(0,1) f(0,2) .. f(0, m-1) f(1,0) f(1,1) f(1,2) .. f(1, m-1) : : : : : : : : : : f(n-1, 0) f(n-1, 1) f(n-1, 2) .. f(n-1, m-1) Gambar 2.2 Posisi pixel pada layar (http://idhaclassroom.com/download/pengolahan-citra/Pengolahan%20Citra.pdf) 2.2.2 Konektivitas Konektivitas merupakan hubungan tetangga dari sebuah pixel terhadap pixel yang lain. Konektivitas digunakan untuk menciptakan batas-batas dari komponenkomponen yang tersusun dalam sebuah citra. Dua pixel dikatakan memiliki konektivitas jika letaknya berdekatan dan memiliki skala warna yang memenuhi batas toleransi. Menurut Gonzales dan Woods (1992, p40), ada dua jenis konektivitas yang digunakan pada citra dua dimensi. 12 a. 4-Konektivitas Dua buah pixel dikatakan memiliki hubungan 4-konektivitas jika mereka terletak berdampingan secara horizontal dan vertikal N4(P). Kumpulan dari pixel-pixel ini disebut dengan 4 neighbours of P. P(x, y-1) P (x-1, y) P (x,y) P(x+1, y) P(x, y+1) b. 8-Konektivitas Dua buah pixel dikatakan memiliki hubungan 8-konektivitas jika mereka terletak berdampingan secara horizontal dan vertikal N8(P) atau disebut juga empat diagonal neighbours. P (x-1, y-1) P(x, y-1) P (x+1, y-1) P (x-1, y) P (x,y) P(x+1, y) P (x-1, y+1) P(x, y+1) P (x+1, y+1) 2.3 Pengolahan Citra Digital Pengolahan citra merupakan kegiatan memperbaharui citra sehingga mudah diinterpretasi oleh manusia/mesin. Teknik yang digunakan dalam pengolahan citra antara lain grayscaling, thresholding, filtering, segmentation, dan stretching. 13 2.3.1 Grayscaling Untuk memudahkan pekerjaan-pekerjaan pada proses selanjutnya dalam pengolahan citra, pada tahap pertama dilakukan proses grayscaling. Proses ini mengubah citra dengan warna yang beragam menjadi citra 8 bit keabuan. Persamaan yang digunakan adalah: di mana : R = Nilai intensitas komponen warna merah G = Nilai intensitas komponen warna hijau B = Nilai intensitas komponen warna biru Proses ini dilakukan dengan melakukan perulangan setiap pixel warna yang memiliki tiga komponen warna (RGB). Dengan persamaan di atas maka di dapatkan suatu warna baru yang memiliki satu komponen warna dengan intensitas antara 0 sampai 255 (hal ini disebabkan karena citra bernilai 8 bit sehingga terdapat 28 warna atau 256 warna). 2.3.2 Thresholding Thresholding merupakan metode yang paling sederhana dalam melakukan segmentasi citra. Proses ini digunakan untuk memisahkan nilai-nilai intensitas yang 14 ada pada setiap pixel menjadi 0 dan 1. Jika nilai pada pixel P berada di bawah nilai threshold yang telah ditentukan maka nilai pixel P diubah menjadi 0, sedangkan jika nilainya lebih tinggi dari nilai threshold yang telah ditentukan maka nilai pixel P tersebut diubah menjadi 1. Nilai threshold pada umumnya digunakan 127,5 (127 atau 128). Akan tetapi, karena banyaknya jenis aplikasi pengolahan citra, nilai threshold dapat diubah-ubah sesuai kebutuhan. Gambar 2.3 Citra Sebelum Thresholding Gambar 2.4 Citra Sesudah Thresholding 2.3.3 Filtering Teknik filtering digunakan untuk menghilangkan noise pada citra. Noise dapat diartikan sebagai kotoran berupa pixel-pixel yang tidak diinginkan pada sebuah citra. Ada banyak cara yang digunakan dalam reduksi noise, salah satunya adalah pepper and salt noise removal. 15 Pepper and salt noise removal digunakan untuk membuang noise berwarna hitam (pepper noise) ataupun noise berwarna putih (salt noise). Noise pada citra dapat dikenali dengan mencari pixel yang memiliki warna yang berbeda dengan warna pixel sekelilingnya. Jika sebuah pixel dikenali sebagai noise, maka penghilangan noise dilakukan dengan mengganti warna pixel tersebut dengan warna pixel sekelilingnya. Gambar 2.5 Citra Sebelum Filtering Gambar 2.6 Citra Sesudah Filtering 2.3.4 Segmentation Proses segmentation pada pengenalan teks digunakan untuk memisahkan karakter-karakter pada citra, sehingga karakter yang telah dipisahkan dapat diolah secara tersendiri. Salah satu cara yang digunakan pada proses segmentation adalah dengan melakukan scanning secara vertikal dan horizontal. Cara tersebut dilakukan dengan melakukan pencarian secara sekuensial pixel-pixel hitam yang terletak berbatasan dengan pixel putih. Pencarian tersebut digunakan untuk mencari batas kiri, kanan, atas, dan bawah masing-masing segmen. Hasil pencarian tersebut 16 digunakan sebagai informasi letak karakter pada citra. Proses segmentation ini bertujuan agar setiap pekerjaan yang akan dilakukan dibatasi hanya pada segmen itu saja. Gambar 2.7 Citra Sebelum Segementation Gambar 2.8 Citra Sesudah Segmentation Cara lain yang digunakan pada proses segmentation adalah dengan metode connected component labeling. Metode ini bertujuan untuk membagi karakter berdasarkan pixel hitam yang saling terhubung. Penggunaan metode ini dalam proses segmentation dinamakan labeling. Sedangkan, algoritma yang digunakan pada proses ini adalah algoritma iteratif. Dalam menjalankan proses labeling dengan algoritma iteratif, pada tahap pertama, proses ini dilakukan dengan memberi label semua pixel hitam pada citra. Pada tahap kedua, proses ini dilakukan dengan mengganti nilai label setiap pixel hitam yang berdekatan satu dengan lainnya. Penggantian nilai label tersebut dilakukan dengan mengganti nilai label pixel hitam dengan nilai label pixel hitam sekelilingnya yang lebih kecil. Sedangkan pada tahap ketiga, penggantian nilai label 17 dilakukan dengan perulangan ke arah yang berlawanan. Proses ini dilakukan berkalikali sehingga pixel-pixel hitam yang berdekatan memiliki nilai label yang sama. Gambar 2.9 Citra Sesudah Labeling Gambar 2.10 Citra Sesudah Labeling 2.3.5 Stretching Proses streching berarti proses untuk menyesuaikan ukuran citra asli menjadi citra dengan ukuran yang diharapkan. Proses ini akan menghasilkan citra baru yang lebih besar ataupun lebih kecil yang memiliki struktur pewarnaan yang serupa dengan citra asli. Pada pengenalan teks, proses streching disesuaikan dengan aspek rasio yang ada. Aspek rasio itu sendiri dapat diartikan sebagai perbandingan lebar dan panjang suatu citra. Hal ini berarti, aspek rasio pada citra yang belum melewati proses streching sama dengan aspek rasio pada citra yang sudah melewati proses streching. Rumus pengukuran aspek rasio adalah sebagai berikut: Aspek Rasio = Lebar/Panjang 18 Istilah yang digunakan untuk menyebut nilai aspek rasio yang lebih besar dari 1 (satu) adalah “landscape”. Sedangkan untuk aspek rasio yang lebih kecil dari 1 (satu) adalah “portrait”. Hal ini diperlihatkan pada gambar dibawah ini. Gambar 2.11 Proses Stretching dengan Aspek Rasio = 1 (http://www.efg2.com/Lab/ImageProcessing/AspectRatio.htm) 2.4 Anatomi Teks Suatu teks memiliki penamaan tersendiri terhadap bagian-bagian yang ada. Berikut penamaan anatomi teks. Gambar 2.12 Anatomi Teks Keterangan: 1. Huruf yang memiliki ascender saja (T) 2. Huruf yang memiliki descender saja (g) 3. Huruf yang memiliki ascender dan descender (j) 4. Huruf yang tidak memiliki ascender dan descender (a) 19 2.5 Fuzzy Logic 2.5.1 Konsep Dasar Fuzzy logic merupakan suatu metode yang digunakan dalam proses pengambilan keputusan dengan cara memetakan suatu ruang input ke dalam ruang output. Sistem ini diperkenalkan pertama kali oleh Prof. Lotfi Zadeh dari Universitas California, Barkeley tahun 1962, dimana pada saat itu boolean logic hanya mengenal dua keadaan yaitu : ya/tidak, ON/OFF, High/Low atau hanya mempunyai logika 0 dan 1 saja. Sedangkan kondisi nyata di alam ini bukan hanya ya (1, high, on) atau tidak (0, low, off) tetapi seluruh kemungkinan diantara 0 dan 1, sehingga untuk mengenal kondisi ini kita tidak dapat menggunakan boolean logic tetapi dengan menggunakan fuzzy logic. Perbedaan antara boolean logic dan fuzzy logic dapat kita lihat pada ilustrasi berikut: Gambar 2.13 Boolean Logic (Sri dan Hari, 2004, p4) 20 Gambar 2.14 Fuzzy Logic (Sri dan Hari, 2004, p5) Tampak bahwa sistem fuzzy memberikan kemungkinan bagi suatu variabel memiliki nilai keanggotaan dengan rentang 0 ≤ x ≤ 1. Dengan rentang nilai yang luas, sistem fuzzy dapat digunakan untuk membuat sebuah sistem dengan ketelitian yang tinggi. 2.5.2 Proses Sistem Fuzzy Pada sistem fuzzy terdapat tiga proses sebagai berikut. 1. Fuzzification Proses ini berfungsi untuk mengubah masukan-masukan berupa nilai analog atau yang nilai kebenarannya bersifat pasti (crisp input) menjadi nilai fuzzy, yang digunakan sebagai fuzzy input. Fuzzy input ini berupa nilai linguistic yang semantiknya ditentukan berdasarkan fungsi keanggotaan tertentu. Jika terdapat suatu nilai analog yang menjadi input pada proses fuzzy maka input tersebut dimasukkan pada batas scope/domain sehingga didapatkan suatu nilai fungsi keanggotaan. Nilai fungsi keanggotaan inilah yang menentukan proses pengambilan keputusan selanjutnya. 21 Salah satu metode yang digunakan oleh proses ini dalam pengenalan teks adalah feature extraction. Metode ini digunakan untuk mendapatkan karakteristik dari suatu citra dengan melihat bentuk dasar objek pada citra tersebut. Tujuan metode ini adalah untuk melakukan pengukuran terhadap hal-hal yang membedakan pola masukkan sehingga objek pada citra yang satu dan yang lain dapat dibedakan. 2. Rule Evaluation Proses ini digunakan untuk mencari nilai fuzzy output dari fuzzy input. Jika terdapat suatu nilai fuzzy input dari proses fuzzification nilai tersebut akan dimasukkan ke dalam rule yang telah dibuat untuk mendapatkan nilai fuzzy output. Pada proses inilah suatu sistem dapat dikatakan pintar atau tidak. Jika rule yang dibuat tidak pintar maka sistem yang dikontrol menjadi kacau dan objek yang seharusnya dikenali menjadi tidak dapat dibaca. Dengan rule yang ada diperoleh nilai fuzzy yang digunakan dalam membantu pengambilan keputusan. 3. Defuzzification Pada tahap inilah pengambilan keputusan dilakukan. Nilai yang didapatkan berupa nilai crisp, yaitu 0 atau 1. Proses defuzzification melakukan suatu fungsi output yang memproses nilai fuzzy yang berasal dari rule evaluation sehingga keputusan akhir dapat dilakukan. Fungsi output ini dilakukan dengan mencocokan nilai-nilai yang ada dengan threshold yang ditentukan. 22 Sebuah input pada proses fuzzy akan diterima sebagai anggota himpunan fuzzy jika memiliki nilai keanggotaan yang melewati batas threshold yang ada. 2.5.3 Fungsi Keanggotaan Gauss Fungsi keanggotaan (membership function) merupakan suatu fungsi yang digunakan untuk merepresentasikan titik-titik input data ke dalam nilai keanggotaan. Nilai keanggotaan yang dihasilkan memiliki interval antara 0 sampai 1. Untuk lebih jelasnya dapat dilihat pada gambar dibawah ini. Gambar 2.15 Derajat Keanggotaan (http://www.caspur.it/risorse/softappl/doc/matlab_help/toolbox/fuzzy/fuzzytu3.html) Pada gambar di atas, dapat dilihat kurva hasil representasi titik-titik yang menunjukkan nilai keanggotaan dari suatu himpunan (tinggi badan manusia). Pada gambar kurva sebelah kiri, representasi titik-titik nilai keanggotaan berasal dari aturan himpunan tegas (crisp). Kurva yang dihasilkan dari aturan tersebut adalah sharp-edged membership function. Sedangkan pada kurva sebelah kanan, representasi titik-titik nilai keanggotaan berasal dari aturan himpunan fuzzy. Kurva yang dihasilkan dari aturan tersebut adalah continuous membership function. 23 Terdapat beberapa fungsi keanggotaan yang biasa digunakan, antara lain: representasi linear, representasi kurva segitiga, representasi kurva trapesium, representasi kurva bentuk bahu, representasi kurva-S, representasi kurva bentuk lonceng (bell-shaped curve) yang terdiri atas 3 kelas (kurva pi, kurva beta, kurva gauss), dan koordinat keanggotaan. Salah satu fungsi di atas yang digunakan pada proses pengenalan teks adalah fungsi keanggotaan gauss (gaussian membership function). Fungsi ini melibatkan nilai rata-rata (mean) dan nilai variasi (variance). Nilai mean mewakili nilai keanggotaan penuh dari suatu himpunan, hal ini berarti karakteristik objek yang satu dengan dengan objek pembanding adalah 100% sama. Sedangkan nilai variance mewakili nilai jangkauan keanggotaan. Semakin kecil variance berarti semakin kecil toleransi perbedaan karakteristik dari objek yang satu dengan objek pembanding, begitu pula sebaliknya. Jika nilai perbedaan tersebut melebihi jangkauan nilai variance maka nilai keanggotaan yang dihasilkan pada objek yang dibandingkan menjadi lebih kecil. Rumus yang digunakan pada fungsi keanggotaan gauss adalah sebagai berikut. Berikut adalah gambar representasi kurva Gauss: 24 Gambar 2.16 Kurva Gauss (http://www.caspur.it/risorse/softappl/doc/matlab_help/toolbox/fuzzy/fuzzytu3.html) 2.6 Pendekatan Fuzzy Logic pada Pengenalan Teks Pendekatan fuzzy logic merupakan salah satu cara pendekatan yang digunakan dalam pengenalan pola. Pada pendekatan ini digunakan metode pemisahan karakter menjadi daerah-daerah kecil yang disebut box-method. Hal ini terlihat seperti yang terlihat pada gambar berikut. Gambar 2.17 Box-Method 25 Dari box hasil pembagian tersebut akan didapatkan suatu nilai yang digunakan sebagai nilai input fungsi keanggotaan pada proses fuzzy. Nilai-nilai yang didapatkan berasal dari nilai koordinat pixel terdapat warna hitam (i, j), dimana pada pojok kiri atas masing-masing box memiliki koordinat pixel (0,0). Nilai vector distance masing-masing pixel diperoleh dengan rumus: Nilai vector distance tersebut kemudian dihitung sebagai normalisasi dari total semua pixel masing-masing box dengan rumus: Adapun n merupakan jumlah pixel dalam box dan b merupakan nomor box. Nilai ini digunakan sebagai nilai fungsi keanggotaan pada sistem fuzzy. Dalam sistem fuzzy, dihitung nilai mean (m) dan variance ( ) menggunakan rumus: Dimana Ni adalah jumlah sampel dalam cluster ke-i dan fij merupakan nilai fungsi keanggotaan dari masing-masing box dengan karakter ke-j. 26 Setelah didapatkan nilai mean dan variance, maka nilai tersebut dapat dibandingkan dengan nilai fungsi keanggotaan masing-masing box yang dicari dengan rumus: Fungsi keanggotaan (μxi) ini menyatakan tingkat kesesuaian pola antara karakter yang akan dikenali dengan knowledge base yang ada. Dimana x merupakan nilai fungsi keanggotaan dari karakter yang tidak diketahui. Pada library dengan jumlah yang terbatas, proses fuzzy kurang bekerja dengan baik. Hal ini disebabkan karena beberapa aturan fuzzy memiliki nilai variance yang terlalu kecil dan juga nilai variance yang terlalu besar. Untuk menanggulangi hal ini, fungsi keanggotaan tersebut dibagi menjadi dua persamaan berbeda, dengan rumus: untuk untuk Selanjutnya dicari nilai μxi masing-masing karakter dengan mencari nilai ratarata semua box, dengan rumus: Adapun c berarti jumlah total semua box dan r = merupakan penomoran karakter-karakter yang ada pada knowledge base. 27 Sebuah karakter dapat dikenali dengan mencari nilai μav(r) yang paling besar atau mendekati angka 1 (satu). 2.7 Borland Delphi Bahasa pemrograman Borland Delphi merupakan salah satu bahasa pemrograman cukup banyak digunakan dalam pembuatan aplikasi visual. Bahasa pemrograman ini juga memberikan fasilitas-fasilitas yang pendukung proses pembuatan program pengenalan teks. Berikut beberapa komponen yang terdapat dalam Borland Delphi: Objek • TForm : Komponen berupa tempat meletakkan objek dan melakukan semua pekerjaan dari objek yang ada. • TBitmap : Komponen citra. • TColor : Komponen warna. • TRec : Komponen berupa area berbentuk segi empat. Fungsi pada Pengolahan Citra • Pixel : Posisi pixel pada citra. • RGB : Komponen warna pada citra yang berasal dari tiga unsur warna dasar R=Red, G=Green, B=Blue. • CanvasStretchDraw : Fungsi untuk merentangkan citra pada sebuah citra baru dalam jangkauan area yang disediakan. 28 Fungsi Matematika • Mod : Fungsi untuk mendapatkan sisa bagi. • Max : Fungsi pengambilan nilai maksimum dari dua buah bilangan. • Min : Fungsi pengambilan nilai minimum dari dua buah bilangan. • Exp : Fungsi pemangkatan oleh bilangan euler. • Sum : Fungsi penjumlahan semua data pada array. • Mean : Fungsi rata-rata semua data pada array. • TotalVariance : Fungsi jumlah perbedaan data yang diminta dengan data dalam array.