Imulasi Pembacaan Image Plat Nomor Kendaraan dengan Bantuan Delphi 7 dan Neural network

32
imulasi Pembacaan Image Plat Nomor Kendaraan dengan Bantuan Delphi 7 dan Neural network. Non linier programming. Abstrak Syamsudin 080913001. Simulasi Pembacaan Image Plat Nomor Kendaraan dengan Bantuan Delphi 7 dan Neural network. Jurusan S1- fisika Fakultas Sains dan Teknologi Universitas Airlangga. Pada Umumnya sistem pencatatan plat nomer mobil atau plat nomor motor yang dilakukan di tempat masuk parkir masih dilakukan secara konvensional, yaitu dengan pencatatan manual plat nomer kendaraan yang dilakukan oleh kasir pada media karcis. Hal yang konvensional ini masih banyak yang dipakai di pintu keluar masuk kendaraan salah satunya di pintu masuk atau keluar jalan tool, yang terbaru saat ini mulai digunakan media kamera dan komputer namun tetap saja pencatatan plat nomer kendaraan masih dilakukan secara manual oleh kasir, dengan melakukan pencatatan yang kontinou, pada suatu saat tidak menuntut kemungkinan akan timbul suatu kejenuhan yang akan mempengaruhi konsentrasi kasir dalam melakukan pencatatan plat nomer kendaraan yang masuk dan keluar pintu. Dari hal tersebut dirancanglah sebuah sistem untuk mendeteksi dan membaca plat nomer kendaraan dengan menggunakan metode actificial intelligion (AI). Dalam system ini juga terdapat operasi pengambilan gambar kendaraan oleh suatu kamera, gambar tersebut akan masuk dan dibaca oleh suatu komputer dan juga operasi cropping plat nomor yang dilakukan oleh suatu program dengan menggunakan bantuan Delphi 7 sebagai pendukung dari metode mendeteksi posisi plat nomer dengan metode actificial intelligion. Operasi pengambilan gambar oleh kamera berfungsi untuk mendapatkan image mobil yang didalam nya terdapat plat nomor kendaraan, gambar yang telah ditangkap oleh kamera diinputkan dalam computer, gambar yang masuk dalam computer akan di deteksi oleh software dengan bantuan Delphi 7 yang khusus

Transcript of Imulasi Pembacaan Image Plat Nomor Kendaraan dengan Bantuan Delphi 7 dan Neural network

imulasi Pembacaan Image Plat Nomor Kendaraan dengan Bantuan Delphi 7 dan Neural network.

Non linier programming. 

Abstrak

Syamsudin 080913001. Simulasi Pembacaan Image Plat Nomor Kendaraan dengan Bantuan Delphi 7 dan Neural network. Jurusan S1-fisika Fakultas Sains dan Teknologi Universitas Airlangga.

 

Pada Umumnya sistem pencatatan plat nomer mobil atau plat nomor motor yang dilakukan di tempat masuk parkir masih dilakukan secara konvensional, yaitu dengan pencatatan manual plat nomer kendaraan yang dilakukan oleh kasir pada media karcis. Hal yang konvensional ini masih banyak yang dipakai di pintu keluar masuk kendaraan salah satunya di pintu masuk atau keluar jalan tool, yang terbaru saat ini mulai digunakan media kamera dan komputer namun tetap saja pencatatan plat nomer kendaraan masih dilakukan secara manual oleh kasir, dengan melakukan pencatatan yang kontinou, pada suatu saat tidak menuntut kemungkinan akan timbul suatu kejenuhan yang akan mempengaruhi konsentrasi kasir dalam melakukan pencatatan plat nomer kendaraan yang masuk dan keluar pintu.

Dari hal tersebut dirancanglah sebuah sistem untuk mendeteksi danmembaca plat nomer kendaraan dengan menggunakan metode actificialintelligion (AI). Dalam system ini juga terdapat operasi pengambilan gambar kendaraan oleh suatu kamera, gambar tersebut akan masuk dan dibaca oleh suatu komputer dan juga operasi cropping plat nomor yang dilakukan oleh suatu program dengan menggunakan bantuan Delphi 7 sebagai pendukung dari metode mendeteksi posisi plat nomer dengan metode actificial intelligion. Operasi pengambilan gambar oleh kamera berfungsi untuk mendapatkan image mobil yang didalam nya terdapat plat nomor kendaraan, gambar yang telah ditangkap oleh kameradiinputkan dalam computer, gambar yang masuk dalam computer akan di deteksi oleh software dengan bantuan Delphi 7 yang khusus

mengambil image yang masuk dalam computer, kemudian dilakukan proses cropping plat nomor kendaraan yang bertujuan hanya mendapatkan plat nomor kendaraan. Menghilangkan nois-nois yang berupa warna warna disekeliling plat nomor, sehingga didapatkan nya plat nomor yang siap untuk  dilakukan proses actificial intelligion  untuk membaca, menterjemahkan dan akhirnya merubah dari bentuk image plat motor menjadi teks atau karakter. Tingkat keberhasilan sistem pembacaan plat nomer motor adalah ±75% sampai±100% dari 20 sample plat nomor yang diberikan oleh program actificial intelligion pendeteksi plat nomor dengan karakter teksplat nomor kendaraan yang berbeda-beda dan tempat plat nomor kendaraan yang berbeda-beda pula.

Kunci : kamera, proses cropping oleh software dengan bantuan Delphi 7, pembacaan plat nomor kendaraan oleh actificial intelligion (neural network).

 

PENDAHULUAN

