Penjelasan Program Pengenalan secara real time rambu lalu lintas peringatan menggunakan ekstraksi ciri Wavelet Haar dan fungsi jarak Chi Square.

handles.a=gambar; guidatahObject,handles Perintah program getdata adalah perintah untuk meng-capture gambar saat video dari wabcam sedang dalam keadaan on. Hasil dari capture wabcam memiliki format gambar YUY sehingga diubah terlebih dahulu ke format gambar RGB dengan cara menggunakan fungsi yuy2torgb. Agar hasil capture bisa dipanggil dan digunakan diprogram lain maka diinisialisasikan menggunakan “handles”. c. Popupmenu Gambar 4.9. tampilan saat popupmenu diklik - Popupmenu merupakan bagian untuk user memilih variasi desimasi yang diinginkan, pada bagian popupmenu ini terdiri dari 4 pilihan variasi desimasi yaitu desimasi1,2,dan 3. Popupmenu menjalankan program berikut : indeks=gethandles.popupmenu1, Value ; switch indeks case 2 des=1; case 3 des=2; case 4 des=3; end handles.des=des; guidatahObject,handles; Program di atas tertulis des=1 maksudnya adalah desimasi akan dilakukan sebanyak 1 kali, untuk penjelasan desimasi dapat dilihat pada bab III. Desimasi diinisialisasikan dengan nama “des”, agar nilai variasi desimasi ini dapat dipanggil diprogram lain maka diubah menjadi “handles.des”. d. Tombol Start Gambar 4.10. Tampilan saat tombol start diklik Proses pada tombol start ini terdiri dari beberapa bagian program yang digabungkan, program-program tersebut yaitu program grayscale, program cropping, program resizing , program ekstraksi jarak, program fungsi jarak dan program keluaran. - Program grayscale Program ini berfungsi untuk mengubah gambar yang telah di-capture menjadi berwarna keabu-abuan. PROSES GRAYSCALE x=handles.a; axeshandles.axes2; x1=doublergb2grayx; x2=x1255; imshowx2 Perintah double pada program diatas berfungsi untuk mengubah nilai pada gambar grayscale karena nilainya masih unsigninteger, sedangkan nilai hasil akhir dibagi 255 sebagai normalisasi agar nilai maksimalnya 1. - Program cropping Program ini berfungsi untuk memotong gambar sehingga bagian yang tidak di perlukan dapat dihilangkan. PROSES CROPPING axeshandles.axes3; x3=1-x2; x4=imcropx3, [150 100 350 350] ; x6=imrotatex4,45, bilinear ; x7=ceilx6-0.80; x8=bboxx6,x7; x10=imrotatex8,-45, bilinear ; imshowx10 axis on Sebelum dilakukan cropping hasil dari grayscale dibalik terlebih dahulu, yang berwarna gelap bernilai 0 diubah menjadi berwarna terang bernilai 0 dengan cara seperti list program “x3”, hal ini dilakukan untuk mempermudah dalam tahap automatic cropping . Tahap selanjutnya melakukan manual cropping dengan cara menentukan titik cropping berdasarkan gambar rambu yang berjarak 3 meter, hal ini dilakukan agar lebih memudahkan dalam tahap automatic cropping. Perintah “imrotate” yaitu berfungsi untuk merotasi gambar sebanyak 45° agar gambar rambu menjadi berbentuk kotak, hal ini dilakukan agar mempermudah dalam pemotongan automatic cropping . Hasi l dari “imrotate” dikurangi 0,80 agar nilai-nilai yang masih dibawah 0,80 dibuat menjadi 0 sehingga perbedaan antara gelap dan terang makin terlihat. Penentuan nilai 0,80 berasal dari hasil percobaan seperti pada table 4.1. Sedangkan perintah “ceil” yaitu berfungsi sebagai pembulatan angka ke atas, sebagai contoh nilai 0,3 dibulatkan menjadi 1 dan nilai -0,9 dibulatkan menjadi 0.Tahap selanjutnya adalah tahap automatic cropping yaitu dengan cara menggunakan fungsi “bbox” atau bounding box seperti yang sudah dijelaskan pada bab III Dibawah ini merupakan program bounding box namun untuk program lengkapnya dapat dilihat pada lampiran. Tabel 4.1. Mencari nilai parameter untuk bounding box Nilai Hasil Gambar 0,25 0,50 0,75 0,95 function [out1,out2]=cutleftin1,in2 out1 gray , out2 biner out1=in1; out2=in2; JKolom=sumin2; KolomTakNol=findJKolom 60; if sumKolomTakNol=1; out1:,1:KolomTakNol1-1=[]; out2:,1:KolomTakNol1-1=[]; end Program diatas adalah bagian dari program boundingbox yang berfungsi sebagai batas penentu titik potong untuk automatic cropping. List program “JKolom” berfungsi untuk menjumlahkan nilai pada tiap kolom,pada gambar yang berwarna putih bernilai 1 sedangkan berwarna gelap bernilai 0. List program “KolomTakNol” berfungsi untuk memotong kolom yang nilainya kurang dari nilai parameter yang sudah ditentukan, untuk nilai parameter “JKolom60” didapat dari hasil percobaan seperti pada table 4.2.Hasil dari “bbox” selanjutnya dirotasi kembali menggunakan “imrotate” sehingga posisi rambu kembali ke posisi awal. Tabel 4.2. Menentukan nilai parameter JKolom Nilai Hasil Gambar JKolom 20 JKolom 60 JKolom 150 JKolom 190 - Program resizing Program ini berfungsi untuk menyesuaikan ukuran gambar dari hasil cropping sehingga memiliki ukuran piksel yang sama. PROSES RESIZING axeshandles.axes4; x11=imresizex10,[64 64]; imshowx11 axis on Program diatas menggunakan perintah “imresize” yang berfungsi untuk mengubah ukuran dari citra, baik itu untuk memperbesar atau pun memperkecil ukuran citra. Program resizing ini membuat ukuran citra menjadi 64 x 64 piksel. - Program ekstraksi ciri Program ini berfungsi untuk proses pengolahan data dari data yang banyak diekstrak menjadi data yang lebih sedikit namun dari data yang sedikit tersebut sudah bisa mewakili data sebelumnya yang banyak. EKSTRAKSI CIRI axeshandles.axes5; x12=xcwav2x11,des; mx12=maxx12:; nx12=x12mx12; x13=x12:; imshownx12 axis on x13=x13+1; z=z+1; Fungsi program “xcwav2” adalah untuk memanggil fungsi ekstraksi ciri, yang mana di dalam fungsi ekstraksi ciri menggunakan ekstraksi ciri wavelet haar. Input dari program ekstraksi ciri berasal dari hasil proses resizing yang berasal dari citra input dan “des” adalah nilai desimasi hasil pilihanuser daripop-upmenu. Sedangkan list program “nx12” berfungsi untuk normalisasi agar gambar bisa ditampilkan pada axes 5. List program “x13” berfungsi untuk membuat data yang terdiri dari beberapa kolom menjadi hanya satu kolom, contoh data 32x32 diubah menjadi 1x1024 Output dari fungsi “xcwav2” adalah x12, yang merupakan hasil dari ekstraksi ciri wavelet haar. - Program fungsi jarak Program ini berfungsi untuk membandingkan antara hasil dari ekstraksi ciri dengan database yang telah disediakan, yang nantinya nilai terkecil akan dijadikan output dari sistem pengenalan rambu ini. FUNGSI JARAK for n=1:8 rn=jarakx13,z:,n; end minr=minr b1=findminr==r; b2=ceilb12; Perintah program jarak adalah untuk memanggil fungsi jarak chi square yang akan membandingkan antara hasil dari output ekstraksi ciri yaitu x13 dengan hasil dari database yaitu z. Sedangkan b1 merupakan hasil pencarian nilai terkecil dari hasil perhitungan jarak, yang nantinya akan dicari letak nilai terkecil tersebut menggunakan list program pada b2. - Program keluaran Program ini berfungsi untuk menampilkan hasil pengenalan berupa tekstulisan dan suara. KELUARAN TEXT z2={ Tikungan ke Kiri , Tikungan ke Kanan , Persimpangan }; y1=z2b2 sethandles.edit1, string ,y1; Program diatas adalah program untuk menampilkan hasil pengenalan berupa tulisan. Variabel z2 adalah inisialisasi 3 buah kata, nantinya nilai minimal akan dipanggil sesuai nama inisialisasi dan kemudian ditampilkan pada edit_text_1 menggunakan peritah set. KELUARAN SUARA if b2==1; y=wavread Tikungan ke Kiri.wav ; soundy,50000 elseif b2==2; y=wavread Tikungan ke Kanan.wav ; soundy,50000 elseif b2==3; y=wavread Persimpangan.wav ; soundy,50000 end Program diatas adalah program untuk menampilkan hasil pengenalan berupa suara. Suara berasal dari hasil rekaman yang disimpan didalam folder yang sama dengan program GUI pengenalan rambu kemudian suara akan dipanggil menggunakan perintah “wavread”. e. Tombol Reset Tombol “Reset” berfungsi untuk mengulang program dari awal apabila user melakukan kesalahan atau terjadi error pada saat proses pengenalan. Program pada tombol “reset” adalah sebagai berikut : axeshandles.axes1 plot0; axeshandles.axes2 plot0; axeshandles.axes3 plot0; axeshandles.axes4 plot0; axeshandles.axes5 plot0; sethandles.popupmenu2, Value ,1; sethandles.edit1, string , ; f. Tombol Close Tombol “Close” berfungsi untuk mengakhiri dan keluar dari program atau tampilan GUI pengenalan rambu peringatan. Program pada tombol “Close” adalah sebagai berikut : deletefigurePengenalan_Rambu; Berdasarkan dari hasil pengujian tombol pada GUI pengenalan rambu peringatan dapat ditarik kesimpulan bahwa program sudah berjalan dengan baik dan dapat bekerja sesuai dengan perancangan pada bab III.

