Perangkat Lunak Capture Plat Nomor Polisi Mobil dengan Algoritma Jaringan Syaraf Tiruan Learning Vector Quantization dan Back Propagation Berbasis IP Camera

(1)

DAN BACK PROPAGATION BERBASIS IP CAMERA

SKRIPSI

RAYMOND P.H. SIRAIT 071401040

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2015


(2)

(3)

DAN BACK PROPAGATION BERBASIS IP CAMERA

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar

Sarjana Komputer

RAYMOND P.H. SIRAIT 071401040

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2015


(4)

ii

PERSETUJUAN

Judul : PERANGKAT LUNAK CAPTURE PLAT NOMOR

POLISI MOBIL DENGAN ALGORITMA JARINGAN SYARAF TIRUAN LEARNING VECTOR QUANTIZATION DAN BACK PROPAGATION BERBASIS IP CAMERA

Kategori : SKRIPSI

Nama : RAYMOND P.H. SIRAIT

Nomor Induk Mahasiswa : 071401040

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI

Diluluskan di

Medan, 31 Agustus 2015

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Drs.Marihat Situmorang, M.Kom Dr. Poltak Sihombing, M.Kom NIP. 1963 1214 1989 03 1 001 NIP. 1962 0317 1991 02 1 001

Diketahui/Disetujui oleh,

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 196203171991021001


(5)

PERNYATAAN

PERANGKAT LUNAK CAPTURE PLAT NOMOR POLISI MOBIL DENGAN ALGORITMA JARINGAN SYARAF TIRUAN LEARNING VECTOR QUANTIZATION DAN BACK

PROPAGATION BERBASIS IP CAMERA

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan,31 Agustus 2015

RAYMOND P.H. SIRAIT 071401040


(6)

iv

PENGHARGAAN

Puji syukur penulis ucapkan kepada Tuhan Yang Maha Pengasih untuk berkat dan pengasihanNya, sehingga penulis dapat menyelesaikan penyusunan skripsi ini sebagai salah satu syarat untuk mendapatkan gelar Sarjana Komputer di Fakultas Ilmu Komputer dan teknologi Informasi Universitas Sumatera Utara. Adapun skripsi ini berjudul “Perangkat Lunak Capture Plat Nomor Polisi Mobil dengan Algoritma Jaringan Syaraf Tiruan Learning Vector Quantization dan Back Propagation berbasis IP Camera”.

Dalam proses penulisan skripsi ini, penulis menghadapi banyak kendala yang disebabkan keterbatasan kemampuan dari penulis dan hal lain. Oleh karena itu, pada kesempatan ini dengan segala kerendahan hati saya sangat berterimakasih kepada yang terhormat:

1. Dr. Poltak Sihombing,M.Kom selaku Ketua Departemen Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara dan selaku pembimbing I dan narasumber penulis.

2. Drs. Marihat Situmorang M.Kom selaku pembimbing II dan narasumber penulis.

3. Maya Silvi Lydia BSc, MSc selaku Sekretaris Departemen Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara.

4. Amer Sharif S.Si, M.Kom,Alm Dian Wirdasari S.Si, M.Kom,dan Drs.Dahlan Sitompul,M.Eng selaku narasumber dan pembanding bagi penulis.

5. Seluruh dosen beserta staf dan pegawai di lingkungan Departemen Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara.

6. Orangtua terkasih, ayahanda Alm. M.Sirait dan Ibunda J.Simanungkalit S.Pd untuk doa, motivasi, dukungan dan semangat serta kasih yang tak terhingga yang diberikan selama ini. 7. Emma Sirait dan Tanteku Rita Simanungkalit

Akhir kata, semoga skripsi ini memberi kontribusi yang bermanfaat bagi pendidikan sekarang dan yang akan datang.

Medan, 31 Agustus 2015


(7)

ABSTRAK

Pengenalan nomor polisi yang tercantum pada plat setiap kendaraan biasanya

dilakukan secara manual. Hal ini melibatkan petugas (manusia), yang memungkinkan

terjadinya kesalahan dalam hal pencatatan. Pada penelitian ini dilakukan pengenalan

plat nomor polisi mobil dengan menggunakan algoritma Learning Vector

Quantization dan Back Propagation. Hasil pengujian menunjukkan tingkat

keberhasilan deteksi dengan algoritma backpropagation lebih baik dibandingkan

denganLearning Vector Quantization.

Kata Kunci : Jaringan Syaraf Tiruan Backpropagation,LearningVector Quantization.


(8)

vi

SOFTWARE CAPTURE LICENSE PLATE NUMBER OF THE CAR WIYH A NEURAL NETWORK LEARNING ALGORITHM VECTOR QUANTIZATION

AND BACKPROPAGATION BASED IP CAMERA

ABSTRACT

The introduction of police numbers listed on the plate of any vehicle is usually done

manually. This involves personnel (human), which allow for errors in record-keeping.

In this research, the police car number plate recognition algorithms using Learning

Vector Quantization and Back Propagation.The test results show a success rate of

detection with back propagation algorithm is better than the Learning Vector

Quantization.

Keyword : Neural Network Backpropagation, Learning Vector Quantization. Object


(9)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metode Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Tinjauan Pustaka 5

2.1 Proses Pengolahan Citra Plat Nomor Polisi 6

2.2 Citra Digital 8

2.3 Pengolahan Citra Warna 8

2.3.1 Citra RGB 9

2.3.2 Citra YcBc 9

2.3.3 Citra Biner 9

2.3.4 Citra Intensitas Digital 9

2.3.5 Format Citra Digital 10

2.4 Jaringan Syaraf Tiruan (JST) 12

2.5 Aloritma Learning Vector Quantization (LVQ) 13

2.6 Algoritma Backpropagation 15

2.6.1 Pelatihan Standar Backpropagation 17

2.6.2 Inisialisasi Bobot Awal 19

2.7 IP Camera (Internet Protocol Camera) 19

Bab 3 Analisis dan Perancangan

3.1 Analisis 24

3.1.1 Flow Chart Umum 24

3.1.2 Bahan Penelitian 26

3.1.3 Pembacaan File Citra 27

3.1.4 Menghitung Nilai Grayscale Citra 29


(10)

viii

3.1.6 Flowchart Training dengan Algoritma LVQ 31 3.1.7 Flowchart Pengenalan dengan Algoritma LVQ 33 3.1.8 Flowchart Training dengan Algoritma Back Propagation 33 3.1.9 Flowchart Pengenalan dengan Algoritma Back Propagation 35

3.1.10 Perhitungan dengan Algoritma LVQ 35

3.1.11 Perhitungan dengan Back Propagation 42

3.2 Perancangan 50

3.2.1 Perancangan Aplikasi 50

3.2.2 Perancangan Menu Utama 50

3.2.3 Perancangan Pengenalan Algoritma Backpropagation 51 3.2.4 Perancangan Pengenalan Algoritma LVQ 52

3.2.5 Rancangan Help 53

3.2.6 Rancangan About 53

3.2.7 Rancangan Hasil Pengujian Sistem 54

Bab 4 Implementasi dan Pengujian

4.1 Implementasi 55

4.1.1 Tampilan Menu Utama 55

4.1.2 Tampilan Pengenalan Algoritma Backpropagation 56

4.1.3 Tampilan Pengenalan Algoritma LVQ 56

4.1.4 Tampilan Help 57

4.1.5 Tampilan About 58

4.2 Pengujian Sistem 58

Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan 61

5.2 Saran 61

Daftar Pustaka 62


(11)

DAFTAR TABEL

No. Keterangan Hal.

2.1 Jenis Mode Warna 7

2.2 Bitmap Info Header 11

2.3 Bitmap Core Header 11

3.1 Data Matrik Input Gambar 36

3.2 Bobot dari layer input (Xi) ke layer tersembunyi (Z)i 36

3.3 Bobot-bobot dari layer tersembunyi ke layer output 36 3.4 Bobot dari layer input (Xi) ke layer tersembunyi (Zi) 36


(12)

x

DAFTAR GAMBAR

No. Keterangan Hal.

2.1 Proses Sampling dan Kuantisasi 6

2.2 Nilai warna RGB dalam hexadecimal 8

2.3 Citra RGB 8

2.4 Dekomposisi citra RGB ke dalam komponen luminance dan chrominance 9

2.5 Citra grayscale 10

2.6 Arsitektur Jaringan Learning Vector Quantization 14

2.7 Arsitektur jaringan Backpropagation 16

2.8 Blok Diagram IP Camera 20

2.9 Blok Diagram I/O 20

3.1 Flowchart Umum Proses Training 24

3.2 Flowchart Umum Proses Pengenalan 25

3.3 Citra Plat Nomor Polisi 27

3.4 Contoh Nilai Piksel Citra Warna 27

3.5 Matriks Nilai RGB Citra Warna 29

3.6 Matriks Nilai Grayscale 29

3.7 Matriks Citra Biner 30

3.8 Citra Plat Biner 31

3.9 Flow Chart Training dengan algoritma metode LVQ 31

3.10 Flow Chart Training dengan algoritma LVQ (Lanjutan) 32

3.11 Flow Chart Pengenalan dengan algoritma LVQ 33

3.12 Flow ChartTrainingdengan Algoritma Backpropagation 34 3.13 Flow Chart Pengenalan dengan algoritma Backpropagation 35

3.14 Jaringan dengan 3 unit hidden layer 42

3.15 Rancangan Menu Utama 50

3.16 Rancangan Pengenalan Algoritma Backpropagation 51

3.17 Rancangan Pengenalan Algoritma LVQ 52

3.18 Rancangan Help 53

3.19 Rancangan About 54


(13)

ABSTRAK

Pengenalan nomor polisi yang tercantum pada plat setiap kendaraan biasanya

dilakukan secara manual. Hal ini melibatkan petugas (manusia), yang memungkinkan

terjadinya kesalahan dalam hal pencatatan. Pada penelitian ini dilakukan pengenalan

plat nomor polisi mobil dengan menggunakan algoritma Learning Vector

Quantization dan Back Propagation. Hasil pengujian menunjukkan tingkat

keberhasilan deteksi dengan algoritma backpropagation lebih baik dibandingkan

denganLearning Vector Quantization.

Kata Kunci : Jaringan Syaraf Tiruan Backpropagation,LearningVector Quantization.


(14)

vi

SOFTWARE CAPTURE LICENSE PLATE NUMBER OF THE CAR WIYH A NEURAL NETWORK LEARNING ALGORITHM VECTOR QUANTIZATION

AND BACKPROPAGATION BASED IP CAMERA

ABSTRACT

The introduction of police numbers listed on the plate of any vehicle is usually done

manually. This involves personnel (human), which allow for errors in record-keeping.

In this research, the police car number plate recognition algorithms using Learning

Vector Quantization and Back Propagation.The test results show a success rate of

detection with back propagation algorithm is better than the Learning Vector

Quantization.

Keyword : Neural Network Backpropagation, Learning Vector Quantization. Object


(15)

1.1 Latar Belakang

Nomor polisi kendaraan bermotor merupakan ciri atau tanda pengenal dari suatu kendaraan yang diberikan oleh kepolisian. Setiap kendaraan bermotor (semua jenis) memiliki nomor yang berbeda-beda. Bahkan setiap daerah memiliki kode nomor polisi yang berbeda-beda. Nomor polisi setiap kendaraan biasanya dicantumkan pada sebuah plat. Pengenalan nomor polisi yang tercantum pada plat setiap kendaraan biasanya dilakukan secara manual (dilihat dan dicatat). Hal ini melibatkan petugas (manusia), yang memungkinkan terjadinya kesalahan dalam hal pencatatan.