1.1     Latar Belakang

Pemanfaatan teknologi digital pada bidang pengolahan citra sampaipendeteksian image prosesing sudah semakin berkembang, hal ini dapat dilihat dengan banyaknya software atau perangkat lunak dalam bidang pengolahan citra, mendeteksi citra dan pembacaan apayang ada dalam image tersebut. Pengolahan citra secara digital adalah memproses suatu citra sehingga menghasilkan citra lain yang lebih baik kualitasnya. Dalam proses perbaikan citra terdapat berbagai metode di antaranya coding, scalling, sampling,filtering, cropping, pembacaan image dan metode yang lainnya.

Pembacaan citra digital atau bisa di spesifikasikan untuk membacaplat nomor kendaraan dapat dilakukan dengan memperoleh image Citra digital terlebih dahulu kemudian akan di deteksi dan di crop oleh software dan pada akhirnya hasil cropping tersebut di serahkan ke neural network untuk dlakukan pembacaan plat nomor kendaraan. Citra digital dapat diperoleh melalui scanner, kamera digital dan alat-alat lain yang berfungsi untuk capture citra.

Pada saat proses capture (pengambilan gambar), ada beberapa gangguan yang mungkin terjadi, seperti kamera tidak fokus atau munculnya bintik-bintik yang bisa jadi disebabkan oleh proses capture yang tidak sempurna. Setiap gangguan pada citra dinamakandengan noise. Noise pada citra tidak hanya terjadi karena ketidak-sempurnaan dalam proses capture, tetapi bisa juga disebabkan oleh kotoran-kotoran yang terjadi pada citra, oleh karena itu citra yang memiliki noise perlu diadakan pemrosesan melalui pengolahan citra agar dapat diperoleh citra yang kualitasnya lebih baik dan akn lebih mudah diterjemahkan oleh neural network untuk pemcaan plat nomor, sehingga kesalahan pembacaan neural network akan lebih kecil.

Noise yang terdapat pada citra digital dapat dikurangi atau dihilangkan dengan berbagai macam metode, metode-metode yang sering digunakan antara lain dengan metode median filter. Median filter adalah teknik mereduksi noise dengan cara mengganti pikselnoise dengan nilai median atau nilai tengah dari piksel-piksel tetangganya, dan piksel itu sendiri. Filter median sangat efektifuntuk menghilangkan noise jenis salt and peper dan juga dapat mempertahankan detail citra karena tidak tergantung dengan nilai-nilai yang berbeda dengan nilai-nilai yang umum dalam lingkungannya. Selain median filter terdapat metode lain yaitu Gaussian filter. Gaussian filter adalah suatu filter dengan nilaipembobotan pada setiap piksel dipilih berdasarkan bentuk fungsi Gaussian. Filter ini sangat baik dan sering digunakan untuk menghilangkan noise yang bersifat sebaran normal, yang banyak dijumpai pada citra hasil proses digitalisasi menggunakan kamera,hal ini terjadi karena merupakan fenomena alamiah akibat dari sifat pantulan cahaya dan kepekaan sensor cahaya pada kamera itu sendiri. Selain metode-metode di atas terdapat berbagai macam metode yang sering digunakan untuk menghilangkan noise, namun pada tugas akhir ini akan diteliti menggunakan metode bandpass dan bandstop untuk mereduksi noise karena metode ini akan menghasilkan citra yang lebih baik dimana efek blur yang dihasilkan lebih kecil dibandingkan dengan metode Gaussian filtersehingga citra hasil akan tampak lebih baik. Dengan cara seperti inilah untuk memperkecil permasalahan yang akan dihadapi oleh neural network untuk membaca dan menterjemahkan dari image

menjadi teks. Yaitu plat nomor kendaraan. Karena neural network sendiri akan bisa bekerja dengan baik jika disuguhkan pada image yang simple tanpa banyak noise. Dan hal inilah yang akan mempercepat kinerja neural network. karena  proyek ini di buat untuk pembacaan plat nomor kendaraan dengan kecepatan dan ketelitian pembacaan plat nomor kendaraan yang sangat tinggi.

1.2     Perumusan Masalah

Berdasarkan latar belakang di atas, dapat dirumuskan permasalahanyaitu bagaimana membuat suatu perangkat lunak pengolahan citra dengan metode cropping dan mengurangi noise untuk mendapatkan citra plat nomor kendaraan yang simple dengan bantuan Delphi 7, image tersebut untuk diserahkan dan dibaca oleh neural netwok (actificial intelligion).

1.3              Batasan Masalah

Pembuatan software, dibuat sesuai dengan tujuannya yaitu membaca image yang telah di filtter, penghilangan noise dan cropping image plat nomor kendaraan oleh neural network, adapun batasan masalahnya adalah sebagai berikut :

Capture image dengan dengan camera. Teknik filtering yang digunakan adalah bandpass dan

bandstop. image yang diolah dalam program menggunakan format BMP. Pemasukan nilai batas atas dan batas bawah di antara 0

sampai 255. o Pengurangan noise yang terdapat dalam image.o Dilakukan nya cropping untuk mendapatkan image plat

nomor.o Kemampuan yang dimiliki program adalah pemanggilan

file, menyimpan file dan melakukan pengolahan citra dengan filter bandpass dan bandstop.

o Image yang telah di olah diserahkan ke neural network untuk pembacaan plat nomor kendaraan.

Pembuatan program menggunakan Borland Delphi 7.0 dan neural network (actificial intelligion)

1.4              Tujuan