4.3. Pengujian dan Analisis Hasil Pengenalan Rambu Peringatan

Pengujian program pengenalan rambu ini bertujuan untuk melihat seberapa besar tingkat pengenalan terhadap citra masukkan. Pengujian program pengenalan rambu dilakukan dengan 2 tahap. Tahap pertama adalah pengujian untuk melihat jarak minimum dan maksimum antara citra masukan dengan webcam dengan menggunakan variasi desimasi 1,2, dan 3 sehingga rambu dapat dikenali. Tahap kedua adalah pengujian untuk melihat kemampuan pengenalan dengan menggunakan variasi sudut kemiringan antara rambu dengan webcam.

4.3.1. Pengujian Pengenalan Berdasarkan Variasi Jarak dan Variasi Desimasi

Percobaan variasi jarak bertujuan untuk melihat batas jarak terdekat dan batas terjauh antara rambu dengan webcam. Percobaan variasi desimasi bertujuan untuk melihat pengaruh desimasi terhadap tingkat pengenalan. Pengujian ini dilakukan dengan beberapa beberapa langkah, yaitu : 1. Melakukan capturing citra pada 3 buah gambar rambu peringatan, yaitu rambu tikungan ke kiri, rambu tikungan ke kanan dan rambu persimpangan. 2. Capturing dilakukan dengan jarak dari paling dekat dengan rambu hingga jarak terjauh dari rambu dengan rentang tiap jarak sebesar 20 cm hingga tidak dapat dikenali. Posisi webcam tegak lurus terhadap gambar rambu seperti pada Gambar 4.11. Gambar 4.11. Posisi webcam terhadap gambar rambu 3. Percobaan variasi desimasi dilakukan dengan menggunakan desimasi 32x32, desimasi 2 16x16, dan desimasi 3 8x8. 4. Percobaan dilakukan sebanyak 5 kali untuk setiap gambar rambu. Tabel 4.3. Pengujian rambu tikungan ke kiri Jarak cm Desimasi 1 Desimasi 2 Desimasi 3 Tingkat Percobaan Percobaan Percobaan Pengenalan 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 40                50  100 60  100 80  100 100  100 200  100 300  100 400  100 500  100 520  100 540  100 560  100 580           60 600                620                Ket :  : rambu dikenali dengan tidak benar  : rambu dikenali dengan benar Hasil pengujian pada Tabel 4.3 merupakan sebagian hasil pengujian pengenalan rambu tikungan ke kiri berdasarkan variasi jarak dan variasi desimasi, sedangkan untuk hasil lebih lengkap dapat dilihat pada lampiran. Hasil pengujian variasi jarak memperlihatkan bahwa untuk rambu tikungan ke kiri jarak terdekat atau jarak minimum antara webcam dengan rambu adalah 50 cm, karena pada jarak dibawah 50 cm gambar bagian dalam rambu sudah terpotong sehingga rambu tidak dapat dikenali. Sedangkan jarak terjauh atau jarak maksimum antara webcam dengan rambu adalah 560 cm, pada jarak 580 cm beberapa percobaan rambu sudah mulai tidak dikenali. Jarak 600 cm rambu sudah tidak dapat dikenali karena ukuran rambu sudah terlalu kecil sehingga pada bagian cropping terjadi kesalahan yang menyebabkan rambu dikenali dengan tidak benar. Hasil pengujian variasi desimasi memperlihatkan bahwa pada percobaan desimasi tidak mempengaruhi hasil pengenalan, bila rambu sudah dikenali maka menggunakan desimasi 1, desimasi 2, maupun desimasi 3 hasilnya akan tetap sama . Sebagai contoh seperti pada jarak 580 cm percobaan 2 dan 3 rambu tidak dikenali maka pada desimasi 1, 2, dan 3 tidak dikenali. Tabel 4.4. Pengujian rambu tikungan ke kanan Jarak cm Desimasi 1 Desimasi 2 Desimasi 3 Tingkat Percobaan Percobaan Percobaan Pengenalan 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 40                50  100 60  100 80  100 100  100 200  100 300  100 400  100 500  100 520  100 540  100 560  100 580       80 600                620                Ket :  : rambu dikenali dengan tidak benar  : rambu dikenali dengan benar Hasil pengujian pada Tabel 4.4 merupakan sebagian hasil pengujian pengenalan rambu tikungan ke kanan berdasarkan variasi jarak dan variasi desimasi, sedangkan untuk hasil lebih lengkap dapat dilihat pada lampiran. Hasil pengujian variasi jarak memperlihatkan bahwa