Banyak penelitian yang dilakukan pengenalan nomor plat suatu kendaraan, antara lain menggunakan gabungan fitur tepi dan morfologi matematika. Pada metode tersebut daerah plat nomor dideteksi sebagai daerah dengan perubahan tingkat kecerahan yang besar dibandingkan dengan daerah-daerah lainnya. Metode lain adalah metode berbasis pemrosesan warna atau derajat keabuan. Metode ini menggunakan segmentasi warna dan memiliki kelemahan yang sangat tergantung pada pencahayaan. Penelitian ini mengusulkan metode Sliding Concentric Window (SCW) yang diikuti dengan metode Sauvola dan analisis komponen terhubung. Metode tersebut masih menghasilkan beberapa region yang bukan area plat nomor. Pada penelitian ini diusulkan untuk menambahkan satu langkah lagi yaitu dengan melakukan proyeksi horizontal dan vertikal untuk mendapatkan posisi plat yang sebenarnya. Hasil pengenalan plat dengan akurasi 60% dan masih harus ditingkatkan dengan mempertimbangkan kondisi gambar input, misalnya dengan memberi batasan gambar diambil dari jarak yang sama (Yuniarti, 2011).

Dengan melihat penelitian di atas, maka pada penelitian ini pengenalan plat nomor polisi kendaraan dilakukan secara komputasi menggunakan metode jaringan syaraf tiruan algoritma Learning Vector Quantization (LVQ) dan Back Propagation (BP). Algoritma LVQ melatih jaringan untuk mengenali pola yang digunakan selama


(16)

2

pelatihan serta memberikan respon yang benar terhadap pola masukan yang serupa dengan pola yang dipakai selama pelatihan. Keberhasilan sistem dalam mengenali setiap karakter pada plat nomor polisi bergantung pada pola yang telah dipelajari oleh sistem.

Backpropagation adalah metode penurunan gradien untuk meminimalkan kuadrat error keluaran dengan tiga tahap yang harus dilakukan dalam pelatihan jaringan yaitu tahap perambatan maju (forward propagation), tahap perambatan balik, dan tahap perubahan bobot dan bias. Arsitektur jaringan ini terdiri dari input layer, hidden layerdanoutput layer.

1.2 Rumusan Masalah

Yang menjadi rumusan masalah pada penelitian ini adalah bagaimana membangun perangkat lunak yang dapat melakukan pengenalan plat nomor polisi mobil dengan menggunakan algoritmaLearning Vector QuantizationdanBack Propagation.

1.3 Batasan Masalah

Dalam penelitian ini, penulis membatasi masalah sebagai berikut :

a. Data yang diolah berasal dari citra dengan format file bmp hasil capture IP Camera.

b. Citra dibatasi pada plat yang berwarna dasar hitam dan tulisan berwarna putih. c. Karakter yang dikenali adalah huruf kapital alphabet (A sampai Z), serta angka (0

sampai 9).

d. Algoritma yang digunakan adalah Jaringan Syaraf Tiruan adalahLearning Vector Quantization(LVQ) danBack Propagation(BP).

e. Tools bahasa pemrograman yang digunakan adalah Microsoft Visual Studio 2010. f. Tools database yang digunakan adalah Microsoft Access 2010.


(17)

1.4 Manfaat Penelitian

Manfaat yang diharapkan dari penelitian ini adalah:

1. Menghasilkan sebuah perangkat lunak yang dapat melakukan perbandingan hasil pengenalan plat nomor polisi mobil dengan menggunakan algoritma Learning Vector QuantizationdanBack Propagation.

2. Sebagai bahan referensi pengembangan algoritma Learning Vector Quantization danBack Propagationpada pengenalan plat nomor polisi mobil.

1.5 Tujuan Penelitian

Adapun tujuan penelitian adalah untuk mendapatkan algoritma yang terbaik dalam pengenalan plat nomor polisi mobil menggunakan algoritma Learning Vector QuantizationdanBack Propagation.

1.6 Metode Penelitian

Dalam penelitian ini, tahapan-tahapan yang akan dilalui adalah sebagai berikut: a. Studi Literatur

Metode ini diawali dengan terlebih dahulu melakukan pembelajaran literatur pada sejumlah buku, artikel, paper, jurnal, makalah, maupun situs internet mengenai pembahasan pengenalan objek, citra, algoritma LVQ dan BP.

b. Analisis

Pada tahap ini dilakukan analisis terhadap pengenalan citra plat nomor polisi. c. Perancangan Perangkat Lunak

Pada tahap ini, digunakan seluruh hasil analisa terhadap studi literatur yang dilakukan untuk merancang perangkat lunak yang akan dihasilkan. Dalam tahapan ini juga dilakukan perancangan model antarmuka serta proses kerja sistem untuk memudahkan dalam proses implementasi.

d. Implementasi dan Pengujian Sistem

Pada tahap ini dilakukan pemasukan data serta memproses data untuk mendapatkan hasil apakah sudah sesuai dengan yang diharapkan.


(18)

4

1.7 Sistematika Penulisan

Dalam penulisan skripsi ini penulis membuat sistematika sebagai berikut:

BAB 1 PENDAHULUAN membahas Latar Belakang, Perumusan Masalah, Batasan Masalah, Tujuan penelitian, Manfaat Penelitian, Metode Penelitian yang dilakukan serta Sistematika penulisan.

BAB 2 LANDASAN TEORI membahas tentang citra, nomor polisi kendaraan bermotor, jaringan syaraf tiruan serta algoritma Learning Vector Quantization(LVQ) danBack Propagation.

BAB 3 ANALISIS DAN PERANCANGAN SISTEM membahas mengenai cara kerja jaringan syaraf tiruan dalam pengenalan citra nomor plat kendaraan bermotor,flow chartsistem dan perancangan antar muka pengguna.

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM membahas tentang implementasi dan pengujian sistem.

BAB 5 PENUTUP merupakan kesimpulan dari semua pembahasan yang ada dengan saran-saran yang ditujukan bagi para pembaca atau pengembang.


(19)

2.1 Proses Pengolahan Citra Plat Nomor Polisi

Pada tahap pengolahan citra, sampel data citra plat nomor kendaraan mengalami beberapa tahap operasi pengolahan citra, yaitu operasi binerisasi, open-close morphology, median filtering, slicing dan resizing. Operasi binerisasi pertama sekali dilakukan pada citra plat nomor kendaraan. Di tahap ini sebuah citraberwarna atau abu-abu diubah menjadi suatu citra biner. Citra biner diwakili oleh matriks dua dimensi yang hanya mempunyai dua nilai intensitas (“0” dan“1”), yaitu hitam dan putih saja. Pada operasi ini, nilai intensitas warna setiap piksel pada suatu citra akan diubah berdasarkan nilai ambang (threshold) yang telah ditentukan. Apabila nilai intensitasnya lebih besar dari nilai threshold maka nilai tersebut akan diubah menjadi bit 1 (warna putih). Sebaliknya, jika nilainya lebih kecil dari nilai threshold maka nilainya akan diubah menjadi bit 0 (warna hitam).

Proses selanjutnya, citra plat nomor kendaraan yang sudah bersifat biner akan mengalami proses filtering menggunakan opening-closing dan median filter. Proses filtering ini dilakukan dengan tujuan untuk menghilangkan noise dan memperhalus citra. Dengan melakukan operasi opening-closing terlebih dahulu pada citra, maka akan didapatkan citra dengan noise yang berkurang, dan memperkecil noise yang besar yang tidak bisa dihilangkan dengan median filtering secara langsung. Dengan dilakukanya dua operasifilteringini, akan didapatkan citra yang jauh lebih bersih dari noise.

Setelah citra plat nomor kendaraan sudah relatif bersih dari noise, langkah selanjutnya adalah prosesslicing. Proses ini akan memisahkan karakter-karakter pada citra plat nomor kendaraan menjadi satu citra dengan satu karakter tunggal yang utuh.

Setelah didapatkan karakter tunggal, kemudian dilakukan operasi resizing. Pada tahap ini akan dihasilkan satu citra berisi satu karakter (angka atau huruf) dengan ukuran seragam yaitu 20 x 11 piksel. Dalam proses pengubahan ukuran (resizing), metode yang digunakan adalah interpolasi tetangga terdekat. Pada interpolasi ini, nilai


(20)

Sampling


(21)

(menunjukkan jumlah bit pada gambar digital, misal b/w dengan dua bit, grayscale dengan delapan bit,true colordengan 24 bit).

Citra atau umumnya dikenal gambar merupakan kumpulan titik-titik penyusun citra itu sendiri. Titik-titik tersebut dikenal dengan pixel. Banyaknya titik-titik penyusun citra tersebut disebut resolusi. Jadi resolusi merupkan MxN pixel. Masing-masing pixel yang menyusun suatu citra dapat memiliki warna yang berbeda-beda, yang disebut denganbit depth.Bit depthdinyatakan dengan angka yang bersatuan bit. Sebagai contoh bit depth = 3, artinya terdapat 23 = 8 variasi yang mungkin untuk setiap pixel-nya. Semakin besar nilai bit depth, maka semakin besar pula ukuran fungsi citra tersebut. Ada beberapa jenis mode warna, antara lain:

Tabel 2.1Jenis Mode Warna Jenis Mode

Warna

Keterangan Ukuranbit

depth

Jumlah variasi warna

Grayscale Warna keabuan, disusun oleh warna dasar Red, Green, Blue yang masing– masing memiliki nilai dasar yang sama. Misal = Red = 67, Green = 67, dan Blue = 67. Dari suatu nilai yang sama akan membentuk satu warna kebuan yang berbeda pada rentang gradasi hitam dan putih

8bit depth 28= 256 variasi warna

Monokrom Warna yang hanya terdiri dari hitam dan putih

1 bit 21= 2 variasi warna

RGB Warna yang disusun oleh 3channel, yaitu Red, Green, Blue yang masing– masin memiliki 8bit depth

8 x 3 =24 224= 16.777.216 variasi warna CMYK Warna yang terdiri dari 4 channel,

yaitu Cyan, Magenta, Yellow, Black yang masing–masing memiliki 8bit depth

8 x 4 = 32 232=

4.294.967.296 variasi warna


(22)

0x00 xx xx xx


(23)

(24)

(25)

Tabel 2.2Bitmap Info Header

Nama Field Size in Bytes Keterangan

bfType 2 Mengandung karakter “BM” yang

mengidentifikasikan tipe file

bfSize 4 Memori file

bfReserved1 2 Tidak dipergunakan bfReserved1 2 Tidak dipergunakan

bfOffBits 4 Offset untuk memulai datapixel

Tabel 2.3Bitmap Core Header

Field Name Size in Bytes Keterangan

bcSize 4 MemoriHeader

bcWidth 2 Lebar Gambar

bcHeight 2 Tinggi Gambar

bcPlanes 2 Harus 1

bcBitCount 2 Bits per pixels–1,4,8 atau 24

2. Joint Photographic Expert Group(JPEG/JPG)

Format JPEG merupakan format yang paling terkenal sampai sekarang ini. Hal ini karena sifatnya yang berukuran kecil (hanya puluhan/ratusan KB saja), dan bersifat portable. Formatfileini sering digunakan pada bidang fotografi untuk menyimpan file foto hasil perekaman analog to digital converter (ADC). Karena ukurannya kecil makafileini banyak digunakan diweb(internet).

3. GIF (Graphics Interchange Format)

Tipe file GIF memungkinkan penambahan warna transparan dan dapat digunakan untuk membuat animasi sederhana, tetapi saat ini standar GIF hanya maksimal 256 warna saja. File ini menggunakan kompresi yang tidak menghilangkan data (lossless compression) tetapi penurunan jumlah warna menjadi 256 sering membuat gambar yang kaya warna seperti pemandangan menjadi tidak realistis. Pada program MS Paint, tidak ada fasilitas penyesuaian warna yang digunakan (color table) sehingga menyimpan file GIF di MS Paintseringkali menghasilkan gambar yang terlihat rusak atau berubah warna. Pada program pengolah gambar


(26)

12

yang lebih baik, seperti Adobe Photoshop, color table bisa diatur otomatis atau manual sehingga gambar tidak berubah warna atau rusak.

File GIF cocok digunakan untuk:

a. Gambar dengan jumlah warna sedikit (dibawah 256).

b. Gambar yang memerlukan perbedaan warna yang tegas seperti logo tanpa gradien.

c. Gambar animasi sederhana sepertibanner-banneriklan,header, dan sebagainya. d. Print shoot (hasil dari print screen) dari program-program sederhana dengan

