48
BAB 3 PERANCANGAN 3.1. Gambaran Umum
ANPR Software Kamera Digital
Image
Deteksi Posisi Plat Nomor Neural Network Trainer Segmentasi Plat Nomor
Neural Network Pengenal Karakter
Hasil
Gambar 3.1 Diagram proses ANPR
Pasangan Data Training
Modul Training Pengenal Karakter
49 Secara garis besar proses kerja Aplikasi Pengenalan Plat Nomor Kendaraan Bermotor ini dapat digambarkan sebagai berikut : 1. Proses pencarian posisi plat nomor, untuk mendapatkan posisi plat nomor kendaraan dan melakukan pemotongan pada plat nomor tersebut. Proses ini terdiri dari : 1.1. Image Enhancement 1.2. Thresholding 1.3. Pencarian Posisi Plat Dengan Operasi Morfologi 1.4. Verifikasi dan Pemotongan Plat 2.
Proses segmentasi karakter plat nomor, untuk melakukan pemotongan masing masing karakter pada plat nomor. Proses ini terdiri dari : 2.1. Plat Enhancement dan Thresholding 2.2. Connected Component Labeling 2.3. Pemotongan Karakter
3.
Proses pengenalan karakter, untuk mendapatkan hasil pengenalan masing masing karakter di plat, meliputi : 3.1. Perancangan Neural Network (BAM) 3.2. Proses Pengenalan/Pemanggilan (Recalling) Input diperoleh dari pengambilan gambar (image) melalui kamera digital, berupa
gambar depan mobil yang mengandung plat nomor (Gambar 3.2). Gambar ini yang menjadi input awal bagi proses-proses selanjutnya
50 Pada implementasinya aplikasi ini akan digabung dengan sensor dan kamera digital sehingga pengambilan gambar akan dilakukan secara otomatis melalui pengaturan sensor. Akan tetapi karena dalam pembuatan aplikasi tidak didukung fasilitas perangkat keras tersebut, maka sebagai langkah awal dilakukan pengambilan gambar sampel menggunakan kamera digital secara manual. Gambar sampel yang diperoleh ini akan dtransfer ke komputer dengan format file JPEG dan ukuran 640 x 480 pixel.
Gambar 3.2 Gambar input dari kamera digital
3.2. Proses Pencarian Posisi Proses ini bertujuan untuk menghasilkan image plat untuk pemrosesan selanjutnya 3.2.1. Image Enhancement Gambar input yang diperoleh dari kamera digital merupakan gambar kasar yang masih mengandung tingkat noise yang tinggi (Gambar 3.2), untuk itu tahapan awal yang perlu dilakukan adalah peningkatan kualitas image, dimana proses ini bertujuan untuk
51 memperjelas gambar agar diperoleh gambar yang efisien untuk proses pencarian lokasi plat nomor. Untuk meningkatkan ketajaman gambar masukan maka dilakukan Contrast Stretching pada gambar. Proses ini akan meningkatkan ketajaman gambar untuk gambar yang buram, sementara untuk gambar yang sudah terang proses ini tidak akan berpengaruh banyak. Proses selanjutnya adalah mengaplikasikan filter Gaussian untuk melakukan noise removal atau bluring untuk memperhalus image agar mempermudah proses ekstraksi sisi dengan menggunakan filter Laplacian. Proses ini dikenal sebagai metode LoG (Laplacian of Gaussian) dalam deteksi sisi. Filtering dilakukan dengan cara melakukan konvolusi pada image dengan filter Gausian dan Laplacian. Filter Gaussian yang digunakan adalah filter 3 x 3 sebagai berikut : 0.0277777777777778 0.111111111111111 0.0277777777777778 0.111111111111111 0.444444444444444 0.111111111111111 0.0277777777777778 0.111111111111111 0.0277777777777778 Sedangkan Filter Laplacian yang digunakan adalah filter 3 x 3 sebagai berikut : 1 4 1 4 -20 4 1 4 1 Algoritma untuk melakukan konvolusi dengan filter 3 x 3 adalah : PROCEDURE Konvolusi Nilai_koefisien = jumlah nilai array_filter IF Nilai_koefisien = 0 THEN Nilai_koefisien = 1 END IF Set i = 0
52 DOWHILE i < tinggi_image Set j = 0 DOWHILE j < lebar_image Pixel_Image[i,j] = (Jumlah Perkalian masing masing elemen filter dengan Pixel_Image dengan Pixel_Image[i,j] sebagai titik tengah) dibagi Nilai_koefisien IF Pixel_Image[i,j] > 255 THEN Pixel_Image[i,j] = 255 ELSE IF Pixel_Image[i,j] < 0 THEN Pixel_Image[i,j] = 0 END IF j = j +1 END DO i=i+1 END DO END PROCEDURE Setelah dilakukan konvolusi ini akan diperoleh image dengan sisi-sisi objek yang telah terdeteksi (Gambar 3.3). Digunakan pendeteksian sisi objek dikarenakan plat yang akan dikenali memiliki beberapa kombinasi warna (putih-hitam, putih-merah, dan hitam-kuning). Dengan menggunakan sisi objek maka proses thresholding kemudian tidak akan dipengaruhi oleh warna plat, sehingga jenis plat manapun yang diproses akan terdeteksi sisi-sisi karakter sebagai sebagai kumpulan karakter.
53
Gambar 3.3 Gambar setelah dilakukan deteksi sisi
3.2.2. Thresholding Proses selanjutnya adalah melakukan thresholding pada image yang diperoleh dari proses konvolusi dan pada image masukan awal. Thresholding dilakukan untuk memperoleh Binary Image. Metode thresholding yang digunakan adalah metode Automatic Threshoding yang dinamakan Otsu Method.
Metode Otsu mencari nilai
threshold berdasarkan minimalisasi varian dalam grup dari dua kelompok pixel yang dipisahkan oleh operator thresholding. Sebelum melakukan pencarian nilai threshold, Histogram nilai keabuan dari gambar harus dibuat dahulu. Berikut ini adalah algoritma pembuatan histogram nilai keabuan dari suatu grayscale image .
PROCEDURE Hitung_Histogram Set i = 0 DOWHILE i < tinggi_image Set j = 0 DOWHILE j < lebar_image
54 Histo_data[Pixel_Image[i,j]] = Histo_data[Pixel_Image[i,j]] + 1 j=j+1 END DO i=i+1 END DO END PROCEDURE PROCEDURE Hitung_Nilai_T_Otsu Nilai_Threshold = 1 Gmax = nilai keabuan tertinggi dalam histogram Gmin = nilai keabuan terendah dalam histogram Set sum dan csum awal = 0.0 Set n = 0 Set k = 0 DOWHILE k <= 255 Sum = Sum ditambah dengan k * data_histo[k] n = n ditambah dengan data_histo[k] k = k+1 END DO Set nilai awal n1 = 0 dan fmax = -1 Set k = 0 DOWHILE k <= 255 n1 = n1 + data_histo[k] IF n1 = 0 THEN Skip statement di bawah dan lanjutkan perulangan END IF n2 = n - n1 IF n2 = 0 THEN Keluar perulangan END IF csum = csum + ( k * data_histo[k] )
55 m1 = csum / n1; m2 = (sum - csum) / n2; sb = n1 * n2 *(m1 - m2) * (m1 - m2); IF sb < fmax THEN fmax = sb; thresholdValue = k; END IF k= k +1 END DO END PROCEDURE Setelah menemukan nilai threshold, maka dilakukan threshoding pada image tersebut, dimana nilai pixel-pixel image yang kurang dari nilai threshold akan dijadikan hitam dan nilai pixel-pixel image yang lebih dari nilai threshold akan dijadikan putih. Setelah dilakukan threshoding maka gambar akan menjadi Binary Image (Gambar 3.4). Kedua image ini akan digabung dengan operasi OR untuk memperoleh image untuk proses selanjutnya.
Gambar 3.4 Gambar setelah dilakukan thresholding
56
3.2.3. Pencarian Posisi Plat Dengan Operasi Morphologi Setelah diperoleh Binary Image langkah selanjutnya adalah pencarian lokasi plat nomor dalam image. Pencarian lokasi plat nomor ini dilakukan dengan memanfaatkan fitur plat nomor yaitu : “Plat Nomor terdiri dari deretan karakter alfanumerik, karakter terdiri dari objek tipis berupa garis dan karakter pada plat umumnya memiliki perbedaan intensitas yang signifikan dengan latar belakangnya.” Operasi Morfologi pada Binary Image yang disebut top-hat dapat digunakan untuk mendeteksi objek-objek kecil tersebut. Dalam proses morfologi terhadap image perlu ditentukan sejumlah Structuring Element (SE) yang cocok untuk aplikasi ini. Melalui penelitian dari sejumlah data input yang diperoleh, ukuran image masukan serta posisi pengambilan gambar maka ditentukan SE yang digunakan dalam proses pencarian posisi plat nomor adalah sebagai berikut : 1. SE1, berupa bujur sangkar 15 x 15 pixel untuk menyatakan suatu objek yang ukurannya lebih besar dari ukuran karakter plat maksimal. 2. SE2, berupa garis horizontal dengan lebar 71 pixel untuk menyatakan jarak antar karakter maksimal. 3. SE3, berupa garis vertikal dengan tinggi 31 pixel untuk menyatakan tinggi plat minimal. 4. SE4, berupa garis vertikal dengan tinggi 75 pixel untuk menyatakan tinggi plat maksimal. 5. SE5, berupa garis horizontal dengan lebar 131 pixel untuk menyatakan lebar plat minimal.
57 Langkah langkah yang dilakukan dalam proses pencarian posisi plat nomor dapat dijelaskan sebagai berikut : 1. Jika Image mobil yang telah melalui proses thresholding sebelumnya disebut sebagai I , maka lakukan closing terhadap I dengan SE1 (Gambar 3.5), kemudian dilakukan kurangkan dengan I sebelum proses closing maka diperoleh top-hat dari image tersebut (Gambar 3.6).
Gambar 3.5 Hasil Closing (I, SE1)
Gambar 3.6 Hasil TopHat = (Closing (I,SE1) – I)
58 2. Proses selanjutnya adalah menggabungkan karakter-karakter dalam plat nomor menjadi suatu kotak seukuran plat nomor tersebut. Untuk itu dilakukan closing terhadap image dengan SE2, diperoleh image dengan karakter-karakter di plat nomor yang sudah tergabung menjadi suatu kotak (Gambar 3.7).
Gambar 3.7 Hasil Closing dengan SE2
3. Proses selanjutnya adalah menghapus objek yang lebih kecil dari tinggi plat. Untuk melakukan ini maka dilakukan Opening terhadap Image dengan SE3, diperoleh gambar 3.8.
59
Gambar 3.8 Hasil Opening dengan SE3
4. Kemudian untuk menghilangkan objek yang lebih besar dari plat dilakukan Opening pada image dengan SE4, hasilnya dikurangi dengan Image sebelumnya, diperoleh gambar 3.9.
Gambar 3.9 Hasil Opening dengan SE4 dikurangi gambar 3.8
60 5. Terakhir dengan melakukan Opening dengan SE5 maka objek dengan lebar kurang dari plat akan terhapus. Melalui proses ini diperoleh image dengan satu objek yang merupakan plat yang kita cari (gambar 3.10).
Gambar 3.10 Hasil akhir setelah dilakukan Opening dengan SE5
Untuk kasus kasus tertentu penggunaaan cara ini dapat mendeteksi objek plat lebih dari satu. Seperti pada gambar 3.11.
Gambar 3.11 Hasil pencarian lokasi yang tidak sempurna
61
0 0
0 1
0 1
0 0
0 0
1 0
1 0
0 0
0 1
0 1
1 1
(a) E : External Corner 1 1
1 0
1 0
1 1
1 1
(b) I : Internal Corner
Gambar 3.12 Matriks 2 x 2 untuk menghitung jumlah objek
Untuk menghitung jumlah objek digunakan matrik masking 2 x 2 pada gambar 3.12.
Penggunaan matriks tersebut adalah dengan menggunakan dua fungsi
Internal_Match dan External_Match. Algoritma perhitungan objek akan melewati semua posisi dalam image. Jika posisi current pixel dinyatakan dengan [r,c] maka fungsi Internal_Match akan mengembalikan nilai TRUE jika sub image dengan posisi kiri atas [r,c] sama dengan salah satu matriks Internal Corner (pada gambar 3.12b) . Begitu juga dengan fungsi Exernal_Match akan membandingkan sub image dengan matriks – matriks External Corner (pada gambar 3.12a). Algoritma untuk melakukan perhitungan jumlah objek adalah sebagai berikut :
PROCEDURE Count_Object Set E = 0 Set I = 0
62 DOWHILE tinggi image DOWHILE selama lebar image IF external_match pada posisi ini THEN E ditambah 1 END IF IF internal_match pada posisi ini THEN I ditambah satu END IF END DO END DO Jumlah_objek adalah (E – I) / 4 END PROCEDURE Untuk mengatasi kasus ini maka perlu penanganan lebih lanjut , dimana jika objek yang diperoleh lebih dari satu maka ambil objek dengan rasio tinggi dan lebar yang paling mendekati rasio plat nomor dan diutamakan objek yang berada pada posisi paling bawah. 3.2.4. Verifikasi dan Pemotongan Gambar Plat Setelah memperoleh objek plat, maka posisi plat diperoleh dengan melacak batas kiri atas dan kanan bawah dari objek tersebut. Posisi kiri atas dapat dicari dengan menelusuri image dari kiri atas sampai ditemukan pixel hitam, dan posisi kanan bawah dapat dicari dengan menelusuri image dari batas kanan bawah image sampai ditemukan pixel hitam. Kemudian dilakukan pemotongan plat nomor berdasarkan posisi ini. Perhatikan jika karakter terakhir dari plat mengandung goresan horizontal ke kanan (contohnya huruf L, P) maka karakter ini bisa terpotong (seperti pada gambar 3.13), yang dapat menyebabkan kesalahan pengenalan nantinya. Untuk mengatasi masalah ini maka dilakukan verifikasi plat, menggunakan teori connected component 8 arah.
63
Gambar 3.13 Plat yang terpotong tidak sempurna
Proses verifikasi plat dimulai dengan mencari pixel hitam pada masing masing titik sudut plat. Jika ditemukan maka lakukan penulusuran connected component sampai tidak ditemukan pixel yang terhubung dengan titik ini. Dan untuk membatasi penelusuran agar posisi plat tidak diperluas terlalu jauh (yang kadang disebabkan karena gangguan noise pada plat), maka ditetapkan batas perluasan yaitu 50 pixel untuk posisi horizontal dan 30 pixel untuk posisi vertikal. Berikut ini adalah algoritma untuk melakukan verifikasi plat.
PROCEDURE Verifikasi_Plat // Untuk kiri atas Cari posisi pixel hitam di kiri atas plat (x1, y1) DOWHILE (ada pixel yang terhubung dengan pixel ini pada arah N, NW, W dan SW) dan (x1, y1 dalam batas perluasan) Set posisi x1, y1 ke pixel yang terhubung ini END DO // Untuk kiri bawah Cari posisi pixel hitam di kiri bawah plat (x2, y2) DOWHILE (ada pixel yang terhubung dengan pixel ini pada arah S, SW, W dan NW) dan (x2, y2 dalam batas perluasan) Set posisi x2, y2 ke pixel yang terhubung ini END DO // Untuk kanan atas
64 Cari posisi pixel hitam di kanan atas plat (x3, y3) DO WHILE (ada pixel yang terhubung dengan pixel ini pada arah N, NE, E dan SE) dan (x3, y3 dalam batas perluasan) Set posisi x3, y3 ke pixel yang terhubung ini END DO // Untuk kanan bawah Cari posisi pixel hitam di kanan bawah plat (x4, y4) DOWHILE (ada pixel yang terhubung dengan pixel ini pada arah S, SE, E dan NE) dan (x4, y4 dalam batas perluasan) Set posisi x4, y4 ke pixel yang terhubung ini END DO SET batas_atas_plat = min (batas_atas_plat, y1, y2) SET batas_bawah_plat = max (batas_ bawah _plat, y1, y2) SET batas_kiri_plat = min (batas_ kiri _plat, x1, x2) SET batas_kanan_plat = max (batas_ kanan _plat, x1, x2) END PROCEDUR Setelah verifikasi posisi plat maka dilakukan pemotongan plat berdasar batas baru tersebut. Gambar yang dipotong adalah gambar inputan awal dari camera digital (gambar 3.2). Untuk menyeragamkan ukuran plat, maka setelah pemotongan dilakukan penyekalaan plat ke tinggi 65 pixel, sedangkan lebarnya akan diskalakan sesuai perbandingan tinggi image yang terpotong dengan 65, dengan rumus : platW = W x ( 65 / H ) Dimana W dan H adalah lebar dan tinggi image plat sebelum diskalakan. Ukuran pixel ini dipilih dengan pertimbangan setelah melakukan analisis dari data sampel masukan bahwa ukuran ini cukup besar untuk mempertahankan bentuk karakter.
65
Gambar 3.14 Hasil pemotongan plat setelah dilakukan verifikasi
Gambar 3.15 Plat setelah diskala ke tinggi 65 pixel
3.3. Proses Segmentasi Karakter Setelah diperoleh image plat lengkap hasil pemotongan dari proses sebelumnya, maka proses selanjutnya yang perlu dilakukan adalah proses segmentasi karakter-karakter dalam plat tersebut. Segmentasi dilakukan dengan metode connected component labeling. 3.3.1. Plat Enhancement dan Thresholding Karena gambar plat yang diproses disini merupakan potongan plat yang diperoleh dari gambar input langsung dari kamera digital, maka perlu dilakukan lagi peningkatan kualitas image seperti sebelumnya. Bedanya peningkatan kualitas dilakukan dengan cara yang lebih spesifik pada plat. Sama dengan pada proses pencarian lokasi, maka dilakukan noise removal dengan menggunakan filter Gaussian untuk mengurangi noise pada image. Karena ada kemungkinan image yang diperoleh agak kabur (blur), maka untuk meningkatkan ketajaman image supaya karakter-karakter pada plat lebih mudah disegmentasi dilakukan sharpening menggunakan filter :
66
-1 0 -1 0 7 0 -1 0 -1 Kemudian dilakukan thresholding untuk mengkonversi ke Binary Image, karena plat yang menjadi input bervariasi, maka proses thresholding disini mengalami sedikit perubahan, dimana setelah mencari nilai threshold maka akan dicek dulu jumlah pixel yang lebih dari nilai threshold (pUp) dan yang kurang dari nilai threshold (pDown), jika pUp lebih banyak dari pDown maka pUp dan dianggap sebagai background, dan dalam proses thresholding pixel-pixel yang lebih dari nilai threshold akan dijadikan hitam, begitu juga sebaliknya . Dengan ini maka tidak peduli plat masukan termasuk jenis warna plat yang mana, akan diperoleh plat dengan karakter berwarna hitam dan latar belakang putih. 3.3.2. Connected Component Labeling Segmentasi dilakukan dengan cara melakukan connected component labeling pada plat nomor yang telah melalui proses thresholding, sehingga masing-masing region (kandidat yang akan menjadi karakter) pada plat memiliki label yang berbeda. Kemudian region-region dengan label berbeda ini akan dipotong dari plat. Selanjutnya karena region yang diperoleh dari connected component labeling tidak semuanya merupakan karakter plat yang diinginkan maka dilakukan pemrosesan lebih lanjut untuk menghilangkan region yang bukan karakter. Region yang bukan karakter dapat terdetekasi, hal ini bisa disebabkan karena pemotongan plat yang tidak sempurna umumnya berupa garis plat yang ikut terpotong, atau noise yang memang terdapat pada plat itu sendiri seperti baut pada plat, kotoran/bekas cat pada plat dan
67 noise-noise lain yang tidak diharapkan yang lolos dari image enhancement pada tahap awal.. Penghilangan noise ini dilakukan dengan cara menyeleksi kandidat kandidat karakter tersebut, dimana region dengan ketinggian kurang dari ¼ tinggi minimal plat (yaitu sebesar 25 pixel) akan dibuang. Connected Component Labeling dilakukan dengan cara menelusuri sisi region menggunakan metode Boundary Following, untuk menelusuri pixel–pixel sisi yang saling berhubungan dalam satu objek menggunakan sistem neigborhood 8 arah. Kemudian dilakukan pengisian objek (filling boundary), sehingga untuk masing-masing objek akan ditandai dengan labelnya sendiri. Sebagai langkah awal maka label image diberi nilai 0 untuk latar belakang, dan region yang belum ditandai diberi label -1. Algoritma untuk memberi label pada image adalah : PROCEDURE Boundary_Following Cari pixel awal s untuk region dengan cara men-scan image dari atas-bawah dan kiri-kanan Set current pixel c = s Set pixel di sebelah W dari s sebagai b Asumsikan pixel 8-neigbour dari c, dimulai dari b dalam urutan arah jarum jam sebagai n1, n2, …, n8. DO Cari ni, dimana n1 terletak dalam region Set c = ni dan b = ni-1 Set label pixel pada posisi tersebut manjadi label_no WHILE c != s END PROCEDURE
68 PROCEDURE Region_Filling Untuk setiap baris pada image lakukan Cari posisi kiri dari region yang berlabel label_no Cari posisi kanan dari region yang berlabel label_no IF pixel pada posisi ini bernilai hitam THEN Set label image menjadi label_no END IF END PROCEDURE
PROCEDURE Connected_Component_Labeling Set nilai awal label_no = 0 DOWHILE masih ada region yang belum diberi label lakukan Label_no = label_no + 1 Boundary_Following Region_Filling END DO END PROCEDURE
Gambar 3.16 Region setelah dilakukan Boundary Following dan Filling
3.3.3 Pemotongan Karakter Setelah masing-masing karakter berhasil dipisahkan dan dilacak posisinya, proses selanjutnya adalah dilakukan pemotongan karakter-karakter tersebut. Sebelum diteruskan ke proses selanjutnya maka image karakter ini akan ditingkatkan lagi kualitasnya dengan melakukan cara opening dan closing dengan SE berukuran 3 x 3 pixel pada masing
69 masing karakter yang telah terpotong. Opening dilakukan untuk memperhalus tepi-tepi karakter, sementara closing dilakukan untuk menutupi celah-celah yang ada pada karakter. Seperti pada pemotongan plat, maka hasil pemotongan karakter ini juga akan mengalami penyekalaan. Karakter karakter ini diskalakan ke ukuran tinggi 57 pixel. Lebarnya disesuaikan dengan skala tingginya, dengan rumus : scaleW = charaW * (57 / charaH) Dimana charaH dan charaW adalah tinggi dan lebar karakter sebelum diskalakan. Untuk karakter yang scaleW-nya lebih dari 20 pixel akan dijadikan 35 pixel. Sehingga karakterkarakter selain “I” dan “1” akan diskalakan ke ukuran seragam dengan tetap mempertahankan bentuk karakter “I” dan “1”. Untuk membuat karakter “I” dan “1” ke ukuran seragam seperti karakter-karakter lain maka dibuat binary image baru dengan ukuran 57 x 35 dengan karakter yang lebarnya kurang dari 20 pixel diletakkan di tengah binary image tersebut. Sehingga terakhir akan didapatkan binary image karakter dengan ukuran seragam 57 x 35 pixel dengan tetap mempertahankan bentuk semua karakter.
3.4. Proses Pengenalan Karakter Selanjutnya, setelah karakter-karakter pada plat berhasil dilacak dan dipotong. Maka masing masing karakter ini akan diinputkan ke suatu Neural Network yang sudah di-training. Hasil dari pemanggilan dengan input masing-masing karakter ke neural network akan diperoleh pengenalan karakter tersebut..
70 3.4.1. Perancangan Neural Network (BAM) Perancangan Neural Network dilakukan terpisah dari Proses Pengenalan Plat Nomor . Neural Network yang dipakai disini adalah Neural Network jenis Bidirectional Associative Memory, dimana hasil dari training Neural Network ini akan disimpan dalam suatu matriks Weight (Bobot). Training pada BAM ini akan diakukan dengan menggunakan 36 pasangan pola yang mewakili masing-masing karakter alfanumerik (A sampai Z dan 0 sampai 9). Masing masing pola didapat dengan cara melakukan pemotongan ke 36 karakter dari plat nomor yang sempurna dan bebas noise, pola-pola ini dapat dilihat pada lampiran. Semua karakter yang akan menjadi pola ini dikonversi menjadi binary image yang bernilai 0 dan 1 serta diskalakan ke ukuran 38 x 32 pixel. Untuk mendapatkan vektor yang bipolar, maka saat mengkonversi image menjadi vektor training nilai 0 pada pi-+xel akan dijadikan -1 pada vektor sementara nilai 1 tetap. Karena kapasitas memori BAM yang sangat kecil, maka untuk meningkatkan kapasitas pengenalan ke-36 pola ini BAM dirancang dengan menggunakan metode Dummy Augmentation Encoding. Dummy Augmentation dilakukan dengan menambahkan vektor dummy untuk masing masing vektor X. Vektor dummy merupakan vektor bipolar orthogonal yang berukuran 64 x 32 juga yang dibentuk menggunakan salah satu building block dasar untuk pola orthogonal seperti pada gambar 3.17. Vektor vektor orthogonal dibentuk secara recursive menggunakan pola sebagai berikut : ZA ZAc ZA ZA
71 Sehingga diperoleh pola orthogonal berukuran 2048 x 2048, karena pasangan pola yang dilatih ada 36 pola. Maka hanya 36 baris awal dari pola orthogonal ini yang akan diambil sebagai dummy. Kemudian vektor-vektor dummy ini akan disimpan dalam file D1.pat sampai D36.pat. Setelah masing-masing vektor dummy ini ditambahkan ke setiap vektor X maka diperoleh 36 pola karakter (pola X) bipolar yang berukuran 102 x 32 yang akan disimpan pada file X1.pat sampai X36.pat.
Gambar 3.17 Salah satu building block dasar pola orthogonal
Setiap pola tersebut tentunya harus memiliki pasangan sebagai output yang diharapkan. Vektor pasangan ini merupakan identitas yang unik untuk masing masing karakter. Untuk melakukan training terhadap BAM (menghitung matriks weight ), maka setiap karakter akan dipasangkan dengan vektor berukuran 50 x 32 yang berupa vektor bipolar orthogonal yang unik untuk masing masing karakter. Vektor-vektor orthogonal ini diperoleh dengan cara seperti pada pembuatan pola othogonal dummy. Akhirnya diperoleh vektor pasangan (pola Y) dengan ukuran 50 x 32 yang disimpan pada file Y1.pat sampai Y36.pat.
72 Setelah diperoleh pasangan pola X dan Y, maka langkah selanjutnya adalah menghitung matriks bobot W. Untuk menghitung W, X dan Y akan diubah menjadi matrix baris sehingga diperoleh matrix X berukuran 1 x 3264 (n = 3264) dan matrix Y berukuran 1 x 1600 (m = 1600). Matriks karakter yang berukuran 1 x 3264 ini akan dikalikan dengan transpos pasangannya yang berukuran 1600 x 1, sehingga diperoleh matriks bobot dengan ukuran n x m = 3264 x 1600. Ukuran ini dianggap cukup untuk menyimpan ke 36 pasangan pola karakter tesebut, dimana berdasarkan teori Wang, kapasitas penyimpanan suatu BAM C ≤ √min(n,m). Selanjutnya penggunaan strategi Multiple Training Encoding dalam BAM, menyebabkan sedikit modifikasi pada perhitungan matriks bobot BAM pada umumnya. Matriks W dihitung dengan menggunakan rumus : m
W = ∑ QiXiTYi t=1
Dimana Qi adalah vektor yang berisi jumlah berapa kali suatu pola akan di-training. Misalnya jika pola kedua akan ditraining sebanyak 2 kali maka Q2 = 2. Dari penelitian maka pada pengenalan ke 36 pola karakter ini maka vektor Q yang digunakan dalam melakukan training adalah sebagai berikut : Q = {5,6,5,5,6,5,6,6,5,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,6,5,5,5,7} Matrik bobot yang telah di-training ini yang akan digunakan untuk mengenali karakter-karakter yang telah disegmentasi. 3.4.2. Proses Pengenalan / Pemanggilan (Recalling BAM) Untuk melakukan pengenalan karakter, maka masing masing karakter yang diperoleh dari hasil segmentasi akan dijadikan input untuk BAM ini. Setiap karakter akan
73 diskalakan ke ukuran 38 x 32 supaya sesuai dengan ukuran pola X. Kemudian binary image karakter ini akan diubah menjadi vektor bipolar dengan mengubah pixel 0 menjadi -1. Hasil konversi ke vektor akan diperoleh vektor input (X) dengan ukuran 38 x 32 (sesuai dengan ukuran pixel image karakter yang sudah diskalakan ke ukuran ini sebelumnya). Untuk melakukan pemanggilan/pengenalan, tiap tiap vektor input (Xi, i = 1 – p, dimana p adalah jumlah karakter yang berhasil disegmentasi) akan di-recall. Karena penggunaan dummy dalam training BAM ini maka untuk melakukan recall satu karakter, karakter input akan ditambahkan dengan masing-masing dummy dan recall dilakukan secara terpisah untuk masing-masing dummy. Untuk mempercepat waktu proses maka tidak semua XD diproses, tetapi dengan mencari Hamming Distance (HD) antara pola masukan dengan pola yang tersimpan, hanya 3 XD dengan HD terkecil saja yang akan diproses. Dengan demikian diperoleh karakter-karakter input yang telah di-augment (XDij, i = 1 – p, j = 1 - 3) . Recalling dilakukan dengan mengalikan XDij dengan matriks bobot W hasil training sebelumnya. Hasil perkalian dengan W akan diperoleh output berupa vektor pasangannya (Yij). Kemudian Yij ini akan dioperasikan lagi dengan W untuk memperoleh Xij1, dan Xij1 akan dioperasikan dengan W untuk memperoleh Yij1. Proses ini dilakukan sampai tercapai keadaan konvergen dimana Xijn = Xijn-1 dan Yijn = Yijn-1 .. Kemudian data Xin (X terakhir dari proses recalling tanpa dummy) akan dilakukan perbandingan dengan pola yang tersimpan (sesuai dengan dummy yang ditambahkan) untuk mencari Hamming Distance dengan pola-pola tersebut. Output pengenalan berupa karakter dengan Hamming Distance minimal.
74