Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
30
BAB IV SISTEM REKOGNISI KARAKTER NUMERIK MENGGUNAKAN ALGORITMA PERCEPTRON
4.1 Gambaran Umum Sistem
Diagram sederhana dari program yang dibangun dapat diilustrasikan dalam diagram konteks berikut.
Gambar 4.1 Diagram Konteks Sistem
Dari diagram konteks tampak bahwa program yang dibangun terdiri atas sistem identifikasi dan satu entitas luar, yaitu user. User memasukkan citra berisi karakter
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
31
numerik dan menghasilkan keluaran berupa karakter angka yang dikenali/tidak dikenali. User juga memiliki peran sebagai pengendali keseluruhan sistem.
Gambar 4.2 Gambaran Keseluruhan Sistem
Sistem yang dibangun terdiri dari beberapa subsistem yang saling terkait satu sama lain seperti tampak dalam Gambar 4.2 di atas. Melalui user interface, user memasukkan citra yang akan diuji berupa citra diam dua dimensi. Selanjutnya citra input mengalami pengkonversian ke dalam gray-scale. Terhadap citra gray-scale tersebut kemudian dilakukan proses thresholding dengan nilai ambang 200 sehingga dihasilkan citra biner yang hanya terdiri dari warna hitam dan putih saja. Citra hitamputih ini kemudian diteruskan ke dalam blok processing. Di sini, citra tersebut mengalami segmentasi baris (line segmentation) sehingga didapatkan nilai batas baris atas (top line) dan baris bawah (bottom line) yang memuat karakter yang akan
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
32
dideteksi. Setelah didapatkan nilai baris atas dan bawah, maka dilakukan segmentasi vertikal dan horizontal untuk tiap karakter yang terdapat di antara kedua nilai ini. Selanjutnya dilakukan tahap ekstraksi terhadap masing-masing karakter hasil segmentasi, sehingga didapatkan data pola untuk masing-masing karakter. Proses ekstraksi dilakukan dengan cara mengambil nilai pixel pada posisi tertentu yang dianggap mewakili nilai pixel-pixel tetangganya. Data pola yang dihasilkan dari proses ekstraksi ini kemudian dikonversikan ke desimal dan menjadi pola pelatihan pada proses rekognisi. Hasil rekognisilah yang akan mengenali apakah karakter dikenali atau tidak. Proses rekognisi dilakukan dengan menyocokkan karakter yang dikenali dengan karakter yang terdapat di dalam data base. Untuk lebih jelasnya, keseluruhan proses di atas dapat diilustrasikan dalam data flow diagram level 0 pada halaman berikutnya.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
USER
1 Citra Angka
2 Preprocessing
3 Image Processing
6 Hasil
33
5 Rekognisi
Gambar 4.3 DFD Level 0 Sistem
Data Base
4. Perceptron
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
34
DFD level 0 tersebut dapat diuraikan secara lebih rinci dalam blok struktur seperti Gambar 4.4 di bawah ini.
Gambar 4.4 Blok Struktur Sistem Rekognisi Karakter Numerik
4.2 Pengolahan Citra
4.2.1 Preprocessing Seperti yang telah dijelaskan di atas, pada proses pre-processing dilakukan binarisasi terhadap citra masukan dengan menggunakan nilai ambang 200. Tentunya sebelum dilakukan binarisasi, citra masukan telah dikonversi ke dalam bentuk gray-scale dengan menggunakan formula berikut [8]: Grayscale = α R + β G + γ B
(Persamaan 4.1)
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
35
Melalui proses gray-scale ini warna citra diproses dengan cara merata-ratakan warna primer (red, green, blue) sehingga menjadi citra hitam-putih dengan intensitas 0 hingga 255 (hitam hingga putih). Nilai bobot yang digunakan pada proses gray-scale tersebut adalah α = 0.299, β = 0.587, dan γ = 0.114. Proses gray-scale bertujuan untuk menyederhanakan tampilan dan komponen-komponen warna pembentuk citra masukan sehingga proses selanjutnya dapat dilakukan dengan mudah. Setelah melewati tahap preprocessing, citra mengalami proses binarisasi yaitu pengkonversian citra masukan sehingga citra tersebut hanya terdiri dari dua warna yaitu hitam (0) dan putih (1). Pada binarisasi ini dilakukan thresholding atau penyeleksian berdasarkan nilai ambang. Jadi, apabila nilai gray-scale per pixel lebih kecil dari 200, maka citra hasil binarisasinya bernilai 0 (hitam). Sebaliknya, jika nilainya lebih besar dari 200, maka citra tersebut bernilai 1 (putih). Hasil dari proses binarisasi dapat dilihat dari Gambar 4.5 berikut.
(a)
(b)
Gambar 4.5 (a) Citra Masukan (Atas) dan (b) Citra Hasil Binarisasi
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
36
4.2.2 Segmentasi
Gambar 4.6 Segmentasi Baris dan Karakter
Segmentasi bertujuan untuk memisahkan tiap karakter dari baris teks. Untuk mendapatkan masing-masing karakter dari teks ini dilakukan dua kali segmentasi, segmentasi baris dan karakter. Dari segmentasi baris dihasilkan nilai batas baris atas dan bawah yang memuat karakter yang akan dideteksi. Setelah didapatkan nilai baris atas dan bawah, maka dilakukan segmentasi untuk tiap karakter yang terdapat di antara kedua nilai ini. Untuk melakukan segmentasi per karakter juga dilakukan dua kali segmentasi, yaitu segmentasi karakter secara vertikal dan horizontal. Dari proses segmentasi secara vertikal didapatkan batas kanan dan kiri karakter, sedangkan dari segmentasi horizontal dihasilkan batas atas dan bawah karakter. Untuk lebih jelasnya, dapat dilihat Gambar 4.5 di atas.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
37
Algoritma yang digunakan dalam segmentasi baris adalah sebagai berikut: 1. Segmentasi dimulai dari pixel x dan y pertama dari citra biner(0,0). 2. Scan tiap pixel di sepanjang sumbu x sampai lebar citra biner dalam y yang sama. a. Jika terdeteksi pixel hitam, maka simpan y sebagai batas_atas_baris. b. Jika tidak, lanjutkan ke pixel berikutnya. c. Jika tidak ada pixel hitam yang terdeteksi, maka perbesar nilai y dan set ulang nilai x untuk melakukan scanning baris horizontal berikutnya. 3. Dimulai dari batas atas pertama yang terdeteksi dan pixel pertama di sepanjang sumbu x (0, batas_atas_baris). 4. Scan tiap pixel di sepanjang sumbu x sampai lebar citra biner dalam y yang sama. a. Jika tidak ada pixel hitam yang terdeteksi, simpan y-1 sebagai batas_bawah_baris. Perbesar nilai y dan scan baris horizontal berikutnya. b. Jika terdeteksi pixel hitam, perbesar nilai y dan set ulang nilai x. 5. Jika pixel hitam terakhir dari citra biner di sepanjang lebar citra telah terdeteksi, maka segmentasi garis dihentikan.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
38
Algoritma yang digunakan dalam segmentasi karakter adalah: 1. Dimulai dari batas atas baris dan pixel pertama di sepanjang sumbu x (0, batas_atas_baris). 2. Scan tiap pixel sepanjang sumbu x sampai lebar citra biner dalam y yang sama. a. Jika terdeteksi pixel hitam, simpan nilai y sebagai batas_atas_karakter pertama. b. Jika tidak ada pixel hitam yang terdeteksi, maka lanjutkan ke pixel berikutnya. 3. Dimulai dari batas atas karakter yang terdeteksi dan
pixel pertama di
sepanjang sumbu x (0, batas_atas_karakter). 4. Scan tiap pixel di sepanjang sumbu y sampai batas_bawah_baris untuk nilai x yang sama. a. Jika terdeteksi pixel hitam, simpan x sebagai batas_kiri_karakter. b. Jika tidak, lanjutkan ke pixel berikutnya. c. Jika tidak ada pixel hitam yang terdeteksi, perbesar nilai x dan set ulang y untuk melakukan scan pada baris vertikal berikutnya. 5. Dimulai dari batas_kiri_karakter yang terdeteksi dan batas_atas_baris, pixel(batas_kiri_karakter, batas_atas_baris). 6. Scan setiap pixel di sepanjang sumbu y sampai lebar citra biner untuk nilai x yang sama.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
39
a. Jika tidak ada pixel hitam yang terdeteksi, simpan x-1 sebagai batas_kanan_karakter. b. Jika terdeteksi pixel hitam, maka perbesar nilai y dan set ulang nilai x untuk melakukan scan pada baris vertikal berikutnya. 7. Dimulai
dari
batas_bawah_baris
dan
batas_kiri_karakter,
pixel(batas_kiri_karakter, batas_bawah_baris). 8. Scan sampai batas_kanan_karakter untuk nilai y yang sama. a. Jika terdeteksi pixel hitam, simpan y sebagai batas_bawah_karakter. b. Jika tidak ada pixel hitam yang terdeteksi, perkecil nilai y dan set ulang nilai x untuk melakukan scan baris vertikal berikutnya. 9. Lakukan segmentasi hingga seluruh karakter terdeteksi. Hasil dari penerapan algoritma segmentasi baris dan karakter dapat dilihat pada Gambar 4.7 di bawah ini.
Gambar 4.7 Hasil Proses Segmentasi
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
40
4.3 Ekstraksi dan Rekognisi Menggunakan Algoritma Perceptron
Gambar 4.8 Hasil Proses Ekstraksi dari Citra Input untuk Angka 0
Proses ekstraksi bertujuan untuk menangkap ciri tertentu dari citra input. Di dalam sistem rekognisi karakter numerik yang dibangun dalam tugas akhir ini, proses tersebut bertujuan untuk menangkap pola data dan menyimpannya dalam array. Sebagai contoh dapat dilihat pada Gambar 4.8 di atas yang merupakan hasil ekstraksi dari citra karakter hasil segmentasi. Data yang mewakili pola diberi nilai 1 sedangkan nilai 0 menunjukkan latar belakang. (background). Tahap ekstraksi dikenakan terhadap masing-masing karakter hasil segmentasi, sehingga didapatkan data pola untuk masing-masing karakter. Proses ekstraksi dilakukan dengan cara mengambil nilai pixel pada posisi tertentu yang dianggap mewakili nilai pixel-pixel tetangganya. Posisi-posisi tersebut didapat dengan cara membagi lebar karakter dengan faktor 10 dan tinggi karakter dengan pembagi 14.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
41
Nilai pixel yang diambil berjumlah 10 x 14 pixel. Data pola yang dihasilkan dari proses ekstraksi ini kemudian dikonversikan ke desimal dan menjadi pola pelatihan pada proses rekognisi. Algoritma yang digunakan dalam proses ekstraksi di atas adalah: 1. Hitung lebar dan tinggi citra karakter. 2. Bagi lebar citra karakter dengan pembagi 10 dan tinggi dengan faktor 14. 3. Untuk lebar karakter. a. Petakan pixel pertama (0,y) dan terakhir (lebar,y) ke posisi pertama (0,y) dan terakhir (10,y) pola karakter. b. Cari posisi tiap pixel yang akan diambil disepanjang sumbu x. Posisi tersebut didapat dengan cara menambahkan posisi awal dengan bilangan bulat yang didapat dari hasil langkah 2. c. Posisi kelima dapat dicari dengan menambahkan posisi pixel sebelumnya dengan bilangan bulat hasil langkah 2 dan ditambah dengan sisa pembagian lebar. 4. Untuk tinggi karakter. a. Petakan pixel pertama (x,0) dan terakhir (x,tinggi) ke posisi pertama (x,0) dan terakhir (y,14) pola karakter.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
42
b. Cari posisi tiap pixel yang akan diambil disepanjang sumbu y. Posisi tersebut didapat dengan cara menambahkan posisi awal dengan bilangan bulat yang didapat dari hasil langkah 2. c. Posisi ke tujuh dapat dicari dengan menambahkan posisi pixel sebelumnya dengan bilangan bulat hasil langkah 2 dan ditambah dengan sisa pembagian tinggi. d. Scan tiap sumbu x di sepanjang y yang sama. Jika pixel bernilai 1, maka
konversikan
nilai
tersebut
ke
desimal
dengan
cara
mengalikannya dengan 29-indeks. e. Jumlahkan nilai di tiap tinggi dan bagi dengan 29+1. f. Simpan nilai baru hasil pembagian ke dalam array. Nilai ini akan digunakan sebagai pola pelatihan jaringan Perceptron pada proses rekognisi. Setelah proses ekstraksi selesai, dilakukan proses rekognisi untuk mengetahui apakah karakter tersebut dikenali atau tidak. Proses rekognisi dibagi ke dalam dua bagian yaitu pelatihan dan pengujian. Apabila jaringan yang akan digunakan telah dirancang, maka hal pertama yang dilakukan dalam proses pelatihan jaringan adalah mempersiapkan parameter-parameter pendukung.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
43
Parameter-parameter tersebut antara lain: 1. Jumlah data pola yang hilang pada proses ekstraksi. 2. Berapakah nilai-nilai yang sesuai untuk laju pembelajaran. 3. Berapa epoch atau jumlah iterasi yang dibutuhkan untuk mengenali pola input. 4. Berapa nilai error ambang yang diinginkan. Nilai error ambang ini akan menentukan tingkat akurasi dari sistem yang dibangun. Arsitektur jaringan perceptron yang digunakan dapat dilihat dari Gambar 4.9 berikut.
Gambar 4.9 Arsitektur Perceptron yang Digunakan
Jaringan terdiri 14 unit input, bias, dan 4 unit output. Nilai bobot dan bias didapat secara acak pada range (-0.5, 0.5). Algoritma pelatihan jaringan pada proses rekognisi lebih lanjut dapat dilihat pada Bab III dan dapat digambarkan dalam diagram alir berikut ini.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
Gambar 4.10 Diagram Alir Pelatihan
44
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
45
Algoritma yang digunakan dalam proses pengujian lebih sederhana daripada proses pelatihan jaringan. Algoritma tersebut adalah: 1. Masukkan citra yang akan diuji. 2. Olah citra. 3. Untuk tiap karakter: a. Analisa dan konversi karakter ke dalam bentuk array. b. Umpankan array input ke jaringan dan hitung output. c. Tampilkan karakter yang dikenali.
4.4 Post-processing
Tahap terakhir dari keseluruhan sistem rekognisi karakter numerik ini adalah postprocessing. Pada tahap ini dilakukan evaluasi kinerja sistem OCR yang telah dibangun dengan menggunakan ketiga faktor berikut: 1. Recognition rate, yaitu jumlah dari karakter yang berhasil dikenali. 2. Rejection rate, yaitu jumlah dari karakter yang tidak berhasil dikenali. 3. Error rate, yaitu jumlah dari karakter gagal atau error saat dikenali. Misalkan tidak dapat dideteksi oleh sistem karena karakter tersebut rusak pada saat dilakukan pemindaian.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
46
Apabila hasil rekognisi menunjukkan bahwa karakter tersebut tidak berhasil dikenali, maka karakter tersebut dijadikan pola baru dan dimasukkan ke dalam data base pola pelatihan.
4.5 Pengujian dan Analisa Sistem Rekognisi Karakter Numerik Menggunakan Algoritma Perceptron 4.5.1
Pengolahan citra
(a)
(b)
(c)
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
47
(d)
Gambar 4.11 Hasil Pengujian Blok Pengolahan Citra
Gambar 4.11 merupakan hasil pengolahan citra dan pelatihan sistem rekognisi karakter numerik yang telah dibangun. Dari gambar tersebut tampak bahwa karakter pertama pada citra uji berhasil dideteksi meskipun terjadi ketidakakuratan pada masing-masing karakter saat dilakukan proses segmentasi. Gambar (a) menunjukkan bahwa proses binarisasi gagal dilakukan untuk karakter yang berwarna kuning. Akan tetapi, citra uji mampu di konversikan dengan baik ke citra hitam putih meskipun derajat keabuan citra tersebut cukup rendah (perhatikan angka 9 pada Gambar 4.11.b) sehingga proses segmentasi per karakter dapat berjalan dengan baik. Citra input pada Gambar (c) dan (d) berasal dari tulisan tangan yang ditulis diselembar kertas dan dipindai. Kedua input ditulis menggunakan alat tulis yang berbeda, yaitu pena biasa (Gambar (c)) dan spidol (Gambar (d)). Sebagian karakter hasil binarisasi citra input yang ditulis menggunakan pena biasa
mengalami
kerusakan pada saat dilakukan binarisasi sedangkan citra input yang ditulis menggunakan spidol dapat dikonversikan dengan baik tanpa mengalami kerusakan karakter di dalamnya.
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
48
Bagian karakter yang rusak umumnya adalah bagian lekukan, seperti bagian tengah angka 0, dan hal ini terjadi dikarenakan tipisnya lebar garis tarikan karakter. Itulah sebabnya mengapa kualitas hasil binarisasi karakter yang ditulis dengan menggunakan spidol lebih baik dibandingkan hasil binarisasi karakter yang ditulis dengan menggunakan pena biasa. Selain faktor tersebut, intensitas cahaya juga menjadi faktor penyebab rusaknya karakter pada proses binarisasi. Garis horizontal biru pada citra hasil binarisasi merupakan posisi batas atas dan batas bawah teks angka numerik yang dideteksi melalui proses segmentasi baris. Citra karakter yang terdeteksi pada gambar di atas menunjukkan bahwa algoritma segmentasi yang digunakan berhasil melakukan segmentasi baris dan segmentasi vertikal. Apabila diperhatikan lebih rinci, tampak dari citra karakter hasil segmentasi bahwa algoritma segmentasi yang digunakan berhasil mendeteksi pixel hitam pertama dan terakhir pada segmentasi vertikal sehingga nilai pixel yang tidak mewakili pola karakter atau biasa disebut dengan noise dapat direduksi. Meskipun segmentasi vertikal dan horizontal telah berhasil dilakukan dengan baik, segmentasi horizontal terutama dalam mendeteksi pixel hitam terakhir dari karakter yang terdeteksi masih mengalami ketidakakuratan. Pada karakter input hasil tulisan tangan, hal ini disebabkan karena terdapat garis tarikan yang terputus sebagai akibat proses binarisasi (Gambar 4.11.c).
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
4.5.2
49
Rekognisi
Pengujian blok rekognisi bertujuan untuk mengetahui apakah sistem yang telah dibangun berhasil mengenali karakter nol atau tidak. Selain dengan input uji berupa citra yang memuat karakter nol, pengujian juga dilakukan dengan citra input yang tidak memuat kerakter nol. Pengujian secara acak terhadap karakter numerik lain (bukan nol) menunjukkan bahwa umumnya pola uji tidak dikenali sebagai angka 0. Contoh hasil pengujian blok rekognisi dapat dilihat pada Gambar 4.12 dan Tabel 4.1 berikut.
(a)
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
50
(b)
Gambar 4.12 Screenshot Program Sistem Rekognisi Karakter Numerik
Tabel 4.1 di bawah merupakan hasil pengujian sistem rekognisi karakter numerik dengan input uji berupa citra yang memuat angka 0. Angka 1 menunjukkan pola uji dikenali sedangkan angka 0 menunjukkan pola uji tidak dikenali sebagai angka 0. Font yang digunakan sebagai pola pelatihan adalah Arial, Comic San, dan Tahoma dengan tinggi karakter sebesar 72 point. Hasil pengujian menunjukkan, dari 10 pola uji yang diberikan, sistem mampu mengenali 4 pola. Tiga pola merupakan pola yang sama dengan pola pelatihan dan satu pola lainnya pola di luar pola pelatihan (Impact).
Aplikasi Jaringan Saraf Tiruan dalam Rekognisi Karakter Numerik Berbasis Citra
51
Tabel 4.1 Hasil Rekognisi Sistem Rekognisi Karakter Numerik
Uji/Pelatihan
Arial
Comic San
Tahoma
Arial
1
1
1
Book Antiqua
0
0
0
Comic San
1
1
1
Courier
0
0
0
Impact
1
1
1
Joe Hand
0
0
0
MS San Serif
0
0
0
Tahoma
1
1
1
Times New Roman
0
0
0
Tulisan Tangan
0
0
0
Pengujian tersebut gagal disebabkan karena kesalahan pada proses segmentasi terutama pada pendeteksian batas bawah karakter sehingga data pola yang didapat setelah proses ekstraksi menjadi terganggu. Kesalahan ini umumnya terjadi apabila karakter yang terdapat dalam citra uji berupa karakter tunggal.