jumlah warna sedikit.

File GIF tidak cocok digunakan untuk:

a. Gambar yang memiliki banyak warna seperti pemandangan.

b. Gambar yang didalamnya terdapat warna gradien atau semburat (spot light).

4. PNG (Portable Network Graphics)

Citra berformat PNG dikembangkan sebagai alternatif lain untuk GIF, yang menggunakan paten dari LZW algoritma kompresi. PNG adalah format citra yang sangat baik untuk grafis internet, karena mendukung transparansi didalam perambah (browser) dan memiliki keindahan tersendiri yang tidak bisa diberikan GIF atau bahkan JPG. Format PNG menggunakan teknik kompresi Loseless dan mendukung kedalaman warna 48 bit dengan tingkat ketelitian sampling: 1,2,4,8, dan 16 bit. Format ini memiliki alpha channel untuk mengkontrol transparency (Sutoyo, 2009).

2.4 Jaringan Syaraf Tiruan (JST)

Jaringan syaraf tiruan (artificial neural network) atau disingkat JST adalah sistem komputasi dimana arsitektur dan operasi diilhami dari pengetahuan tentang sel syaraf biologi didalam otak. JST dapat digambarkan sebagai model matematis dan komputasi untuk fungsi aproksimasi non linear, klasifikasi data, cluster dan regresi non parametric atau sebagai sebuah simulasi dari koleksi model syaraf biologi (Kusumadewi, 2006).


(27)

JST menyerupai otak manusia dalam 2 (dua) hal, yaitu: a) Pengetahuan diperoleh jaringan melalui proses belajar.

b) Kekuatan hubungan antar sel syaraf (neuron) yang dikenal sebagai bobot-bobot sinaptik digunakan untuk menyimpan pengetahuan.

Jaringan Syaraf Tiruan (JST) adalah suatu metode pembelajaran yang diinspirasi dari jaringan sistem pembelajaran biologis yang terjadi dari jaringan selsyaraf (neuron) yang terhubung satu dengan yang lainnya (Silvia, 2007).

Berikut adalah beberapa definisi JST:

1. JST adalah suatu teknik pemrosesan informasi berbasis komputer yang mensimulasikan dan memodelkan sistem syaraf biologis.

2. Suatu model matematik yang mengandung sejumlah besar elemen pemroses yang diorganisasikan dalam lapisan-lapisan.

3. Suatu sistem komputasi yang dibuat dari sejumlah elemen pemroses yang sederhana dan saling diinterkoneksikan untuk memproses informasi melalui masukan dari luar dan mampu inresponsi keadaan yang dinamis.

4. JST adalah suatu teknologi komputasi yang berbasis hanya pada model syaraf biologis dan mencoba mensimulasikan tingkah laku dan kerja model syaraf.

5. JST adalah sistem pemroses informasi yang memiliki karakteristik mirip dengan jaringan syaraf biologi.

JST dibentuk sebagai generalisasi model matematika dari jaringan syaraf biologi, dengan asumsi bahwa :

Pemrosesan informasi terjadi pada banyak elemen sederhana (neuron).

1. Sinyal dikirirnkan diantara neuron-neuron melalui penghubung-penghubung. 2. Penghubung antar neuron memiliki bobot yang akan memperkuat atau

memperlemah sinyal.

3. Untuk menentukan output, setiap neuron menggunakan fungsi aktivasi (biasanya bukan fungsi linier) yang dikenakan pada jumlahan input yang diterima. Besarnya output ini selanjutnya dibandingkan dengan suatu batas ambang.


(28)

14

2.5 AlgoritmaLearning Vector Quantization(LVQ)

LVQ merupakan metode klasifikasi data adaptif berdasarkan pada data pelatihan dengan informasi kelas yang diinginkan. Walaupun merupakan suatu metoda pelatihan supervised tetapi LVQ menggunakan teknik data clustering unsupervised untuk pra prosesset data dan penentuan cluster center-nya. Arsitektur jaringan LVQ hampir menyerupai suatu jaringan pelatihan kompetitif kecuali pada masing-masing unit outputnya yang dihubungkan dengan suatu kelas tertentu. Kusumadewi dan Hartai (2006) menyatakan LVQ merupakan metoda untuk melakukan pelatihan terhadap lapisan-lapisan kompetitifsupervised. Lapisan kompetitif akan belajar secara otomatis untuk melakukan klasifikasi terhadap vektor input yang diberikan. Apabila beberapa vektor input memiliki jarak yang sangat berdekatan, maka vektor-vektor input tersebut akan dikelompokkan dalam kelas yang sama. Pemrosesan yang terjadi pada setiap neuron adalah mencari jarak antara suatu vektor input ke bobot yang bersangkutan (W1 dan W2). W1 adalah vektor bobot yang menghubungkan setiap

neuron pada lapisan input ke neuron pertama pada lapisan output, sedangkan W2

adalah vektor bobot yang menghubungkan setiap neuron pada lapisan input ke neuron yang kedua pada lapisan output. Fungsi aktivasi F1 akan memetakan Y_in1ke y1 = 1

apabila:

|X–W1| < |X–W2|, dan Y1= 0 jika sebaliknya.

Demikian pula dengan yang terjadi pada fungsi aktivasi F2, akan memetakan

Y_in1ke Y1= 1 apabila |X–W2| < |X–W1|, dan Y1= 0 jika sebaliknya.

Gambar 2.6 menunjukan jaringan LVQ dengan unit pada lapisan input, dan 2 unit (neuron) pada lapisanoutput.

Gambar 2.6 Arsitektur JaringanLearning Vector Quantization(Kusumadewi,2006) X1

X2

X3

X4

X5

X6

X-W1

X-W2

F1

F2

Y_in

Y_in

Y1


(29)

Algoritma untuk LVQ adalah sebagai berikut:

Notasi x :training vector(X1, X2, ..., Xn)

T : kategori daritraining vectoryang benar

Wj : Vektor bobot untuk kategori j

Cj : Kategori j (hasil training)

||X–Wj|| : jarak Euclidian. Step 0 Inisialisasi

Step 1 Jika kondisi stop salah, lakukan step 2 s.d. step 6 Step 2 Untuk setiap vector training, lakukan step 3 s.d. step 4

Step 3 dapatkan j sehingga ||X–Wj|| minimum Step 4 Update Wj

Wj(baru) = Wj(lama) + α (X –Wj(lama)) ; Jika T = Ci Wj(baru) = Wj(lama)– α (X –Wj(lama)) ; Jika T ≠Ci Step 5 UpdateLearning rate

Step 6 Uji kondisi stop

Setelah dilakukan pelatihan, akan diperoleh bobot akhir (W). Bobot-bobot ini nantinya akan digunakan untuk melakukan simulasi atau pengujian data yang lain.

2.6 AlgoritmaBackpropagation

Backpropagatin merupakan algoritma pembelajaran yang terawasi dan biasanya digunakan oleh perceptron dengan banyak lapisan untuk mengubah bobot-bobot yang terhubung dengan neuron-neuron yang ada pada lapisan tersembunyinya. Pelatihan sebuah jaringan yang menggunakan backpropagation terdiri dari 3 langkah, yaitu : pelatihan pola input secara feedforward, perhitungan dan backpropagation dari kumpulan kesalahan dan penyesuaian bobot. Sesudah pelatihan, aplikasi dari jaringan hanya terdiri dari fase feedforward. Bahkan, jika pelatihan menjadi lambat, sebuah jaringan yang dilatih dapat menghasilkan outputnya sendiri secara cepat.

Backpropagation adalah metode penurunan gradien untuk meminimalkan kuadraterrorkeluaran. Ada tiga tahap yang harus dilakukan dalam pelatihan jaringan, yaitu tahap perambatan maju (forward propagation), tahap perambatan balik, dan tahap perubahan bobot dan bias. Arsitektur jaringan ini terdiri dariinput layer, hidden layer, dan output layer(Andrijasa, 2010).


(30)

16

Arsitektur jaringanbackpropagationseperti terlihat dalam Gambar 2.7.

Y1 Yk Ym

w01 w11 wj1 wp1 w0k w1k wjk wpk w0m w1m wjm wpm

Z1 Zj Zp

X1 Xi Xn

v01 v11 vi1 vn1 v0j v1j vij vnj v0p v1p vip vnp

1

1

Gambar 2.7 Arsitektur jaringanBackpropagation(Andrijasa, 2010). Keterangan :

X = Masukan (input)

V = Bobot lapisan tersembunyi W = Bobot lapisan keluaran

n = Jumlah unit pengolah lapisan tersembunyi Z = Lapisan tersembunyi (hidden layer)

Y = Keluaran (output)

Backpropagationmemiliki beberapa unit yang ada dalam satu atau lebih layar tersembunyi. Gambar 2.12 adalah arsitekturbackpropagationdengan n buah masukan (ditambah sebuah bias), sebuah layar tersembunyi yang terdiri dari p unit (ditambah sebuah bias), serta m buah unit keluaran.

Vji merupakan bobot garis dari unit masukan Xi ke unit layar tersembunyi Zj

(Vjo merupakan bobot garis yang menghubungkan bias di unit masukan ke unit layar

tersembunyi Zj). Wkjmerupakan bobot dari unit layar tersembunyi Zjke unit keluaran


(31)

2.6.1 Pelatihan StandarBackpropagation

Pelatihan Backpropagation meliputi 3 fase. Fase pertama adalah fase maju. Pola masukkan dihitung maju mulai dari layar masukkan hingga layar keluaran menggunakan fungsi aktivasi yang ditentukan. Fase kedua adalah fase mundur dimana selisih antara keluaran jaringan dengan target yang diinginkan merupakan kesalahan yang terjadi. Kesalahan tersebut dipropagasikan mundur dimulai dari garis yang berhubungan langsung dengan unit-unit keluaran. Fase ketiga adalah modifikasi bobot untuk menurunkan kesalahan yang terjadi.

Fase I : Propagasi maju Fase II : Propagasi mundur Fase III : Perubahan bobot

Ketiga fase tersebut diulang-ulang terus hingga kondisi penghentian dipenuhi. Iterasi akan dihentikan jika jumlah iterasi yang dilakukan sudah melebihi jumlah maksimum iterasi yang ditetapkan, atau jika kesalahan yang terjadi sudah lebih kecil dari batas toleransi yang diijinkan (Andrijasa, 2010).

Algoritma pelatihan untuk jaringanbackpropagation a) Inisialisasi bobot (set bilangan acak kecil) b) Step 1

Selama kondisi salah, lakukan steps 2–9 Step 2

Untuk setiap pasangan data training lakukan step 3–8

FaseFeedforward

Step 3

Setiap neuroninputXimenerimainputsignalXidan meneruskannya ke semua neuron hiddenpadalayerdiatasnya.

Step 4

Setiap neuron hidden Zj menjumlahkan semua signal inputnya.

……… (2-1) Menjalankan fungsi aktifasinya untuk menghitung signaloutput-nya

Zj= f(z_in) dan meneruskan signal ini kesemua neuron output pada layer diatasnya.

Step 5

 

i ij i oj

j v xv

in z_


(32)

18

Setiap neuronoutputYkmenjumlah signal input berbobotnya.

………. (2-2)

Menjalankan fungsi aktifasinya untuk menghitung signaloutput-nya. yk= f(y_ink).

Backpropagationdarierror

Step 6

Setiap neuron output Yk menerima pola target yang terkait dengan input pola

training, menghitung komponenerror

dan menghitung komponen perubahan bobot (untuk mengubah wjknanti)

……….. (2-3) Menghitung komponen bias (untuk mengubah Woknanti)

………...…. (2-4) Dan mengirimδkke neuron padalayerdi bawahnya

Step 7

Setiap neuronhiddenZjmenjumlahkaninputdelta-nya (dari neuron di atasnya)

...……… (2-5)

Mengalikan dengan turunan dari fungsi aktifasi untuk menentukan komponen koreksierror-nya

Menghitung komponen koreksi errornya (untuk mengubah vijnanti)