Tujuan dari tugas akhir ini adalah membaca plat nomor kendaraan dengan valid

 

1.5          Manfaat Penelitian

Manfaat yang diharapkan dalam penelitian ini adalah kemudahan dalam pembacaan plat nomor yang masuk dan keluar dari suatu area yang membutuhkan informasi dari plat nomor kendaraan dengan menggunakan teknologi informatika.

 

TINJAUAN PUSTAKA

 

 

 

2.1. SISTEM INFORMASI

Sistem informasi pada hakekatnya merupakan suatu sistem yang memiliki subsistem-subsistem untuk menghasilkan informasi. Terdapat dua kelompok pendekatan dalam mendefinisikan sistem, yaitu yang menekankan pada prosedurnya dan yang menekankan pada komponen atau elemennya. Jerry Fitz Gerald mendefinisikan sistem lebih menekankan pada prosedur yaitu suatu jaringan kerja dari prosedur-prosedur yang saling berhubungan, berkumpul bersama-samauntuk melakukan suatu kegiatan atau untuk menyelesaikan suatu sasaran yang tertentu.

Gordon B Davis mendefinisikan sistem lebih menekankan pada elemenatau komponenenya yaitu kumpulan elemen elemen yang salang berinteraksi untuk mencapai suatu tujuan tertentu (Jogianto, 2001). Secara umum system adalah sekelompok elemen-elemen yang

terintegrasi dengan maksud yang sama untuk mencapai suatu tujuan (Raymond Mc Leod, 1996).

Gardy Booch dan James Rumbaugh (1994) sepakat bergabung mengembangkan proses standar tunggal dalam metode berorientasi objek. Tahun 1995, Ivar Jacobson membangun bahasa pemodelan berorientasi objek standar yang dikenal dengan nama Unified Modeling Language (UML). Unified Modeling Language (UML) merupakan sistem arsitektur yang bekerja dalam objek oriented analisis design dengan satu bahasa yang konsisten untuk menentukan, visualisasi, kontruksi dan mendokumentasikan artifacts yang terdapat dari sistem software. Pada prinsipnya semua pakar mendefinisikan system tidak lepas dari komponen atau elemen-elemen yang membentuk system.

2.1     Rekayasa Perangkat Lunak

Perangkat lunak adalah

1. Instruksi  atau  program  computer  yang bila  dieksekusi dapat menjalankan fungsi tertentu.

2. Struktur data yang dapat membuat program manipulasi informasi.

3. Dokumen yang menjelaskan operasi dan penggunaan program. (Pressman, 2000)

Menurut Fritz, Gerald, Jerry, Tahun 1981 :

Rekayasa Perangkat Lunak adalah pengembangan dan penggunaan prinsip pengembangan suara untuk memperoleh perangkat lunak secara ekonomis yang reliable dan bekerja secara efisien pada mesin nyata.

Menurut IEEE (Institute of Electrical and Electronik Engineers) :

Rekayasa Perangkat Lunak adalah aplikasi dari rancangan yang sistematik, berdisiplin dan quantifiable (dapat diukur) terhadap pengembangan, operasi dan perawatan perangkat lunak.

Di dalam merekayasa perangkat lunak terdapat tujuan yang hendak dicapai atau diinginkan yaitu bagaimana menghasilkan produk perangkat lunak yang baik, yang dimaksud dengan lebih baik adalahperangkat lunak yang mudah di gunakan, dirawat dapat diandalkan, bekerja secara efisien dan mempunyai antarmuka pemakai yang baik dan juga di tinjau dari segi biaya yang ekonomis dan efisien.

 

Perangkat lunak memiliki karakteristik yang berupa elemen logika dan bukan merupakan elemen fisik. Dengan demikian, perangkat lunak memiliki cirri berbeda dengan perangkat keras, menurut pressman 2000 karakteristik rekayasa perangkat lunak adalah sebagai berikut :

a)      Perangkat lunak terciptakan adanya pengembangan

b)      Perangkat lunak tidak akan menjadi "kuno" ( tidak dipakailagi )

c)      Kebanyakan perangkat lunak dibuat secara khusus untuk tujuan tertentu dari pada disusun dengan komponen yang ada.

                       Perangkat lunak memiliki yang sering disebut "waterfall mode" atau siklus klasik, yang meliputi urutansistematika dalam rangka pengembangan perangkat lunak. Rekayasa sistem dibutuhkan karena perangkat lunak selalu menjadi bagian dari sebuah sistem yang lebih besar. Hal ini dimulai dengan melakukukan penyusunan terhadap kebutuhan-kebutuhan tersebut ke dalam perangkat lunak. Pandangan terhadap sistem ini diperlukan ketika perangkat lunak harus dihubungkan dengan elemen lain seperti hardware dan database. rekayasa sistem meliputi pengumpulan kebutuhan pada tingkat sistem dengan sejumlah kecil desain dan analisis tingkat atas.

1. Tahap Analisis (Analysis Requirement)

Analisis kebutuhan perangkat lunak merupakan proses pengumpulan kebutuhan yang dikhususkan pada perangkat lunak, untuk memahami ruang lingkup informasi perangkat lunak tersebut seperti fungsi-

fungsi yang dibutuhkan, cara kerja, dan antarmuka (interface). Kebutuhan akan sistem ini didokumentasikan dan ditinjau kembali bersama user atau pemakai perangkat lunak.

1. Tahap Desain (Desain)

