BAB 3 ANALISIS DAN PERANCANGAN PROGRAM Program aplikasi ini dirancang dengan menggunakan perangkat lunak Microsoft Visual C# 2008 Express Edition. Proses perancangan menggunakan pendekatan Object Oriented Analysis and Design (OOAD) dengan menggunakan notasi Unified Modeling Language (UML) yang mencakup flowchart, use case diagram dan rancangan layar. Proses identifikasi abjad Arab ini menggunakan Transformasi Wavelet untuk melakukan ekstraksi ciri dari citra suatu abjad Arab dan jaringan saraf tiruan jenis Back Propagation untuk melakukan pengenalan pola sampai dengan dikenalinya citra dimaksud. 3.1. Microsoft Visual C# 2008 Express Edition Perancangan program aplikasi ini, menggunakan Microsoft Visual C# 2008 Express Edition. Bahasa pemrograman C# dikembangkan sebagai penerus dari bahasa pemrograman C++, memiliki tingkat penggunaan yang lebih user friendly, lingkungan yang lebih baik, serta pengoperasian yang lebih mudah sehingga membuat bahasa pemrograman C# memiliki berbagai kelebihan bahasa C++, dan dianggap cukup sanggup mengurangi berbagai kelemahan yang dimiliki oleh bahasa C++ tersebut. Sesuai dengan konsep perancangan yang menggunakan pendekatan Object Oriented Analysis and Design (OOAD), maka bahasa pemrograman C# merupakan pilihan yang tepat. Microsoft Visual C# 2008 Express Edition merupakan perangkat lunak yang berorientasi obyek. Selain itu, bahasa pemrograman ini juga merupakan bahasa 48 pemrograman yang cukup sederhana, yang sering digunakan untuk mengembangkan program aplikasi oleh para pembuat program, khususnya para pengembang aplikasi yang berbasiskan pada sistem operasi windows. 3.2. Class Diagram Gambar 3.1 Class Diagram Class diagram di atas, digunakan untuk menggambarkan interaksi yang terjadi antar class. Melalui class diagram di atas, dapat dilihat class yang terdapat pada program aplikasi ini. 49 3.3. Use Case Diagram Gambar 3.2 Use Case Diagram Use case diagram di atas, digunakan untuk menggambarkan interaksi yang terjadi antara pengguna dan program aplikasi. Berdasarkan use case diagram di atas, para pengguna program ini dapat dengan jelas melihat hal-hal yang dapat mereka lakukan terhadap program aplikasi ini. 50 3.4. Sequence Diagram Gambar 3.3 Sequence Diagram Sequence diagram, seperti yang ditunjukkan dalam gambar di atas, digunakan untuk menggambarkan urutan proses dan penukaran pesan yang terjadi oleh sejumlah obyek dalam program aplikasi ini. 51 3.5. State Transition Diagram Gambar 3.4 State Transition Diagram State transition diagram di atas, digunakan untuk menggambarkan sifat ketergantungan sistem dalam program aplikasi ini. 3.6. Flowchart Dalam perancangan program aplikasi ini, penulis menggunakan flowchart (diagram alur) untuk menggambarkan proses yang terjadi pada aplikasi secara keseluruhan. Proses ini digambarkan secara runtun, dari awal proses perancangan, yaitu pengumpulan data, hingga terbentuk jaringan saraf tiruan dari hasil pelatihan data. Adapun simbol-simbol yang sering digunakan pada diagram alur / flowchart adalah sebagai berikut: Proses Berupa pengolahan proses, misal: perhitungan Untuk predefined process 52 Operasi Input / Output Operasi Manual Input Panah, menghubungkan antar komponen dan menunjukkan arah Decision, berupa pertanyaan atau penentuan suatu keputusan Terminal, untuk menandai awal atau akhir program Preparation, untuk inisialisasi suatu nilai Connector, sebagai penghubung dalam satu halaman. Off Page Connector, sebagai penghubung antar halaman. 53 Gambar 3.5 Flowchart Proses Pelatihan Gambar 3.5 di atas menggambarkan diagram alur (flowchart) proses pelatihan yang dimiliki oleh perancangan program aplikasi Arabiabjad. 54 Gambar 3.6 Flowchart Proses Pengenalan Gambar 3.6 menggambarkan diagram alur (flowchart) proses pengenalan yang dimiliki oleh perancangan program aplikasi pengenalan pola abjad Arab ini. 55 3.7. Tampilan Layar Utama Penulis merancang program aplikasi ini menjadi satu layar utama, yang terbagi menjadi beberapa menu, sesuai dengan fungsi-fungsi yang telah diuraikan pada bagian sebelumnya. Gambar 3.7 Tampilan Layar Utama 56 Tampilan layar utama di atas, terbagi menjadi beberapa bagian. Pertama adalah bagian menu, yang terdiri dari menu file dan menu help. Bagian kedua adalah bagian image, ketiga adalah bagian output, keempat adalah bagian button fitur, dan kelima adalah bagian list bar. Adapun rincian fungsi dari masing-masing bagian adalah: Menu. Pada bagian ini terdapat dua menu, yaitu menu file dan menu help. Menu file akan berisi segala sesuatu yang berkaitan dengan file (berkas), yang mana terdiri dari beberapa sub menu, antara lain: load image, difungsikan untuk melakukan load image (memasukkan gambar/citra dari luar program, terutama untuk kepentingan uji); save network, berfungsi untuk menyimpan network yang telah dilatihkan (train); load network, yang fungsinya adalah untuk melakukan load file network (memasukkan berkas jaringan saraf tiruan yang sebelumnya pernah dilatihkan ke dalam program aplikasi ini), dan exit yang berfungsi bilamana pengguna hendak keluar dari program aplikasi. Menu help, akan berisikan dua macam bantuan, yaitu user manual, yang berisikan tata cara pemakaian program aplikasi (petunjuk/pedoman), dan about me yang berisikan keterangan mengenai penulis beserta e-mail miliknya. Image adalah bagian di mana semua citra yang di-load dan diproses akan ditampilkan. Image source akan berisikan citra asli yang di-load pertama kali. Image destination akan berisikan citra yang telah diproses, baik melalui proses pengolahan citra (preprocessing) maupun proses ekstraksi fitur (extraction). Output, akan berisikan semua laporan dari proses yang terjadi pada program aplikasi. 57 Program ini memiliki delapan tombol fitur, yaitu preprocessing, extract, recognize, clear output, add folder, preprocessing folder, training folder, dan reset. Preprocessing berfungsi untuk melakukan pengolahan citra. Jika tombol ini ditekan, akan menampilkan menu threshold option. Extract berfungsi untuk melakukan ekstraksi ciri. Recognize merupakan tombol untuk proses pengujian dari jaringan saraf tiruan. Clear output adalah tombol untuk menghapus laporan yang ditampilkan pada bagian output. Add folder berfungsi untuk melakukan load folder yang berisi image. Preprocessing Folder berfungsi untuk melakukan proses pengolahan citra pada folder yang diperlakukan. Training folder berfungsi untuk melakukan proses pelatihan jaringan saraf tiruan. Reset berfungsi untuk melakukan random network. Gambar 3.8 Menu File Gambar 3.9 Menu Help 58 Gambar 3.10 adalah tampilan dari menu threshold. Pada bagian ini akan berisi dua buah radiobutton, di mana pengguna harus memilih apakah ia ingin menggunakan fasilitas adaptive threshold, ataukah menentukan nilai threshold secara manual. Selain itu, pengguna juga bisa menentukan apakah ia ingin menggunakan filter yang tersedia atau tidak. Tombol proses berfungsi untuk memroses nilai threshold yang telah ditentukan oleh pengguna. Gambar 3.10 Menu Threshold 3.8. Pengumpulan Data Tahap ini merupakan tahap untuk mengumpulkan citra digital abjad Arab yang ditulis tangan secara langsung, baik yang ditulis pada kertas lalu kemudian dimasukkan ke dalam komputer menggunakan perangkat scanner, maupun yang mencoba langsung mencoret beragam abjad Arab di komputer (menggunakan berbagai piranti lunak yang tersedia untuk hal itu, beberapa di antaranya adalah Microsoft Paint, Adobe Photoshop, Corel Draw, dll). Setelah citra suatu abjad Arab diperoleh, berikutnya adalah tahap untuk mengubah citra analognya menjadi citra digital (apabila menggunakan kertas dan scanner). 59 Pada penelitian ini, citra abjad Arab diambil dari 5 orang. Setiap orang diambil citra abjad Arab sebanyak 3 set (5 x 29 abjad Arab, total didapat sekurangnya 435 citra abjad Arab). Dari lima belas set abjad Arab yang diambil, dipilih tiga set citra abjad Arab yang baik. Jadi, total data yang diperoleh adalah 87 citra abjad Arab, dengan rincian 58 citra digunakan dalam proses pelatihan, serta 29 citra digunakan pada proses pengujian. 3.9. Pemrosesan Citra Setelah sebuah citra digital abjad Arab diperoleh, maka citra tersebut siap untuk digunakan pada tahap selanjutnya, yaitu pemrosesan citra. Tahap ini adalah tahap untuk memperbaiki kualitas mutu suatu citra digital. Untuk memperbaikinya, kita harus menghilangkan noise yang terdapat pada citra digital sang abjad Arab yang diproseskan. Proses perbaikan kualitas citra yang dilakukan pada penelitian ini terbagi menjadi dua tahap yaitu: Thresholding Proses thresholding adalah proses untuk mengubah citra grayscale/keabuan menjadi citra dengan dua warna yaitu hitam dan putih (biner). Setiap pixel pada citra akan diambil derajat keabuannya. Derajat keabuan dari sebuah citra dapat diperoleh dengan persamaan berikut: S adalah nilai dari derajat keabuan sebuah pixel, sementara R, G, dan B secara berurutan adalah nilai dari warna merah, hijau dan biru. Pada citra keabuan, nilai 60 dari layer R, G, dan B haruslah sama. Jika semuanya bernilai 0, maka warna yang dihasilkan adalah warna hitam, sementara jika semuanya bernilai 255, maka warna yang dihasilkan adalah warna putih, selain itu jika nilainya berada di antara 0 hingga 255 maka akan menghasilkan warna abu-abu sesuai dengan tingkat gradasinya. Setelah kita memperoleh nilai dari suatu pixel, tahapan dari proses thresholding berikutnya adalah memutuskan apakah pixel tersebut akan dihitamkan atau diputihkan. Untuk menentukan hal ini, kita akan dibantu dengan sebuah nilai, yaitu threshold value. Threshold value adalah sebuah nilai batas pada proses thresholding. Jika nilai derajat keabuan dari suatu pixel lebih rendah daripada threshold value, maka pixel tersebut akan dihitamkan. Akan tetapi, sebaliknya jika nilai dari pixel tersebut lebih tinggi dari nilai threshold value, maka pixel tersebut akan diputihkan. Pada penelitian ini, threshold value dapat ditentukan dengan menggunakan dua cara, yaitu secara manual dan dengan menggunakan metode mean value threshold. Jika user memilih untuk menentukan nilai threshold secara manual, maka ia bisa memasukkan nilai threshold dari 0 sampai 255. Proses penentuan nilai threshold dengan menggunakan metode mean threshold value, bertujuan untuk menentukan nilai ambang berdasarkan rata-rata nilai pixel dari suatu citra. Adapun pseudocode dari proses penentuan nilai ambang dengan metode mean value threshold adalah sebagai berikut: 61 Awal modul luas = panjang_gambar * lebar_gambar; dari nilai y yang ke-0 hingga (lebar_gambar)-1 mulai dari nilai x yang ke-0 hingga (panjang_gambar)-1 mulai salin nilai pixel gambar ke dalam array_penampung selesai selesai dari i yang ke-0 hingga luas-1 mulai nilai=nilai+array_penampung(i) selesai nilai_ambang=nilai/luas Akhir modul Selain itu, pseudocode untuk proses thresholding secara keseluruhan adalah sebagai berikut: Awal modul dari nilai y yang ke-0 hingga (lebar_gambar)-1 mulai dari nilai x yang ke-0 hingga (panjang_gambar)-1 mulai jika nilai pixel citra(x,y) lebih kecil dari nilai_ambang maka ubah nilai pixel citra(x,y) menjadi 0 selain itu ubah nilai pixel citra(x,y) menjadi 255 selesai selesai Akhir modul 62 Proses thresholding ini akan membantu untuk mengurangi noise yang dimiliki oleh suatu citra (yang terkadang dapat mempengaruhi hasil akhirnya secara cukup signifikan). Nilai pixel yang lebih tinggi dari nilai ambang, akan secara otomatis diputihkan, sehingga sebagian noise akan terhapus. Penapisan / Filtering Penapisan atau filtering adalah sebuah proses untuk menentukan nilai dari suatu pixel dengan cara melakukan perhitungan dari nilai intensitas para pixel disekeliling pixel tersebut. Pada penelitian ini, digunakan dua jenis penapisan yaitu: Tapis lolos rendah (Low pass Filter). Filter ini mempunyai tujuan untuk mempertegas bagian dengan frekuensi rendah pada suatu citra. Ia akan melakukan pemerataan tingkat keabuan, sehingga membuat citra terlihat agar kabur kontrasnya. Namun demikian tapis lolos rendah dapat mengurangi sebagian efek noise yang ada pada sebuah citra. Ia akan mengurangi berbagai gangguan yang berbentuk garis tajam. Filter ini umumnya berbentuk matriks mask n x n, di mana n umumnya bernilai tiga atau lima. Tabel 3.1 Mask Low pass Filter 3 x 3 P1 * K P2 * K P3 * K P4 * K P5 * K = C * K P6 * K P7 * K P8 * K P9 * K 63 Tabel 3.2 Mask Low pass Filter 5 x 5 P1 * K P2 * K P3 * K P4 * K P5 * K P6 * K P7 * K P8 * K P9 * K P10 * K P11 * K P12 * K P13 * K = C * K P14 * K P15 * K P16 * K P17 * K P18 * K P19 * K P20 * K P21 * K P22 * K P23 * K P24 * K P25 * K P adalah pixel pada citra yang akan di-filter, sementara C adalah titik tengah dari mask, yang akan diganti nilainya dan K adalah konstanta. Nilai dari konstanta adalah , jadi untuk mask ukuran 3 x 3, nilai konstantanya adalah . Adapun pseudocode dari mask 3 x 3 adalah: Awal modul luas = panjang_gambar * lebar_gambar; dari nilai y yang ke-0 hingga (lebar_gambar)-1 mulai dari nilai x yang ke-0 hingga (panjang_gambar)-1 mulai nilai_pixel(x,y)=nilai_pixel(x-1,y-1) * 1/9 + nilai_pixel(x,y-1) * 1/9 + nilai_pixel(x+1,y-1) * 1/9 + nilai_pixel(x1,y) * 1/9 + nilai_pixel(x,y) * 1/9 + nilai_pixel(x+1,y) * 1/9 + nilai_pixel(x-1,y+1) * 1/9 + nilai_pixel(x,y+1) * 1/9 + nilai_pixel(x+1,y+1) * 1/9 selesai selesai Akhir modul 64 Tapis lolos tinggi (High pass Filter). Filter ini mempunyai karakter yang berlawanan dengan Low pass Filter. Ia bersifat memperkuat pixel-pixel dengan frekuensi yang tinggi. Penggunaan filter ini akan membuat garis batas antar obyek menjadi lebih tajam. Untuk menerapkan filter ini pada suatu citra, kita membutuhkan sebuah mask yang sama seperti pada bagian tapis lolos rendah, yaitu matriks mask 3x3. Perbedaannya hanya terletak pada nilai koefisiennya, yaitu . Pseudocode dari high pass filter adalah sebagai berikut: Awal modul luas = panjang_gambar * lebar_gambar; dari nilai y yang ke-0 hingga (lebar_gambar)-1 mulai dari nilai x yang ke-0 hingga (panjang_gambar)-1 mulai nilai_pixel(x,y) = nilai_pixel(x-1,y-1) * (-1/4) nilai_pixel(x,y-1) * (-1/4) + nilai_pixel(x+1,y-1) * (-1/4) nilai_pixel(x-1,y) * (-1/4) + nilai_pixel(x,y) * (-1/4) nilai_pixel(x+1,y) * (-1/4) + nilai_pixel(x-1,y+1) * (-1/4) nilai_pixel(x,y+1) * (-1/4) + nilai_pixel(x+1,y+1) * (-1/4) + + + + selesai selesai Akhir modul 3.10. Ekstraksi Ciri Tahap ini bertujuan untuk melakukan ekstraksi ciri dengan metode dekomposisi Wavelet Haar. Setelah suatu citra melewati tahap pengolahan citra, maka citra tersebut siap untuk diekstrak cirinya. Pada penelitian ini, input pertama pada tahap ekstraksi ciri 65 berukuran 128 x 128 pixel. Kita perlu menghitung level maksimum dari dekomposisi Wavelet yang mungkin dilakukan, dengan menggunakan rumusan yang telah diuraikan pada bagian sebelumnya. Pada penelitian ini, panjang datanya adalah 128, panjang filternya adalah dua, sehingga level maksimum dari dekomposisi Wavelet setelah dihitung dengan menggunakan rumusan adalah tujuh. Penelitian ini menggunakan level dekomposisi lima. Pada dekomposisi level pertama, citra dengan ukuran 128 x 128 pixel menjadi citra dengan empat sub bidang pada ukuran yang lebih rendah yaitu 64 x 64 pixel. Keempat sub bidang ini akan membawa informasi yang berbeda, yaitu informasi aproksimasi, vertikal, horizontal, dan diagonal. Dekomposisi level kedua menghasilkan citra dengan ukuran 32 x 32 pixel, dekomposisi level ketiga menghasilkan citra dengan ukuran 16 x 16 pixel, dekomposisi level keempat menghasilkan citra dengan ukuran 8 x 8 pixel, dan dekomposisi level kelima menghasilkan citra dengan ukuran 4 x 4 pixel. Hasil dari dekomposisi level kelima, yang berupa citra aproksimasi inilah yang akan digunakan sebagai citra masukan (input) pada jaringan saraf tiruan, pada tahap selanjutnya. Adapun algoritma dari dekomposisi Wavelet ini adalah sebagai berikut: Tahap 1 : Input citra diubah menjadi empat bagian citra baru dengan ukuran . Tahap 2 : Tes kondisi berhenti, jika ukuran dari citra aproksimasi adalah 1 x 1 pixel atau telah mencapai level dekomposisi yang diinginkan, maka proses berhenti, jika tidak, ulangi tahap pertama dengan menggunakan citra aproksimasi sebagai input citra. 66 Cara kerja dari Wavelet Haar adalah dengan melakukan perhitungan rata-rata dari input sinyal yang diperolehnya. Misalkan terdapat suatu citra berukuran 1 x 4 pixel, dengan nilai pixel [3 5 4 8], maka hasil dari proses perhitungan nilai rata-rata, diperoleh nilai [4 6]. Hasil tersebut kembali dihitung nilai rata-ratanya sehingga diperoleh nilai [5]. Setelah proses perhitungan nilai rata-rata selesai, kita juga harus mencatat koefisien detail dari setiap langkah. Koefisien detail adalah perbedaan antara hasil rata-rata dengan nilai masukannya. Misal pada tahap pertama, yaitu perhitungan rata-rata nilai 3 dan 5 sehingga diperoleh nilai 4, maka koefisien detil dari tahap itu adalah [1]. Dari contoh ini, citra digital dengan nilai pixel [3 5 4 8], akan diTransformasikan menjadi deret [5 -1 -1 -2]. Nilai asli citra digital bisa diperoleh dengan mengalikan, koefisien Haar yang diperoleh dengan empat basis Haar. Pada contoh di atas: [3 5 4 8] = 5[1 1 1 1] + -1[1 1 -1 -1] + -1[1 -1 0 0] + -2[0 0 1 -1] Perhitungan Transformasi Wavelet pada citra dua dimensi, memiliki prinsip yang sama dengan perhitungan pada citra satu dimensi. Proses perhitungan dilakukan secara horizontal terlebih dahulu, kemudian dilakukan secara vertikal. Pada penelitian ini, hasil dari proses ekstraksi ciri pada citra berukuran 128 x 128 pixel ini adalah citra aproksimasi dengan ukuran 4 x 4 pixel. Kemudian setiap pixel ini akan diambil nilainya, dan dijadikan input layer dari jaringan saraf tiruan. Total input yang dihasilkan adalah 16 sel. 67 3.11. Proses Pelatihan Pada tahap pelatihan, semua matriks input yang diperoleh pada tahap ekstraksi ciri, akan dilatihkan pada jaringan saraf tiruan jenis Back Propagation yang telah dibangun. Jaringan saraf tiruan ini dibangun dengan input layer sebanyak 16 buah, dan output sebanyak 6 buah. Selain itu, jaringan saraf tiruan ini juga menggunakan satu lapisan tersembunyi. Umumnya jumlah sel pada lapisan tersembunyi ini dihitung dengan rumusan: Sehingga jumlah sel dari lapisan tersembunyi pada jaringan saraf tiruan ini adalah sebanyak 17 buah. Pada penelitian ini, jumlah sel pada lapisan input sesuai dengan hasil ekstraksi ciri yang diperoleh, jumlah sel pada lapisan output, juga sesuai dengan jumlah data yang akan dilatihkan pada jaringan saraf tiruan tersebut. Namun, jumlah sel pada lapisan hidden tidak berdasarkan teori pada umumnya, tetapi berdasarkan percobaan yang dilakukan. Fungsi aktivasi yang digunakan pada penelitian ini adalah fungsi sigmoid. Pada tahap pelatihan, berlangsung dua langkah yaitu langkah maju (feedforward) dan langkah mundur (backward). Langkah feedforward, bertujuan untuk melakukan kalkulasi perhitungan dari matriks input dan matriks bobot, sementara backward bertujuan untuk melakukan koreksi matriks bobot. Pada proses pelatihan ini, jumlah epoch atau perulangan maksimum diperoleh dari masukan yang diberikan oleh user (pengguna umum program ini). 68 3.12. Proses Pengujian Modul pengujian, hanya akan menjalankan langkah feedforward dari algoritma Back Propagation. Dari input yang dimasukkan, akan diperoleh nilai output yang akan dicocokkan dengan basis data abjad Arab. Citra yang akan diuji, akan melewati tahap ekstraksi ciri, sehingga diperoleh input dengan jumlah 16 sel. Setelah itu, input tersebut akan dikalikan dengan matriks bobot yang telah ditentukan pada tahap pelatihan. Perkalian antara matriks input dan matriks bobot, akan menghasilkan nilai output yang telah ditentukan pada tahap pelatihan. Output yang diperoleh ini menunjuk satu pola abjad Arab yang telah dilatihkan sebelumnya. Jadi, pada analisis dan perancangan program aplikasi ini, telah dibahas mengenai langkah-langkah proses pengenalan yang dilakukan oleh sistem. Sehingga pada tahap ini, program aplikasi telah siap untuk diuji. Untuk implementasi dan evaluasi dari hasil program aplikasi ini, dapat dilihat pada bab selanjutnya.