………....……...…. (2-6) Menghitung komponen koreksierror-nya (untuk mengubah v0jnanti)

………...… (2-7)

Step 8

Setiap neuron output Ykmengubah bobot dan biasnya:

wjk(baru) = wjk(lama) +Δ wjk.

Setiap neuronhiddenZjmengubah bobot dan biasnya:

vjk(baru) = vjk(lama) +Δ vjk ...……… (2-8)

Step 9

  j jk j ok

k w z w

in y_ ) _ ( ' )

(k k k

kty f y in δ

j k

jk z

w αδ

  m k jk k j w in 1 _ δ δ ) _ ( '

_ j j

j δ in f z in δ 

  j jk j ok

k w z w

in y_

k k

w αδ

0

j j

v αδ  0


(33)

Test stopping condition

f1(y_ink) dan f’(z_inj) dapat dinyatakan dalam bentuk yk dan zk tergantung

fungsi aktifasi yang digunakan.

2.6.2 Inisialisasi Bobot Awal

Pemilihan bobot awal sangat mempengaruhi jaringan saraf dalam mencapai minimum global terhadap nilai error, serta cepat tidaknya proses pelatihan menuju kekonvergenan. Apabila nilai bobot awal terlalu besar, maka input ke setiap lapisan sembunyi atau lapisan output akan jatuh pada daerah dimana turunan fungsi sigmoidnya sangat kecil dan apabila nilai bobot awal terlalu kecil makainputke setiap lapisan tersembunyi atau lapisan output akan sangat kecil yang akan menyebabkan proses pelatihan akan berjalan sangat lambat (Puspitaningrum, 2006).

Inisialisasi bobot awal terdiri dari 2 yaitu : 1. Inisialisasi Bobot Awal Secara Random

Inisialisasi bobot awal secara random biasanya bobot awal diinisialisasi secara random dengan nilai antara -0.5 sampai 0.5 (atau -1 sampai 1, atau interval yang lainnya).

2. Inisialisasi Bobot Awal Dengan Metode Nguyen-Widrow

Metode Nguyen-Widrow akan menginisalisasi bobot-bobot lapisan dengan nilai antara -0.5 sampai 0.5. Sedangkan bobot-bobot dari lapisan input ke lapisan tersembunyi dirancang sedemikian rupa sehingga dapat meningkatkan kemampuan lapisan tersembunyi dalam melakukan proses pembelajaran.

2.7 IP Camera (Internet Protocol Camera)

IPcamera adalah perangkat peng-capturedan recording objek terkini yang memiliki kemampuan memproses visual dan audio serta dapat diakses komputer secara langsung atau melalui LAN, internet dan jaringan telepon selular (Aryanto, 2010). IP camera memiliki tiga blok utama yaitu blok CPU, I/O, dan camera. Ketiga bagian utama tersebut digambarkan dalam bentuk blok diagram seperti pada Gambar 2.8.


(34)

20

Gambar 2.8 Blok Diagram IP Camera

Blok I/O (input/output) merupakan bagian yang menangani hubungan dengan peripheralnetwork dan gatewayuntuk koneksi dengan LAN atau internet. Bagian ini dapat dengan mudah dikenali dengan adanya konektorfemaleRJ45 dan beberapa jack input untukmicrophonesertaspeaker yang merupakan penghubung dengan komputer seprti pada Gambar 2.9.

Gambar 2.9 Blok Diagram I/O Keterangan:

a. I/OOptional

Bagian input dan output berupa jack yang berfungsi sebagai penghubung antara peripheral networkingdengan IPcamera.

b. Power supply

Bagian yang mendistribusikan power supplyatau catu daya dariadaptorke seluruh bagian agar perangkat dapat beroperasi. Selain menggunakan adaptor, IP camera dapat juga menggunakan PoE (power Over Ethernet) yang diinjeksikan via RJ45. c. Microphone

Bagian yang berfungsi mengubah sinyal akustik menjadi sinyal listrik. d. Speaker

Bagian yang berfungsi mengubah sinyal listrik menjadi sinyal akustik yang dapat didengar manusia.

I/O

CPU

Camera

Power Supply

CPU dan Camera I/O Optional

Microphone Speaker

Rj45 Rj45

PCM


(35)

e. RJ45

Bagian yang berfungsi sebagaigatewayIPcamerauntuk koneksi dengan komputer atau LAN/Internet.

f. PCM Codec (Pulse Code Modulation Coder and Decoder)

Bagian yang berfungsi mengubah sinyal analog menjadi sinyal digital (microphone to IP camera) dan mengubah sinyal digital menjadi sinyal analog (IP camera to Speaker) menggunakan teknik modulasi PCM.

g. LAN Buffer

Bagian yang berfungsi sebagai penyangga traffic data dari dan ke CPU IP camera yang melewaticonnectorRJ4.

Blok CPU dapat dikenali dengan adanya IC prosesor yang memiliki bentuk paling besar diantara komponen IC yang ada. Bagian ini memiliki fungsi utama sebagai pengendali atas segala aktivitas yang dilakukan oleh IP camera dengan bantuan beberapa komponen IC pendukung. Blok camera mirip dengan kamera atau tustel yang memiliki lensa CCD yang bertugas mengambil atau meng-capturegambar. Sebuah IP camera biasanya dilengkapi dengan software, software ini mengambil gambar dari kamera digital secara terus menerus ataupun dalam interval waktu tertentu dan menyiarkannya melalui koneksi internet. Ada beberapa metode penyiaran dan yang paling umum adalah software merubah gambar ke dalam bentuk file JPEG dan meng-upload-nya keweb server menggunakanFile Transfer Protocol (FTP) (Azikin, 2005).

Frame rate mengindikasikan jumlah gambar sebuah software dapat ambil dan transfer dalam satu detik. Untuk streaming video, dibutuhkan minimal 15 frame per second (fps) atau idealnya 30 fps. Untuk mendapatkan frame rate yang tinggi, dibutuhkan koneksi internet yang tinggi kecepatannya. Sebuah webcam tidak harus selalu terhubung dengan komputer, ada webcam yang memilikisoftware webcam dan web server bulit-in, sehingga yang diperlukan hanyalah koneksi internet, webcam ini dinamakan “network camera”.

Penggunaan webcam mencakup video conferencing, internet dating, video messaging, home monitoring, images sharing, video interview, video phone-call, dan banyak hal lain. Kamera untuk video conference biasanya berbentuk kamera kecil yang terhubung langsung dengan komputer. Kamera analog juga terkadang


(36)

22

digunakan, kamera ini terhubung dengan video capture card dan tersambung dengan internet (baik langsung maupun tidak langsung). Saat ini kamera untuk video conference sudah makin maju, sudah ada webcam yang di dalamnya terdapat microphone maupun noise cancellation untuk memfokuskan audio ke speaker yang terletak di depan kamera sehingga noise yang ada tidak mengganggu jalannya konferensi.

Pada awalnya, bentuk webcamterbatas pada bentuk-bentuk standar yang hanya terdiri dari lensa dan papan sirkuit serta casing yang biasa. Namun seiring dengan perkembangan teknologi, bentuk webcam pun sudah makin bervariasi dengan fitur-fitur yang makin canggih.

Webcam memiliki fitur-fitur dan setting yang bermacam-macam, diantaranya adalah:

1. Motion sensing, webcam akan mengambil gambar ketika kamera mendeteksi gerakan.

2. Image archiving, pengguna dapat membuat sebuah archive yang menyimpan semua gambar dari webcam atau hanya gambar-gambar tertentu saat interval pre-set.

3. Video messaging, beberapa programmessagingmendukung fitur ini.

4. Advanced connections, menyambungkan perangkat home theater ke webcam dengan kabel maupun nirkabel.

5. Automotion, kamera robotik yang memungkinkan pengambilan gambar secara pan atau tilt dan setting program pengambilan frame berdasarkan posisi kamera.

6. Streaming media, aplikasi profesional, setup webcam dapat menggunakan kompresi MPEG4 untuk mendapatkan streaming audio dan video yang sesungguhnya.

7. Custom coding, mengimpor kode komputer pengguna untuk memberitahu webcam apa yang harus dilakukan (misalnyaautomatically refresh).

8. AutoCam, memungkinkan pengguna membuat webpage untuk webcam-nya secara gratis diserverperusahaan pembuatwebcam.


(37)

ANALISIS DAN PERANCANGAN

3.1Analisis

Pada penelitian ini dilakukan pengenalan plat nomor polisi kendaraan bermotor dengan menggunakan metode jaringan syaraf tiruan algoritma Learning Vector Quantization dan Back Propagation. Nomor polisi kendaraan bermotor merupakan ciri atau tanda pengenal dari suatu kendaraan yang diberikan oleh kepolisian. Setiap kendaraan bermotor (semua jenis) memiliki nomor yang berbeda-beda. Bahkan setiap daerah memiliki kode nomor polisi yang berbeda-beda. Nomor polisi setiap kendaraan biasanya dicantumkan pada sebuah plat.

Plat nomor polisi kendaraan terdiri dari huruf kapital alphabet A sampai Z serta angka mulai dari 0 sampai 9. Warna dasar plat biasanya adalah hitam untuk kendaraan pribadi dan merah untuk kendaraan pemerintahan. Pengenalan nomor polisi yang tercantum pada plat setiap kendaraan biasanya dilakukan secara manual yaitu dilihat dan dicatat. Hal ini melibatkan petugas (manusia), yang memungkinkan terjadinya kesalahan dalam hal pencatatan.

Untuk mengidentifikasi citra plat nomor tersebut, terlebih dahulu citra plat nomor harus melewati beberapa proses agar dapat teridentifikasi dengan baik. Proses-proses tersebut adalah Proses-proses prapengolahan, Proses-proses segmentasi karakter, Proses-proses pengurusan citra (thinning) dan proses ekstraksi ciri.

Pada jaringan syaraf tiruan terdapat dua proses utama yaitu proses pembelajaran dan proses identifikasi atau pengenalan. Proses pembelajaran adalah memberi pengetahuan terhadap jaringan dengan data pembelajaran yang sesuai. Setelah JST melewati tahap ini maka JST telah siap digunakan untuk mengenali karakter huruf atau abjad, sesuai dengan pengetahuan yang dimilikinya dari proses pembelajaran tersebut. Proses berikutnya adalah pengenalan citra nomor polisi dimana data yang masuk akan dikenali berdasarkan data yang telah melalui proses pembelajaran sebelumnya.


(38)

24

3.1.1 Flow Chart Umum

Flow Chart Umum adalah bagan yang menggambarkan proses-proses yang secara garis besar dilakukan sistem dalam melakukan training dan pengenalan citra plat nomor polisi. Gambar 3.1 dibawah menggambarkan flowchart umum dari proses training nomor polisi kendaraan bermotor.

Gambar 3.1 Flowchart Umum Proses Training Selesai

Start

Citra nomor polisi dan simbol

Normalisasi ukuran citra

Ekstraksi Ciri

Training JST

Bobot & Bias Simpan ke database


(39)

Pada Gambar 3.1 di atas, proses awal adalah normalisasi ukuran citra agar sesuai dengan input jaringan, selanjutnya dilakukan proses thinning yaitu pengurusan karakter sebesar 1 piksel untuk diambil cirinya dan disimpan ke database. Proses selanjutnya dilakukan training dengan algoritma LVQ dan BP untuk memperoleh bobot akhir dan bias.

Pada Proses pengenalan adalah prosedur yang menjelaskan tentang tahapan pengenalan terhadap citra plat nomor kendaraan bermotor yang diinput pengguna seperti pada Gambar 3.2.

Gambar 3.2 Flowchart Umum Proses Pengenalan Start

Citra nomor polisi

Segmentasi

Baca Bobot & Bias Pelatihan Ekstraksi Ciri

Hasil Pengenalan

Selesai Proses Pengenalan

Pengolahan Citra


(40)

26

Untuk proses Pengenalan dengan jaringan syaraf tiruan, matriks ciri yang semula berukuran 7x5 akan di-transpose menjadi berukuran 5x7 agar sesuai dengan jaringan yang telah dibuat. Matriks ciri ini akan dimasukkan ke tiap jaringan. Jadi keluaran dari tiap jaringan ini adalah matriks berukuran 1x7. Selanjutnya matriks keluaran tiap jaringan ini akan diubah menjadi desimal. Maka keluaran dari 9 jaringan akan menghasilkan matriks berukuran 1x9. Selanjutnya matriks keluaran dari 9 jaringan ini akan dicocokkan dengan matriks basis data karakter. Dalam pengenalan karakter dilakukan dengan membandingkan selisih nilai hasil keluaran jaringan ini terhadap nilai basis data karakter. Pemilihan karakter yang sesuai ditentukan dengan selisih nilai terkecil pada setiap perbandingan masing-masing karakter yang terdapat pada basis data karakter.

Algoritma Learning Vector Quantization dan Back Propagation adalah suatu algoritma yang melakukan pembelajaran pada lapisan kompetitif yang terawasi (dengan supervisi) dimana jaringan akan secara otomatis belajar untuk mengklasifikasikan vektor-vektor input. Kelas-kelas yang didapatkan sebagai hasil dari lapisan kompetitif ini hanya tergantung pada jarak antara vektor-vektor input. Jika dua vektor input mendekati sama, maka lapisan kompetitif akan meletakkan kedua vektor input tersebut ke dalam kelas yang sama.

3.1.2 Bahan Penelitian

Bahan yang digunakan pada penelitian ini adalah berupa citra digital plat nomor polisi kendaraan bermoror hasil akusisi dengan kamera digital yang akan digunakan untuk pembelajaran (learning data set) dan sekumpulan citra untuk pengujian (testing data set). Proses pengolahancitra merupakan kumpulan proses – proses yang digunakan untuk menyiapkan citra input untuk dijadikan masukan ke dalam jaringan. Proses pengolahan citra pada penelitian ini terbagi menjadi beberapa tahap yaitu:

1. Proses normalisasi. 2. Proses thinning 3. Proses ekstraksi ciri

Citra hasil normalisasi sebelum di-thinning dikenakan proses binerisasi yaitu dikonversikan ke dalam bilangan biner dengan proses threshold (pengambangan)


(41)

dimana untuk setiap pixel dengan nilai intensitas warna ≤ 128 diberi nilai 0, sedangkan untuk nilai intensitas warna > 128 diberi nilai 1, sehingga akan diperoleh barisan nilai yang terdiri dari 0 dan 1 sepanjang total piksel.

Sebagai contoh citra plat nomor polisi seperti pada Gambar 3.3.

Gambar 3.3 Citra Plat Nomor Polisi

3.1.3 Pembacaan File Citra

Pada citra warna 24-bit (true color) tidak terdapat palet RGB, karena nilai RGB langsung diuraikan dalam data bitmap berbentuk biner. Untuk membaca nilai RGB-nya, dilakukan mencari header-header serta data bitmap yang berisi informasi dimensi, format dan nilai piksel citra. Setiap elemen data bitmap panjangnya 3 byte, masing-masing byte menyatakan komponen R, G, dan B. Setiap byte data merepresentasikan 8 bit, jadi pada citra warna ada 3 byte x 8 bit = 24 bit kandungan warna.

Pada citra warna, tiap pixel-nya mengandung 24-bit kandungan warna atau 8-bit untuk masing-masing warna dasar (R, G, dan B), dengan kisaran nilai kandungan antara 0 (00000000) sampai 255 (11111111) untuk tiap warna. Sebagai contoh suatu nilai pixel sebuah citra warna sepertipada Gambar 3.4.

Gambar 3.4 Contoh Nilai Piksel Citra Warna <Header>

<data bitmap>

100001111011010010100001100100001011010010010111101101 101011010010000001100100111010011000011001

11111110001011111110001

100100001001111001000000110010011101100101111110111110 0000011010110110001

Piksel 1 Piksel 2


(42)

28

Pada contoh citra Gambar 3.2 di atas, data pertama adalah header yang berisi informasi nama file, jenis format dan dimensi citra. Di bawah data bitmap terdapat pixel pertama mempunyai nilai =100001111011010010100001.

Untuk mendapatkan nilai RGB setiap piksel dengan menggunakan rumus sebagai berikut:

Nilai R = c and 255 ... (3.1) Nilai G = (c and 65,280)/256 ...(3.2)

Nilai B = ((c and 16,711,680)/256)/256 ... (3.3) Dimana c adalah nilai piksel citra

Pada Gambar 3.2 di atas, nilai piksel (0,0) adalah 111100001011010010111001 (24 bit). Nilai R dihitung dengan persamaan 3.1 sebagai berikut:

Nilai R = 100001111011010010100001 and 11111111 = 10100001 (Biner) = 161 Desimal

Nilai komponen G dihitung dengan persamaan (3.2):

Nilai G = (100001111011010010100001 and 1111111100000000)/100000000 = 10110100= 180 (desimal)

Nilai komponen B dihitung dengan persamaan (3.3): Nilai B= (100001111011010010100001 and

111111110000000000000000) / 100000000/100000000 = 10000111 = 135 (desimal)

Sehingga diperoleh nilai piksel (0,0) 11110000 11110000 11111111: R = 11110001 = 161 (desimal)

G = 10110100 = 180 (desimal) B = 10010000 = 135 (desimal)

Dalam analisa ini jumlah piksel yang dihitung sebanyak 25 piksel saja dan untuk mendapatkan nilai RGB piksel selanjutnya dilakukan sama seperti cara di atas dan selanjutnya nilai RGB semua nilai piksel pada citra dimasukkan ke dalam matriks seperti pada Gambar 3.5.


(43)

161,180,135 152,140,110 182,166,210 166,112,178 170,177,166 202,189,134 201,180,111 140,173,110 192,120,200 112,167,162 133,200,152 165,100,155 124,110,167 140,180,126 200,160,200 141,204,104 134, 80,144 140,110,115 150,180,150 160,210,220 56,100,110 147,140,165 143,230,173 140,212,210 150,212,150

Gambar 3.5 Matriks Nilai RGB Citra Warna

3.1.4 Menghitung Nilai Grayscale Citra

Matriks citra warna pada Gambar 3.5 di atas ditransformasikan menjadi citra grayscale dengan menghitung rata-rata warna Red, Green dan Blue. Secara matematis penghitungannya adalah sebagai berikut.

f0 (x,y) = f

R , + fG , + fB ,

3 ……… (3.4)

Sebagai contoh menghitung nilai grayscale citra pada Gambar 3.3 di atas menggunakan persamaan (3.6) adalah sebagai berikut:

f(0,0) = 161+ 180+135

3 = 158 f(0,1) = 152+140+110

3 = 134 f(0,2) = 182+166+210

3 = 186 f(0,3) = 166+112+178

3 = 152 f(0,4) = 170+177+166

3 = 171

Untuk menghitung nilai grayscale piksel selanjutnya dilakukan sama seperti cara di atas, selanjutnya hasil nilai grayscale matriks citra warna dimasukkan ke dalam matriks nilai grayscale seperti pada Gambar 3.6.

158 134 186 152 171 110 164 111 170 0 166 100 155 114 125 47 155 172 174 200 175 0 47 90 144 Gambar 3.6 Matriks Nilai Grayscale


(44)

30

3.1.5 Binerisasi

Pemisahan citra grayscale diatas berfungsi untuk mengambil bagian citra yang merupakan titik gelap (0) dan putih (1). Binerisasi dilakukan dengan membagi citra menjadi 8x8 bagian sub citra, nilai intensitas rata-rata dari sub citra yang paling rendah digunakan menjadi nilai threshold T. Setelah itu dilakukan proses binarisasi citra menggunakan nilai threshold T. Persamaan yang digunakan untuk melakukan binarisasi citra adalah sebagai berikut.

...(3.5)

Dari matriks Gambar 3.4 dilakukan perhitungan Threshold untuk proses binerisasi dimana jika nilai grayscale < 128 maka akan dimasukkan ke nilai 0, sedangkan jika nilai grayscale>T akan dimasukkan ke nilai 1.

Nilai piksel (0,0) = 158, nilai piksel 158 >128, maka nilai biner = 1 Nilai piksel (0,1) = 134, nilai piksel 134 >128, maka nilai biner = 1 Nilai piksel (0,2) = 186, nilai piksel 186>128, maka nilai biner = 1 Nilai piksel (0,3) = 152, nilai piksel 152>128, maka nilai biner = 1 Nilai piksel (1,0) = 171, nilai piksel 171>128, maka nilai biner = 1

Dari hasil perhitungan nilai threshold diatas dimasukkan ke dalam matriks citra biner seperti pada Gambar 3.7.

1 1 1 1 1

0 1 0 1 0

1 0 1 0 1

0 1 1 1 1

1 0 0 0 1

Gambar 3.7 Matriks Citra Biner , = , , >�


(45)

Dengan g(x,y) adalah citra biner hasil proses binarisasi dari citra plat nomor polisi dengan skala keabuan f(x,y), dengan nilai threshold T. Citra hasil threshold ini menghasilkan citra plat nomor polisi biner seperti pada Gambar 3.8.

Citra grayscalePlat Citra binerPlat

Gambar 3.8 Citra Plat Biner

Dengan diperolehnya citra nomor polisi biner, maka tahap preprocessing citra sudah selesai dan selanjutnya citra biner pada Gambar 3.11 dilakukan proses training dan pengenalan dengan metode jaringan syaraf tiruan.

3.1.6 Flow ChartTraining dengan algoritma LVQ

Adapun flow chartproses training dengan algoritma LVQ dapat dilihat seperti pada Gambar 3.9.

Gambar 3.9 Flow ChartTraining dengan algoritma metode LVQ Start

Citra plat nomorPelatihan

Pendefinisi Input, Output dan Target

Penetapan JmlKlas, JmlNeuron, MaksError


(46)

32

Gambar 3.10 Flow Chart Training dengan algoritma LVQ (Lanjutan) Pembentukan Jaringan LVQ

NET = Bobot,JmlNeuron,(1/JmlKlas)* MinErr (Jumkls))

Penetapan Parameter Pelatihan 1.MaksEpoch = 100

2.MinError = 0.001 3.DecError=0.1

Training Epoch=Epoch+1

Bobot Akhir Wj Error <MinError atau

Epoch > MaksEpoch Penetapan Bobot Awal (Wij)

i=1,2,...,K. j=1,2,...,m Wij= 0-1

Inisialisasi Bobot AwalWijAwal= n13

Perbaikan Bobot Wj

Jika T = Cj maka Wj=Wj+ MinError(Nilai Piksel) Jika T <> Cj maka Wj=Wj- MinError (Nilai Piksel)

Error=MinError*DecError B

No

Yes


(47)

3.1.7 Flow ChartPengenalan dengan algoritma LVQ

Adapun flow chartproses pengenalan dengan algoritma LVQ dapat dilihat seperti pada Gambar 3.11.

Gambar 3.11 Flow Chart Pengenalan dengan algoritma LVQ

3.1.8 Flow Chart Proses Training dengan Algoritma Back Propagation

Adapun flow chart proses training dengan Algoritma Back Propagation dapat dilihat seperti pada Gambar 3.12.

Start

Citra plat nomorPengujian + bobot Akhir Wj

Baca bobot Wj dari database

Hitung Jarak antar bobot input dengan bobot database

Jarak terpendek  Hasil pengenalan

Hasil pengenalan


(48)

34

Gambar 3.12 Flow ChartTrainingdengan Algoritma Backpropagation

3.1.9 Flow Chart Pengenalan dengan algoritma Backpropagation

Adapun flow chartproses pengenalan dengan algoritma Backpropagation dapat dilihat seperti pada Gambar 3.13.

Start

Data Pelatihan

Pendefinisi Input, Output

Evaluasi Kesalahan Setiap VektorMasukan x Epoch=Epoch+1

Inisialisasi Semua Bobot Dengan Nilai Random

Normalisasi SemuaBobot dan Vektor Masukan (Nilai Piksel) Set Parameter Learning Rate ( Epoch,MinError, DecError)

Simpan bobot dengan kesalahan paling minimal

Neuron keluaran yang tidak pernah firing /Aktif? Yes

No B A


(49)

Gambar 3.13 Flow Chart Pengenalan dengan algoritma Backpropagation

3.1.10 Perhitungan Dengan Algoritma LVQ

Pada perhitungan ini tidak menggunakan data (nilai piksel) yang sebenarnya, namun memakai nilai yang sederhana sehingga mudah untuk dipahami maksud dari sistem kerja perangkat lunak ini. Misalkan diketahui 10 input vektor dalam 2 kelas sebagai berikut:

Start

Citra plat nomorPengujian + bobot Akhir Wj

Baca bobot Wj dari database

Hitung Jarak antar bobot input dengan bobot database

Jarak terpendek  Hasil pengenalan

Hasil pengenalan


(50)

36

Dua inputan yang pertama akan diinisialisasi sebagia bobot:

Tabel 3.2 Data Bobot No Matriks Bobot Target 1 1, 0, 0, 0, 1, 0 1 2 0, 1, 1, 1, 1, 0 2

Sedangkan 8 inputan sisanya akan digunakan sebagai data yang akan dilatih :

Tabel 3.3 Data Latih No Matriks Latih Target 1 0, 0, 1, 0, 0, 1 1 2 0, 0, 1, 0, 1, 0 1 3 0, 1, 0, 0, 0, 1 1 4 1, 0, 1, 0, 1, 1 1 5 0, 0, 1, 1, 0, 0 2 6 0, 1, 0, 1, 0, 0 2 7 1, 0, 0, 1, 0, 1 2 8 0, 1, 1, 1, 1, 1 2

Sebagai Nilai awal dipilih Learning Rate (α) = 0.05, dengan pengurangan sebesar 0.1* α, dan maksimum epoch (MaxEpoch) = 100


(51)

Data Ke-1 : (0, 0, 1, 0, 0, 1) Jarak pada bobot ke – 1

= (0 − 1)2 + (0 – 0)2 + (1 – 0)2 + (0 – 0)2 + (0 – 1)2 + (1 – 0)2

= 2

Jarak Pada bobot ke – 2

(0 − 0 )2 + (0 – 1 )2 + (1 – 1 )2 + (0 – 1 )2 + (0 – 1 )2 + (1 – 0 )2

= 2

Jarak terkecil adalah pada w ke-1 Target data ke-1 adalah 1

Karena target data ke-1 = w ke-1, maka w ke-1 baru adalah: Wj(baru) = Wj(lama) + α ( Xi - Wj(lama) )

= 1 + 0.05*(0-1) = 0.95 = 0 + 0.05*(0-0) = 0 = 0 + 0.05*(1-0) = 0.05 = 0 + 0.05*(0-0) = 0 = 1 + 0.05*(0-1) = 0.95 = 0 + 0.05*(1-0) = 0.05

W1(baru) = (0.95, 0, 0.05, 0, 0.95, 0.05)

Data Ke-2 : (0, 0, 1, 0, 1, 0) Jarak pada bobot ke – 1

(0 – 0.95)2 + (0 – 0)2 + (1 – 0.05)2 + (0 – 0)2 + (1 – 0.95)2 + (1 – 0.05)2

= 1.345

Jarak Pada bobot ke – 2

( 0 − 0 )2 + ( 0 – 1 ) 2 + ( 1 – 1 ) 2 + ( 0 – 1 ) 2 + ( 1 – 1 ) 2 + ( 0 – 0 )2

= 1.414

Jarak terkecil adalah pada w ke-1 Target data ke-2 adalah 1

Karena target data ke-2 = w ke-1, maka w ke-1 baru adalah : Wj(baru) = Wj(lama) + α ( Xi - Wj(lama) )

= 0.95 + 0.05*(0-0.95) = 0.9025 = 0.00 + 0.05*(0-0.00) = 0 = 0.05 + 0.05*(1-0.05) = 0.0975 = 0.00 + 0.05*(0-0.00) = 0


(52)

38

= 0.95 + 0.05*(1-0.95) = 0.9525 = 0.05 + 0.05*(0-0.05) = 0.0475 W1(baru) = (0.9025, 0, 0.0975, 0, 0.9525, 0.0475)

Data Ke-3 : (0, 1, 0, 0, 0, 1) Jarak pada bobot ke – 1

(0 – 0.9025)2 + (1 – 0) 2 + (0 – 0.0975) 2 + (0 – 0) 2 + (0 – 0.9525) 2 + (1 –0.0475) 2

= 1.907

Jarak Pada bobot ke – 2

= ( 0 − 0 )2 + ( 1 – 1 ) 2 + ( 0 – 1 ) 2 + ( 0 – 1 ) 2 + ( 0 – 1 ) 2 + ( 1 – 0 ) 2

= 2

Jarak terkecil adalah pada w ke-1 Target data ke-3 adalah 1

Karena target data ke-3 = w ke-1, maka w ke-1 baru adalah : Wj(baru) = Wj(lama) + α ( Xi - Wj(lama) )

= 0.9025 + 0.05*(0-0.9025) = 0.8574 = 0.0000 + 0.05*(0-0.0000) = 0.0500 = 0.0975 + 0.05*(1-0.0975) = 0.0926 = 0.0000 + 0.05*(0-0.0000) = 0.0000 = 0.9525 + 0.05*(1-0.9525) = 0.9049 = 0.0475 + 0.05*(0-0.0475) = 0.0951

W1(baru) = (0.8574, 0.0500, 0.0926, 0.0000, 0.9049, 0.0951) Data Ke-4 : (1, 0, 1, 0, 1, 1)

Jarak pada bobot ke – 1

(1–0.8574)2 + (0–0.0500)2 + (1–0.0926)2 + (0–0.0000) 2 + (1–0.9049) 2 + 1–0.0951 2 = 1.293

Jarak pada bobot ke – 2

= √ (1- 0)2 + (0 – 1)2 + (1 – 1)2 + (0 – 1)2 + (1 – 1)2 + (1 – 0)2 = 2

Jarak terkecil adalah pada w ke-1 Target data ke-4 adalah 1

Karena target data ke-4 = w ke-1, maka w ke-1 baru adalah : Wj(baru) = Wj(lama) + α ( Xi - Wj(lama) )


(53)

= 0.0500+ 0.05*(0-0.0500) = 0.0475 = 0.0926 + 0.05*(1-0.0975) = 0.1380 = 0.0000+ 0.05*(0-0.0000) = 0.0000 = 0.9049 + 0.05*(1-0.9049) = 0.9096 = 0.0951 + 0.05*(0-0.0951) = 0.1404

W1(baru) = (0.8645, 0.0475, 0.1380, 0.0000, 0.9096, 0.1404)

Data Ke-5 : (0, 0, 1, 1, 0, 0) Jarak pada bobot ke – 1

=√(1–0.8645)2 +(0–0.0475)2 +(1–0.1380)2 +(0–0.0000)2 +(1–0.9096)2+(1–0.1404)2 = 1.827

Jarak Pada bobot ke – 2

= √ (0 - 0)2 + (0 – 1)2 + (1 – 1)2 + (1 – 1)2 + (0 – 1)2 + (0 – 0)2 = 1.414

Jarak terkecil adalah pada w ke-2 Target data ke-5 adalah 2

Karena target data ke-5 = w ke-2, maka w ke-2 baru adalah : Wj(baru) = Wj(lama) + α ( Xi - Wj(lama) )

= 0 + 0.05*(1-0) = 0.0000 = 1 + 0.05*(0-1) = 0.9500 = 1 + 0.05*(1-1) = 1.0000 = 1 + 0.05*(0-1) = 1.0000 = 1 + 0.05*(1-1) = 0.9500 = 0 + 0.05*(1-0) = 0.0000

W2(baru) = (0.0000, 0.9500, 1.0000, 1.0000, 0.9500, 0.0000)

Data Ke-6 : (0, 1, 0, 1, 0, 0) Jarak pada bobot ke – 1

=√(1–0.8645)2 +(0–0.0475)2 +(1–0.1380)2 +(0–0.0000)2 +(1–0.9096)2+(1–0.1404)2 = 1.876

Jarak Pada bobot ke – 2

= √ ( 0 - 0 )2 + ( 1 – 0.95 )2 + ( 0 – 1 )2 + ( 1 – 1 )2 + ( 0 – 0.95 )2 + ( 0 – 0 )2 = 1.380

Jarak Terkecil adalah pada w ke-2 Target data ke-6 adalah 2


(54)

40

Karena target data ke-6 = w ke-2, maka w ke-2 baru adalah : Wj(baru) = Wj(lama) + α ( Xi - Wj(lama) )

= 0.0000 + 0.05*(0-0.0000) = 0.0000 = 0.9500 + 0.05*(1-0.9500) = 0.9525 = 1.0000 + 0.05*(0-1.0000) = 0.9500 = 1.0000 + 0.05*(1-1.0000) = 1.0000 = 0.9500 + 0.05*(0-0.9500) = 0.9025 = 0.0000 + 0.05*(0-0.0000) = 0.0000

W2(baru) = (0.0000, 0.9525, 0.9500, 1.0000, 0.9025, 0.0000)

Data Ke-7 : (1, 0, 0, 1, 0, 1) Jarak pada bobot ke – 1

=√(1–0.8645)2 +(0–0.0475)2 +(1–0.1380)2 +(0–0.0000)2 +(1–0.9096)2+(1–0.1404)2 = 1.614

Jarak Pada bobot ke – 2

= √ (1 - 0)2 + (0 – 0.9525)2 + (0 – 0.95)2 + (1 – 1)2 + (0 – 0.9025)2 + (0– 1)2 = 2.150

Jarak Terkecil adalah pada w ke-2 Target data ke-7 adalah 2

Karena target data ke-7 ≠ w ke-1, maka w ke-1 baru adalah : Wj(baru) = Wj(lama) + α ( Xi - Wj(lama) )

= 0.8645+ 0.05*(0-0.8645) = 0.8577 = 0.0475 + 0.05*(1-0.0475) = 0.0499 = 0.1380 + 0.05*(0-0.1380) = 0.1449 = 0.0000 + 0.05*(1-0.0000) = -0.050 = 0.9096 + 0.05*(0-0.9096) = 0.9551 = 0.1404 + 0.05*(0-0.1404) = 0.0974

W1(baru) = (0.8577, 0.0499, 0.1449, -0.050, 0.9551, 0.0974)

Data Ke-8 : (0, 1, 1, 1, 1, 1) Jarak pada bobot ke – 1

=√(1–0.8577)2 +(0–0.0499)2 +(1–0.1449)2 +(0+0.050)2 +(1–0.9551)2+(1– 0.0974)2


(55)

Jarak Pada bobot ke – 2

= √ (0 - 0)2 + (1 – 0.9525)2 + (1 – 0.95)2 + (1 – 1)2 + (1 – 0.9025)2 + (1– 0)2 = 1.002

Jarak Terkecil adalah pada w ke-2 Target data ke-8 adalah 2

Karena target data ke-8 ≠ w ke-2, maka w ke-2 baru adalah : Wj(baru) = Wj(lama) + α ( Xi - Wj(lama))

= 0.0000 + 0.05*(0-0.0000) = 0.0000 = 0.9525 + 0.05*(1-0.9525) = 0.9549 = 0.9500 + 0.05*(0-0.9500) = 0.9525 = 1.0000 + 0.05*(1-1.0000) = 1.0000 = 0.9025 + 0.05*(0-0.9025) = 0.9074 = 0.0000 + 0.05*(0-0.0000) = 0.0500

W2(baru) = (0.0000, 0.9549, 0.9525, 1.0000, 0.9074, 0.0500) α = α –0.1 * α = 0.05 – 0.1 * 0.05 = 0.045

Proses ini diteruskan untuk epoch ke-2 sampai dengan epoch ke 100. Setelah mencapai epoch yang ke-100 diperoleh bobot akhir:

W1 = (0.3727 0.2161 0.6347 0.2164 0.7901 0.4254) W1 = (0.0000 0.7969 0.7900 1.0000 0.5869 0.2171)

Maka jika kita mau menstimulasikan inpit (1, 0, 0, 0, 0, 1) maka kita cariterlebih dahulu jarak input tersebut terhadap kedua bobot. Nomor dari bobotdengan jarak terpendek akan menjadi kelasnya.

Jarak pada bobot ke – 1

= √(1–0.3727)2 +(0–0.2161)2 +(1–0.6347)2 +(0-0.2164)2 +(0–0.7901)2+(1– 0.4254)2

=1.3581

Jarak Pada bobot ke – 2

= √(1- 0.0000)2 +(0 – 0.7969)2 +(1 – 0.7900)2+(0 – 1.0000)2 +(0 – 0.5869)2+(1 – 0.2171)2

= 2.0534


(56)

42

3.1.11 Perhitungan dengan Back Propagation

Sebagai contoh jaringan dengan sebuah 3 unit layer tersembunyi dibangun untuk mengenali fungsi logika XOR dengan 2 masukan X1 dan X2. Iterasi untuk menghitung

bobot jaringan untuk pola pertama (X1=1, X2=1 dan t=0) dan learning rate α=0.2.

Gambar 3.14 Jaringan dengan 3 unit hidden layer

Bobot-bobot diberikan nilai acak dengan range -1 sampai dengan 1. Misal bobot dari layer input (Xi) ke layer tersembunyi (Zi) seperti pada Tabel 3.2 dan bobot-bobot dari

layer tersembunyi ke layeroutput seperti pada Tabel 3.3. Langkah 0

Untuk algoritma Backpropagasi Inisialisasi Standard: semua bobot dengan bilangan acak kecil.

Tabel 3.2 Bobot dari layer input (Xi) ke layer tersembunyi (Zi) 1

Y1 Z1

Z2

Z3 1

X1

X2

V10

V20 V30

V11 V31 V21

V12

V32 V22

W10

W11

W12


(57)

Z1 Z2 Z3

X1 0.2 0.3 -0.1

X2 0.3 0.1 -0.1

1 -0.3 0.3 0.3

Tabel 3.3 Bobot-bobot dari layer tersembunyi ke layeroutput

Y Z1 0.5 Z2 -0.3 Z3 -0.4 1 -0.1

Untuk algoritma Backpropagasi Inisialisasi Nguyen Widrow: hitung semua bobot dengan faktor skala Hitung faktor skala (ß) = 0.7(p)1/n

β = = 0,7 3 = 1,21

Jadi bias yang dipakai adalah faktor skala yang merupakan bilangan acak antara -1,21 hingga 1,21

�1 = �112 +�212= 0.22 + 0.32 = 0.36

�2 = �122 +�222= 0.32 + 0.12 = 0.32

�3 = �132 +�232= −0.12 + (−0.1)2 = 0.14

Tabel berikut merupakan bobot yang dipakai sebagai insialisasi dengan rumus:

� =ß (� �) | � | �11 =

1.21∗0.2

|0.36| = 0.67 �12 =

1.21∗0.3

|0.32| = 1.13 �13 =

1.21∗−0.1


(58)

44

�21 = 1.21∗0.3

|0.36| = 1 �22 =

1.21∗0.1

|0.32| = 0.38 �23 =

1.21∗(−0.1)

|0.14| = 0.86

Tabel 3.4 Bobot dari layer input (Xi) ke layer tersembunyi (Zi)

Z1 Z2 Z3

X1 (1,21*0,2)/0,36 = 0,67

(1,21*0,3)/0,32 = 1,13

(1,21*-0,1)/0.14 = 0.86 X2 (1,21*0,3)/0,36

= 1

(1,21*0,1)/0,32 = 0,38

(1,21*-0,1)/0.14 = 0.86

Untuk perhitungan bobot-bobot dari layer tersembunyi ke layer output sama dengan standard yaitu secara acak bilangan yang kecil

Langkah 1

Jika kondisi penghentian belum terpenuhi, lakukan langkah 2 sampai dengan 8

Langkah 2

Untuk setiap pasang data pelatihan, lakukan langkah 3 sampai dengan 8 Fase I: Propagasi Maju

Langkah 3

Tiap unit masukkan menerima sinyal dan meneruskan ke unit tersembunyi

Langkah 4

Hitung semua keluaran di unit tersembunyi (Zj): Untuk pola pertama (X1=1, X2=1 dan t=0).

� = 0+ =1

�1= 10+ 2

=1

= 10+ 1 11+ 2 12=−0,3 + 1∗ 0,2 + 1∗ 0,3 = 0,2

�2= 10+ 2

=1


(59)

�3= 10+ 2

=1

= 10+ 1 31+ 2 32 = 0,3 + 1∗ −0,1 + 1∗(−0,1) = 0,1

= = 1

1 + − _ �

1 = �1 =

1

1 + − _ �1 =

1

1 + −0,2= 0,55

2= �2 =

1

1 + − _ �2 =

1

1 + −0,7 = 0,67

3= �3 =

1

1 + − _ �3 =

1

1 + −0,1 = 0,52 Langkah 5

Hitung semua jaringan di unit keluaran (yk)

_ � = 0+

=1

�1= 10+

=1

= 10+ 1 11+ 2 12+ 3 13

=−0,1 + 0,55 .0,5 + 0,67 . −0,3 + 0,52 . −0,4 = 0,24

= _ � = 1

1 + − _ = 1

1 + −0,24= 0,44

Fase II : Propagasi Maju Langkah 6

k=(tk-yk) f’(y_netk)= (tk-yk) yk (1-yk)

1=(t1-y1) f’(y_net1)= (t1-y1) y1 (1-y1)=(0-0,44)*0,44*(1-0,44)=-0,11 Δwkj= α k zj

Δw10= α 1 (1)=0,2 . (-0,11) . (1) =-0,022 Δw11= α 1 (z1)=0,2 . (-0,11) . (0,55) =-0,01 Δw12= α 1 (z2)=0,2 . (-0,11) . (0,67) =-0,01 Δw13= α 1 (z3)=0,2 . (-0,11) . (0,52) =-0,01


(60)

46

Langkah 7

Hitung factor  unit tersembunyi berdasarkan kesalahan di setiap unit tersembunyi zj (j=1,2,3,…,p)

_ � =  =1

_ �1 =1. 11 = −0,11 . 0,5 = −0,055 _ �2 =1. 12 = −0,11 . (−0,3) = 0,033 _ �3 =1. 13 = −0,11 . (−0,4) = 0,044 Faktor kesalahan  unit tersembunyi

j = _netjf’(z_netj)= _net zj (1-zj)

1 = _net1 z1 (1-z1)=(-0.055).0,55.(1-(0,55))=-0,01 2 = _net2 z2 (1-z2)=(0.033).0,67.(1-(0,67))=0,01 3 = _net3 z3 (1-z3)=(0.044).0,52.(1-(0,52))=0,01 Δvji =α jxi

Δv10 =α 1 =0,2*(-0,01)*1 = -0,002

Δv20 =α 2 =0,2*(0,01)*1 =0,002

Δv30 =α 3 =0,2*(0,01)*1 =0,002

Δv11 =α 1x1 =0,2*(-0,01)*1 =-0,002

Δv21 =α 2x1 =0,2*(0,01)*1 =0,002

Δv31 =α 3x1 =0,2*(0,01)*1 =0,002

Δv12 =α 1x2 =0,2*(-0,01)*1 =-0,002

Δv22 =α 2x2 =0,2*(0,01)*1 =0,002

Δv32 =α 3x2 =0,2*(0,01)*1 =0,002 Fase III : Perubahan Bobot

Langkah 8

Perubahan bobot garis yang menuju unit keluaran wkj (baru) = wkj (lama) + Δwkj

w10 (baru) = w10 (lama) + Δw10 = -0,1-0,022 =-0,122 w11 (baru) = w11 (lama) + Δw11 =0,5-0,01 =0,49 w12 (baru) = w12 (lama) + Δw12 =-0,3-0,01 =0,31 w13 (baru) = w13 (lama) + Δw13 =-0,4-0,01 =0,41


(61)

Vji (baru) = vji (lama) + Δvji

V10 (baru) = v10 (lama) + Δv10 =-0,3-0,002 =-0,302 V20 (baru) = v20 (lama) + Δv20 =0,3+0,002 =0,302 V30 (baru) = v30 (lama) + Δv30 =0,3+0,002 = 0,302 V11 (baru) = v11 (lama) + Δv11 =0,2-0,002 =0,198 V21 (baru) = v21 (lama) + Δv21 =0,3+0,002 =0,302 V31 (baru) = v31 (lama) + Δv31 =-0,1+0,002 =-0,098 V12 (baru) = v12 (lama) + Δv12 =0,3-0,002 =0,298 V22 (baru) = v22 (lama) + Δv22 =0,1+0,002 =0,102 V32 (baru) = v32 (lama) + Δv32 =-0,1+0,002 =-0,098 Untuk pola yang kedua, X1=1, X2=0 dan t=1

Fase I: Propagasi Maju

Langkah 3

Tiap unit masukkan menerima sinyal dan meneruskan ke unit tersembunyi

Langkah 4

Hitung semua keluaran di unit tersembunyi (Zj):

� = 0+

=1

�1 = 10+ 2

=1

= 10 + 1 11 + 2 12 =−0,3 + ∗0,2 + ∗0,3 =−0,1

�2 = 10 + 2

=1

= 10 + 1 21+ 2 22 = 0,3 + ∗0,3 + ∗0,1 = 0,6

�3 = 10 + 2

=1

= 10 + 1 31+ 2 32 = 0,3 + ∗ −0,1 + ∗ −0,1) = 0,2

