BAB 3 PERANCANGAN SISTEM 3.1 Perancangan Sistem Neural Network di Matlab Gambar 3.1 Blok Diagram Perancangan Sistem Neural network 3.1.1 Training Neural Network Untuk pelatihan neural network penulis lebih memilih menggunakan Matlab dari pada software lainnya. Karena Matlab memiliki banyak kelebihan salah satunya dari segi efektifitas dimana untuk neural network di Matlab sudah disediakan toolbox nya, sedangkan pada software lainnya semua harus dibangun dari awal.
Gambar 3.2 Blok Diagram Training Neural Network 3.1.2 Pengumpulan sampel untuk Training Set Dibutuhkan banyak sampel agar jaringan yang dibuat dapat mengenali karakter lebih akurat. Karena semakin banyak sampel yang diberikan maka akan semakin baik pembelajaran yang dilakukannya, sehingga setiap karakter dapat di pelajari dengan baik bentuknya. Penulis menggunakan 4 sampel yang berbeda untuk setiap karakternya, sehingga total sampel yang digunakan adalah 144 sampel. Sampel-sampel tersebut diambil dengan batasan-batasan yang telah ditentukan, dengan jarak pengambilan gambar sekitar 40-50 cm. Setelah pengambilan sampel 1 plat, proses
selanjutnya adalah pemotongan karakter. Pemotongan ini dilakukan secara manual, setelah itu diberi nama untuk setiap karakter yang telah dipotong. 3.1.3 Image Processing Sebelum dijadikan training set, sampel gambar yang telah dipotong tersebut harus masuk ke dalam Image Processing. Tahap-tahap yang dilakukan dalam Image processing adalah sebagai berikut: - Mengubah sampel gambar RGB menjadi grayscale Pengubahan sampel gambar dari gambar RGB menjadi gambar grayscale dilakukan untuk mempermudah proses pelatihan. rgb2gray adalah fungsi Matlab untuk mengubah gambar menjadi grayscale. Gambar 3.3 Blok Diagram proses grayscale - Mengubah sampel gambar Grayscale menjadi Black and White Sampel yang telah diubah ke grayscale selanjutnya diubah menjadi gambar black and white. Dibutuhkan nilai ambang/threshold untuk dapat menghasilkan gambar black and white
yang baik. Matlab menggunakan metode otsu untuk mendapatkan nilai threshold tersebut. Jika nilai pixel pada gambar lebih kecil dari nilai threshold maka pixel diset 0, jika sebaliknya diset 1. Graythresh digunakan untuk mendapatkan nilai ambang menggunakan metode otsu, setelah didapat nilai ambang barulah gambar grayscale dapat diubah menjadi gambar hitam putih dengan fungsi im2bw. threshold = graythresh(grayscale); BlackWhite = im2bw(grayscale,threshold); 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 Tabel 3.1 Hasil Black and White untuk nilai 0
- Resize and Reshape sampel gambar Sample gambar kemudian diubah ukurannya menjadi 14 x 10 pixel. Tujuannya adalah untuk mempercepat proses pelatihan neural network, oleh karena itu ditentukan ukuran pixel yang tidak terlalu besar. Ukuran 14 x 10 masih harus diperkecil sehingga dapat dijadikan nilai sebagai training set, mengingat banyaknya sampel. Reshape adalah jawabannya, sehingga ukuran 14 x 10 akan diubah menjadi 140 x 1 num_0 = reshape(imresize(character,[digitrow digitcol]),[1 digitrow*digitcol])'; - Set as Training set Setelah didapat informasi pixel dengan ukuran 140 x 1 maka proses berikutnya adalah mengumpulkan semua informasi dari 144 sampel menjadi 1 matrix utuh. Sampel pertama disimpan ke dalam kolom pertama, untuk sampel kedua disimpan ke dalam kolom kedua dan begitu seterusnya sampai 144 kolom atau dapat dikatakan 144 sampel. Sehingga terciptalah sebuah matrix baru dengan ukuran 140 x 144. Untuk setiap kolom mewakili 1 karakter dan semua sampel itu ditampung kedalam 1 variabel alphanum. 3.1.4 Training Langkah berikutnya yaitu menyusun komponen-komponen yang dibutuhkan dalam membangun sebuah neural network. Penulis menggunakan multi layer network, karena pada multi layer ada unit-unit lain yang ikut berperan lebih, sering disebut sebagai hidden layer. Masalah yang komplek adalah alasan penulis untuk menggunakan layer tersebut.
- Training set dan target Komponen ini adalah komponen yang mutlak untuk supervised learning, dimana target ditentukan oleh penulis. Berbeda dengan unsupervised learning dimana tidak ada pengarahan target disana. - Input layer, hidden layer dan output layer Neural network yang dibuat terdiri dari 140 node pada input layer, 44 node pada hidden layer pertama, 44 node pada hidden layer kedua serta 36 node pada output layer. Gambar 3.4 Neural Network - Fungsi aktivasi Dalam neural network dibutuhkan fungsi akivasi, karenaa fungsi aktivasi yang akan menentukan apakah sinyal dari input neuronn akan diteruskan ke neuron lain atau tidak. Penulis menggunakan fungsi sigmoid untuk membatasi keluaran neuron, fungsi ini sering dipakai karena nilai fungsinya terletak antara 0 dan 1 dan dapat diturunkan dengan mudah.
3.1.5 Character Recognition Setelah melakukan training pada neural network, maka akan didapatkan bobot yang terbaik. Dimana bobot tersebut akan dimasukan ke dalam perhitungan feedforward pada neural network untuk menetukan suatu karakter. 3.2 Perancangan Sistem di Android Start Capture Image OK? Image Resizing and Cropping Convert RGB Image to Grayscale Thresholding to Black and White Image Character Recognition Character Resizing Character Segmentation Print Receipt and Append data to database Gambar 3.5 Flowchart Perancangan Sistem di Android
3.2.1 Capture Image Dalam pengambilan gambar, tidak dibatasi seberapa besar pixel pada perangkat keras kamera tersebut. Namun posisi pengambilan haruslah dalam posisi tegak lurus atau portrait. Keadaan plat harus berada dipojok atas, batas kanan dan kiri plat juga harus berada tepat di batas kanan dan kiri pada layar perangkat keras tersebut. 3.2.2 Resizing and Cropping Hasil pengambilan gambar harus diperkecil ukurannya guna mempercepat pengolahan gambar pada proses berikutnya, ukuran gambar diperkecil menjadi 512 x 318. Karena hampir semua proses pengolahan gambar, mengambil nilai pada tiap pixel kemudian dimanipulasi setiap pixel nya. Sehingga sangatlah penting proses pengecilan gambar tersebut. Setelah gambar diperkecil, kemudian dilakukan proses pemotongan tinggi gambar tersebut. Sehingga ukuran gambar menjadi 512 x 150, ini bertujuan untuk membuang sebagian gambar diluar gambar plat dan memudahkan dalam proses pengenalan nomor plat. 3.2.3 Grayscale Proses grayscale pada android tidak jauh berbeda dengan proses grayscale pada matlab. Pada android proses grayscale dilakukan dengan menggunakan fungsi colorfilter yang disediakan oleh android. Sehingga setiap gambar RGB yang masuk akan langsung disaring warnanya menjadi abu-abu.
3.2.4 Tresholding to B&W Start Column = 0 Row = 0 Column + 1 Row = 0 Column < Width End Row < Height pixel (Column,Row) < Threshold pixel (Column,Row) = 1 Row + 1 pixel (Column,Row) = 0 Row + 1 Gambar 3.6 Flowchart Black and White Proses Black and white pada android berbeda dengan proses ketika di Matlab, di matlab digunakan metode otsu untuk mencari nilai threshold yang terbaik. Sedangkan nilai threshold pada android dicari dengan rata-rata nilai minimal dan maksimal pixel yang terdapat pada image. Setelah didapat nilai threshold, barulah masuk ke dalam proses berikutnya. Langkah pertama baca satu persatu pixel pada image, jika pixel bernilai dibawah nilai threshold maka pada pixel tersebut diset 0 dan jika lebih besar atau sama dengan nilai threshold maka nilai pixel tersebut diset 1.
3.2.5 Character Segmentation Start Column = 0 Row = 0 Column +1 Row = 0 Column < Width End Row < Height Pixel (Column,Row)=1 Check 8 Nearest Neighbor Row +1 Gambar 3.7 Flowchart Character Segmentation
Start node = 0; branch[node][0] = r; branch[node][1] = c; pix[column][row] = label; size[label]++; End node >= 0 cek pix atas cek pix kanan atas cek pix kanan cek pix kanan bawah cek pix bawah cek pix kiri bawah cek pix kiri cek pix kiri atas node - - ; node ++; branch[nod][0] = row ; branch[node][1] = col ; pix[column][row] = label ; size[label] ++ ; Gambar 3.8 Eight-Nearest Neighbor
Sebelum memasuki proses pengenalan, proses yang harus dilalui yaitu memisahkan objek-objek yang berada pada gambar dengan cara memberi label yang berbeda untuk setiap objek yang terpisah. Setelah memberi label yang berbeda-beda, dihitung banyaknya label untuk setiap label. Dari ukuran label yang didapat untuk setiap labelnya, dapat dijadikan patokan sebagai batas-batas besarnya ukuran pixel untuk setiap karakter. Sehingga ukuran pixel pada label yang berada di bawah atau di atas batas-batas tersebut dikatakan sebagai bukan karakter. Setelah melalui proses diatas, maka akan didapat nilai-nilai label yang merupakan karakter. Kemudian setiap labelnya ditampung ke dalam array 2 dimensi untuk dijadikan sebuah gambar untuk setiap masing-masing karakter. 3.2.6 Character Resizing Setelah memiliki gambar untuk masing-masing karakter, selanjutnya gambar karakter tersebut diperkecil ukurannya menjadi ukuran 14 x 10. Sesuai dengan ukuran gambar yang dijadikan training set ketika proses pelatihan neural network di Matlab. 3.2.7 Character Recognition Gambar karakter dengan ukuran 14 x 10 diambil nilai untuk setiap pixel nya, kemudian masuk ke dalam perhitungan feedforward sebagai input dengan bobot yang telah didapat pada proses training neural network sebelumnya. Setelah masuk ke dalam perhitungan feedforward dicari nilai output maksimal dari 36 output yang ada. Masing-masing output mewakili satu karakter, sehingga output yang dihasilkan dapat ditentukan karakternya.
3.2.8 Print Receipt Setelah didapat hasil dari pembacaan plat, kemudian di print menggunakan aplikasi printershare. Dimana data yang akan di print berisikan jenis kendaraan, karakter plat serta waktu pengambilan. Receipt ini diberikan kepada pengguna kendaraan sebagai bukti parkir dan disimpan ke dalam database sebagai laporan parkir harian. 3.2.9 Database Hasil dari pengenalan karakter, kemudian disimpan kedalam sebuah database yang telah disediakan oleh android. Dimana didalam database tersebut terdiri dari jenis kendaraan, nomor plat dan waktu pengambilan.