Desain  perangkat  lunak  merupakan  proses  langkah-langkah yangdipusatkan pada empat atribut program yang berbeda, yaitu struktur data, arsitektur perangkat lunak, perincian prosedur dankarakteristik antarmuka. Proses desain menerjemahkan kebutuhan kedalam perangkat lunak yang dapat diperkirakan untuk kualitas sebelum dimulai pengkodean. Desain juga didokumentasikan dan menjadi bagian dari konfigurasi perangkat lunak.

1. Tahap Pengkodean (Coding)

Tahap pengkodean bertujuan untuk menerjemahkan desain ke dalam bentuk bahasa pemrograman yang dapat di jalankan oleh mesin khususnya computer.

1. Tahap Uji Coba (Testing)

Proses uji coba dititik beratkan pada logika internal perangkat lunak, untuk menjamin bahwa semua perintah telah dicoba. Dan fungsi-fungi eksternal, uji coba dilakukan untuk menemukan kesalahan (error), serta memastikan bahwa dengan input yang didefinisikan akan menghasilkan output yang sesuai dengan keinginan user.

1. Pemeliharaan (Maintenance)

Pada tahap ini, perangkat lunak akan mengalami perubahan-perubahan setelah digunakan. Hal ini dapat terjadi pada saat di temukannya kesalahan, proses adaptasi perangkat lunak pada sistemoperasi dan perangkat   lunak   lainnyayang   dapat   menimbulkankesalahan. Pemeliharaan perangkat lunak menggunakan kembali setiap langkah daur hidup (life cycle) yang terdahulu untuk sebuah program yang sudah ada. Hal ini lebih baik daripada membuat suatu program baru lagi. Di  dalam  permodelan  suatu  sistem  memiliki  alat  bantu untuk menggambarkan suatu diagram

aliran instruksi yang berisi serangkaian simbol yang menunjukkan secara logika tentang hubungan antar elemenn-elemen yang disebut diagram alir atau flowchart. Diagram alir atau flowchart dapat melukiskan sebuah kagiatan pengolahan informasi yang berkisar tentang konfigurasi komputer sampai tahap rinci dalam program.

 

2.3. SISTEM INFORMASI MASUK KELUARNYA KENDARAAN

Perkembangan ilmu pengetahuan dan teknologi saat ini telah berkembang dengan sangat pesat. Salah satu bukti nyata dapat kitalihat dari penggunaan sistem komputerisasi dalam segala aktivitasmanusia baik dalam hal organisasi, transportasi, komunikasi, produksi maupun pengelolaan administrasi keuangan. Komputerisasi menjadi pilihan utama karena memiliki berbagai macam kelebihan dibandingkan dengan sistem manual, baik dari segi ketelitian, keakuratan dan juga dari segi kecepatan pemprosesan data.

Sarana parkir merupakan kebutuhan publik yang dipercaya dapat memberikan kenyamanan bagi pengunjung untuk menitipkan kendaraan mereka didalam area masuk keluar nya kendaraan parkir. Salah satuaspek terpenting bagi public pengguna sarana masuk keluarnya kendaraan. Dengan semakin besarnya banyak kendaraan yang keluar masuk suatu area itu sendiri, maka aspek keamanan tidak mungkin hanya dengan mengandalkan petugas keamanan melainkan   perlu   untuk   mengembangkan   suatu   sistem   otomatis yang terkomputerisasi. Jadi suatu sistem informasi keluar masuknya suatu kendaraan itu sendiri merupakan suatu sistem informasi yangmengenangani segala sesuatu yang berkenaan dengan proses keluar masuk nya kendaraan.

2.4          Pengolahan Citra

Citra merupakan suatu signal digital dua dimensi yang dapat di observasi oleh sistem visual manusia. Ditinjau dari sudut pandangmatematis, citra merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dwimatra. Sumber cahaya menerangi obyek, obyek memantulkan kembali sebagian dari berkas cahaya tersebut. Pantulan cahaya ini ditangkap oleh alat-alat optik,

misalnya mata manusia, kamera pemindai (scanner) kamera digital, dan sebagainya, sehingga banyak obyek citra tersebut terekam.

Citra digital merupakan suatu larik / array dua dimensi atau suatu matrik yang elemen-elemennya menyatakan tingkat keabuan dari elemen gambar; jadi informasi yang terkandung di dalamnya bersifat diskrit (Arymurthy dan Setiawan, 1992).

Pengolahan citra digital adalah pemrosesan citra, khususnya dengan menggunakan komputer, menjadi citra yang kualitasnya lebihbaik (Rinaldi Munir, 2004). Teknik-teknik pengolahan citra mentransformasikan citra menjadi citra lain. Jadi masukannya adalah citra dan keluarannya juga citra, namun keluaran mempunyaikualitas yang lebih baik dari pada citra masukan.

Terdapat dua jenis citra yaitu citra diam dan citra bergerak. Citra bergerak adalah rangkaian citra diam yang ditampilkan secara beruntun (sekuensial) sehingga memberi kesan pada mata sebagai gambar yang bergerak. Sedangkan citra diam adalah citra yang tidak bergerak.

fungsi kontinu menjadi nilai-nilai diskrit disebut pencitraan (imaging) atau digitalisasi. Citra yang dihasilkan inilah yang disebut citra digital(Digital Image), dinyatakan sebagai kumpulanpiksel dalam matrik dua dimensi. Pada umumnya citra digital berbentuk empat persegi panjang dan dimensi ukurannya dinyatakan tinggi dikalikan dengan lebar atu lebar dikalikan dengan panjang.

 

2.5          Format File Bitmap (BMP)