= = 1

1 + − _ � 1 = �1 =

1

1 + − _ �1 =

1

1 + − , = 0,55 2 = �2 =

1

1 + − _ �2 =

1


(62)

48

3 = �3 =

1

1 + − _ �3 =

1

1 + − , = 0,52

Langkah 5

Hitung semua jaringan di unit keluaran (yk)

_ � = 0+

=1

�1 = 10+

=1

= 10+ 1 11+ 2 12+ 3 13

=−0,1 + 0,55∗0,5 + 0,67∗ −0,3 + 0,52∗ −0,4 = 0,24

= _ � = 1

1 + − _ � = 1

1 + − , �= 0,44

Fase II : Propagasi Maju

Langkah 6

k=(tk-yk) f’(y_netk)= (tk-yk) yk (1-yk)

1=(t1-y1) f’(y_net1)= (t1-y1) y1 (1-y1)=(0-0,44) * 0,44 * (1-0,44)=-0,11 Δwkj = α k zj

Δw10 = α 1 (1) =0,2 * (-0,11) * (1) =-0,022 Δw11 = α 1 (z1) =0,2 * (-0,11) * (0,55) =-0,01

Δw12 = α 1 (z2) =0,2 * (-0,11) * (0,67) =-0,01 Δw13 = α 1 (z3) =0,2 * (-0,11) * (0,52) =-0,01 Langkah 7

