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
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
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.
-
T Training set dan d target K Komponen in ni adalah koomponen yanng mutlak untuk u supervvised learninng, dimana target t
ditentukaan oleh penu ulis. Berbedda dengan unsupervisedd learning dimana tidakk ada pengarrahan target dissana. -
Innput layer, hidden h layer dan output layer l N Neural netwo ork yang dibbuat terdiri dari d 140 nodde pada input layer, 44 node n pada hiidden
layer perrtama, 44 node pada hiddden layer kedua serta 366 node pada output o layer.
Gambar 3.4 Neural Neetwork -
Fungsi akktivasi D Dalam neura al network dibutuhkan fungsi akivvasi, karenaa fungsi akttivasi yang akan menentukkan apakah sinyal dari input i neuronn akan diteruuskan ke neeuron lain attau tidak. Peenulis menggunnakan fungsii sigmoid unntuk membattasi keluarann neuron, funngsi ini serinng dipakai kaarena nilai funggsinya terletak antara 0 dan d 1 dan daapat diturunkkan dengan mudah. m
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 NO
OK ?
YES 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
NO
Column + 1 Row = 0
Column < Width
End
YES NO Row < Height
YES NO pixel (Column,Row) < Threshold
pixel (Column,Row) = 1 Row + 1
YES 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
NO Column +1 Row = 0
Column < Width
End
YES NO
Row < Height
YES
Pixel (Column,Row)=1
YES
NO
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 YES
pixel = 1 ?
cek pix atas
NO cek pix kanan atas
pixel = 1 ?
NO pixel = 1 ?
cek pix kanan
NO YES
cek pix kanan bawah
pixel = 1 ?
NO pixel = 1 ?
cek pix bawah
NO cek pix kiri bawah
pixel = 1 ?
NO pixel = 1 ?
cek pix kiri
NO cek pix kiri atas
pixel = 1 ?
NO node - - ; node ++; branch[nod][0] = row ; branch[node][1] = col ; pix[column][row] = label ; size[label] ++ ;
YES
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.