Format citra yang baku di lingkungan sistem operasi Microsoft Windows adalah file bitmap (BMP). Pada saat ini format BMP kurangbegitu populer dan mulai jarang digunakan dibanding format JPG atau GIF, karena file BMP pada umumnya tidak dimampatkan, sehingga ukuran relatif lebih besar dari pada file JPG atau GIF.

Terjemahan bebas bitmap adalah pemetaan bit. Artinya nilai intensitas piksel di dalam citra dipetakan ke sejumlah bit

tertentu. Peta bit umumnya adalah 8, yang berarti setiap piksel panjangnya 8 bit. Delapan bit ini mempresentasikan nilai intensitas piksel. Dengan demikian ada sebanyak 28 =256 derajat keabuan, mulai dari 0 (00000000) sampai 255 (11111111). Setiap berkas bitmap terdiri atas header berkas, header bitmap, informasi palet dan data bitmap. Header adalah data yang terdapatpada awal bagian berkas citra.

Terdapat tiga macam citra dalam format BMP, yaitu citra biner, citra berwarna dan citra hitam-puth (grayscale). Citra biner hanya memiliki dua nilai keabuan 0 dan 1. Oleh kerena itu 1 bit telah cukup untuk mempresentasikan nilai piksel. Citra berwarna adalah citra yang lebih umum. Warna yang terlihat di dalam citra bitmap merupakan kombinasi dari tiga komponen warna, yaitu : R (Red), G (Green) dan B (Blue). Kombinasi dari tiga warna RGB tersebut menghasilkan warna yang khas untuk piksel yang bersangkutan. Pada citra 256 warna, setiap piksel memiliki panjang 8-bit, akan tetapi komponen RGBnya disimpan dalam tabel RGB yang disebut palet. Pada tabel 2.5 berikut akan memperlihatkan panjang informasi palet untuk setiap versi bitmap,masing-masing untuk citra 16 warna, 256 warna dan 16,7 juta warna. Berkas citra 24-bit tidak mempunyai palet RGB, karena langsung diuraikan ke dalam data bitmap. Informasi palet warna terletak sesudah header bitmap. Informasi palet warna dinyatakan dalam satu tabel RGB. Setiap entry pada tabel terdiri atas tiga buah field yaitu, R (Red), G (Green), dan B (Blue). Data bitmap diletakan sesudah informasi palet.

Format citra 8-bit dapat dilihat pada gambar 2.7. Format citra 4-bit (16 warna), hampir sama dengan format citra 8-bit. Pada citra4-bit dan citra 8-bit, warna suatu piksel diacu dari tabel informasi palet entry ke-k (k merupakan nilai rentang 0-15 untuk citra 16 warna dan 0-155 untuk citra 256 warna). Sebagai contoh pada gambar 2.6, piksel pertama bernilai 2, warna piksel pertama ini ditentukan oleh komponen RGB pada palet warna entry ke-2, yaitu R=14, G=13 dan B=16.piksel kedua serupa dengan piksel pertama. Piksel ketiga bernilai 1, warna ditentukan oleh komponenRGB pada palet warna entry ke-1, yaitu R=20, G=45 dan B=24. Demikian seterusnya untuk piksel-piksel lainnya. Khusus untuk

citra hitam-putih 8-bit, komponen R,G dan B suatu piksel bernilaisama dengan data bitmap piksel tersebut. Jadi piksel dengan nilaidata bitmap 129, memiliki nilai R=129, G=129 dan B=129.

2.6          Pemrograman Borland Delphi 7

Delphi berasal dari bahasa pemrograman yang cukup terkenal, yaitubahasa pascal. Bahasa pascal diciptakan pada tahun 1971 oleh ilmuwan dari swiss, yaitu Niklaus Wirth. Namapascal diambil dari ahli matematika dan filsafat Perancis, yaitu Blasie Pascal (1623-1622).

Karena pemrograman windows dengan turbo pascal masih dirasa cukupsulit, maka sejak tahun 1993 Borland International mengembangkan bahasa pascal yang bersifat visual. Hasil dari pengembangan ini adalah dirilisnya Delphi 1 pada tahun 1995. Perkembangan Delphi tidak berhenti sampai di situ. Pada tahun berikutnya 1996, Borland International merilis Delphi 2 untuk windows 95/NT. Dan kemudian dalam tahun-tahun berikutnya, Borland International merilis beberapa versi pengembangan Delphi yang memiliki tambahanfitur baru dibandingkan dengan versi sebelumnya.

2.7           Kelebihan dari Delphi

 

1. Komunitas pengguna yang besar pada Usenet maupun web.1. Dapat mengkompilasi menjadi single executable,

memudahkan distribusi dan meminimalisir masalah yang terkait dengan versioning.

2. Banyaknya dukungan dari pihak ketiga terhadap VCL (biasanya tersedia berikut source codenya) ataupun tools pendukung lainnya (dokumentasi, tool debugging).

3. Optimasi kompiler yang cukup cepat.4. Mendukung multiple platform dari source code yang sama

2.8                 Kekurangan dari Delphi 

1. Partial single vendor lock-in (Borland dapat menetapkan standar bahasa, kompatibilitas yang harus mengikutinya).

2. Terbatasnya kamampuan portabilitas antar-platform OS (sebelum ada kylix).

3. Akses pada platform dan library pihak ketiga membutuhkan file-file header yang diterjemahkan ke dalam bahasa pascal.

4. Dokumentasi atas platform dan teknik-teknik yang menyertainya sulit ditemukan dalam bahasa pascal (contoh akses COM dan Win32)

 

 

BAB III

 