Hitung factor  unit tersembunyi berdasarkan error di setiap unit tersembunyi zj (j=1,2,3,…,p)

_ � =  =1

_ �1 = 111 = −0,11 ∗0,5 =−0,055 _ �2 = 1∗ 12 = −0,11 ∗(−0,3) = 0,033 _ �3 = 113 = −0,11 ∗(−0,4) = 0,044


(63)

Faktor error unit tersembunyi j = _netjf’(z_netj) = _net zj (1-zj)

1 = _net z1 (1-z1) =(-0.055) * 0,55 * (1-(0,55)) =-0,01 2 = _net z2 (1-z2) =(0.033) * 0,67 * (1-(0,67)) =0,01 3 = _net z3 (1-z3) =(0.044) * 0,52 * (1-(0,52)) =0,01 Δvji =α jxi

Δv10 =α 1 =0,2*(-0,01)*1 = -0,002

Δv20 =α 2 =0,2*(0,01)*1 =0,002

Δv30 =α 3 =0,2*(0,01)*1 =0,002

Δv11 =α 1x1 =0,2*(-0,01)*1 =-0,002

Δv21 =α 2x1 =0,2*(0,01)*1 =0,002

Δv31 =α 3x1 =0,2*(0,01)*1 =0,002

Δv12 =α 1x2 =0,2*(-0,01)*1 =-0,002

Δv22 =α 2x2 =0,2*(0,01)*1 =0,002

Δv32 =α 3x2 =0,2*(0,01)*1 =0,002 Fase III : Perubahan Bobot

Langkah 8

Perubahan bobot garis yang menuju unit keluaran wkj (baru) = wkj(lama) + Δwkj

w10 (baru) = w10(lama) + Δw10= -0,1-0,022 =-0,122

w11 (baru) = w11(lama) + Δw11=0,5-0,01 =0,49

w12 (baru) = w12(lama) + Δw12=-0,3-0,01 =0,31

w13 (baru) = w13(lama) + Δw13=-0,4-0,01 =0,41

Vji (baru) = vji(lama) + Δvji

V10 (baru) = v10(lama) + Δv10 =-0,3-0,002 =-0,302

V20 (baru) = v20(lama) + Δv20 =0,3+0,002 =0,302

V30 (baru) = v30(lama) + Δv30 =0,3+0,002 = 0,302

V11 (baru) = v11(lama) + Δv11 =0,2-0,002 =0,198


(64)

50

V31 (baru) = v31(lama) + Δv31 =-0,1+0,002 =-0,098

V12 (baru) = v12(lama) + Δv12 =0,3-0,002 =0,298

V22 (baru) = v22(lama) + Δv22 =0,1+0,002 =0,102