PERANCANGAN DAN DESAIN SISTEM

 

 

 

3.1. DESKRIPSI SISTEM

Pada bab III ini akan dijelaskan software bisa membaca plat nomorkendaraan (mobil atau motor). Tujuan dari pembuatan software ini yang dengan bantuan Delphi 7 dan neural network adalah untuk membaca dan menterjemahkan dari image plat motor menjadi sebuah karakter. Pada awalnya pengguna memasukkan input data berupa immage. image masukan adalah image yang sudah diolah melalui pemfilteran, pengurangan noise dan cropping image. Sehingga di dapatkan image yang sempurna dengan format bitmap grayscale karena sistem hanya dibatasi untuk memproses citra bitmap grayscale.dengan grayscale ini bertujuan agar warna dari ketiga warna yang ada di jadikan satu warna.

Flowchart berikut merupakan implementasi dari perubahan bentuk image plat motor menjadi sebuah karakter yang melalui proses penegasian kemudian dilanjutkan dengan proses croping citra dan

terakhir dilakukan proses get image chars untuk merubah sebuah image plat motor menjadi sebuah karakter.

 form kali ini sistem akan meminta untuk memasukkan citra dengan format berkas bitmat grescale, yang kemudian akan dinegasi, setelah itu dicroping dan yang terahir dilakukan proses get imagechars yang hasil akhirnya berupa sebuah teks atau karakter.

 

3.3. DESAIN SISTEM

Pada subbab ini akan dijelaskan mengenai desain aplikasi sistem untuk implementasi output. Desain aplikasi ini meliputi desain data, algoritma yang digunakan dalam sistem yang digambarkan dengan flowchart dan desain proses. Desain data berisikan penjelasan data yang diperlukan untuk dapat menerapkan metode negasi pada citra plat nomor polisi kendaraan bermotor. Desain data meliputi data masukan, data selama proses dan data keluaran.Desain proses antara lain menjelaskan tentang proses negasi pada citra plat nomor polisi kendaraan bermotor, yang selanjutnya dilakuka proses croping dan yang terakhir yakni proses get image chars yang hasil akhirnya akan berupa sebuah teks atau karakter dari sebuah citra plat nomor polisi kendaraan bermotor.

 

3.2.         Desain Data

Data yang digunakan untuk implementasi perangkat lunak ini dibagimenjadi tiga bagian utama, yaitu data masukan, data selama prosesdan data keluaran.

1. Data Masukan

Data masukan adalah data yang digunakan selama proses perubahan citra plat nomor polisi kendaraan bermotor menjadi sebuah teks atau karakter. Data masukan yang pertama dari pengguna adalah arsip citra yang dipilih oleh pengguna. Pada sistem ini citra

yang dimasukkan berupa arsip citra grayscale dengan format .bmp. 2. Data Selama Proses

Pada tahapan proses negasi citra, dihasilkn citra yang telah dinegasikan yang kemudian citra tersebut diproses lagi dengan proses croping dengan tujuan membuang bagian-bagian yang sudah tidak diperlukan lagi.

Setelah melewati dua proses tersebut maka pada tahapan terakhir dilakukan proses get image chars yang didalamnya juga terdapat proses penghilangan nois, kemudian hasil akhir yang didapatkan akan berupa sebuah teks atau karakter yang didapatkan dari sebuahcitra plat nomor polisi kendaraan bermotor.

 

3. Data Keluaran

Data keluaran yang dihasilkan dari serngkaian proses diatas adalah berupa teks atau karakter yang didapatkan dari sebuah citra plat nomor polisi kendaraan bermotor dengan format font berupa arial.

 

3.3 Sintak dari Pembacaan Plat Nomor Kendaraan

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls, ComCtrls, ExtDlgs, TeeProcs, TeEngine, Chart,

  Series;

 

type

  TForm1 = class(TForm)

    Button1: TButton;

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    TabSheet2: TTabSheet;

    TabSheet3: TTabSheet;

    TabSheet4: TTabSheet;

    TabSheet5: TTabSheet;

    TabSheet6: TTabSheet;

    TabSheet7: TTabSheet;

    IOriginal: TImage;

    IMerah: TImage;

    IHijau: TImage;

    IBiru: TImage;

    IGC1: TImage;

    IGC2: TImage;

    IGC3: TImage;

    tgyuguhju: TTabSheet;

    IGC: TImage;

    OpenPictureDialog1: TOpenPictureDialog;

    Chart1: TChart;

    Series1: TLineSeries;

    Chart2: TChart;

    Chart3: TChart;

    Series2: TLineSeries;

    Series3: TLineSeries;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    IHasil: TImage;

    Label6: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure IGC3MouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

    procedure IGC1MouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

    procedure IGC2MouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

    procedure IOriginalMouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

type

  TRGB32 = packed record

  B,G,R,A: Byte;

  end;

 

  TRGB32Array = packed array[0..MaxInt div SizeOf(TRGB32)-1] of TRGB32;

  PRGB32Array = ^TRGB32Array;

 

var

  Form1: TForm1;

 

implementation

 

uses Types;

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

var

  y,x,panjang,lebar : Integer;

  LineGC31,LineGC32,LineGC33,LineGC34,LineGC35,LineGC36,LineGC37,LineGC38,LineGC39,LineGC310,LineGC311,LineGC312,LineGC313,

  LineOriginal,LineMerah,LineBiru,LineHijau,LineGC1,LineGC2,LineGC3,LineIGC: PRGB32Array;

  jumlahGC1,jumlahGC2,jumlahGC3,K,n:integer;

  hajarhitamGC3,hajarputihGC3,lebarhitam,itungan,jumlahGC3sebelumnya:integer;

  ilang,bener:boolean;

  rerataX:real;

  kotak:TRect;

  HasilBMP:TBitmap;