V32 (baru) = v32(lama) + Δv32 =-0,1+0,002 =-0,098

Lanjutkan dengan pola yang lainnya: Pola ke 2 X1=1, X2=0, t=1

Pola ke 3 X1=0, X2=1, t=1 Pola ke 4 X1=0, X2=0, t=0

3.2 Perancangan

3.2.1 Perancangan Aplikasi

Perancangan perangkat lunak pengenalan plat nomor polisi kendaraan bermotor dengan menggunakan metode jaringan syaraf tiruan algoritma Learning Vector Quantization dan Back Propagation adalah berupa rancangan antarmuka (interface) yang terdiri dari form-form sebagai perantara antara sistem dengan User (pengguna).

3.2.2 Perancangan Menu Utama

Rancangan Menu Utama terdiri dari menu Pengenalan, Help, About serta Keluar yang dapat dilihat pada Gambar 3.15.

Gambar 3.15 Rancangan Menu Utama Gambar Latar

Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Help

Pengenalan About Keluar

1 2 3 4


(65)

Keterangan:

1. Menu Pengenalan : untuk menjalankan program pengenalan

2. Menu Help : untuk membuka form informasi bantuan aplikasi. 3. Menu About : untuk membuka form informasi keterangan aplikasi 4. Menu Keluar : untuk menutup form Menu Utama

5. PictureBox : untuk menampilkan citra latar

3.2.3 Perancangan Pengenalan Algoritma Backpropagation

Rancangan Pengenalan Algoritma Backpropagation berfungsi untuk pengenalan citra nomor plat yang dapat dilihat pada Gambar 3.16.

Gambar 3.16 Rancangan Pengenalan Algoritma Backpropagation Keterangan:

1. Label berfungsi untuk menampilkan folder tempat file citra mobil 2. Button berfungsi untuk memilih folder citra mobil

3. Button berfungsi untuk menghentikan proses deteksi 1

Load Stop Keluar

Tampilan Citra Mobil

Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx Folder File xxxxxxxxxxxxxxxxxxxxxxxxxx

Lama (Detik)

2 4 5

7 Tampilan Citra nomor plat Lanjut 3 1 6 xxxxxx Data ke 8 xxxxxxxxxxx Hasil Deteksi 9 10


(1)

{

for (col = 0; col < _cCols; ++col) {

m_DispH[row * _cCols + col] = m_DispH[row * _cCols + col] + dSFHoriz * (col - iMid);

m_DispV[row * _cCols + col] = m_DispV[row * _cCols + col] -dSFVert * (iMid - row); // negative because of top-down bitmap

} }

double angle = severityFactor * m_Preferences.m_dMaxRotation * (2.0 * rdm.NextDouble() - 1.0);

angle = angle * 3.1415926535897932384626433832795 / 180.0; // convert from degrees to radians

double cosAngle = Math.Cos(angle); double sinAngle = Math.Sin(angle); for (row = 0; row < _cRows; ++row) {

for (col = 0; col < _cCols; ++col) {

m_DispH[row * _cCols + col] = m_DispH[row * _cCols + col] + (col - iMid) * (cosAngle - 1) - (iMid - row) * sinAngle;

m_DispV[row * _cCols + col] = m_DispV[row * _cCols + col] -(iMid - row) * (cosAngle - 1) + (col - iMid) * sinAngle; // negative because of top-down bitmap

} } } } }

5. Module NeuralNetLayer

using System;

using System.Collections.Generic; using System.Linq;

using System.Text;

using ArchiveSerialization; using System.IO;

namespace NeuralNetworkLibrary {

// Neural Network class

public class NeuralNetwork : IArchiveSerialization

{

public double m_etaLearningRatePrevious; public double m_etaLearningRate;

public uint m_cBackprops; // counter used in connection with Weight sanity check

public NNLayerList m_Layers; public NeuralNetwork() {

m_etaLearningRate = .001; // arbitrary, so that brand-new NNs can be serialized with a non-ridiculous number

m_cBackprops = 0;

m_Layers = new NNLayerList(); }


(2)

*/, int oCount /* =0 */,

NNNeuronOutputsList

pNeuronOutputs /* =NULL */ ) {

var lit = m_Layers.First();

// first layer is imput layer: directly set outputs of all of its neurons

// to the input vector if (m_Layers.Count > 1) {

int count = 0;

if (iCount != lit.m_Neurons.Count) {

return; }

foreach (var nit in lit.m_Neurons) {

if (count < iCount) {

nit.output = inputVector[count]; count++;

} } }

for (int i = 1;i<m_Layers.Count; i++) {

m_Layers[i].Calculate(); }

// load up output vector with results if (outputVector != null)

{

lit = m_Layers[m_Layers.Count - 1]; for (int ii = 0; ii < oCount; ii++) {

outputVector[ii] = lit.m_Neurons[ii].output; }

}

if (pNeuronOutputs != null) {

// check for first time use (re-use is expected) pNeuronOutputs.Clear();

// it's empty, so allocate memory for its use pNeuronOutputs.Capacity=m_Layers.Count; foreach (NNLayer nnlit in m_Layers) {

var layerOut = new

NNNeuronOutputs(nnlit.m_Neurons.Count);

for (int ii = 0; ii < nnlit.m_Neurons.Count; ++ii) {

layerOut.Add(nnlit.m_Neurons[ii].output); }

pNeuronOutputs.Add(layerOut); }


(3)

} }

public void Backpropagate(double[] actualOutput, double[] desiredOutput, int count, NNNeuronOutputsList pMemorizedNeuronOutputs)

{

if(( m_Layers.Count >= 2 )==false) // there must be at least two layers in the net

{

return; }

if ( ( actualOutput == null ) || ( desiredOutput == null ) || ( count >= 256 ) )

return; m_cBackprops++;

if ( (m_cBackprops % 10000) == 0 ) {

PeriodicWeightSanityCheck(); }

int iSize = m_Layers.Count;

var dErr_wrt_dXlast = new DErrorsList(m_Layers[m_Layers.Count -1].m_Neurons.Count);

var differentials = new List<DErrorsList>(iSize); int ii;

for (ii = 0; ii < m_Layers[m_Layers.Count - 1].m_Neurons.Count; ++ii)

{

dErr_wrt_dXlast.Add(actualOutput[ ii ] - desiredOutput[ ii ]);

}

for ( ii=0; ii<iSize-1; ii++ ) {

var m_differential = new

DErrorsList(m_Layers[ii].m_Neurons.Count);

for (int kk = 0; kk < m_Layers[ii].m_Neurons.Count; kk++) {

m_differential.Add(0.0); }

differentials.Add(m_differential); }

differentials.Add(dErr_wrt_dXlast); // last one bool bMemorized = ( pMemorizedNeuronOutputs != null ); for ( int jj=iSize-1; jj>0;jj--)

{

if ( bMemorized != false ) {

m_Layers[jj].Backpropagate( differentials[ jj ], differentials[ jj - 1 ],

pMemorizedNeuronOutputs[jj], pMemorizedNeuronOutputs[ jj - 1 ], m_etaLearningRate );


(4)

{

m_Layers[jj].Backpropagate(differentials[jj], differentials[jj - 1],

null, null, m_etaLearningRate ); }

}

differentials.Clear(); }

public void EraseHessianInformation() {

foreach (var lit in m_Layers) {

lit.EraseHessianInformation(); }

}

public void DivideHessianInformationBy(double divisor) {

foreach (var lit in m_Layers) {

lit.DivideHessianInformationBy(divisor); }

}

public void BackpropagateSecondDervatives(double[] actualOutputVector, double[] targetOutputVector, uint count)

{

if( m_Layers.Count< 2 ){return;};

if ((actualOutputVector == null) || (targetOutputVector == null) || (count >= 256))

{

return; }

int iSize = m_Layers.Count;

int neuronCount = m_Layers[m_Layers.Count - 1].m_Neurons.Count; var d2Err_wrt_dXlast = new DErrorsList(neuronCount);

var differentials = new List<DErrorsList>(iSize);

var lit = m_Layers.Last(); // point to last layer for ( int ii=0; ii<lit.m_Neurons.Count; ii++ ) {

d2Err_wrt_dXlast.Add(1.0); }

for ( int ii=0; ii<iSize-1; ii++ ) {

var m_differential = new

DErrorsList(m_Layers[ii].m_Neurons.Count);

for (int kk = 0; kk < m_Layers[ii].m_Neurons.Count; kk++) {

m_differential.Add(0.0); }


(5)

}

differentials.Add(d2Err_wrt_dXlast); // last one for ( int ii = iSize - 1; ii>0; ii--)

{

m_Layers[ii].BackpropagateSecondDerivatives( differentials[ ii ], differentials[ ii - 1 ] );

}

differentials.Clear(); }

void PeriodicWeightSanityCheck() {

foreach (var lit in m_Layers) {

lit.PeriodicWeightSanityCheck(); }

}

virtual public void Serialize(Archive ar) {

if (ar.IsStoring()) {

ar.Write(m_etaLearningRate); ar.Write(m_Layers.Count); foreach (var lit in m_Layers)

{

lit.Serialize( ar ); }

} else {

double eta; ar.Read(out eta);

m_etaLearningRate = eta; int nLayers;

var pLayer = (NNLayer)null; ar.Read(out nLayers); m_Layers.Clear();

m_Layers = new NNLayerList(nLayers); for ( int ii=0; ii<nLayers; ii++ ) {

pLayer = new NNLayer( "", pLayer ); m_Layers.Add(pLayer);

pLayer.Serialize( ar ); }

} } }


(6)

CURRICULUM VITAE

Nama

: Raymond P.H.Sirait

Tempat/Tanggal Lahir : Pematangsiantar , 20 Oktober 1989

Alamat orang tua

: Jl. Pangaribuan No. 16 Pematangsiantar

Alamat Sekarang

: Jl. Murni gg.Setia kawan No.20 Medan

No.HP

: 082160622077

Email

:

raymondsirait89@gmail.com

Riwayat Pendidikan :

TK Cinta Rakyat Pematangsiantar dari Tahun 1994 s/d Tahun 1995

SD Cinta Rakyat 2 Pematangsiantar dari Tahun 1995 s/d Tahun 2001.

SMP RK Bintang Timur Pematangsiantar Tahun 2001 s/d Tahun 2004.

SMA Methodist Pematangsiantar dari Tahun 2004 /d Tahun 2007.

Universitas Sumatera Utara dari Tahun 2007 s/d 2015

Ketrampilan yang dikuasai :

1. IT Support .