begin

  if (OpenPictureDialog1.Execute)then

  begin

  //membuat Image dengan format 32 bit

    IOriginal.Picture.LoadFromFile(OpenPictureDialog1.FileName);

    OpenPictureDialog1.Filter:='BMP files (*.bmp)|*.BMP|';// mendefinisikan file khusus berjenis .BMP

 

    IOriginal.Picture.Bitmap.PixelFormat  := pf32bit;

    IMerah.Picture.Bitmap.PixelFormat     := pf32bit;

    IBiru.Picture.Bitmap.PixelFormat      := pf32bit;

    IHijau.Picture.Bitmap.PixelFormat     := pf32bit;

    IGC1.Picture.Bitmap.PixelFormat       := pf32bit;

    IGC2.Picture.Bitmap.PixelFormat       := pf32bit;

    IGC3.Picture.Bitmap.PixelFormat       := pf32bit;

    IGC.Picture.Bitmap.PixelFormat        := pf32bit;

  //mendefinisikan gambar panjang dan lebar yang di analisa

      panjang   := IOriginal.Width;

      lebar     := IOriginal.Height;

  //mengisi image yang original ke Imerah sampai IGC

      IMerah.Picture.Assign(IOriginal.Picture);

      IHijau.Picture.Assign(IOriginal.Picture);

      IBiru.Picture.Assign(IOriginal.Picture);

      IGC1.Picture.Assign(IOriginal.Picture);

      IGC2.Picture.Assign(IOriginal.Picture);

      IGC3.Picture.Assign(IOriginal.Picture);

      IGC.Picture.Assign(IOriginal.Picture);

  //membersihkan semua kondisi clear

        Series1.Clear;

        Series2.Clear;

        Series3.Clear;

  //menganalisa

        for y := 0 to lebar - 1 do //menganalisa looping dari Y =0 - Y = lebar -1

        begin

            LineOriginal  := IOriginal.Picture.Bitmap.ScanLine[y];//mengambil gambar Iorigigalpada Y

            LineMerah     := IMerah.Picture.Bitmap.ScanLine[y];

            LineBiru      := IBiru.Picture.Bitmap.ScanLine[y];

            LineHijau     := IHijau.Picture.Bitmap.ScanLine[y];

 

            LineGC1       := IGC1.Picture.Bitmap.ScanLine[y];

            LineGC2       := IGC2.Picture.Bitmap.ScanLine[y];

            LineGC3       := IGC3.Picture.Bitmap.ScanLine[y];

            LineIGC       := IGC.Picture.Bitmap.ScanLine[y];

            //berapa banyak jumlah warna hitam pada jumlahGC1,jumlahGC2,jumlahGC3 dimulai dari 0

            jumlahGC1:=0;

            jumlahGC2:=0;

            jumlahGC3:=0;

 

            //untuk mehilangkan noise hitam dan putih

            hajarhitamGC3:=0;

            hajarputihGC3:=0;

            ilang:=False;

          //Menganalisa nilai X dari 0 sampai panjang 1 pixel

          for x := 0 to panjang -1 do

          begin

            LineMerah[x].R:=LineOriginal[x].R;//membuat gambar original memjadi warna merah

            LineMerah[x].G:=0;

            LineMerah[x].B:=0;

 

            LineHijau[x].R:=0;

            LineHijau[x].G:=LineOriginal[x].G;//membuat gambar original memjadi warna Hijau

            LineHijau[x].B:=0;

 

            LineBiru[x].R:=0;

            LineBiru[x].G:=0;

            LineBiru[x].B:=LineOriginal[x].B;//membuat gambar original memjadi warna Biru

            //

            if (LineOriginal[x].R<LineOriginal[x].G)and(LineOriginal[x].G<LineOriginal[x].B)and

            (LineOriginal[x].R<50) and (LineOriginal[x].G<200)and(LineOriginal[x].B<200)or(LineOriginal[x].R<90)and

            (LineOriginal[x].G - LineOriginal[x].R<35) and (LineOriginal[x].B - LineOriginal[x].G<35) then

            begin  //jika memenuhi syarat (if) akan di hitamkan

             LineIGC[x].R:=0;

             LineIGC[x].G:=0;

             LineIGC[x].B:=0;

            end

            else //jika tidak memenuhi syarat (if)

            begin

             LineIGC[x].R:=255;

             LineIGC[x].G:=255;

             LineIGC[x].B:=255;

            end;

      //IGC1

            if LineIGC[x].R>180 then//jika pada Line

            begin

               LineGC1[x].R:=255;

               LineGC1[x].G:=255;

               LineGC1[x].B:=255;

            end;

            if LineIGC[x].R<=180 then

            begin

               LineGC1[x].R:=0;

               LineGC1[x].G:=0;

               LineGC1[x].B:=0;

            end;

            //mengetahui grafik

            if x>0 then

            if (LineGC1[x].R=0)and (LineGC1[x-1].R=255)then

            inc(jumlahGC1);

     //IGC2

            if LineIGC[x].R>125 then

            begin

               LineGC2[x].R:=255;

               LineGC2[x].G:=255;

               LineGC2[x].B:=255;

            end;

            if LineIGC[x].R<=125 then

            begin

               LineGC2[x].R:=0;

               LineGC2[x].G:=0;

               LineGC2[x].B:=0;

            end;

 

            if x>0 then

            if (LineGC2[x].R=0) and(LineGC2[x-1].R=255) then

            inc(jumlahGC2);

 

        //IGC3

            if (LineIGC[x].R>125) and (LineIGC[x].G>125) and (LineIGC[x].B>125)  then

            begin //jika memenuhi syarat maka di buat putih

               LineGC3[x].R:=255;

               LineGC3[x].G:=255;

               LineGC3[x].B:=255;

               //syarat tambahan menghilangkan warna hitam di sebelah Kiri

               if abs(x-hajarhitamGC3)<500 then

               begin

                   for k:=0 to hajarhitamGC3  do

                   begin

                       LineGC3[K].R:=255;

                       LineGC3[K].G:=255;

                       LineGC3[K].B:=255;

                   end;

               end;

              //menghilangkan warna hitam yang ditengah

               if hajarhitamGC3>50 then

               begin

                  for k:=x-hajarhitamGC3 to x-1  do

                   begin

                       LineGC3[K].R:=255;

                       LineGC3[K].G:=255;

                       LineGC3[K].B:=255;

                   end;

               end;

 

               //variabel hajar hitam dan putih

              hajarputihGC3:=0;

              hajarhitamGC3:=0;

              //hajartitikGC3:=0;

            end;

 

            if (LineIGC[x].R<=50) and (LineIGC[x].G<=50) and (LineIGC[x].B<=50) then

            begin //jika syarat terpenuhi maka di buat hitam

               LineGC3[x].R:=0;

               LineGC3[x].G:=0;

               LineGC3[x].B:=0;

               inc(hajarhitamGC3);

 

               if abs(x-panjang)<2 then

               begin

                   for k:=panjang-hajarhitamGC3 to panjang-2  do

                   begin

                       LineGC3[K].R:=255;

                       LineGC3[K].G:=255;

                       LineGC3[K].B:=255;

                   end;

               end;

            end;

            if x>0 then

              if (LineGC3[x].R=0) and (LineGC3[x-1].R=255) then

                  inc(jumlahGC3);

              if hajarhitamGC3>200 then

              jumlahGC3:=0 ;

 

            if jumlahGC3>30 then

            begin

              for k:=0 to panjang-1 do

              begin

                  LineGC3[K].R:=255;

                  LineGC3[K].G:=255;

                  LineGC3[K].B:=255;

              end;

            end;

 

            for k:=0 to panjang-3 do

            begin

               if (LineGC3[K].R=255) and (LineGC3[K+1].R=0) and (LineGC3[K+2].R=255) then

               begin

                   LineGC3[K+1].R:=255;

                   LineGC3[K+1].G:=255;

                   LineGC3[K+1].B:=255;

               end;

            end;

 

          end;

            if (jumlahGC3>20)  then jumlahGC3:=0;

            if (jumlahGC3<10)  then jumlahGC3:=0;

            Series1.AddXY(y,jumlahGC1);

            Series2.AddXY(y,jumlahGC2);

      end;

 

      y:=0;

      n:=0;

      rerataX:=0;

       //////////////////////////////////////

      repeat

      begin

            LineGC3        := IGC3.Picture.Bitmap.ScanLine[y];

            LineGC31       := IGC3.Picture.Bitmap.ScanLine[y+1];

            LineGC32       := IGC3.Picture.Bitmap.ScanLine[y+2];

            LineGC33       := IGC3.Picture.Bitmap.ScanLine[y+3];

            LineGC34       := IGC3.Picture.Bitmap.ScanLine[y+4];

            LineGC35       := IGC3.Picture.Bitmap.ScanLine[y+5];

            LineGC36       := IGC3.Picture.Bitmap.ScanLine[y+6];

            LineGC37       := IGC3.Picture.Bitmap.ScanLine[y+7];

            LineGC38       := IGC3.Picture.Bitmap.ScanLine[y+8];

            LineGC39       := IGC3.Picture.Bitmap.ScanLine[y+9];

            LineGC310      := IGC3.Picture.Bitmap.ScanLine[y+10];

            LineGC311      := IGC3.Picture.Bitmap.ScanLine[y+11];

            LineGC312      := IGC3.Picture.Bitmap.ScanLine[y+12];

            LineGC313      := IGC3.Picture.Bitmap.ScanLine[y+13];

            bener:=false;

            itungan:=0;

 

 

            for x := 0 to panjang-1 do

            if not bener then

            begin

                if (x>=150) and (x<290)and(LineGC3[x].R=255) and (LineGC31[x].R=0) and (LineGC32[x].R=255)then

                begin

                  LineGC31[x].R:=255;

                  LineGC31[x].G:=255;

                  LineGC31[x].B:=255;

                end;

                if (x<150) or (x>290)then

                 begin

                  LineGC31[x].R:=255;

                  LineGC32[x].R:=255;

                  LineGC33[x].R:=255;

                  LineGC34[x].R:=255;

                  LineGC35[x].R:=255;

                  LineGC36[x].R:=255;

                  LineGC37[x].R:=255;

                  LineGC38[x].R:=255;

                  LineGC39[x].R:=255;

                  LineGC310[x].R:=255;

                  LineGC311[x].R:=255;

                  LineGC312[x].R:=255;

                  ///////////////////

                  LineGC31[x].G:=255;

                  LineGC32[x].G:=255;

                  LineGC33[x].G:=255;

                  LineGC34[x].G:=255;

                  LineGC35[x].G:=255;

             &n