Você está na página 1de 225

SKRIPSI

PURWARUPA PENGATURAN LAMPU OTOMATIS DENGAN PENGOLAHAN CITRA BERBASIS OPENCV THE PROTOTYPE OF CONTROLLING AUTOMATIC BEAM WITH IMAGE PROCESSING BASED ON OPENCV

FAUZIAZZUHRY RAHADIAN 08/265919/PA/11928

PROGRAM STUDI ELEKTRONIKA DAN INSTRUMENTASI JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN UNIVERSITAS GADJAH MADA YOGYAKARTA 2013

SKRIPSI
PURWARUPA PENGATURAN LAMPU OTOMATIS DENGAN PENGOLAHAN CITRA BERBASIS OPENCV Diajukan untuk memenuhi salah satu syarat memperoleh derajat Sarjana Sains Program Studi Elektronika dan Instrumentasi

FAUZIAZZUHRY RAHADIAN 08/265919/PA/11928 PROGRAM STUDI ELEKTRONIKA DAN INSTRUMENTASI JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN UNIVERSITAS GADJAH MADA YOGYAKARTA 2012

ii

HALAMAN PENGESAHAN SKRIPSI


PURWARUPA PENGATURAN LAMPU OTOMATIS DENGAN PENGOLAHAN CITRA BERBASIS OPENCV Telah dipersiapkan dan disusun oleh FAZIAZZUHRY RAHADIAN 08/265919/PA/11928

Telah dipertahankan di depan tim penguji pada tanggal 1 Maret 2013

Susunan Timq q Penguji Pembimbing / Penguji I

Drs. Agus Harjoko, M.Sc, Ph.D 19600804 1987 03 1 003 Penguji II Penguji III

Dr. Ahmad Ashari, M.Kom. 19630502 1990 03 1 005

Drs. Tri Kuntoro, M.Sc. 19591121 1988 03 1 001

iii

PERNYATAAN
Dengan ini saya menyatakan bahwa laporan skripsi ini tidak terdapat karya yang pernah diajukan untuk memperoleh gelar kesarjanaan di suatu Perguruan Tinggi, dan sepanjang pengetahuan saya juga tidak terdapat karya atau pendapat yang pernah ditulis atau diterbitkan oleh orang lain, kecuali secara tertulis diacu dalam naskah ini dan disebutkan dalam daftar pustaka. Yogyakarta, Maret 2013

Fauziazzuhry Rahadian

iv

HALAMAN MOTTO
Dont code today, what you cant share tommorow - Anonymous (Open Source Community) Sesungguhnya Allah mencintai orang mukmin yang kuat Rassullullah SAW (Hadist Qudsi)

KATA PENGANTAR
Puji Syukur kita panjatkan kepada Allah SWT atas petunjuk dan kasih sayangNya juga telah melimpahkan semua rahmat, hidayah, dan karunia-Nya sehingga penulis dapat menyelesaikan skripsi yang berjudul Purwarupa Pengaturan Lampu Otomatis Dengan Pengolahan Citra Berbasis OpenCV . Sholawat serta salam penulis tujukan kepada junjungan umat, Nabi Muhammad SAW yang telah memberikan tauladan dan inspirasi di segala aspek kehidupan. Skripsi ini disusun sebagai salah satu syarat untuk memperoleh gelar Sarjana S1 Program Studi Elektronika dan Instrumentasi, Jurusan Ilmu Komputer dan Elektronika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Gadjah Mada Yogyakarta. Dalam pembuatannya, penulis menyadari bahwa terselesaikannya skripsi ini tidak terlepas dari bantuan dan dukungan dari berbagai pihak. Oleh karena itu, dengan segala hormat pada kesempatan ini penulis ingin menyampaikan penghargaan dan terima kasih kepada: 1. Keluarga penulis atas kehilangan waktu dalam menyelesaikan penelitian ini. 2. Bapak Drs. Agus Harjoko, M.Sc., Ph.D selaku dosen pembimbing skripsi yang telah bersabar dan banyak meluangkan waktu untuk membimbing, memberikan ide dan pemikiran, serta saran juga masukan sehingga penulis dapat menyelesaikan skripsi ini dengan baik. 3. Dosen-dosen penulis selama mengikuti perkuliahan di program studi elektronika dan instrumentasi ini yang tidak bisa disebutkan namanya satu persatu, yang telah memberikan banyak ilmu dan bimbingan. 4. Adinda Nina Hetty U.K, hamba-Nya yang terindah, selalu setia, sabar dan memotivasi penulis. 5. Semua teman yang mendukung penulis menyelesaikan penelitian ini. 6. Semua pihak yang selama ini telah membantu, mendukung dan menyemangati penulis hingga saat ini. Terima kasih, semoga Allah SWT membalas kebaikan Anda semua.

Yogyakarta, Maret 2013

Penulis

vi

DAFTAR ISI
HALAMAN PENGESAHAN ................................................................................. ii PERNYATAAN ......iii HALAMAN MOTTO .............................................................................................iv KATA PENGANTAR..............................................................................................v DAFTAR ISI ..........................................................................................................vi DAFTAR GAMBAR ...............................................................................................x DAFTAR TABEL .................................................................................................xiv INTISARI... xviii ABSTRACT ........................................................................................................xix BAB I. PENDAHULUAN .............................................................................1 1.1 Latar Belakang ...........................................................................1 1.2 Rumusan Masalah ......................................................................1 1.3 Batasan Masalah .........................................................................2 1.4 Tujuan dan Manfaat ....................................................................3 1.5 Metodologi Penelitian.................................................................3 BAB II. BAB III. TINJAUAN PUSTAKA ....................................................................4 LANDASAN TEORI.........................................................................7 3.1 Prinsip Intellegent Car System ...................................................7 3.1.1 Prinsip Automatic High Beam ......................................9 3.1.2 Warning system .............................................................12 3.2 Metode Pemrosesan Citra dengan Pendeteksian Objek ........................................................................................13 3.2.1 Deteksi Warna RGB dan HSV .....................................15 3.2.2 Thresholding .................................................................16 3.2.3 Smoothing .....................................................................17 3.2.4 Operasi Sobel ................................................................19 3.2.5 Operasi Deteksi Tepi Canny .........................................20 3.2.6 Hough Circle Transform ...............................................21 3.2.7 OpenCV ........................................................................23 BAB IV METODE PENELITIAN ................................................................24 4.1 Bahan........................................................................................24 4.2 Peralatan ...................................................................................24

vii

4.3 Prosedur Kerja dan Pengumpulan Data ...................................27 4.4 Analisis dan Rancangan Sistem ...............................................27 4.4.1 Analisis kebutuhan fungsiomal......................................27 4.4.2 Analisis kebutuhan non fungsional................................30 4.5 Rancangan penelitian ...............................................................31 4.5.1 Rancangan sistem segmentasi citra ..............................31 4.5.2. Rancangan diagram blok sistem ..................................32 4.5.3 Rancangan sistem pengenalan objek secara umum ......33 4.5.2 Rancangan sistem secara spesifik ..................................35 4.6 Rancangan Perangkat Lunak (Desain ROI) .............................42 4.7 Rancangan Perangkat Keras .....................................................43 4.7.1 Desain skematik perangkat keras .................................43 4.7.2 Diagram alir perangkat keras. ......................................43 4.8 Rancangan Pengujian ...............................................................44 IMPLEMENTASI PENELITIAN ..........................................................................46 5.1 Melakukan Inisialisasi ..............................................................46 5.1.1 Inisialisasi capture dan frame ......................................46 5.1.2 Deklarasi( Inisialisasi) fungsi- fungsi Hough Circle .....48 5.2 Region of Interest .....................................................................49 5.3 Konversi ke HSV dan Identifikasi Warna dengan Skala Warna HSV ..............................................................................50 5.3.1 Metode pendeteksian warna dan jangkauan warna (colorspace)..................................................................50 5.3.2 Listing OpenCV untuk mengenali masing- masing jangkauan warna(colorspace ). .....................................53 5.4 Fungsi smooth/blur...................................................................55 5.5 Fungsi Deteksi tepi dan Transformasi Hough Circle ...............57 5.5.1 Fungsi Sobel ..................................................................57 5.5.2 Fungsi Deteksi Canny dan Hough Circle ......................58 5.6 Pembatasan Wilayah ROI ........................................................63 5.7 Cropping ROI Fram e dan Duplikasi........................................64 5.8 Cuplikan Listing Cropping Frame dan Duplikasi ROI............65 5.9 Garis Bantu batas ROI, dan Perkiraan Jarak Dari Titik Nol.....66 5.10 Multilevel Thresholding dan Deteksi Sekuensial ...................68 5.11 Pemodelan Aktuator ...............................................................70

viii

5.11.1 Model protipe sistem ..................................................70 5.11.2 Setup Arduino..............................................................71 5.11.3 Pembacaan perintah serial ...........................................71 5.11.4 Pewaktuan servo ..........................................................73 BAB VII. PENGUJIAN DAN PEMBAHASAN .............................................74 6.1 Kalibrasi pengujian ..................................................................74 6.1.1 Pengaturan nilai window dari filter smooth OpenCV........................................................................75 6.1.2 Metode pendeteksian pola warna di OpenCV dengan menggunakan Hough Circle ............................76 6.1.3 Penjelasan hasil kalibrasi pendeteksian pola warna di OpenCV dengan menggunakan Hough Circle.......78 6.1.4 Kesimpulan hasil kalibrasi............................................88 6.2 Pengujian Tiap Tipe Jalan Dalam Kondisi Hujan dan Cerah..91 6.2.1 Jalan negara ..................................................................91 6.2.2. Jalan provinsi................................................................93 6.2.3. Jalan kabupaten .........................................................106 6.2.4. Jalan desa....................................................................109 6.2.5. Jalan sepi dan menanjak .............................................112 6.3 Hasil Pengujian Kendaraan....117 6.3.1 Hasil pengujian pada lampu depan kendaraan117 6.3.2 Hasil pengujian pada lampu belakang kendaraan......121 6.4 Respon Aktuator (Arduino) ....................................................123 BAB VIII. PENUTUP .....................................................................................125 7.1 Kesimpulan .............................................................................125 7.2 Saran .......................................................................................126 DAFTAR PUSTAKA ..........................................................................................128 LAMPIRAN DATA KALIBRASI.......................................................................130 L1 Kisaran Warna Lampu Kendaraaan ......................................130 L1.1 Kisaran warna lampu belakang kendaraan pada format HSV ...............................................................130 L1.2 Kisaran warna lampu depan kendaraan pada format HSV ................................................................131

ix

L1.3 L2

Kisaran warna lampu depan mobil khusus jenis Lampu HID ...............................................................132

Variasi Nilai Window Smooth ..............................................133 L3.1 Variasi nilai jarak antar pusat tengah lingkaran pada lampu depan mobil ..........................................134

L3. Variasi Nilai Jarak Antar Titik Tengah Centroid ...................134

L3.2 Variasi nilai jarak antar pusat tengah lingkaran lampu belakang mobil setting exposure =100%, canny threshold=10-255. radius= 3-40 ......................136 L4. Variasi nilai Exposure, ............................................................138 L4.1 Lampu Depan Mobil jarak p.p=50 ..............................138 L4.2 Lampu depan motor jarak p.p=50 ...............................140 L4.3. Lampu belakang mobil, jarak p.p=40 .......................141 L4.4 Lampu belakang motor, jarak p.p=40 ......................143 L5. Variasi Exposure dan Variasi Thresholding ...........................145 L5.1. Variasi exposure dan variasi thresholding lampu depan mobil ................................................................145 L5.2 Exposure 87,5% dan variasi thresholding pada lampu depan motor ....................................................147

L5.3. Exposure 87,5% dengan variasi thresholding lampu belakang mobil. ..............................................148 L5.4 Exposure 87,5% dengan variasi thresholding lampu belakang motor. .............................................148

L6 Variasi Nilai Canny Threshold ................................................149 L6.1 Lampu depan mobil.....................................................149 L6.2 L6.3 L7 Lampu depan motor ..................................................151 Lampu belakang mobil ..............................................152

L6.4. Lampu Belakang Motor ..............................................154 Pengujian Akurasi Deteksi ....................................................156 L7.1 Koreksi lampu depan motor ......................................156 L7.2 Koreksi lampu depan mobil .......................................157 LAMPIRAN LISTING PROGRAM....................................................................161 LP1 Listing Program Kalibrasi .....................................................161 LP2 Listing Program Final ...........................................................167 LP3 Listing Program Arduino ( Sisi Hardware) ...........................202

DAFTAR GAMBAR
Gambar 3.1 Model Intellegent Car ........................................................................7 Gambar 3.2 Contoh Sistem kendali pada Intellegent Car......................................8 Gambar 3.3 Diagram kesalahan yang menyebabkan kecelakaan ..........................9 Gambar 3.4 Model Automatic High Beam milik Renault System ........................10 Gambar 3.5 Perbedaan Segmentasi Warna Lampu HID dengan Halogen ..........10 Gambar 3.6 Simulasi kontrol lampu jarak jauh otomatis ....................................11 Gambar 3.7 Cara Kerja Pengendalian Lampu Jarak Jauh dan Dekat Otomatis ..12 Gambar 3.8 Gambar 3.9 Fitur Night Vision Auto Breaking System ........................................12 Pengolahan sinyal pada Citra Digital ..............................................13

Gambar 3.10 Koordinat Citra Digital pada titik origin .........................................14 Gambar 3.11 Kubus Model RGB ..........................................................................15 Gambar 3.12 Kerucut HSV ...................................................................................16 Gambar 3.13 Contoh hasil thresholding ...............................................................17 Gambar 3.14 Contoh hasil Gaussian Smoothing .....17 Gambar 3.15 Hasil dari transformasi Gaussian Blur ............................................18 Gambar 3.16 Hasil dari transformasi Gaussian Blur 2 D .....................................19 Gambar 3.17 Hasil Operasi Sobel ....19 Gambar 3.18 Hasil deteksi tepian dengan (a) threshold tunggal (b) threshold tinggi dan rendah ............................................................................20 Gambar 3.19 Hasil deteksi tepian Canny .............................................................21 Gambar 3.20 Proses mendeteksi lingkaran dengan Hough Circle Transform ......21 Gambar 3.21 Hasil pendeteksian citra dengan Hough Circle Transform ............22 Gambar 4.1 Gambar 4.2 Gambar 4.3 Gambar 4.4 Gambar 4.5 Gambar 4.6 Gambar 4.7 Gambar 4.8 Gambar 4.9 Hasil capture video dari dalam mobil .............................................24 Kamera Sonny Hybrid HDR-CX110E .............................................25 Diagram proses segmentasi citra .....................................................31 Diagram blok kendali sistem (a) diagram lampu jauh otomatis, (b) diagram blok sistem peringatan otomatis...................................32 Diagram alir rancangan sistem perangkat lunak secara umum .......33 Diagram alir rancangan spesifik deteksi lampu belakang ...............39 Diagram alir (a) prioritas kendali posisi servo dan (b) intepretasi lampu belakang kendaraan .......................................41 Desain skematik perangkat lunak....................................................42 Desain skematik perangkat keras ....................................................43

xi

Gambar 4.10 Diagram alir perangkat keras ..........................................................44 Gambar 4.11 Perkiraan pemasangan kamera dibalik mirror tengah.....................45 Gambar 5.1 Gambar 5.3 Inisialisasi capture frame ................................................................46 Deklarasi penyimpanan memory dan tipe data pointer Hough Circles. .................................................................................48 Gambar 5.2. Inisialisasi capture frame ................................................................47

Gambar 5.4. Hasil Cropping ROI (kiri) dari Frame Asli (kanan)........................49 Gambar. 5.5 Listing Query Frames dan Cropping ROI .......................................50 Gambar 5.6 Contoh gambar(sampel) yang digunakan untuk mencari skala nilai HSV lampu (a) lampu depan kendaraan, (b) lampu belakang kendaraan. ........................................................51 Sampel gambar kendaraan dengan lampu HID ...............................52 Listing konversi frame dari basis RGB ke HSV pada lampu depan dan belakang ....................................................................................54 Hasil RGB ke Grayscale untuk lampu depan ..................................54

Gambar 5.7 Gambar 5.8 Gambar 5.9

Gambar 5.10 Hasil pembacaan objek untuk lampu depan dan belakang kendaraan. ........................................................................................55 Gambar 5.11 Listing proses smooth pada OpenCV ..............................................56 Gambar 5.12 Hasil frame a) citra tanpa Smoothing dan b) citra dengan Smoothing ........................................................................................56 Gambar 5.13 Hasil Operasi Sobel (a) citra asli (b) hasil Operasi Sobe l ...............57 Gambar 5.14 Listing Operasi Sobel ......................................................................58 Gambar 5.15. Hasil (a) Edge Detection dilanjutkan dengan Transformasi Hough Circle ...................................................................................58 Gambar 5.16 Listing fungsi deteksi sequential pada frame proses merah dan proses putih ...............................................................................59 Gambar 5.17 Iterasi fungsi Sequential putih untuk mendapat titik centroid, dan menetapkan batas vertikal pendeteksian ..................................60 Gambar 5.18 Fungsi drawing pada OpenCV untuk menandakan daerah yang ditandai sebagai area terdeteksi ..............................................61 Gambar 5.19 Hasil pemrosesan citra (a) frame sebelum dibatasi, (b) frame sesudah dibatasi (ROI ......................................................................62 Gambar 5.20 Pembatasan wilayah ROI .................................................................63 Gambar 5.21 Deteksi mobil dari jarak 80 meter ....................................................64 Gambar 5.22 Konsep implementasi ROI pada main frame ...................................65 Gambar 5.23 Listing cropping dan duplikasi frame hati_hati_kanan ...................66

xii

Gambar 5.24 Hasil cloning frame kanan dan frame kiri, untuk keperluan pembatasan ROI dan multi thresholding frame ...............................67 Gambar 5.25 Hasil deteksi berbagai tingkat thresholding frame, ditunjukkan oleh warna....................................................................68 Gambar 5.26 Hasil deteksi berbagai tingkat thresholding frame, ditunjukkan oleh warna...................................................................70 Gambar 5.27 Listing inisialisasi serial dan port pada Arduino .............................71 Gambar 5.28 Listing program parsing serial Arduino ..........................................72 Gambar 5.29 Listing pewaktuan servo pada Arduino...........................................73 Gambar 6.1 Skema kalibrasi pendeteksian, di Lapangan SMA N 2 , Donoharjo, Ngaglik, Sleman ........................................................74 Gambar 6.2 Hasil filter image, dengan smooth, pada ukuran kernel (a) 9x9 dan (b) 15x15 .....................................................................75 Gambar 6.3 Hasil filter dengan minimal jarak pendeteksian antar titik pusat, (a) jarak 50 pixel (b) jarak 10 pixel ......................................78 Gambar 6.4 Hasil pendeteksian dengan basis, (a) exposure 62,5% (b) exposure 87,5% ..........................................................................79 Gambar 6.5 Grafik threshold frame (X) vs maksimal jarak mobil terdeteksi (Y) ...................................................................................82 Gambar 6.6 Grafik Threshold frame (X) vs maksimal jarak motor terdeteksi (Y) ..................................................................................82 Gambar 6.7 Grafik jarak mobil terkalibrasi (X) vs tinggi koordinat vertikal centroid pada minimum threshold 20 (jangkauan 20-255) ............84 Gambar 6.8 Grafik jarak mobil terkalibrasi (X) vs tinggi koordinat vertikal centroid pada minimum Threshold 20 (jangkauan 20-255) ............85 Gambar 6.9 Grafik Jarak mobil terkalibrasi (X) vs tinggi koordinat vertikal centroid pada minimum Threshold 10 (jangkauan 10-255) ............86 Grafik 6.10 Grafik Jarak motor terkalibrasi (X) vs tinggi koordinat vertikal centroid pada minimum Threshold 10 (jangkauan 10-255) ............86 Gambar 6.11 Pendeteksian Jalan Magelang pada saat hujan .................................91 Gambar 6.12 Pendeteksian Jalan Magelang pada saat cerah .................................92 Gambar 6.13 Pendeteksian Ringroad jalur lambat pada saat hujan .......................94 Gambar 6.14 Pendeteksian Ringroad jalur cepat pada saat hujan .........................96 Gambar 6.15 Pendeteksian Ringroad jalur cepat pada saat hujan .........................97 Gambar 6.16 Pendeteksian pada Jalan Kaliurang KM 9 pada saat hujan ..............99 Gambar 6.17 Pendeteksian pada Ringroad jalur lambat pada saat cerah............100 Gambar 6.18 Pendeteksian pada Ringoad jalur cepat pada saat cerah.................102

xiii

Gambar 6.19 Pendeteksian pada Ringroad jalur cepat pada saat cerah ...............103 Gambar 6.20 Pendeteksian pada Jalan Kaliurang KM 7 saat cerah.....................105 Gambar 6.21 Pendeteksian pada Jalan Beran saat hujan .....................................106 Gambar 6.22 Pendeteksian pada Jalan Damai saat cerah.....................................108 Gambar 6.23 Pendeteksian pada Jalan Panggung Sari saat hujan........................109 Gambar 6.24 Pendeteksian pada Jalan Lempong Sari saat hujan ........................111 Gambar 6.25 Pendeteksian pada Jalan Turgo saat cerah .....................................112 Gambar 6.26 Pendeteksian pada Jalan Pulowatu saat cerah ................................113 Gambar 6.27 Pendeteksian pada Lapangan Donoharjo (lampu dekat) ................115 Gambar 6.28 Pendeteksian pada Lapangan Donoharjo (lampu jauh) ..................116

xiv

DAFTAR TABEL
Tabel 2.1 Tabel 3.1 Tabel 4.1 Tabel 4.2 Tabel 4.3 Tabel 4.4 Tabel 4.5 Tabel 4.6 Tabel 4.7 Tabel 4.8 Tabel 4.9 Tabel 5.1 Tabel 5.2 Tabel 5.3 Tabel 5.4 Tabel 5.5 Tabel 5.6 Tabel 6.1 Tabel 6.2 Tabel 6.3 Tabel 6.4 Tabel 6.5 Tabel 6.6 Tabel 6.7 Tabel 6.8 Tabel 6.9 Tabel 6.10 Studi tentang penerapan Automatic High Beam/ Low Beam dan Automatic Warning .....................................................................6 Nilai sudut dan warna pada Hue .....................................................16 Kebutuhan mobil model kalibrator ..................................................26 Kebutuhan motor model kalibrator ..................................................26 Kebutuhan hardware pemroses video..............................................27 Kebutuhan software pemroses video ...............................................28 Setting sensor Handycam Sonny Hybrid HDR-CX110E ..................28 Hasil Konversi dengan software Format Factory............................29 Tabel spesifikasi kontroller Arduino Mega 2560.............................29 Tabel spesifikasi aktuator.................................................................30 Kebutuhan non fungsional ...............................................................30 Kesimpulan jangkauan warna lampu depan dan lampu belakang pada format HSV..............................................................51 Kesimpulan jangkauan warna lampu depan dan lampu belakang pada format HSV (OpenCV Format) ...............................52 Nilai lampu HID pada format HSV, (a) kisaran warna lampu HID mobil (b) konversi dalam format OpenCV ............................53 Warna dan tingkat thresholding frame deteksi lampu depan...........69 Warna dan tingkat thresholding frame deteksi lampu belakang ......69 Detail isyarat pemodelan sistem.......................................................70 Nilai Lampu HID pada format HSV, (a) kisaran warna lampu HID mobil (b) konversi dalam format OpenCV .............................89 Warna dan tingkat thresholding frame lampu depan dan belakang kendaraan .........................................................................90 Warna dan tingkat thresholding frame lampu belakang kendaraan .........................................................................................90 Intepretasi pengujian sampel Jalan Magelang hujan........................91 Intepretasi pengujian sampel Jalan Magelang hujan........................93 Pengujian sampel Ringroad jalur lambat hujan. ...............................95 Intepretasi pengujian sampel Ringroad jalur cepat (hujan) ..............96 Intepretasi pengujian sampel Ringroad jalur cepat hujan ................98 Intepretasi pengujian sampel Jalan Kaliurang saat hujan ................99 Intepretasi pengujian sampel Ringroad jalur lambat saat hujan ....101

xv

Tabel 6.11 Tabel 6.12 Tabel 6.13 Tabel 6.14 Tabel 6.15 Tabel 6.16 Tabel 6.17 Tabel 6.18 Tabel 6.19 Tabel 6.20 Tabel 6.21 Tabel L1.1 Tabel L1.2 Tabel L1.3 Tabel L.2.1 Tabel L3.1 Tabel L3.2 Tabel L3.3 Tabel L3.4 Tabel L3.5 Tabel L3.6 Tabel L3.7 Tabel L3.8 Tabel L3.9 Tabel L4.1 Tabel L4.2 Tabel L4.3 Tabel L4.4 Tabel L4.5

Intepretasi pengujian sampel Ringroad jalur cepat saat cerah .......102 Intepretasi pengujian sampel Ringroad jalur cepat saat cerah .......104 Intepretasi pengujian sampel Jalan Kaliurang saat cerah...............105 Intepretasi pengujian sampel Jalan Kamdanen saat hujan .............107 Intepretasi pengujian sampel Jalan Damai saat cerah ....................108 Intepretasi pengujian sampel Jalan Panggung Sari saat hujan .......110 Intepretasi pengujian sampel Jalan Lempong Sari saat cerah ........111 Intepretasi pengujian sampel Jalan Turgo saat hujan.....................112 Intepretasi pengujian sampel Jalan Pulowatu saat hujan ...............114 Intepretasi pengujian sampel Lapangan Donoharjo (lampu dekat) ................................................................................115 Intepretasi pengujian sampel Lapangan Donoharjo (lampu jauh) ...................................................................................116 Kisaran warna lampu belakang kendaraan ....................................130 Kisaran warna lampu depan kendaraan .........................................131 Kisaran warna lampu depan kendaraan (lampu HID) ...................132 Kisaran warna lampu depan kendaraan .........................................133 Jarak antar titik pusat jarak p.p=30, lampu depan mobil ...............134 Jarak antar titik pusat jarak p.p=40, lampu depan mobil ...............134 Jarak antar titik pusat jarak p.p=50, lampu depan mobil ...............135 Jarak antar titik pusat jarak p.p=60, lampu depan mobil ...............135 Jarak antar titik pusat jarak p.p=70, lampu depan mobil ...............135 Jarak antar titik pusat jarak p.p=30, lampu belakang mobil ..........136 Jarak antar titik pusat jarak p.p=40, lampu belakang mobil ..........136 Jarak antar titik pusat jarak p.p=50, lampu belakang mobil ..........136 Jarak antar titik pusat jarak p.p=60, lampu belakang mobil ..........137 Nilai exposure 100, jarak p.p 50 , lampu depan mobil ...................138 Nilai exposure 87,5, jarak p.p 50 , lampu depan mobil ..................138 Nilai exposure 75, jarak p.p 50 , lampu depan mobil .....................139 Nilai exposure 62,5, jarak p.p 50 , lampu depan mobil ..................139 Nilai exposure 50, jarak p.p 50 , lampu depan mobil .....................139

Tabel L3.10 Jarak antar titik pusat jarak p.p=70, lampu belakang mobil ..........137

Tabel L4.6 Nilai exposure 100, jarak p.p 50 , lampu depan motor....................140 Tabel L4.7 Nilai exposure 87,5, jarak p.p 50 , lampu depan motor...................140 Tabel L4.8 Nilai exposure 75, jarak p.p 50 , lampu depan motor.....................140

xvi

Tabel L4.9 Nilai exposure 62,5, jarak p.p 50 , lampu depan motor....................141 Tabel L4.10 Nilai exposure 50, jarak p.p 50 , lampu depan motor.....................141 Tabel L4.11 Nilai exposure 100, jarak p.p 40, lampu belakang mobil ................141 Tabel L4.12 Nilai exposure 87,5, jarak p.p 40, lampu belakang mobil ..............142 Tabel L4.13 Nilai exposure 75, jarak p.p 40, lampu belakang mobil .................142 Tabel L4.14 Nilai exposure 62.5, jarak p.p 40, lampu belakang mobil ..............142 Tabel L4.15 Nilai exposure 50, jarak p.p 40, lampu belakang mobil ..................143 Tabel L4.16 Nilai exposure 100 , jarak p.p 40, lampu belakang motor ...............143 Tabel L4.17 Nilai exposure 87,5 , jarak p.p 40, lampu belakang motor ..............143 Tabel L4.18 Nilai exposure 75 , jarak p.p 40, lampu belakang motor ................144 Tabel L4.19 Nilai exposure 62,5 , jarak p.p 40, lampu belakang motor .............144 Tabel L4.20 Nilai exposure 50 , jarak p.p 40, lampu belakang motor ................144 Tabel L5.1 Tabel L5.2 Tabel L5.3 Tabel L5.4 Tabel L5.5 Tabel L5.6 Tabel L6.1 Tabel L6.2 Tabel L6.3 Tabel L6.4. Tabel L6.5 Tabel L6.6. Tabel L6.7 Tabel L6.8 Tabel L6.9 Exposure 87,5% dan variasi thresholding ......................................145 Exposure 75% dan variasi thresholding .........................................146 Exposure 62,5% dan variasi thresholding ......................................146 Exposure 87,5% dan variasi thresholding ......................................147 Exposure 87,5% dan variasi thresholding ......................................148 Exposure 87,5% dan variasi thresholding ......................................148 Canny threshold 20-255, exposure 87,5%, jarak p.p 50, lampu depan mobil ...................................................................................149 Canny threshold 15-255, exposure 87,5%, jarak p.p 50, lampu depan mobil ...................................................................................149 Canny threshold 10-255, exposure 87,5%, jarak p.p 50, lampu depan mobil ...................................................................................150 Canny threshold 5-255, exposure 87,5%, jarak p.p 50, lampu depan mobil ...................................................................................150 Canny threshold 1-255, exposure 87,5%, jarak p.p 50, lampu depan mobil ..................................................................................150 Canny threshold 20-255, exposure 87,5%, jarak p.p 50, lampu depan motor ...................................................................................151 Canny threshold 15-255, exposure 87,5%, jarak p.p 50, lampu depan motor ...................................................................................151 Canny threshold 10-255, exposure 87,5%, jarak p.p 50, lampu depan motor ...................................................................................151 Canny threshold 5-255, exposure 87,5%, jarak p.p 50, lampu depan motor ...................................................................................152

xvii

Tabel L6.10 Canny threshold 1-255, exposure 87,5%, jarak p.p 50, lampu depan motor ...................................................................................152 Tabel L6.11 Canny threshold 15-255, exposure 87,5%, jarak p.p 50, lampu belakang mobil...............................................................................152 Tabel L6.12 Canny threshold 13-255, exposure 87,5%, jarak p.p 40, lampu belakang mobil...............................................................................153 Tabel L6.13 Canny threshold 10-255, exposure 87,5%, jarak p.p 40, lampu belakang mobil...............................................................................153 Tabel L6.14 Canny threshold 8-255, exposure 87,5%, jarak p.p 40, lampu belakang mobil...............................................................................153 Tabel L6.15 Canny threshold 5-255, exposure 87,5%, jarak p.p 40, lampu depan mobil ...................................................................................154 Tabel L6.16 Canny threshold 15-255, exposure 87,5%, jarak p.p 40, lampu belakang motor. .............................................................................154 Tabel L6.17 Canny threshold 13-255, exposure 87,5%, jarak p.p 40, lampu belakang motor. .............................................................................154 Tabel L6.18 Canny threshold 10-255, exposure 87,5%, jarak p.p 40, lampu belakang motor ..............................................................................155 Tabel L6.19 Canny threshold 8-255, exposure 87,5%, jarak p.p 40, lampu belakang motor ..............................................................................155 Tabel L6.20 Canny threshold 5-255, exposure 87,5%, jarak p.p 40, lampu belakang motor ..............................................................................155 Tabel L7.1 Tabel L7.2. Tabel L7.3. Tabel L7.4. Tabel L7.5 Tabel L7.6. Lampu pendek motor .....................................................................156 Lampu jauh motor..........................................................................157 Lampu dekat mobil ........................................................................157 Lampu jauh mobil..........................................................................158 Lampu belakang motor ..................................................................159 Lampu belakang mobil ..................................................................160

xviii

INTISARI
PURWARUPA PENGATURAN LAMPU OTOMATIS DENGAN PENGOLAHAN CITRA BERBASIS OPENCV Oleh Fauziazzuhry Rahadian 08/265919/PA/11928 Automatic High Beam dan Warning System adalah salah satu pengembangan dari sistem cerdas pada mobil untuk mendukung kenyamanan dan keamanan dalam berkendara. Dalam menerapkan prinsip tersebut, terlebih dahulu harus diketahui berapa jarak objek yakni lampu depan kendaraan atau lampu belakang kendaraan, yang ada di depan pengemudi. Sehingga dibutuhkan teknologi Pemrosesan Citra untuk dapat mendeteksi objek dan mendapatkan perkiraan jarak yang baik dalam jangkauan mencapai ratusan meter. Maka dikembangkan pengenalan objek dengan memisahkan objek dengan lingkungan melalui rentang warna dalam format HSV, kemudian mengekstraksi tepian objek dengan menggunakan metode Hough Circle untuk mendapat objek terdeteksi pada suatu nilai filter threshold. Objek akan mempunyai titik tengah (centroid) pada koordinat (x,y). Untuk mendapatkan perkiraan jarak dengan metode tersebut dilakukan kalibrasi pada tanah lapang dengan jarak antara 10-90 meter. Dari hasil kalibrasi didapatkan estimasi jarak dapat dilakukan dengan koordinat vertikal centroid, kemudian variasi antara nilai threshold dan exposure. Dengan mendapatkan perkiraan jarak, dapat dilakukan pengaturan intensitas cahaya dan posisi lampu jauh atau dekat saat mendeteksi objek lampu depan kendaraan mobil dan motor. Dengan memperkirakan jarak dengan deteksi lampu belakang kendaraan didepan objek, diberikan peringatan sesuai dengan intensitas cahaya pada saat rem atau normal, dan juga perkiraan jaraknya. Bentuk peringatan yang diberikan adalah dengan indikasi peringatan di display tampilan. Kata kunci: Automatic High Beam, pengolahan citra, Hough Circle, rentang warna, perkiraan jarak.

xix

ABSTRACT
THE PROTOTYPE IMAGE PROCESSING OF AUTOMATIC HIGH BEAM AND WARNING IN INTELLEGENT CAR BASED ON OPENCV By Fauziazzuhry Rahadian 08/265919/PA/11928 Automatic High Beam and Warning System is one of the developments of intelligent systems on the car to support comfort and safety in the driving experience. In applying these principles, it must first be known how many objects within the vehicle headlights or taillights of vehicles, which is in front of the driver. So it takes image processing technology to detect objects and get a good estimate of the distance in the range of hundreds of meters. Then developed object recognition by separating an object with the environment through a range of color in HSV format and then extracting object edges by using the Hough Circle to get objects detected at a threshold value filter. Object will have the center (centroid) in the coordinates (x, y). To get an estimate of the distance to the method of calibration is done at the clearing with a distance of between 10-90 meters. From the calibration results obtained distance estimation can be done with the vertical coordinate centroid, then the variation between the threshold value and exposure. With an estimated distance, to do the setting of light intensity and light position detecting distant or near objects headlights when cars and motorcycles. By estimating the distance to the vehicle in front of the rear light detection of objects, in a warning to the intensity of light at the time of the brakes or normal, and also estimate the distance. Shape the warning is a warning indication on the display with the display Keywords: Automatic High Beam, Image processing, Hough Circle, color range, the approximate distance detection.

BAB I PENDAHULUAN
1.1 Latar Belakang Teknologi keamanan dan kenyamanan kendaraan sampai saat ini terus berkembang pesat. Inovasi pada manufaktur mobil pun terus dikembangkan untuk mendukung keamanan dan kenyamanan pengguna kendaraan (Sharma and Dhixit, 2012). Terlebih untuk masalah pengemudian kendaraan secara aman, menjadi faktor yang tidak bisa ditawar lagi dalam teknologi mobil mutakhir. Pemrosesan Citra digital adalah ilmu untuk memanipulasi, mengolah ataupun mengenali bagian tertentu pada suatu citra (Gonzales and Woods, 2008). Contohnya adalah suatu citra mempunyai kontras lebih rendah dapat dihasilkan dari sumber citra dengan proses pencahayaan atau penerangan yang rendah atau pengaturan pada saat pengambilan gambar. Automatic High Beam/Low Beam adalah suatu teknologi dengan

memanfaatkan pemrosesan citra dengan metode Object Recognition untuk mendeteksi objek dan dengan bantuan thresholding untuk mendeteksi gelap terang suatu citra, kemudian mengontrol lampu apakah menggunakan lampu dekat atau lampu jauh pada mobil. Automatic Warning adalah teknologi untuk memberikan peringatan kepada pengemudi apabila ada objek didepannya pada jarak dekat, dengan cara mendeteksi benda terdekat dengan menggunakan sensor jarak/kamera pada objek didepannya. 1.2 Rumusan Masalah Dibutuhkan suatu sistem yang mampu mendeteksi objek lampu depan dan lampu belakang kendaraan bermotor (motor dan mobil). Jika mampu mendeteksi, sistem harus dapat memperikrakan jarak objek terdeteksi berdasarkan parameter yang didapat. Sistem didesain supaya dapat memisahkan pencahayaan lingkungan dengan cahaya objek, agar perkiraan jarak yang didapatkan adalah benar. Perkiraan jarak yang didapatkan dari pendeteksian objek, digunakan sebagai

intepretasi sistem untuk mengontrol lampu dan memberi peringatan pada pengemudi 1.3 Batasan Masalah Batasan masalah dalam penelitian ini adalah : 1. Menganalisis tingkat keberhasilan pemrosesan citra dengan metode Hough Circle untuk mendeteksi lampu depan kendaraan dari arah berlawanan, dan lampu belakang kendaraan yang berjalan searah, serta mengurangi error pada pencahayaan disekitarnya. 2. Input adalah berupa video, kemudian diproses dengan pengolahan citra pengenalan pola warna lampu depan dan lampu belakang motor dan mobil. 3. Diasumsikan kamera tegak lurus dengan objek. Sehingga parameter tinggi vertikal pada saat datar dapat digunakan untuk memisahkan lampu depan dan belakang kendaraan dengan lampu lingkungan, serta perkiraan jarak. 4. Mengenai hal teknis seperti titik blind spot (daerah yang tidak terpantau kamera) dan kecepatan respon pengaturan cahaya lampu, tidak termasuk objek yang diteliti. Lingkungan pengujian adalah kondisi jalan di Indonesia, khususnya Kabupaten Sleman pada saat hujan dan cerah. 5. Lampu kanan dan lampu kiri dikendalikan otomatis secara indepentdent . Batas wilayah lampu kanan dan lampu kiri, serta batas wilayah pemrosesan (Cropping ROI) dilakukan berdasarkan hasil kalibrasi. 6. Gerakan kendali lampu yang diteliti adalah pengaturan intensitas cahaya dengan posisi servo naik dan turun, serta kendali lampu jauh dan dekat. Gerakan servo ke kanan dan ke kiri tidak termasuk objek penelitian.

1.4 Tujuan dan Manfaat Tujuan yang ingin dicapai dalam penelitian ini adalah meneliti pemrosesan citra dengan metode Hough Circle, pada sistem Automatic High Beam/ Low Beam dan Automatic Warning. Sistem ini bekerja dengan mendeteksi lampu depan kendaraan yang berwarna putih kekuningan kendaraan di dari arah yang berlawanan, kemudian mengatur lampu high beam/ low beam, serta mengatur peringatan saat kendaraan didepannya melakukan pengereman, berdasarkan cahaya merah lampu belakang kendaraan. Manfaat dari penelitian ini adalah mengetahui tingkat keberhasilan pemrosesan citra pada mobil cerdas, dengan menggunakan prototype sederhana. Untuk dapat mencari tingkat akurasi terbaik, maka divariasikan beberapa parameter pada metode Hough Circle, untuk mendapatkan parameter untuk hasil akurasi deteksi objek terbaik untuk memperkirakan jarak objek, dan tingkat error yang rendah. 1.5 Metodologi Penelitian Metodologi penelitian yang direncanakan dalam penelitian ini adalah sebagai berikut : 1. Dirumuskan masalah yang akan diajukan sebagai tema. 2. Dilakukan kajian dan pembelajaran lebih lanjut mengenai Sistem Purwarupa Pemrosesan Citra Sistem Kontrol Lampu Jauh Otomatis dengan metode sebagai berikut :
a) Studi literatur, dan konsultasi Dosen Pembimbing untuk mendapatkan

pengetahuan tentang sistem.


b) Dibuat rancangan sistem meliputi spesifikasi teknis dan non teknis

sistem tersebut. Dilakukan rancangan metode pengenalan polanya.


c) Dilakukan analisa deteksi dengan asumsi jarak di lapangan,. Kemudian

didapatkan hubungan antara jarak asli dengan perkiraan jarak berdasarkan parameter dari kalibrasi. Kemudian dilakukan

implementasi pada jalan sebenarnya, untuk mengetahui tingkat keberhasilan dari berbagai tipe jalan yang diuji saat hujan dan cerah.

BAB II TINJAUAN PUSTAKA


Studi tentang penerapan teknologi Automatic High Beam/ Low Beam dan Automatic Warning, telah dilakukan oleh beberapa pakar di bidang Computer Vision dan Image Processing. Hal ini dapat dilihat pada Tabel 2.1. Pedersen (2007) dalam journalnya meneliti tentang pendeteksian tepi objek menggunakan Hough Transform Circular. Prinsip dari Hough Circle Transform ini adalah mendeteksi bagian tepi dari suatu objek, yang telah difilter dengan Canny Edge atau Sobel. Kemudian agar dapat mendeteksi tepian tersebut dengan baik maka terlebih dahulu dilakukan Smoothing/Blurring, untuk dapat

menghilangkan noise di sekitar wilayah pendeteksian.Kemudian baru dilakukan deteksi tepi berbentuk lingkaran. Dengan transformasi Hough Circle didapatkan koordinat titik tengah dan jari-jari wilayah pendeteksian. Malley, et.al (2011) dalam jurnalnya meneliti tentang pendeteksian lampu belakang mobil ( Rear Light detection). Metode deteksi yang digunakan metode Kalman Filtering, dengan menggunakan setting pengambilan video low exposure. Tujuan dari pendeteksian video dengan low exposure adalah mengurangi noise (error deteksi) pada lingkungan. Sehinga mengurangi efek cahaya putih pada saat pendeteksian lampu belakang kendaraan bermotor. Setelah mendapat video dengan low exposure tersebut, maka nilai HSV yang didapatkan dari konversi HSV menjadi lebih akurat. Untuk klasifikasi, digunakan metode pendeteksian koordinat vertikal blob sejajar yang akan diidentifikasi sebagai blob lampu belakang mobil. Alcantarilla, et.al. (2008) dalam jurnalnya meneliti tentang pengontrolan lampu depan secara otomatis. Untuk dapat memperjelas perbedaan pengenalan cahaya lampu yang berasal dari mobil, dari lingkungan, serta dari pantulang sinar trafic sign, digunakan metode pengenalan pola lampu depan kendaraan dengan metode Support Vector Machine. Dengan metode tersebut dapat dideteksi pola lampu mobil di depannya adalah blob yang berpasangan, sehingga cahaya lampu yang tidak berpasangan bukan merupakan objek pendeteksian.
4

Alcantarilla, et.al. (2011) dalam jurnalnya meneliti tentang menggunakan Road Vertical Curvature Estimation, yakni menggunakan parameter koordinat vertikal dari blob sebagai tambahan parameter Support Vector Machine. Dengan metode tersebut dapat pemrosesan video dapat membedakan cahaya lampu depan dan lampu belakang mobil, dengan cahaya dari lingkungan lebih jauh lagi. Pada penelitian ini juga lebih baik untuk melakukan perkiraan jarak antara objek terdeteksi dengan titik nol pendeteksian. Dari penelitian terdahulu yang diuraikan diatas, didapatkan banyak masukan dalam melakukan metode penelitian. Sepasang blob yang terdeteksi memang menandakan bahwa disitu juga ada mobil. Namun karena penelitian ini tidak dikhususkan untuk jalan kecepatan tinggi (Highway), maka sistem harus mampu mendeteksi motor yang hanya mempunyai satu lampu. Maka digunakan estimasi koordinat vertikal untuk membedakan cahaya lampu mobil dan motor, dengan lampu jalan. Maka dilakukan penelitian dengan mendeteksi pola warna dan koordinat dari lampu belakang mobil dan lampu depan mobil. Untuk dapat mendeteksi wilayah pendeteksian dari suatu blob digunakan Transformasi Hough Circles. Pertimbangannya adalah bentuk region blob yang akan dideteksi, baik itu lampu depan kendaraan atau lampu belakang kendaraan, semua berbentuk menyerupai lingkaran. Sehingga didapatkan hasil pendeteksian titik tengah dan jari-jari wilayah pendeteksian. Dengan metode ini juga dimungkinkan untuk mendeteksi lebih dari satu objek lingkaran dari wilayah pendeteksian, sehingga mendukung penelitian ini. Untuk melakukan perkiraan jarak, didapatkan masukan dari penelitian yang dilakukan Alcantarilla, et.al (2010). Dengan menggunakan bantuan koordinat vertikal objek terdeteksi. Dengan demikian didapatkan perbedaan intepretasi objek deteksi, dan cahaya lampu dari lingkungan sekitarnya. Estimasi kurva vertikal centroid dapat digunakan sebagai intepretasi jarak objek terdeteksi.

Tabel 2.1 Studi tentang penerapan Automatic High Beam/ Low Beam dan Automatic Warning No. Nama Pengarang Tahun Keterangan 1 Pedersen 2007 Konversi RGB ke HSV Memfilter tepian dengan menggunakan Canny Edge atau Sobel. Dilakukan Smoothing Gauss, untuk mengurangi noise pada area pendeteksian warna dengan Hough Circle Transform , Mendeteksi Melakukan perkiraan jarak berdasar koordinat titik tengah blob terhadap sumbu vertikal Konversi RGB ke HSV Mendeteksi sepasang blob lampu depan mobil dengan metode SVM (Support Vector Machine). Melakukan perkiraan jarak berdasar koordinat titik tengah blob Menambahkan klasifikasi fungsi koordinat vertikal pada metode SVM yang digunakan, agar dapat membedakan cahaya lampu jalan dan lampu depan mobil pada jarak jauh. Konversi RGB ke HSV Deteksi blob dengan metode Kalman dan Smoothing Gauss Dideteksi garis sejajar sumbu vertikal titik tengah blob untuk mendeteksi sepasang blob yang dimaksud Mendeteksi lampu belakang mobil menggunakan bantuan efek Low Explosure pada Kamera. Konversi RGB ke HSV. Melakukan deteksi tepi Canny Edge, dan Smooting Gauss Deteksi blob dengan metode Hough Circle Melakukan filter berdasarkan ukuran jari-jari minimal dan maksimal, serta koordinat sumbu vertikal. Melakukan perkiraan jarak berdasar koordinat titik tengah blob terhadap sumbu vertikal.

2.

Alcantarilla, et.al

2008

3. Alcantarilla, et.al 2011 -

4.

Malley, et.al

2011

5.

Rahadian

2013

BAB III LANDASAN TEORI


3.1 Prinsip Intellegent Car System Dengan kemajuan teknologi yang semakin cepat maka pengembangan teknologi otomatisasi khususnya pada produk otomotif seperti mobil semakin baik. Khususnya pada mobil menengah keatas sudah banyak dikembangkan teknologi Intelligent Car System . Intelligent Car System adalah teknologi yang memungkinkan mobil dapat mengenali situasi dan tanda-tanda yang ada di sekelilingnya untuk kemudian membuat suatu sistem yang dapat membantu pengemudi berkendara secara aman dan nyaman (Siddique, 2009). Termasuk diantaranya adalah dapat mendeteksi perilaku kendaraan disekitarnya.

Gambar 3.1 Model Intelligent Car (Henry, 2006)

Pada Gambar 3.1 terlihat contoh dari Intelligent Car System adalah Car Comunication meliputi warning detection yaitu mobil akan mengirimkan peringatan apabila mobil didepannya melakukan pengereman, dan High Lamp Controller yang mengatur lampu jauh dan dekat sesuai dengan tingkat pencahayaan dan ada/tidaknya kendaraan yang didepannya baik searah mapun berlawanan arah.
7

Dengan kemajuan teknologi yang semakin cepat maka pengembangan teknologi otomatisasi khususnya pada produk otomotif seperti mobil semakin baik. Khususnya pada mobil menengah keatas sudah banyak dikembangkan teknologi Intelligent Car System . Intelligent Car System adalah teknologi yang memungkinkan mobil dapat mengenali situasi dan tanda-tanda yang ada di sekelilingnya untuk kemudian membuat suatu sistem yang dapat membantu pengemudi berkendara secara aman dan nyaman (Siddique, 2009). Termasuk diantaranya adalah dapat mendeteksi perilaku kendaraan disekitarnya

Gambar 3.2 Contoh Sistem kendali pada Intelligent Car (Henry, 2006) Pada Gambar 3.2 digambarkan suatu contoh arsitektur Intelligent Car System . Kendati menggunakan sensor jarak untuk mendeteksi objek didepannya (pada penilitian digunakan kamera handycam ), namun arsitektur diatas sama dengan sistem kendali pada mobil cerdas modern. Perilaku yang sering dilanggar oleh pengemudi dalam berkendara di kepadatan Lalu lintas adalah sebagai berikut dijelaskan pada Gambar 3.3.

Gambar 3.3 Diagram kesalahan yang menyebabkan kecelakaan (Siddique , 2009) Gambar 3.3 menunjukkan tentang rata-rata penyebab kecelakaan diantaranya adalah kecepatan tinggi, mengabaikan rambu-rambu lalu lintas, human error (kesalahan manusia) dan kerusakan teknis pada kendaraan (Siddique, 2009). Hal inilah yang melatarbelakangi pembuatan Smart Car/ Intelligent Car System.

3.1.1 Prinsip Automatic High Beam Automatic High Beam adalah suatu teknologi dengan memanfaatkan pemrosesan citra dengan metode Object Recognition untuk mendeteksi object dan dengan bantuan Thresholding untuk mendeteksi gelap terang suatu citra.

(Destefani, 2010). Hasil pemrosesan itu kemudian dikirim ke controller beam lamp, sehingga dapat menyesuaikan kondisi saat high beam dan low beam. Untuk dapat mengetaui analisis sistem, akan dijelaskan tentang sistem Automatic Beam modern dan prinsip pengolahan pola. Ilustrasi sistem Automatic High Beam ditampilkan pada Gambar 3.4.

10

Gambar 3.4 Model Automatic High Beam milik Renault System (Destefani, 2010) Salah satu penempatan kamera yang benar adalah dibelakang mirror dengan memanfaatkan bantuan dari cahaya lampu mobil. Maka dari itu cahaya yang dihasilkan lampu mobil juga harus dianalisa. Karena pencahayaan lampu Halogen dan lampu HID berbeda. Segmentasi citra antara lampu Halogen dan lampu HID ditunjukkan pada Gambar 3.5.

Gambar 3.5 Perbedaan Segmentasi Warna Lampu HID dengan Halogen (Hyundai, 2010)

11

Pada Gambar 3.5 dijelaskan bahwa hasil substraksi warna dari lampu jenis HID, dan lampu jenis Halogen berbeda. Oleh karena itu sebaiknya sensor High Beam Controller mampu mendeteksi keduanya sebagai target objek pendeteksian. Pengaturan pencahayaan lampu juga menyesuaikan dengan objek yang ada di depannya. Pada Gambar 3.6 dijelaskan simulasi kejadian ketika ada kendaraan yang bergerak dengan arah yang berlawanan, maka intensitas cahaya lampu dari kendaraan tersebut akan dideteksi oleh kamera, kemudian lampu jauh (high beam) akan di ganti ke lampu dekat (low beam ). Pada Gambar 3.6 dan Gambar 3.7 terlihat bahwa mobil berjalan di sebelah kanan, hal ini hanyalah suatu ilustrasi sistem karena gambar dari sumber (Hyundai Corp.) menggunakan latar kondisi jalan di luar negeri. Objek yang akan diteliti, diuji dengan kondisi jalan di Indonesia yakni mobil berjalan di sebelah kiri (stir kanan pengemudi).

Gambar 3.6 Simulasi kontrol lampu jarak jauh otomatis (Hyundai, 2010)

Pada Gambar 3.7 lebih detail

dijelaskan tentang penggambaran proses

switching tersebut. Pada Gambar 3.7 (a) terlihat bahwa tidak ada kendaraan melintas dengan arah berlawanan dan pencahayaan di lingkungan sekitar juga kurang, maka controller akan switch ke lampu jarah jauh, sedangkan pada Gambar 3.7 (b) terlihat bahwa saat ada kendaraan melaju dari arah berlawanan terlihat, maka controller akan switch ke lampu jarak dekat.

12

a) Lampu High Beam akan aktif saat tidak ada kendaraan yang berjalan dari arah berlawanan.

b) Lampu High Beam akan switch ke Low Beam pada saat terdeteksi objek dengan arah berlawanan dari pengendara

Gambar 3.7 Cara Kerja Pengendalian Lampu Jarak Jauh dan Dekat Otomatis (Hyundai, 2010) 3.1.2 Warning system Auto Breaking Sytem adalah fitur pada kendaraan untuk mengurangi kecepatan, dan berhenti apabila didepannya ada suatu objek yang dekat. Biasanya sensor yang digunakan adalah ultra sonic dan kamera. (Car mild, 2012). Jika sensor adalah kamera, maka pengujian efektif dilakukan pada malam hari karena intensitas cahaya merah lampu belakang mobil/ motor sangat kuat.

Gambar 3.8 Fitur Night Vision Auto Breaking System (Carmild, 2012)

13

Sistem Night Vision Automatic Breaking System ini akan dicoba untuk diaplikasikan untuk fitur warning system pada perangkat lunak yang akan dikembangkan. Untuk mengetahui kapan saat harus memperlambat kecepatan, dan kapan harus benar-benar berhenti.

3.2 Metode Pemrosesan Citra dengan Pendeteksian Objek

Gambar 3.9 Pengolahan sinyal pada Citra Digital (Hu, 2002)


Pada Gambar 3.9, dapat dilihat bahwa, pengambilan citra secara fisik, dilakukan oleh sensor, yang peka terhadap energi rad iasi dari objek. Dari tangkapan tersebut, kemudian dikonversi menjadi binner oleh digitizer / hardware tambahan yang sanggup mengolahnya menjadi data digital. Dalam penelitian ini, tidak ada perangkat keras tambahan yang digunakan karena penggunaannya masih sederhana. Komputer, dalam pengolahan citra bertindak sebagai pengolah dengan software-software yang

14

berjalan di atas sistem operasinya. Pengguna dapat memasukkan kode-kode program yang dibutuhkan dalam pengolahan citra. Dengan bahasa pemrograman, penggu na dapat mengatur proses olah citra sesuai tujuan yang diharapkan

Citra digital direpresentasikan sebagai suatu matriks data atau fungsi f (x,y), yang terdiri dari M baris dan N kolom, ilustrasinya terlihat pada Persamaan (3.1) tentang persaman matriks citra digital. Tiap elemen dari matriks citra digital, yang dinotasikan dengan koordinat pasangan baris dan kolom disebut pixel ( picture element ), dimana x dan y adalah koordinat spasialnya sedangkan f (x,y) adalah nilai intensitas citra pada koordinat tersebut (Gonzales and Woods, 2008). Persamaan matrik citra digital 2 Dimensi f (x,y) ditunjukkan dalam Persamaan (3.1). (0,1) (0, 1) . . (1,1) .. (1, 1) ..................(3.1) . . ( 1, 1) ( 1,1)

(0,0) (1,0) , = . ( 1,0)

Ilustrasi citra pada koordinat x, y pada gambar sesungguhnya ditunjukkan oleh Gambar 3.10.

Gambar 3.10 Koordinat Citra Digital pada titik origin (Gonzales and Woods, 2008)

15

3.2.1

Deteksi Warna RGB dan HSV

RGB (Red, Green, Blue) adalah citra pada gambar terdiri dari tiga pola citra independen, satu di masing- masing warna primer: merah, hijau dan biru. Komposisi warna tertentu adalah dengan menentukan jumlah dari masing- masing komponen utama. Pada Gambar 3.11 ditunjukkan tentang geometri dari model warna RGB untuk menentukan warna dengan menggunakan sistem koordinat Cartesian. Spektrum Greyscale, yaitu warna-warna yang terbuat dari jumlah yang sama dari masing- masing primer, terletak pada garis yang menghubungkan simpul hitam dan putih.

Gambar 3.11 Kubus Model RGB (Hu, 2002)

Misalkan saja warna kuning, ia adalah hasil (merah + hijau), cyan (biru +hijau) , magenta (merah +biru), dan putih (merah+ hijau+biru). Sedangkan model HSV yang terdiri dari 3 komponen yaitu hue, saturation, value . Value terkadang disamakan dengan tingkat kecerahan. Model HSV dibuat oleh Alvy Ray Smith pada tahun 1978. HSV dikenal juga sebagai model warna hex-cone. Hue,

merepresentasikan warna, hue adalah sudut diantara 0 sampai dengan 360 derajat.Konsep model warna HSV ditunjukkan oleh Tabel 3.1 tentang konsep sudut

16

dan warna pada derajat Hue, dan Gambar 3.12 tentang Diagram model warna HSV dalam bentuk kerucut.

Tabel 3.1 Nilai sudut dan warna pada Hue (Hu, 2002)
Sudut () 0-60 60-120 120-180 180-240 240-300 300-360 Warna Merah Kuning Hijau Cyan Biru Magenta

Gambar 3.12 Kerucut HSV, (Sequin, 2011)

Pada Gambar 3.12 dijelaskan konsep Saturation mengindikasikan range/batas dari tingkat keabu-abuan dalam ruang warna/color space. Yaitu dari nilai 0255(Grayscale ), Jadi ada keadaan abu-abu antara nilai 0 dan 1. Saturation akan jadi ukuran operasi threshold pada penelitian ini. Value adalah tingkat kecerahan (brightness) dari warna dan nilainya bervariasi dan berhubungan dengan saturation. Nilainya berkisar dari dari 0-100%. Saat 0 nilainya hitam total, dengan peningkatan nilai value maka tingkat kecerahannya bertambah. Kelebihan model HSV adalah karena mendekati warna yang dirasa indra manusia, sehingga sering digunakan dalam pengolahan citra terutama pendeteksian suatu objek dengan warna tertentu.

3.2.2 Thresholding Thresholding merupakan konversi citra berwarna ke citra biner yang dilakukan dengan cara mengelompokkan nilai derajat keabuan setiap pixel kedalam 2 kelas, hitam dan putih. Pada citra hitam putih terdapat 256 level, artinya mempunyai skala 0 sampai 255 atau [0, 255], dalam hal ini nilai intensitas 0 menyatakan hitam, dan nilai intensitas 255 menyatakan putih, dan nilai antara 0 sampai 255 menyatakan warna keabuan yang terletak antara hitam dan putih. Kemudian dapat dipisahkan objek menurut rentan nilai thresholding

17

tersebut, sedang nilai thresholding lain diabaikan (Bradski and Kaehler, 2008). Contoh hasil thresholding adalah pada Gambar 3.13.

Gambar 3.13 Contoh hasil thresholding (B radski and Kaehler, 2008) 3.2.3 Smoothing Smoothing atau sering disebut blurring, adalah metode untuk

mengkaburkan objek. Tujuannya adalah untuk mengurangi nois e, sehingga mempermudah pemrosesan citra, terutatma proses pendeteksian tepi. Hal ini karena proses smoothing dapat menghaluskan/ menyatukan bagian citra yang terpisah (Hu,2002). Hal ini terlihat seperti pada Gambar 3.14.

Gambar 3.14 Contoh hasil Gaussian Smoothing (Hu, 2002) Filter yang digunakan untuk smoothing adalah linear, dengan 1 dimensi. Persamaan untuk smoothing 1 dimensi dapat dilihat pada Persamaan (3.2).

18

= . (3.2) 2 2 2 = 2. 2 Pada Persamaaan (3.2) terdapat persamaan H(u) yang berupa persamaan citra, dan persamaan h(x) yang berupa hasil smoothing dengan 1 Dimensi. Terlihat bahwa hasil smoothing adalah seperti low pass filter (Hu, 2002). Grafik median dari kedua persamaan ini terlihat pada Gambar 3.15.

, 2 2

(a) Hasil dari transformasi H(u), citra awal

(b) Hasil setelah di smoothing, h(x).

Gambar 3.15 Hasil dari transformasi Gaussian Blur 1 Dimensi (Hu, 2002) Pada persamaan smoothing yang digunakan pada penelitian ini adalah 2 dimensi . Persamaaan ini tertulis pada Persamaaan (3.3 a). Nilai , pada OpenCV
berasal dari Persamaan (3.3 b), n adalah parameter 1 untuk kernel horizontal atau parameter 2 untuk kernel vertikal. Kernel adalah matriks yang digunakan untuk proses konvolusi (OpenCV, 2012). Hasil grafik median dari persamaan smoothing 2D, dicontohkan pada Gambar 3.16.
2 2

, = 2 . 2
= 0,3
2

( 2 + 2 )

. ...(3.3 a)

1 + 0,8 , n..( 3.3 b)

19

Gambar 3.16 Hasil dari transformasi Gaussian Blur 2 D (Huu, 2002)

3.2.4 Ope rasi Sobel Operasi Sobel dilakukan untuk menghitung perbedaan gradient warna

intensitas gelap dan terang dari suatu pixel bertetanggaan (matriks) (Huu,2002). Mekanismenya adalah dengan melakukan konvolusi antara citra asli dengan kernel Sobel 3x3, 2 Dimensi x dan y. Matriks kernel tersebut yakni ditunjukkan pada matriks pada Persamaan 3.4. Matriks untuk Gradasi X ditunjukka n pada Persamaan (3.4 a), Gradasi Y ditunjukkan pada Persamaan (3.4 b) , total Gradasi ditunjukkan pada Persamaan (3.4 c). Hasil Operasi Sobel ditunjukkan pada Gambar 3.17. = + + . . . . . . . = + + + . . . .

=
+ . . . . . . . . .

20

Gambar 3.17 Hasil Operasi Sobel (OpenCV, 2012)

3.2.5 Ope rasi Deteksi Tepi Canny Operasi Canny Threshold dilakukan sebagai tindak lanjut dari operasi sobel. Dengan operasi canny didapatkan nilai tepian dari suatu objek. Dengan kata lain operasi canny akan membinerisasikan nilai threshold yang dianggap tepian objek. Metode pada Canny adalah dengan Hysterisis Threshold. Dengan proses tersebut deteksi tepi adalah pixel tingkat keabuannya lebih dari atau sama dengan

threshold atas, sedangkan pixel dengan tingkat keabuan lebih dari threshold bawah, yang sama terhubung dengan pixel yang dianggap tepian objek (lebih besar dari threshold atas) maka akan dianggap sebagai tepian objek. Hal ini untuk menghubungkan tepian objek yang mungkin tidak memiliki gradasi yang sama tinggi dengan tepian lain (OpenCV, 2012). Ilustrasi deteksi dengan dua nilai threshold dan satu nilai threshold ditunjukkan pada Gambar 3.18. Contoh hasil deteksi tepian Canny pada citra ditunjukkan pada Gambar 3.19.

(a) Hasil Operasi dengan threshold tunggal

(b) Hasil Operasi dengan threshold tinggi dan rendah

Gambar 3.18 Hasil deteksi tepian dengan (a) threshold tunggal (b) threshold tinggi dan rendah (OpenCV, 2012)

21

Gambar 3.19 Hasil deteksi tepian Canny (OpenCV, 2012)

3.2.6 Hough Circle Transform Persamaan Hough adalah salah satu persamaan untuk merepresentasikan Kontur (countour). Kontur adalah salah satu bentuk deteksi tepi, deteksi ini bisa merepresentasikan batas dari suatu daerah (boundary region) atau suatu bentuk. Maka dari itu didapatkan persamaan-persamaan untuk dapat merepresentasikan bentuk tersebut (Munir, 2004). Salah satunya adalah Hough Circle Detection.

Gambar 3.20 Proses mendeteksi lingkaran dengan Hough Circle Transform (Munir, 2004) Pada Gambar 3.20 dijelaskan tentang proses mendeteksi lingkaran dengan metode Hough Circle Transform. Ciri-ciri dari lingkaran adalah mempunyai titik tengah (a,b), dengan tepian dengan jarak jari-jari yang sama Prosesnya adalah mencari bentuk lingkarang di semua pixel.. Maka dari itu metode yang digunakan adalah persamaan polar, yang dijelaskan pada Persamaan (3.5). Pada Persamaan

22

(3.5) dijelaskan tentang bagaimana melakukan perhitungan untuk dapat mencari titik a, b, dan r (jari-jari). Persamaannya adalah sebagai berikut :
2

= ; . (3.5 )

= + ; = + ; =

= ....(3.5 b) = ....(3.5 c)
sin

, ...(3.5 d)

Transformasi lingkaran ditunjukkan pada Persamaan(3.5a), kemudian diubah dalam bentuk perkalian sudut untuk dapat mencari jari-jari berdasarkan titik tengah (a,b) dan tepian (x,y), perkalian sudut ini ditunjukkkan pada Persamaan (3.5b) dan Persamaan (3.5c). Maka untuk mencari besar jari- jari lingkaran dapat diperoleh pada bentuk Persamaan (3.5d). OpenCV memiliki library untuk deteksi Hough Transform. Metode yang digunakan sama dengan Hough Circle Transform sederhana, hanya metodenya sudah dioptimasi, dengan tidak menghilangkan ciri Hough Transform yakni deteksi koordinat titik tengah (a,b) serta jari-jari lingkaran (r) (OpenCV, 2012). Ilustrasi deteksi lingkaran ditunjukkan pada Gambar 3.21.

Gambar 3.21 Hasil pendeteksian citra dengan Hough Circle Transform (OpenCV, 2012) Pada Gambar 3.21 dapat dilihat bahwa OpenCV mencari bagian tepi yang bentuknya adalah lingkaran. Parameter pada OpenCV akan dijelaskan lebih lanjut

23

pada sub bab 6.1.2 tentang penjelasan parameter Hough Circle, dan sub bab 6.1.3 tentang kalibrasi parameter Hough Circle. 3.2.7 OpenCV
OpenCV (Open Source Computer Vision) adalah library / pustaka fungsi pemrograman untuk pemrosesan waktu nyata pada computer vision. OpenCV dirilis dibawah lisensi BSD, gratis untuk digunakan untuk kegunaan akademis maupun untuk fungsi komersial. Menggunakan antarmuka C++, C dan Python, juga Java.

OpenCV adalah library Open Source untuk Computer Vision untuk C/C++, OpenCV didesain untuk aplikasi real-time, memiliki fungsi- fungsi akuisisi yang baik untuk image/video (Huaman, 2012). Library ini dapat berjalan pada sistem
operasi Windows, Linux maupun Mac.

Feature yang dimiliki OpenCV antara lain : a) Citra dan video I/O (file dan kamera based input, image/video file output). b) Manipulasi Matriks dan Vektor beserta rutin-rutin aljabar linear (products, solvers, eigenvalues, SVD). c) Pemroses Citra fundamental (filtering, edge detection, corner detection, sampling and interpolation, color conversion, morphological operations, histograms, image pyramids). d) Kalibrasi kamera (calibration patterns, estimasi fundamental matrix, estimasi homography, stereo correspondence). e) Analisis gerakan (optical flow, segmentation, tracking). f) Graphical User Interface (display image/video, penanganan keyboard dan mouse handling, scroll-bars). g) Pelabelan citra (line, conic, polygon, text drawing). OpenCV terdiri dari 3 library, yaitu: a) CV : untuk algoritma Image processing dan Vision. b) Highgui :untuk GUI, Image dan Video I/O. c) CXCORE : Untuk struktur data, support XML dan fungsi- fungsi grafis.

BAB IV METODE PENELITIAN


4.1 Bahan Pada Gambar 4.1 ditampilkan hasil capture video dari dalam mobil dengan menggunakan handycam. Bahan yang digunakan adalah video hasil pengambilan gambar di lokasi. Video tersebut merupakan gambaran dari keadaan hasil camera yang terletak di dalam mobil (dibelakang mirror tengah).

Gambar 4.1 Hasil capture video dari dalam mobil

4.2

Peralatan

Pengembangan software membutuhkan perangkat keras dan perangkat lunak. Sebagai langkah awal, direncanakan untuk menggunakan beberapa instrumentasi yang akan diuraikan, pada sub bab peralatan. Peralatan yang digunakan adalah sebagai berikut : a. Handycam Sonny Hybrid HDR-CX110E Sensor untuk mengcapture video yang digunakan adalah Sonny Hybrid HDR-CX110E. Digunakan alat ini karena menghasilkan hasil Capture Video dengan sangat baik, dengan fitur tambahan Exmor yang memungkinkan perekaman video dengan tingkat exposure rendah maupun tinggi. Gambar model perekam video ditunjukkan pada Gambar 4.2.

24

25

Gambar 4.2 Kame ra Sonny Hybrid HDR-CX110E b. Tripod Handycam Tripod adalah alat untuk mendukung posisi handycam yang benar tegak dan terukur, lengkap dengan waterpas untuk menentukan kedudukan datar camera. Pada tripod diset tinggi sebesar 150 cm, untuk mempurwarupakan setting camera pada ketinggian mirror tengah mobil Nissan Terrano. c. Tali Rafia Tali rafia yang dimaksud disini bukan sembarang tali rafia. Namun tali rafia yang sudah diukur per 10 meter. Untuk mendapatkan nilai 10 meter diukur dengan menggunakan bantuan ubin, dimana ubin berukuran 30x30 cm. Berarti untuk mendapatkan panjang 10 meter, perlu dibentangkan tegak lurus pada ubin sebanyak 34 ubin. Tali rafia ini akan digunakan untuk membantu menset jarak kalibrasi untuk membuat titik point per 10 meter dimulai dari titik nol. d. Kalibrator Model Kalibrator model adalah model kendaraan yang digunakan untuk

mengkalibrasi hasil dari kamera berdasarkan jarak yang sudah ditentukan, dan untuk meminimalisir error. Berikut adalah kendaraan dan spesifikasinya yang digunakan untuk mengkalibrasi pendeteksian pola warna. Model sampel kendaraan untuk kalibrator pada mobil, mempunyai spesifikasi yang ditunjukkan pada Tabel 4.1. Sedangkan pada sampel motor untuk kalibrasi ditunjukkan pada Tabel 4.2.

26

Tabel 4.1 Kebutuhan mobil model kalibrator Merek Type Lebar Kendaraan Tinggi Lampu Depan Tinggi Lampu Belakang Tinggi Spion Tengah Nissan Terrano Jeep 145 cm 80 cm 82 cm 150 cm

Tabel 4.2 Kebutuhan motor model kalibrator Merek Lebar Tinggi Lampu Depan Tinggi Lampu Belakang Honda Revo 40 cm 110 cm 82 cm

e. Software OpenCV Digunakan Software OpenCV untuk komputasi pemodelan sistem ini, karena OpenCV adalah perangkat lunak khusus untuk mengolah citra, dan kelebihannya adalah ringan. Kelebihan OpenCV dibanding peralatan yang lain telah disebutkan pada dasar teori.

f. Pemroses Video. Pada penelitian ini digunakan spesifikasi laptop yang telah disebutkan di bagian analisa kebutuhan hardware pada sub bab 4.4.1 Penelitian ini menggunakan prosesor Intel karena OpenCV dioptimalisasi untuk prosesor tersebut.

27

4.3 Prosedur Kerja dan Pengumpulan Data 1. Dilakukan studi literatur mengenai metode apa saja yang dibutuhkan untuk pemrosesan video. 2. Dilakukan pengambilan gambar video di lapangan, untuk mempermudah penelitian. 3. Dilakukan penelitian pemrosesan video dengan metode yang akan digunakan yakni pendeteksiaan warna, ukuran minimal pendeteksian, dan koordinat. 4. Dilakukan uji algoritma dan analisa data. 5. Dilakukan implementasi pada purwarupa sistem. 6. Dibuat laporan hasil penelitian berupa skripsi.

4.4

Analisis dan Rancangan Sistem Berikut ini adalah rancangan sistem dan kebutuhan pembuatan sistem:

4.4.1 Analisis kebutuhan fungsiomal Analisis kebutuhan fungsional adalah sistem standar yang direkomendasikan untuk menjalankan sistem ini. Analisis tersebut meliputi pemrosesan video, kontrol dan aktuator.

Analisis kebutuhan pemroses video (hardware) Hardware pemroses video berupa laptop/ computer standar. Karena masih dalam tahap penelitian dengan menggunakan prototype. Detail spesifikasi tentang pemroses video yang digunakan ditunjukkan dalam Tabel 4.3. Tabel 4.3 Kebutuhan hardware pemroses video Model CPU Memori Platform Penyimpanan Display Core 2 Duo Intel Processor 2 GB Ram DDR2 Platform Linux Ubuntu 160 Gb Standart

28

Sesuai pada Tabel 4.3 penelitian akan dilaksanakan pada platform Intel Processor Core 2 Duo, dengan 2 GB Ram DDR2, dan hardisk 160 GB. Demi kebebasan, dan keringanan pemrosesan, digunakan sistem operasi Linux Ubuntu. Karena lebih ringan dan kecil ukurannya dibanding sistem operasi yang lain.

Analisis kebutuhan pemroses video (software). Untuk kebutuhan pemroses video, digunakan framework Opencv 2.4.2. untuk Linux, kemudian menggunkaan compiler C/C++ pada penelitian ini. compiler GCC terbaru. Kebutuhan tersebut ditunjukkan pada Tabel 4.4. Tabel 4.4 Kebutuhan software pe mroses video Framework Compiler Codec Penyimpanan Display OpenCV 2.4.2. C/C++ V4Lan (Video Lan for Linux), dan FFMPEG 0.8x 160 Gb Standar

Untuk video codec, kebutuan OpenCV Linux versi 2.4.2 adalah V4Lan dan FFMPEG 0.8x. Untuk display, digunakan layar laptop standart.

Analisis kebutuhan sensor Kebutuhan Sensor dibawah ini adalah video kamera/ Handycam Sonny Hybrid HDR-CX110E untuk menghasilkan video. Spesifikasi tersebut dapat dilihat pada Tabel 4.5. Tabel 4.5 Setting sensor Handycam Sonny Hybrid HDR-CX110E Resolusi Sensor Setting Fokus Setting Exposure Kecepatan Shutter Resolusi Video 3 Mega Pixels Manual Automatic 50 FPS HD: 1920x1080/60p (PS)

29

Pada Tabel 4.5 disebutkan resolusi video adalah 1920x1080 (HD) /60p (PS), dan besarnnya kecepatan shutter 50 FPS (kamera mampu merekam gambar 50 frame per detik), Dengan terlalu besar ukuran video dan tingkat fps dari video kamera ,untuk di proses dengan software pengolah citra OpenCV. Maka dari itu pada penelitian ini dilakukan dengan software Video Converter Format Factory. Hasil konversi dengan menggunakan software Format Factory ditunjukkan pada Tabel 4.6. Tabel 4.6 Hasil Konversi dengan software Format Factory Kebutuhan Resolusi FPS Gambar/ Video Pada Penelitian ini 640x480 15 FPS

Untuk memudahkan kan pemrosesan video, output resolusi pada penelitian ini digunakan 640x480 pixel, dengan tingkat frame rate sebesar 15 FPS (Frame per second), karena pemrosesan pada video dengan OpenCV adalah dengan memroses tiap frame video yang masuk, sehingga harus dibatasi supaya tidak terlalu berat.

Analisis kebutuhan aktuator Spesifikasi untuk kebutuhan aktuator pada penelitian ini adalah system Arduino Mega 2560, spesifikasi sistem ditunjukkan pada Tabel 4.7. Modul sistem ditambahkan dengan tambahan modul relay Shield dan dua aktuaor servo., dan lampu led, sebagai purwarupa sistem Spesifikasi tersebut dapat dilihat pada Tabel 4.8. Tabel 4.7 Tabel spesifikasi kontroller Arduino Mega 2560 Mikrokontroller Clock Bootloader Kapasitas ROM AtMega 128 16Mhz Arduino 256 Kb

30

Tabel 4.8 Tabel spesifikasi aktuator Relay Servo Lampu Kapasitas ROM Arduino Relay Shield , 4 Relays 12 KG , 180 Degrees, 2 buah LED Superbright Hijau (Low Beam) LED Superbright Biru (High Beam)

4.4.2 Analisis kebutuhan non fungsional Analisis kebutuhan non fungsional adalah kebutuhan sistem diluar kebutuhan detail teknis, namun harus dipenuhi untuk berjalan baiknya suatu sistem. Kebutuhan non fungsional untuk sistem ini ditunjukkan pada Tabel 4.9. Tabel 4.9 Kebutuhan non fungsional Kebutuhan Kualitas Gambar Kemampuan pendeteksian Pada penelitian ini digunakan mode 640x480, dengan besar FPS: 15 fps Mampu mendeteksi colorspace (jangkauan warna) lampu depan dan lampu belakang dengan Hough Circle. Mampu mendeteksi dan mengintepretasi pendeteksian dengan estimasi jarak real objek berdasarkan tinggi sumbu vertikal centroid dan tingkat thresholding. Mampu memroses main frame dan mampu memproses beberapa frame untuk kebutuhan pemrosesan.

Kebutuhan Jarak Pendeteksian

Kebutuhan pemrosesan

Pada Tabel 4.9 diterangkan dengan kebutuhan non fungsional. Digunakan resolusi video 640x480 dan 15 fps untuk menjalankan main frame. Untuk fungsi deteksi Hough Circle, maka harus mampu mendeteksi colorspace dan lampu belakang Hough Circle. Kemudian spesifikasi sistem yang dikembangkan harus mampu lampu depan

mengintepretasikan estimasi jarak objek dengan parameter yang didapatkan dari hasil kalibrasi. Kemudian pemrosesan pasti memerlukan beberapa frame untuk preprocessing dan duplikasi diproses secara bersamaan, maka sistem harus mampu memroses tanpa menghasilkan error.

31

4.5

Rancangan Penelitian

4.5.1 Rancangan sistem segmentasi citra


Preprocessing Konversi RGB2HSV, Filter Colorspace, Deteksi Tepi Objek Konversi RGB2HSV Filter Colorspace

Frame RGB 8 Bit 3 Channel

Frame HSV 8 Bit 3 Channel

Frame Grayscale 8 Bit 1 Chnanel

Filter Gauss Blur (Smoothing)

Operator Sobel (Deteksi Tepi)

Objek Terdeteksi : - (x,y) centroid - radius Intepretasi koordinat vertikal Centroid dan Tingkat Threshold objek terdeteksi

Transformasi Hough Circle

Operator Canny Threshold (Binerisasi Tepian)

Processnig Canny Threshold Dan Transformasi Hough Circle

Gambar 4.3 Diagram proses segmentasi citra Proses pengolahan citra yakni segmentasi objek untuk memisahkan objek dengan lingkungan secara umum dijelaskan pada diagram pada Gambar 4.3. Pada Gambar 4.3 secara umum dijelaskan proses pengolahan citra secara jelas dari citra asli RGB 8 bit 3 channel, kemudian dikonversi ke bentuk HSV untuk mengurangi nois error akibat perubahan intensitas cahaya dengan frame HSV 8 bit 3 channel. Frame tersebut di filter dengan spasi warna (colorspace) untuk memisahkan objek dengan lingkungan. Dilakukan Filter Gaussian Blur untuk mengurangi nois untuk deteksi tepi. Proses deteksi tepi pada Gambar 4.3, dilakukan operasi sobel untuk dapat menghitung tingkat gradasi warna intensitas gelap terang (derajat keabuan) pada pixel bertetanggaan (Matriks). Hasil operasi sobel membuat gradasi pixel bertetanggan pada tepi objek menjadi tinggi, sementara bagian tengah gradasinya rendah. Pada Gambar 4.3 dijelaskan mengenai processing yakni canny dan Hough Circle. Dilakukan Operasi Canny dengan operasi 2 thresholding, yakni threshold atas dan threshold bawah. Nilai derajat keabuan yang sama dan lebih besar dari threshold atas akan dianggap sebagai tepi, sementara threshold bawah akan menghubungkan pixel dengan gradasi diatasnya yang terhubung dengan tepi sebagai tepi objek. Hasil operasi canny berupa biner 1 pada tepi objek (solid).

32

Sementara tengah dan luar objek adalah 0. Pada tepi objek inilah dilakukan ekstraksi fitur Hough Transform untuk mencari bentuk lingkaran. Kemudian hasil Transformasi Hough Circle adalah mendapatkan titik tengah (a,b) dan radius objek terdeteksi. 4.5.2. Rancangan diagram blok sistem Pada rancangan sistem, kendali dilakukan oleh feedback dari proses pengolahan citra yakni perkiraan jarak. Perkiraan jarak ini yang akan dijadikan acuan untuk sistem melakukan koreksi pengendalian intensitas cahaya lampu dan koreksi pemberian peringatan. Proses kendali pada lampu jauh ditunjukkan pada Gambar 4.3 (a). Pada diagram blok sistem lampu jauh otomatis sudah jelas dipaparkan koreksi pencahayaan dilakukan dengan kontrol servo apakah naik atau turun dan kendali lampu apakah lampu jauh dan lampu dekat. Posisi servo untuk menaikkan lampu pendek sedikit demi sedikit, karena didepan ada objek pada jarak yang cukup jauh, atau intensitas cahayanya rendah.
Koreksi pencahayaan Set Point Kontroller Pencahayaan yang diharap Kontrol Servo dan Lampu Intensitas Pencahayaan Lampu Pengemudi Pencahayaan Lampu

Proses variabel Estimasi Jarak

Pemrosesan citra lampu depan dan lampu belakang kendaraan didepan pengemudi

(a) Diagram blok kendali lampu depan


Koreksi Peringatan Set Point Kontroller Peringatan yang diharap Sistem Peringatan Memperingatkan Pengemudi

Peringatan

Proses variabel Estimasi Jarak, Peringatan saat REM, Hati-hati, dan Deteksi Depan

Pemrosesan citralampu belakang kendaraan didepan pengemudi

(b) Diagram blok sistem peringatan

Gambar 4.4 Diagram blok kendali sistem (a) diagram lampu jauh otomatis, (b) diagram blok sistem peringatan otomatis

Pada Gambar 4.3 (b) ditampilkan blok kendali sistem peringatan otomatis. Pada diagram terlihat feedback adalah perkiraan jarak. Namun sistem

33

parameternya adalah 3 peringatan, yakni deteksi depan kendaraan (mendeteksi lampu belakang kendaraan pada jarak jauh), hati- hati (mendeteksi lampu belakang kendaraan pada jarak sekitar 40-50 meter) dan kondisi REM (mendeteksi intensitas lampu belakang kendaraan saat mengerem/ intensitas tinggi pada jarak kurang dari 30 meter). 4.5.3 Rancangan sistem pengenalan objek secara umum Sistem ini menggunakan sumber video yang mengambil citra pola berupa cahaya yang datang dari lampu berlawanan arah atau lampu belakang dari kendaraan, maka dilakukan deteksi objek berdasarkan pola warna. Rancangan sistem secara umum ditunjukkan pada Gambar 4.5.
Input frame dari video Masukan frame Dan cropping awal Cropping Frame dan Setting Resolusi Frames

Preprocessing Lampu Depan

Preprocessing Lampu Belakang

Preprosessing Konversi RGB ke HSV

Duplikasi Frame Lampu Depan

Duplikasi Frame Lampu Belakang

Duplikasi Basis Frame

Deteksi Objek Dengan Variasi Threshold | Deteksi Centroid (x,y) dan radius lingkaran tiap basis threshold frame Deteksi dengan Ya Metode Hough Circles

Deteksi Objek Dengan Variasi Threshold | Deteksi Centroid (x,y) dan radius lingkaran tiap basis threshold frame

Interpretasi dan aktuasi Batas Threshold Frame Lampu Depan dan ROI tidak tidak Batas Threshold Frame Lampu Belakang dan ROI

Ya awal Posisi Servo | Lampu Dekat/ Jauh awal

Ya

Deteksi Kendaraan di Depan | Peringatan Rem atau Hati-hati

Gambar 4.5 Diagram alir rancangan sistem perangkat lunak secara umum

34

Kita memulai pada blok pertama, yang berisi masukan frame dan cropping, hasil cropping tersebut kemudian dimasukkan kepada ukuran frame yang sesuai. Frame tersebut kemudian masuk ke dalam preproscessing konversi RGB ke HSV. Pada proses ini, digunakan untuk mendeteksi warna dengan membatasi colorspace (jangkauan warna) pada tiap frame deteksi lampu depan (cahaya putih) dan deteksi lampu belakang (cahaya merah). Kemudian tiap frame HSV deteksi lampu depan dan lampu belakang, dicari titik centroid (x,y) dan rad ius lingkaran untuk tiap frame. Kemudian dilakukan duplikasi frame untuk menyiapkan frame dengan threshold frame yang berbeda-beda untuk mendukung proses interpretasi program. Setelah didapatkan duplikasi frame HSV pada deteksi lampu belakang dan lampu depan. Deteksi Hough Circles dapat dilakukan pada tiap-tiap frame hasil pendeteksian. Hough Circles mempunyai beberapa parameter pendeteksian, akan dijelaskan pada sub bab 6.2. Salah satu parameter yang digunakan yakni parameter canny threshold, yakni filter threshold dengan nilai maksimal dan minimal. Maka yang divariasikan adalah nilai minimalnya. Cahaya/warna dengan intensitas rendah hanya bisa menembus threshold rendah. Begitu juga jika intensitas/ nilai tinggi vertikal maka dapat menembus threshold tinggi. Setelah objek terdeteksi ada 3 parameter yang akan didapat yakni koordinat vertikal dan horizontal centroid, titik tengah lingkaran, dan rad ius lingkaran. Koordinat vertikal centroid inilah yang akan digunakan sebagai parameter, disamping paramter tingkat threshold. Tahap berikutnya adalah tahap interpretasi. Pada tahap ini dilakukan penelitian dengan Kalibrasi. Hasilnya dapat dilihat pada Lampiran Kalibrasi. Berdasarkan hasil pada lampiran tersebut, dilakukan interpretasi jika koordinat y dan nilai threshold x, maka aktuasinya posisi servo dan posisi lampu dan status peringatan apa. Hal-hal yang masih dijelaskan dengan umum akan dijelaskan pada sub bab 4.4 tentang rancangan penelitian secara spesifik.

35

4.5.2 Rancangan sistem secara spesifik Berikut adalah rancangan sistem secara spesifik. Video yang ditangkap oleh Camera, atau berupa file, akan dicapture tiap frame. Kemudian rancangan sistem yang akan dituliskan disini ada 3 macam yakni rancangan sistem saat menduplikasi frame, deteksi algoritma pada frame putih/lampu depan, dan deteksi pada frame merah/ lampu belakang. Berikut adalah penjelasannya. Rancangan sistem input frame, cropping , preprocessing, dan duplikasi frame. Berikut ini adalah rancangan frame pada saat menduplikasi frame, ditampilkan pada Gambar 4.4. Input video sengaja ada 3 video, duplikasi dengan frame 640x480 terlalu besar sehingga berakibat error.
Start awal

Input Video; Main Frame 640x480

Input Video; Frame Kiri 250x140

Input Video; Frame Kanan 290x140

Fungsi Drawing : - Daerah ROI Frame Kanan - Daerah ROI Frame Kiri - Deteksi Threshold 10 - Deteksi Threshold 20 - Deteksi Threshold 30 - Deteksi Threshold 40 - Deteksi Threshold 50 - Deteksi Hati-hati - Deteksi Rem

SetROI(100,220,250,140)

SetROI(100,220,250,140)

Preprocessing Lampu Depan | Preprocessing Lampu Belakang

Preprocessing Lampu Depan | Preprocessing Lampu Belakang

tres10kiri

Hati-hati kiri

Hati-hati kanan

tres10 Kanan

Cloning Frame

Cloning Frame

Cloning Frame

Cloning Frame

Rem Kiri

Rem Kanan

tres20 kiri

tres30kiri

tres40kiri

tres50kiri

tres20 Kanan

tres30 Kanan

tres40 Kanan

tres50 Kanan

Gambar 4.4 Diagram rancangan spesifik menduplikasi frame

36

Pada Gambar 4.4 dijelaskan main frame dipotong menjadi wilayah yang lebh kecil yang penting pada pemrosesan, wilayah ini biasa disebut ROI ( Region of Interest ). Pada karena lampu mobil ada 2 yakni kiri dan kanan, maka wilayah ROI ini dibelah lagi menjadi 2. Wilayah sebelah kanan dipotong frame nya dan diberi nama frame kanan yang berukuran 290x140, dan wilayah sebelah kiri diberi nama frame kiri yang berukuran 250x140. Ukuran frame disesuaikan pada frame 290x140 untuk frame kanan, dan 250x140 untuk frame kiri, berasal dari hasil kalibrasi. Untuk lebih jelas tentang pembatasan ROI telah dijelaskan pada sub bab 5.7. Angka ini berasal dari hasil kalibrasi dimana nilai maksimal deteksi pada jarak 90 m adalah sekitar 130. Maka ditambah dengan 10 pixels untuk toleransi, maka didapatkan 140. Kemudian untuk nilai horizontal juga didapatkan dari hasil kalibrasi pada titik 90 m pada titik x=250, maka sisa frame kanan adalah 290. File input video kanan dan kiri adalah berukuran 640x480, kemudian supaya masuk pada frame yang telah dibuat maka main frame harus dipotong (cropping ), untuk membatasi wilayah pemrosesan fungsi ROI untuk. Sebagai contoh dilakukan fungsi SetImageROI (100, 220, 250, 140), itu artinya bahwa ROI terbentang pada wilayah horizontal 100 ditambah 250 pixels, berarti sampai koordinat 350, kemudian 220 ditambah 140 pixels berarti 360 pixels. Itu berarti ROI frame kiri antara (100, 220) sampai (350, 360). Main Frame hanyalah digunakan sebagai penampil Garis ROI dan lingkaran deteksi sekuensial. Oleh karena itu fungsi yang ada pada main frame adalah fungsi drawing saja sebagai penanda objek yang terdeteksi pada masing- masing deteksi frame. Frame kanan dan frame kiri mempunyai proses yang sama, karena keduanya dibentuk hanya untuk membatasi ROI, supaya lampu kanan dan lampu kiri mempunyai kontrol secara indepentdent , sehingga bisa menyerupai model fitur pada mobil canggih. Proses pertama yang dilakukan adalah preprocessing lampu depan dan lampu belakang. Proses ini adalah merubah konversi frame dari RGB ke HSV. Ada 2 macam frame yang dikonversikan yakni frame putih untuk mendeteksi skala

37

warna cahaya lampu depan, dan frame merah untuk mendeteksi skala warna cahaya lampu belakang. Preprocessing lampu depan menghasilkan frame thres10, kemudian preprocessing lampu depan menghasilkan frame hati- hati. Kemudian dilakukan proses duplikasi frame dengan menggunakan fungsi Cloning Frames. Maka segera didapatkan frame untuk proses thresholding 20, 30, 40, 50 dari frame thres10, dan untuk frame proses deteksi depan, dan rem dari basis frame hati- hati. Rancangan sistem saat Deteksi Lampu Depan dan aktuasinya. Pada gambar 4.4. didapatkan bahwa diagram alir saat deteksi lampu depan dimulai dari ke 5 frame. Masing- masing frame melakukan deteksi objek dan deteksi sequensial. Deteksi objek meliputi skala threshold minimal pada setiap frame, seperti terlihat jelas pada gambar diagram alir ini.
Tres10 Tres20 Tres30 Tres40 Tres50

Deteksi Objek Basis Threshold 10 | Deteksi centroid (x,y), radius

Deteksi Objek Basis Threshold 20 | Deteksi centroid (x,y), radius

Deteksi Objek Basis Threshold 30 | Deteksi centroid (x,y), radius

Deteksi Objek Basis Threshold 40 | Deteksi centroid (x,y), radius

Deteksi Objek Basis Threshold 50 | Deteksi centroid (x,y), radius

Tidak
Threshold 10-19

Tidak

Tidak
Threshold 20-29 awal

Threshold 30-39 awal

Tidak
Threshold 40-49 awal Threshold 50-255

Tidak
awal

Ya
Servo Posisi 3

Ya
Servo Posisi 1

Ya Tidak
Y=> 20

Ya
Y=>30

Ya
Servo Posisi 5

Y>=20 Lampu Dekat

Tidak

Ya
Servo Posisi 1 Servo Posisi 3

Ya
Y=>30

awal

Ya
Servo Posisi 5 Servo Posisi 4

Ya
Lampu Jauh Servo Posisi 2 Servo Posisi 5

Tidak

Servo Posisi 4

Gambar 4.5 Diagram alir rancangan spesifik deteksi lampu depan

38

Deteksi sequensial meliputi mendeteksi titik tengah dari objek yang terdeteksi. Koordinat titik vertikal dari objek terdeteksi itu bisa merubah kedudukan servo sesuai dengan flowchart diatas. Berdasarkan hasil kalibrasi pada Lampiran 3, 4, 5, didapatkan hasil bahwa lampu motor tidak akan melewati lebih dari threshold 30. Dan jarak pada titik 40-50 meter adalah koordinat 120. Pada OpenCV sebenarnya koordinat dihitung dari atas ke bawah, pada lampiran kalibrasi sengaja dibalik dari bawah ke atas karena untuk mempermudah pembacaan dan lebih mudah dimengerti. Maka setelah dikembalikan pada aslinya bahwa ROI kanan dan kiri tinggi vertikalnya adalah 140. Maka dari itu koordinat <120 jika dihiting dari atas adalah >20. Demikian juga pada koordinat <110, maka dihitung dari atas adalah >30. Pada diagram Gambar 4.5 terlihat bahwa aktuasinya ada bermacam- macam dari servo posisi 10 sampai servo posisi 50. Kendali servo dilakukan oleh program secara otomatis Sebagai contoh servo posisi 50 adalah servo dengan prioritas paling tinggi..Hal ini dijelaskan pada sub bab 4.4.4. Rancangan sistem saat Deteksi Lampu Belakang. Prosesnya mirip dengan deteksi lampu depan. Hanya saja pada deteksi lampu belakang ini ada 3 tingkat thresholding. Dimana tingkatan thresholding itu adalah threshold depan(10), threshold Hati-hati(20), threshold Rem(30) pada frame

warna merah. Dibuat parameter intepretasi ini berasal dari hasil kalibrasi pada hasil lampiran. Frame Deteksi depan dengan basis threshold 10 (merah) hanya untuk menandakan didepan ada pengendara kendaraan bermotor Aktuasinya adalah filamen yang digunakan lampu dekat. Frame Hati- hati dengan basis threshold 20 (merah) adalah untuk menandakan bahwa didepan ada kendaraan yang tidak mengerem namun jaraknya lebih dekat dari 40 meter. Frame Rem dengan basis threshold 30 untuk menandakan di depan ada kendaraan mengerem pada jarak yang lebih dekat dari 20 meter.

39

Deteksi Depan

Hati-hati

Rem

Deteksi Objek Dengan Basis Threshold 10 | Deteksi Centroid (x,y) dan radius lingkaran tiap basis threshold frame

Deteksi Objek Dengan Basis Threshold 20 | Deteksi Centroid (x,y) dan radius lingkaran tiap basis threshold frame

Deteksi Objek Dengan Basis Threshold 30 | Deteksi Centroid (x,y) dan radius lingkaran tiap basis threshold frame

Tidak Threshold 1019(Merah) Ya Ya Lampu Pendek tidak Y>20 Ya Lampu Jauh Hati-hati tidak Y>30 Ya Rem Intepretasi Kondisi Cahaya lampu belakang motor saat Rem Ya Rem; Posisi servo 5 Ya Hati-hati; Posisi servo 4 Y>20 Posisi servo 3 awal Ya Y>10 Ya Thresholded 2029 (Merah) tidak awal Thresholded 30255 (Merah)

tidak

awal

tidak awal

tidak

Y>30

Intepretasi Kondisi Cahaya lampu belakang mobil saat Rem

Gambar 4.6 Diagram alir rancangan spesifik deteksi lampu belakang

Pada Gambar 4.6 dapat dilihat intepretasi pendeteksian cahaya lampu belakang lengkap dengan aktuasinya. Koordinat vertikal diatas didapatkan dari

pendeteksian di Lampiran 6.3 dan 6.4. Estimasi tinggi Y=10 pixels (pada kalibrasi tinggi 130, basis frame ROI yang digunakan 140, koordinat vertikal dihitung dari atas) adalah jarak 90 meter. Estimasi jarak pada Y= 20 adalah pada jarak 40-50 meter, dan estimasi jarak pada Y=30, adalah pada jarak 10-20 meter.

40

Intepretasi kekuatan threshold untuk lampu depan belakang motor dan lampu belakang mobil berbeda. Karena pada saat rem, intepretasi lampu belakang motor adalah pada tingkat minimal thresholding 20, dan lampu belakang mobil pada tingkat minimal thresholding 30, nilai maksimum tetap 255. Kita mengasumsikan bahwa jarak 40-50 meter dari jarak kendaraan adalah jarak yang tepat untuk berhati- hati, dan jarak 10-20 meter di depan kendaraan maka harus segera mengerem kendaraan. Intepretasi aktuasi berikutnya adalah posisi servo. Namun hal ini hanya diaplikasikan pada threshold 30, yang tidak mampu dicapai motor menurut data kalibrasi. Karena jika lebih rendah dikhawatirkan banyak error. Pada jarak semakin dekat, maka posisi servo akan semakin menunduk. Hal ini bermaksud agar sang pengemudi dapat melihat dengan jelas kalau kendaraan di depannya itu sedang mengerem. Karena khawatir kalau cahaya lampu depan terlalu kuat, maka cahaya merah dari lampu belakang kendaraan di depan tidak terlihat jelas karena kalah terang. Pada Gambar 4.6. diintepretasikan bahwa jika pada jarak >90 meter (Y>10), maka asumsi nya servo ke posisi 3, jika pada jarak >50 meter (Y>20) maka lebih merunduk lagi ke servo posisi 4, dan jika pada jarak >20 meter (Y>30) maka posisi paling merunduk yaitu di servo posisi 5. Rancangan prioritas aktuasi Pada rancangan sistem yang telah dibahas sebelumnya belum jelas bagaimanakah prioritas jika terdeteksi berbagai macam aktuasi. Solusi yang diberikan adalah dengan prioritas. Maka yang prioritas tertinggi yang akan dieksekusi. Diagram alir tentang prioritas tersebut dapat dilihat di Gambar 4.7. Pada diagram alir dapat dilihat bahwa prioritas tertinggi pada input posisi servo adalah posisi 5 (paling merunduk), sedangkan yang paling rendah adalah posisi 1 (paling naik). Hal ini karena sistem ini tidak boleh mengakibatkan silau ( blind) pada pengendara didepannya.

41

Input Posisi Servo

Posisi 5?

Tidak Tidak

Ya Servo Posisi 5 PWM=750

Posisi 4? Posisi 3? Ya Servo Posisi 4 PWM=900 Ya Tidak Servo Posisi 3 PWM=1050 Posisi 2? Ya Posisi 1? Servo Posisi 2 PWM=1200 Ya Servo Posisi 1 PWM=1350 Lampu Jauh Tidak Tidak

(a) Prioritas kendali posisi servo


Input Intepretasi Lampu belakang

awal

Didepan terdeteksi kendaraan? Ya Lampu Pendek

Tidak

Tidak

awal Terdeteksi Rem? Ya Ya Rem Terdeteksi Hati-hati Tidak

awal

(b) Intepretasi lampu belakang kendaraan

Hati-hati

Gambar 4.7 Diagram alir (a) prioritas kendali posisi servo dan (b) intepretasi lampu belakang kendaraan Kemudian pada intepretasi lampu belakang pada Hambar 4.7 (b), terlihat intepretasi deteksi Didepan ada kendaraan tidak terganggu karena penting mengaktifkan lampu pendek. Kemudian terdeteksi Rem prioritasnya lebih tinggi daripada terdeteksi Hati- hati, karena kecepatan harus segera dikurangi lebih- lebih segera dihentikan.

42

4.6 Rancangan Perangkat Lunak (Desain ROI) Pada bagian ini akan dijelaskan tentang konsep pembatasan wilayah ROI. Dengan pembatasan tersebut didapat mengurangi ukuran frame untuk

meningkatkan efisiensi pendeteksian, dan didapat mengurangi error yang terjadi, dengan memangkas wilayah frame yang tidak perlu. Wilayah yang tidak diinginkan dalam pendeteksian akan dibuktikan dengan data dan hasil kalibrasi. Dari data tersebut didapatkan estimasi kurva Y vertikal maksimal dan minimal yang dilalui objek, dan estimasi wilayah horizontal X yang tidak perlu, karena tidak ada objek yang melewatinya. Setelah dipotong, menjadi frame ukuran baru. Pada frame ukuran baru itu baru kemudian dibagi menjadi 2 yakni wilayah ROI kanan dan ROI kiri. Penjelasan ini ditampilkan pada Gambar 4.8.
640

220

480

ROI Kiri 250x140 Duplikasi Duplikasi frame lampu depan Duplikasi frame lampu belakang

ROI Kanan 290x140 Duplikasi Duplikasi frame lampu depan Duplikasi frame lampu belakang

100

Gambar 4.8 Desain skematik perangkat lunak. Pada Gambar 4.8 dapat dilihat bahwa frame ROI kanan dan ROI kiri ini kemudian di duplikasi menjadi beberapa frame. Tentang jumlah frame akan menyesuaikan dari hasil kalibrasi. Frame yang akan diduplikasikan berasal dari basis frame lampu depan yang merupakan pendeteksian lampu depan kendaraan (cahaya putih), dan basis frame lampu belakang yang merupakan pendeteksian

43

lampu belakang kendaraan (cahaya merah). Frame tersebut akan diduplikasikan pada basis threshold yang berbeda, menurut hasil kalibrasi yang akan dilakukan. 4.7 Rancangan Perangkat Keras 4.7.1 Desain skematik pe rangkat keras

Desain perangkat keras adalah menggunakan Arduino Mega 2560. Arduino adalah minimum sistem siap pakai oleh karena itu skematik alat sederhana saja. Servo masuk ke port Analog (PWM), sedangkan Relay untuk mengganti lampu jauh dan pendek masuk ke port Digital. Desain skematik ditunjukkan pada Gambar 4.9.

Gambar 4.9 Desain skematik perangkat keras

4.7.2

Diagram alir pe rangkat keras.

Didalam diagram alir perangkat keras sistem diharuskan dapat menerima input bilangan ASCII dari serial kemudian dapat memisahkannya ke dalam 4 bagian. Bagian pertama adalah untuk mengontrol servo kanan, bagian kedua adalah untuk

44

mengontrol servo kiri, bagian ketiga adalah untuk mengontrol lampu kanan, dan bagian keempat adalah untuk mengontrol lampu kiri. Di setiap task diberi delay masing- masing. Maka setiap task yang mempunyai prioritas berbeda akan diberikan delay yang berbeda diagram alir pemrosesan tersebut ditunjukkan pada Gambar 4.10. Pembahasan selanjutkan akan dibahas pada sub bab 5.11, tentang pemodelan aktuator.
Input data serial BAUD = 9600

Menerima data serial >3 ASCII

Parsing input ASCII [0][1][2][3]

Input[0]

Input[1]

Input[2]

Input[3]

Servo Kanan Posisi 1 Posisi 2 Posisi 3 Posisi 4 Posisi 5

Servo Kiri Posisi 1 Posisi 2 Posisi 3 Posisi 4 Posisi 5

Lampu Kiri Lampu Jauh Lampu Dekat

Lampu Kiri Lampu Jauh Lampu Dekat

Delay

Delay

Delay

Delay

Gambar 4.10 Diagram alir perangkat keras 4.8 Rancangan Pengujian Setelah desain algoritma dan perangkat keras terwujud, akan segera diujicobakan pada tingkat pengujian : a. Pemasangan Kamera dan Tinggi Kamera Estimasi tinggi kamera untuk memperoleh citra adalah sesuai dengan tinggi cermin tengah dari mobil. Pada mobil yang telah dijadikan contoh model kalibrasi (Nissan Terrano) ini tinggi cerminnya adalah 150 cm diukur dari titik nol tanah. Maka dari itu pada saat kalibrasi tinggi kamera dibantu dengan tripod harus dapat mencapai 150 cm. Ilustrasi posisi dan tinggi kamera ditunjukkan pada Gambar 4.11.

45

Gambar 4.11 Perkiraan pe masangan kamera dibalik mirror tengah

b. Pengujian Nilai Kalibrasi Tujuannya adalah untuk mendapatkan nilai terbaik untuk pendeteksian. Nilai yang terbaik antara sedikit error, dan tujuan pendeteksian yang didapatkan. Maka dibutuhkan nilai pengujian untuk kalibrasi untuk mendapatkan kriteria nilai sebagai berikut : 1. Menunjukkan nilai terdeteksi motor dan mobil pada jarak maksimum. 2. Mendapatkan nilai margin vertikal dari area pendeteksian. 3. Mendapatkan nilai variasi thresholding dengan sudut maksimal jarak tertentu sebagai nilai acuan untuk posisi servo maksimum dan minimum.

c. Pengujian Hasil dan tingkat error di lapangan. Pengujian ini untuk dapat mengetahui tingkat keberhasilan algoritma dengan kondisi lingkungan yang berpengaruh. Diantaranya adalah tingkat noise cahaya lampu baik dari kendaraan bermotor maupun dari lampu jalan. Kemudian dari medan jalannya apakah kering maupun basah aspalnya. Faktor faktor ini yang akan memperngaruhi hasil pengujian pendeteksian cahaya. Oleh karena itu pengujian akan dilakukan pada contoh jalan-jalan, dengan klasifikasi berikut : 1. Jalan Negara saat hujan dan saat cerah. 2. Jalan Provinsi saat hujan dan saat cerah. 3. Jalan Kabupaten saat hujan dan saat cerah. 4. Jalan Desa saat hujan dan cerah.

BAB V IMPLEMENTASI PENELITIAN


5.1 Melakukan Inisialisasi Pada program ini ada beberapa inisialisasi yang harus dilakukan diantaranya inisialisasi capture video dan frame, serta deklarasi ukuran frame yang akan digunakan. 5.1.1 Inisialisasi capture dan frame

Fungsi Capture adalah fungsi pada OpenCV untuk memanggil file baik berupa file dan video. Deklarasi inisialisasi capture dan frame dituliskan pada Gambar 5.1 .
12 13
CvCapture* video_asli; CvCapture* video_cropped;

Gambar 5.1 Inisialisasi capture frame Pada program ini digunakan 2 sumber video yang nantinya akan digunakan sebagai ROI dan video asli, dari sumber video yang sama. Frame pada OpenCV digunakan sebagai basis pemrosesan video, dengan sistem frame sequential, dilakukan dengan memroses tiap bagian dari frame untuk diproses. Pada program ini, digunakan beberapa frame untuk mendukung pemrosesan dengan baik, yakni : a) Frame Gambar Asli, yakni frame yang menunjukkan video asli sebelum diproses. b) Frame ROI, yakni frame yang menunjukkan area yang akan diproses dengan OpenCV, frame ini adalah merupakan hasil cropping menggunakan OpenCV. c) Frame HSV Putih, yakni frame yang disiapkan untuk pemrosesan konversi warna dari RGB ke HSV untuk warna putih lampu depan mobil. d) Frame HSV Merah, yakni frame yang disiapkan untuk pemrosesan konveri warna dari RGB ke HSV untuk warna merah lampu belakang mobil. video, dengan

46

47

e) Frame Proses Putih, yakni Frame yang disiapkan untuk pendeteksian warna lampu depan dengan menggunakan metode Hough Circle berbasis G radasi Warna. f) Frame Proses Merah, yakni Frame yang disiapkan untuk pendeteksian warna lampu belakang mobil dengan menggunakn metode Hough Circle berbasis Gradasi Warna. Proses inisialisasi frame dituliskan dalam listing pada Gambar 5.2.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
// inisialisasi frame frame asli, ukuran, dan propertinya IplImage * gambar_asli=cvCreateImage(cvSize(640, 480), 8, 3); // kedalaman warna 8 bit // pointer 3 channel untuk struktur RGB

//inisialisasi frame Region of Interest IplImage* ROI=cvCreateImage(cvSize(540, 300), 8, 3); //inisialisasi frame untuk konversi ke HSV untuk proses lampu depan IplImage* HSV_putih=cvCreateImage(cvSize(540, 300), 8, 3); //inisialisasi frame untuk konversi ke HSV untuk proses lampu belakang IplImage* HSV_merah=cvCreateImage(cvSize(540, 300), 8, // 8-bit color depth 1);// pointer 1 channel untuk strukter HSV //inisialisasi frame untuk proses houch circle lampu depan IplImage* proses_putih = cvCreateImage(cvSize(540, 300), IPL_DEPTH_8U, // kedalaman warna 8 bit unsigned 1); //pointer 1 channel untuk strukter hsv //inisialisasi frame untuk proses houch circle lampu belakang IplImage* proses_merah=cvCreateImage(cvSize(540, 300), IPL_DEPTH_8U, 1);

Gambar 5.2. Inisialisasi capture frame

48

Pada penjelasan listing pada Gambar 5.2, ukuran frame dideklarasikan sesuai dengan sumber video, Yang menarik dari penjelasan syntaxt adalah untuk frame thresholding (hitam putih) menggunakan jenis pointer 1 Channel untuk pointer struktur frame thresholding, dan kedalaman warna 8 bit unsigned / tidak bertanda. Sedangkan RGB menggunakan jenis pointer 3 Channel untuk pointer struktur gambar berwarna dan kedalaman warna 8 bit. 5.1.2 Deklarasi( Inisialisasi) fungsi-fungsi Hough Circle

Sebelum dipanggil fungsi Hough Circle, maka terlebih dahulu perlu diinisialisasikan pointer-pointer berikut : a. Pointers untuk menyimpan storage sementara, hal ini disediakan dengan fungsi cvMemStorage yang menyediakan memory sementara. b. Pointers untuk menyimpan sequensial 3 elemen dari hough circle yakni titik tengah x, titik tengah y, dan rad ius circle. c. Ponters untuk mendeklarasikan tipe data dari sequensia l elemen . Deklarasi untuk memory dituliskan pada Gambar 5.3.
44 45 46 47 48 49 50 51 52 53 54
// CvHoughCIrcles membutuhkan memory untuk proses warna CvMemStorage* simpan_putih; //memory proses lampu depan CvMemStorage* simpan_merah;//memory proses lampu belakang //CVHoughCircles membutuhkan pointer circles, untuk deklarasi sebelum fungsi dieksekusi dengan fungsi cvGetSeqElem(p_seqCircles,1) //koordinat x centroid, y centroid, dan jari-jari lingkaran CvSeq* p_seqCirclesputih;//pointer deklarasi sebelum dieksekusi CvSeq* p_seqCirclesmerah; //pointer untuk deklarasi tipe data untuk data yang akan dikeluarkan oleh fungsi cvGetSeqElem(p_seqCircles,1) float* p_fltXYRadiusputih; // pointer untuk 3 elemen objek terdeteksi;[0] => x posisi titik tengah objek; [1] => y posisi titik tengah objek, [2] => radies dari tiap objek float* p_fltXYRadiusmerah;

55 56

Gambar 5.3 Deklarasi penyimpanan memory dan tipe data pointer Hough Circles.

49

Dari listing pada Gambar 5.3 sudah jelas bahwa segala 3 jenis pointers untuk penyimpanan element Hough Circles. Pointer pertama adalah fungsi

MemStorage diberi variabel simpan_putih untuk menyimpan elemen pendeteksian lampu depan kendaraan, dan variabel simpan_ merah untuk menyimpan elemen pendeteksain lampu belakang kendaraan. Penyimpanan perlu dilabelkan dengan variabel supaya dapat dipisahkan data deteksi merah, maka masuk ke variabel merah, begitu juga sebaliknya. Pointer kedua adalah fungsi Sequential dimana fungsi tersebut disediakan untuk menyimpan elemen deteksi yang akan muncul pada deteksi lampu depan kendaraan dan lampu belakang kendaraan. Pointer yang ketiga yakni dideklarasikan tipe data elemen pendeteksian dengan data tipe float (pecahan). Dengan demikian ketiga elemen hasil pendeteksian Hough Circle yakni titik x centroid (titik tengah lingkaran), titik y centroid dan rad ius lingkaran. 5.2 Region of Interest Region of Interest (ROI) adalah membatasi area pemrosesan video, sehingga terpusat pada suatu wilayah. Pada OpenCV, terdapat fungsi cvSetImageROI, dengan metode melakukan cropping . Karena otomatis cropping , maka untuk menunjukkan wilayah aslinya, maka dipanggil (dibuka) 2 video dengan sumber video yang sama, yang pertama dipotong wilayah ROI, dan yang satu diberi garis bantu untuk menunjukkan wilayah yang terpotong (ROI).

Gambar 5.4. Hasil Cropping ROI (kiri) dari Frame Asli (kanan). Gambar 5.4 menunjukkan ilustrasi ROI yang dilakukan, Isyarat lingkaran deteksi Hough Circle digambar di frame ROI, frame asli hanya digunakan untuk

50

menunjukkan area pemrosesan dan inisialisasi lampu jauh atau dekat. Listing untuk query frame dan cropping ROI ditunjukkan pada Gambar 5.5.
64 65 66 67 68 69 70 71 72 73 74 75
// capture setiap frame dari video_asli pada frame gambarasli gambar_asli = cvQueryFrame(video_asli); // capture setuap frame dari video_cropped pada frame ROI ROI = cvQueryFrame(video_cropped); // dilakukan cropping image dengan fungsi setImageROI cvSetImageROI(ROI,cvRect(100,60,540,300)); //digambar bentuk kotak sebagai virtualisasi area gambar yang dicropping cvRectangle(gambar_asli, cvPoint(100,60), // point kiri atas cvPoint(640, 360), // point kanan bawah cvScalar(0, 255, 0, 20), // warna hijau, 1, 8, 0); //tebal garis, tipe garis

Gambar. 5.5 Listing Query Frames dan Cropping ROI 5.3 Konve rsi ke HSV dan Identifikasi Warna dengan Skala Warna HSV Untuk dapat melakukan pendeteksian area berdasarkan warna, maka yang perlu dilakukan adalah a. Merubah warna dari RGB ke HSV, sebab menggunakan color gradient berbasis RGB sangat sulit dilakukan terlebih terhadap cahaya lampu. b. Mendeteksi area warna dengan mendefinisikan filter dengan skala warna minimal dan maksimal.

5.3.1

Metode pendeteksian warna dan jangkauan warna (colorspace)

Untuk mendefinisikan jangkauan warna (colorspace ) untuk masing- masing objek. Maka dilakukan pengambilan sampel sebanyak 20 buah untuk setiap sampel. Gambaran sampel dapat dilihat pada Gambar 5.6.

51

(a) Lampu depan kendaraan

(b) Lampu belakang kendaraan

Gambar 5.6 Contoh gambar(sampel) yang digunakan untuk me ncari skala nilai HSV lampu (a) lampu depan kendaraan, (b) lampu belakang kendaraan. Dari Gambar 5.6. didapatkan nilai warna dalam format HSV untuk tiap pixel dari titik pusat ke titik paling pinggir wilayah pendeteksian lampu, maka didapatkan data seperti pada lampiran Tabel L1.1.tentang kisaran nilai lampu belakang mobil dan motor, serta lampiran Tabel L1.2. tentang kisaran nilai lampu depan mobil dan motor. Maka pada Tabel 5.1, disajikan rangkuman jangkauan nilai warna HSV untuk lampu depan dan belakang mobil dan motor. Tabel 5.1 Kesimpulan jangkauan warna lampu depan dan lampu belakang pada format HSV
Kendaraan Mobil Motor Min Max Min Max Lampu rem h s v 170 121 32 239 240 240 172 50 30 239 240 240 lampu depan h s v 1 0 81 166 155 240 0 0 81 170 154 240

52

Tabel 5.2 Kesimpulan jangkauan warna lampu depan dan lampu belakang pada format HSV (OpenCV Format)
Kendaraan Mobil Motor Min Max Min Max Lampu rem h s v 120 129 34 180 255 255 121 53 32 180 255 240 lampu depan s v 1 0 86 125 165 255 0 0 86 128 164 255

Pada Tabel 5.1 Hasil analisis dengan software pengolah citra menghasilkan nilai minimal dan maksimal dari jangkauan warna lampu depan dan lampu belakang sudah jelas batasnya. Lampu depan berarti mempunyai cahaya putih dan lampu belakang berarti cahaya berwarna merah. Pada Tabel 5.1 dianalisis dengan menggunakan software yang menerapkan colorspace (jangkauan warna) pada HSV yakni, H(0-239),S(0-240),V(0-240). Sedangkan pada Tabel 5.2 dianalisis dengan software OpenCV digunakan colorspace dengan jangkauan yang berbeda yakni H(0-180),S(0-255),V(0-255). Maka pada Tabel 5.2. dimuat hasil konversi hasil kalibrasi kepada format colorspace OpenCV, karena sistem ini menggunakan OpenCV. Namun untuk lampu depan mobil skala warna diatas adalah untuk jenis lampu halogen saja (berwarna putih kekuningan). Sedangkan pada lampu depan mobil ada jenis lampu HID ( High Intensity Discharge Lamp), yang menghasilkan cahaya berwarna putih (kebiruan). Ilustrasi sistem ditunjukkan pada Gambar 5.7.

Gambar 5.7 Sampel gambar kendaraan dengan lampu HID

53

Tabel 5.3 Nilai lampu HID pada format HSV, (a) kisaran warna lampu HID mobil b) konversi dalam format OpenCV (a) Kisaran warna HID H Min Max 40 160 S 0 140 V 220 240 Min Max (b) Konversi format OpenCV H 30 121 S 0 105 V 220 240

Pada Gambar 5.7. didapatkan sampel gambar untuk pengukuran colorspace dari lampu HID . Hasil colorspace ditampilkan pada Tabel 5.3 (a) nilai pada saat diukur dengan software dengan nilai rentang HSV yang telah

dijelaskan.Kemudian Tabel 5.3 (b) hasil konversi ke format OpenCV. Pada Tabel 5.4. dapat disimpulkan bahwa jangkauan warna dalam nilai HSV antara lampu HID dan lampu Halogen adalah sama. Jangkauan lampu Halogen lebih lebar dari lampu HID, dengan demikian tidak perlu colorspace khusus untuk mengenali lampu depan HID.

5.3.2

Listing

OpenCV

untuk

mengenali

masing-masing

jangkauan

warna(colorspace). Pada sub bab 5.3.1. didapatkan hasil kalibrasi untuk mendapatkan masingmasing colorspace dari lampu depan kendaraan dan lampu belakang kendaraan. Maka pada sub bab 5.3.2. ini hasil colorspace diterjemahkan kepada instruksi program OpenCV. Instruksi tersebut ditampilkan pada Gambar 5.8.

54

81 82 83 84 85 86 87 88 89 90 91 92 93

// fungsi konversi RGB ke HSV cvCvtColor(ROI, HSV_putih , CV_BGR2HSV); //untuk lampu depan cvCvtColor(ROI, HSV_merah , CV_BGR2HSV); //untuk lampu belakang // fungsi filter skala warna lampu depan cvInRangeS(HSV_putih, cvScalar(0,0, 86), proses_putih); cvInRangeS(HSV_merah, cvScalar(120,53, 32), cvScalar(180,255,255), proses_merah); // frame masukan // nilai minimal //frame keluaran

cvScalar(128,165,255), // nilai maksimal // fungsi filter skala warna lampu belakang

Gambar 5.8 Listing konversi frame dari basis RGB ke HSV pada lampu depan dan belakang Pada listing Gambar 5.8. dapat dilihat proses untuk mengubah RGB ke HSV Format dengan sangat mudah menggunakan fungsi CV_BGR2HSV yang dipanggil. Cara membuat colorspace untuk tiap warna juga mudah karena tinggal menyebutkan masing- masing angka maksimum dan minimum pada format OpenCV. Sebagai penggambaran hasil konversi warna pada format HSV dapat dilihat pada Gambar 5.9, yang merupakan format warna 8 bit.

Gambar 5.9 Hasil RGB ke Grayscale untuk lampu depan

55

Pada Gambar 5.10 dapat dilihat hasil pembacaan objek untuk lampu depan dan belakang kendaraan dengan threshold frame 20, dan exposure 100%. Warna merah cerah dengan titik hijau adalah penanda untuk pendeteksian lampu depan kendaraan. Tampak hasil pendeteksian lampu depan kendaraan salah pada

pemantulan aspal. Sementara pendeteksian lampu belakang motor hanya kurang presisi saja, tidak banya error karena intensitasnya tidak sebanyak cahaya lampu depan mobil.

Gambar 5.10 Hasil pe mbacaan objek untuk lampu depan dan belakang kendaraan. 5.4 Fungsi smooth/blur. Fungsi Smooth atau blur digunakan untuk menghilangkan noise akibat konversi dari RGB ke HSV, dengan tujuan mengurangi error saat pendeteksian warna. Berikut adalah code untuk fungsi cvSmooth, termuat pada listing Gambar 5.11. Hasil dari proses smoothing dapat dilihat pada Gambar 5.12. Gambar 5.12 a) adalah hasil tanpa smooth , tampak ada garis yang hilang, Gambar 5.12 b) adalah hasil dengan smooth, tampak hasil low pass filter, warna putih threshold agak pudar, namun semuga garis tersambung, baik untuk deteksi kontur.

56

99 100 101 102 103 104 105 106 107 108 109
blurr

cvSmooth(proses_putih, proses_putih, CV_GAUSSIAN, 9,

// masukan frame // keluaran frame // menggunakan gaussian

// tinggi kernel

9); // lebar kernel cvSmooth(proses_merah, proses_merah, CV_GAUSSIAN, 9, 9);

Gambar 5.11 Listing proses smooth pada OpenCV

(a) Tanpa Smooth

(b) Dengan Smoothing

Gambar 5.12 Hasil frame a) citra tanpa Smoothing dan b) citra dengan Smoothing Fungsi ini adalah implementasi dari metode Gaussian Blur pada OpenCV, dengan memanggil fungsi CV_GAUSSIAN. Proses Gaussian Blur menggunakan proses konvolusi antara nilai pixels pada frame asli dengan nilai Gaussian pada frame kernel. Proses ini sudah dijelaskan pada sub bab 3.2.3. Singkatnya adalah proses konvolusi ini bekerja seperti lowpass filter. Semakin besar ukuran kernel, maka semakin mengkabur gambar yang dihasilkan. Pada

57

percobaan ini digunakan kernel ukuran 9x9. Pada lampiran L1, dilampirkan kalibrasi nilai kernel yang sesuai. 5.5 Fungsi Deteksi tepi dan Transformasi Hough Circle 5.5.1 Fungsi Sobel Pada sub bab 4.5.1 telah dijelaskan tentang rancangan pengolahan citra, termasuk didalamnya rancangan deteksi tepi secara spesifik. Fungsi Hough Circle pada OpenCV tidak secara spesifik menampilkan gambar tahap demi tahap., karena fungsi sobel dan fungsi canny sudah menjadi satu dengan fungsi Hough Circle Fungsi Sobel menghasilkan perbedaan gradasi dari nilai pixel bertetanggan. Dengan fungsi tersebut maka citra dengan gradient di pinggir adalah yang paling heterogen (paling besar gradasinya), yang di tengah cenderung homogen. Hasil Fungsi Sobel ditunjukkan pada Gambar 5.13. Perintah untuk membuat fungsi sobel ditunjukkan pada listing pada Gambar 5.14.

(a) Citra Asli (setelah Smoothing)

(b) Citra setelah Ope rasi Sobel

Gambar 5.13 Hasil Operasi Sobel (a) citra asli (b) hasil Operasi Sobel

58

// Sobel X Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );

99 100 101 102 103 104 105 106

convertScaleAbs( grad_x, abs_grad_x ); // Sobel Y Sobel( src_gray, grad_y, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT ); convertScaleAbs( grad_y, abs_grad_y ); // Total Gradien addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad );

Gambar 5.14 Listing Operasi Sobel 5.5.2 Fungsi Deteksi Canny dan Hough Circle Operasi deteksi Canny dilakukan setelah Operasi Sobel. Pada implementasi di OpenCV untuk Fungsi Hough Circle , Fungsi Canny dilakukan bersamaan dengan Fungsi Hough Circle. Ilustrasi hasil threshold Canny kemudian menghasilkan deteksi tepi, dan dilanjutkan dengna transformasi Hough Circleditunjukkan pada Gambar 5.15. Fungsi Canny pada Gambar 5.16 dilakukan dengan batas atas dan batas bawah threshold. Fungsi Canny sudah dijelaskan pada sub bab 3.2.5.

Gambar 5.15. Hasil (a) Edge Detection dilanjutkan dengan Transformasi Hough Circle

59

Fungsi Hough Circle sudah dijelaskan pada sub bab 3.2.6 tentang metode pendeteksian Hough Circle secara umum. Pada OpenCV fungsi ini sedikit berbeda karena hanya menggunakan grad asi warna sebagai ukurannya. Dengan demikian disesdiakan parameter-parameter tambahan seperti resolusi

pendeteksian, minimal jarak antar titik centroid, batas atas dan bawah threshold , serta parameter optional yakni maksimum dan minimum jari-jari, karena tidak berpengaruh terhadap jumlah lingkaran dan perubahan koordinat centroid. Listing untuk fungsi tersebut dituliskan pada Gambar 5.16
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
//melakukan pendeteksian hough circle pada frame proses putih p_seqCirclesputih = cvHoughCircles( proses_putih, //input frame simpan_putih, //memory untuk elements CV_HOUGH_GRADIENT,// algorithma berbasis gradien warna 1, 40, 40, 3, // resolusi gradient pixel ,>=1 // minimal jarak // Batas bawah canny threshold

255, // Batas atas canny threshold // min jari-jari lingkaran dalam pixel

15); // max jari-jari lngkarang dalam pixel p_seqCirclesmerah = cvHoughCircles( proses_merah, simpan_merah, CV_HOUGH_GRADIENT, 1, 40, 255, 10, 40,);

Gambar 5.16 Listing fungsi deteksi sequential pada frame proses merah dan proses putih

Pada Gambar 5.16, fungsi pendeteksian dinyatakan deklarasi parameter Hough Circle. Dalam parameter tersebut terlihat bahwa memory simpan_merah

60

atau simpan putih digunakan sebagai memori penyimpanan element pendeteksian Hough Circle. Algoritma yang digunakan adalah CV_HOUGH_GRADIENT, yakni deteksi Hough Circle, berbasis gradasi warna. Algoritma ini adalah satusatunya algoritma yang disediakan oleh OpenCV. Kemudian didefinisikan resolusi grad ient, sebagai parameter untuk tingkat akurasi pendeteksian warna berbasis gradient . Kemudian didefinisikan juga jarak antara titik tengah lingkaran dengan titik tengah lingkaran yang lain sebagai aturan jarak antar objek lingkaran terdeteksi yang diperbolehkan. Setelah itu didefinisikan nilai ambang atas threshold dan ambang bawah threshold , dengan metode Canny Threshold. Canny Threshold adalah metode untuk menentukan batas minimal dan maksimal suatu thresholding pada gambar. Kemudian

didefinisikan ukuran rad ius minimal dan maksimal dalam pendeteksian lingkaran. Radius minimal dan maksimal pada lingkaran digunakan hanya sebagai opsi saja, karena tidak berpengaruh pada banyaknya objek terdeteksi. Penjelasan ini, dilanjutkan pada sub bab 6.3. Fungsi berikutnya adalah mendapat titik centroid dan jari- jari lingkaran pada listing Gambar 5.17.
133
for(i=0; i < p_seqCirclesputih->total; i++) { // dilakukan iterasi untuk mendeteksi lingkaran pada cahaya putih p_fltXYRadiusputih = (float*)cvGetSeqElem (p_seqCircles, i); // mendapatkan parameter dari hough circle, kemudian memasukkan nilainya kedalam tipe data float if (p_fltXYRadiusputih [1]>169) //batas deteksi y { printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYRadiusputih[0], p_fltXYRadiusputih[1], // posisi x centroid // posisi y centroid

134 135 136 137 138 139 140

p_fltXYRadiusputih [2]); }// radius centroid

Gambar 5.17 Ite rasi fungsi Sequential putih untuk mendapat titik centroid, dan menetapkan batas vertikal pendeteksian Pada Gambar 5.14 dijelaskan listing fungsi mendapatkan centroid dengan menggunakan interasi (kolong for), dalam fungsi ini dibicarakan sebagai cvGetSeqElem, untuk mendapatkan 3 parameter Hough Circles, yakni titik pusat

61

centroid (x,y), dan jari-jari lingkaran.Setelah mendapat 3 parameter tersebut, dapat dibatasi pendeteksian dengan menggunakan margin. Contoh pada Gambar 5.16 digunakan margin vertikal lebih rendah dari 169.(Parameter vertikal dihitung dari atas ke bawah, jika total tinggi frame 300 pixels, maka dikurang 169 menjadi 131). Jadi yang dimaksud pada listing ini adalah jika dihitung dari bawah, centroid vertikal dari lingkaran tidak lebih dari koordinat tersebut. Pada listing Gambar 5.18 adalah fungsi untuk menandai lingkaran pendeteksian dengan menggunakan warna.
//garis bantu untuk menunjukkan tinggi vertikal centroid obje cvLine(ROI, //input frame cvPoint(x,400), //titik awal cvPoint(p_fltXYRadiusputih[0], p_fltXYRadiusputih [1]), //titik akhir cvScalar(0, 255, 0, 20), 1, 8, 0); //ketebalan dan tipe garis cvCircle(ROI, // gambar di frame ROI cvPoint(cvRound(p_fltXYRadiusputih[0]), cvRound(p_fltXYRadiusputih[1])), //tengah centroid 3, // 3 pixel jari lingkarn // warna hijau //ketebalan 3 pixel CV_RGB(0,100,0), CV_FILLED);

154 155 156 157 158 159 160 161 162 163 164 165 166 167 168

cvCircle(ROI,

// gambar pada frame ROI

cvPoint(cvRound(p_fltXYRadiusputih[0]), cvRound(p_fltXYRadiusputih[1])), cvRound(p_fltXYRadiusputih [2]), CV_RGB(100,0,0), } // end for //lingkaran merah 3);// ketebalan 3 pixel pusat lingkaran

Gambar 5.18 Fungsi drawing pada OpenCV untuk menandakan dae rah yang ditandai sebagai area terdeteksi Fungsi Drawing pada Gambar 5.18 ada 3, yakni membuat garis sebagai penunjuk tinggi vertikal centroid, kemudian membuat titik pada centroid,

kemudian menggambar tepi lingkaran pada area terdeteksi. Hasil fungsi pendeteksian, koordinat centroid dan rad ius, kemudian digambarkan ke frame

62

dengan fungsi drawing dapat dilihat pada Gambar 5.19. Terlihat bahwa pembatasan area pendeteksian dengan sumbu vertikal tidak merubah pada area pendeteksian ROI ( Region of Interest ). Perlu diingat bahwa ROI yang didapat pada listing Gambar.5.19. bukan didapat dengan menggunakan fungsi cvSetImageROI dengan memotong gambar, namun dengan membatasi area pendeteksian sumbu vertikal centroid.

(a) Frame sebelum dibatasi

(b) Frame setelah dibatasi

Gambar 5.19 Hasil pe mrosesan citra (a) frame sebelum dibatasi, (b) frame sesudah dibatasi (ROI Maka digunakan fungsi setImageROI pada OpenCV yang menggunakan sistem cropping frames. Hasilnya didapatkan pembatasan wilayah pendeteksian dan hasil performa yang jauh lebih baik. Dibatasi ROI dengan wilayah mulai dari titik (100,60) sampai dengan titik (640,360). Hasil pembatasan ROI itu terlihat pada Gambar 5.17.

63

Gambar 5.20 Pembatasan wilayah ROI Pada Gambar 5.20 dapat dilihat bahwa dengan titik ROI yang disebutkan mampu untuk memfokuskan pendeteksian sekaligus untuk mengurangi error yang terjadi. Memfokuskan pendeteksian karena wilayah ROI kiri yang tidak penting dipotong. Mengurangi error karena pada wilaayah koordinat vertikal bawah banyak sekali terjadi error dan wilayah tersebut juga merupakan lintasan objek mobil atau motor. Contoh pada gambar tersebut terlihat bahwa ada pantulan cahaya yang memantul di kap mobil, maka disimpulkan lebih baik di potong sesuai ROI , baru kemudian di kalibrasi. Pada Gambar 5.20, dapat disimpulkan bahwa pembatasan wilayah ROI tidak mengurangi akurasi, namun justru meningkatkan akurasi karena mengurangi error . 5.6 Pembatasan Wilayah ROI Pada Gambar 5.21 ditunjukkan pengujian pada objek cahaya lampu jauh mobil dari jarak 90 meter. Dari pendeteksian tersebut didapatkan titik koordinat objek (267,125). Hal yang ingin disampaikan, yakni pembatasan wilayah ROI kanan dan ROI kiri untuk mensimulasikan kendali lampu mobil secara indepentdent .

64

Gambar 5.21 Deteksi mobil dari jarak 80 meter

Gambar 5.21 ditunjukkan pengujian pada objek cahaya lampu jauh mobil dari jarak 90 meter. Dari pendeteksian tersebut didapatkan titik koordinat objek (267,125). Hal yang ingin disampaikan, yakni pembatasan wilayah ROI kanan dan ROI kiri untuk mensimulasikan kendali lampu mobil secara indepentdent . Karena tidak ada penelitian khusus tentang perbedaan wilayah cahaya lampu kanan dan lampu kiri, maka menggunakan pendekatan pada Gambar 5.21 dibagi ROI kanan adalah (0-250) pixels dan ROI kiri (0-290 pixels) pada bidang horizontal dari Frame ROI. 5.7 Cropping ROI Frame dan Duplikasi Pada algoritma sebelumnya hanya dijelaskan tentang bagaimana melakukan deteksi objek dengan menggunakan metode Hough Circles. Pada sebelumnya telah dijelaskan tentang pembatasan wilayah pendeteksian dengan titik tengah koordinat vertikal area pendeteksian. ROI memang dapat digunakan dengan menggunakan cara sederhana seperti yang ditunjukkan pada sub bab 5.6. Namun cara tersebut kurang efektif karena hal- hal berikut . a. Dengan menggunakan fungsi SetImageROI dapat dilakukan cropping frame, sehingga ukuran frame menjadi kecil dan ringan. b. Ukuran kecil dan ringan ini sangat penting karena pada penelitian ini digunakan 19 frame (5 frame deteksi lampu depan kanan, 5 frame deteksi lampu depan kiri, 3 frame deteksi lampu belakang kanan, 3 frame deteksi lampu belakang kiri, dan main frame yang utuh, serta frame kanan dan frame kiri).

65

Skema implementasi ROI dan duplikasi frame ditunjukkan pada Gambar 5.22.
640

220

480

ROI Kiri 250x140 Duplikasi tres20kiri,tres30kiri,tres40kiri,tres50kiri; tres_hati_hati_kiri, tres_rem_kiri

ROI Kanan 290x140 Duplikasi tres20kanan,tres30kanan,tres40kanan,tres50k anan; tres_hati_hati_kanan, tres_rem_kanan

100

Gambar 5.22 Konsep implementasi ROI pada main frame

Wilayah ROI Kanan dan ROI kiri kemudian dikonversikan ke HSV Merah dan HSV Putih, lalu diduplikasikan ke masing- masing frame threshold yang telah ditentukan.

5.8 Cuplikan Listing Cropping Frame dan Duplikasi ROI Pada sub bab 5.7. telah dibahas tentang konsep cropping frame dan duplikasi frame. Maka pada Gambar 5.20 dipaparkan listing cropping dan duplikasi frames hati_hati. Input frame adalah dari frame video_rem kepada frame

ROI_rem_kanan. Kemudian dilakukan proses cropping seperti yang dijelaskan pada listing. Kemudian masuk ke fungsi color space untuk mendeteksi warna lampu merah. Outputnya adalah frame hati_hati_kanan. Maka frame

hati_hati_kanan inilah yang dapat dijadikan basis duplikasi frame rem_kanan, dan frame depan_kanan. Setelah itu baru ketiganya masuk di fungsi pendeteksian Hough Circles, masing- masing. Listing untuk proses cropping dan duplikasi frame hati- hati kanan dituliskan pada Gambar 5.23.

66

265 266 286 287 288 289 296 298

ROI_rem_kanan=cvQueryFrame(video_rem); cvSetImageROI(ROI_rem_kanan,cvRect(0,220,540,140)); cvInRangeS(HSV_merah_kanan, //input frame cvScalar(120,50, 30), // min dan equal nilai filter untuk hsv lampu belakang cvScalar(180,255,255), // max nilai filter untuk hsv lampu belakang hati_hati_kanan); //output frame depan_kanan=cvCloneImage(hati_hati_kanan); //cloning frame rem_kanan=cvCloneImage(hati_hati_kanan); //cloning frame

Gambar 5.23 Listing cropping dan duplikasi frame hati_hati_kanan

5.9 Garis Bantu batas ROI, dan Pe rkiraan Jarak Dari Titik Nol Pada Gambar 5.24 telah ditambahkan garis-garis sebagai pengenal masingmasing wilayah jarak. Berikut adalah keterangannya. a. Garis 0 adalah garis bantu untuk wilayah toleransi 10 pixel diatas jarak 90 m dari pendeteksian. b. Garis 1 adalah batas wilayah pendeteksian 90 meter dari titik pendeteksian c. Garis 2 adalah batas wilayah pendeteksian jarak antara 30,40,50 meter dari titik pendeteksian d. Garis 3 adalah batas wilayah pendeteksian 10,20 meter dari titik pendeteksian.

67

Gambar 5.24 Hasil cloning frame kanan dan frame kiri, untuk keperluan pembatasan ROI dan multi thresholding frame

Dasar penjelasan titik-titik diatas adalah dari hasil kalibrasi dengan menganggap sumbu vertikal dihitung dari bawah pada frame ROI kanan atau ROI kiri. Pada lampiran Tabel L6.7 dimana titik vertikal tertinggi adalah lampu depan motor pada jarak 90 yakni 129 pixels, dibulatkan menjadi 130 pixels. Dengan demikian garis 0 adalah toleransi 10 pixel adalah koordinat 140 pixels. garis 1 adalah 130 pixels, dan garis 2 yang dimaksudkan adalah koordinat vertikal 120 pixels. Pada data kalibrasi di Lampiran 6, didapatkan bahwa tinggi lampu depan, belakang, pada motor dan mobil berbeda-beda, sehingga pada koordinat 120 pixels estimasi jarak adalah 30, 40, 50 meter. Pada Lampiran 6 didapatkan data bahwa titik 10 meter pada lampu depan mobil, lampu belakang, serta la mpu belakang mobil mempunyai tinggi vertikal 100 pixels. Namun pada lampu depan kendaraan bermotor tinggi vertikal adalah 109 pixels, dibulatkan menjadi 110 pixels. Maka pada garis 3 adalah perkiraan jarak 10 dan 20 meter dari titik nol. Dengan memberikan batas-batas ROI, diharapkan dapat memperjelas tentang penjelasan tentang pendeteksian objek, beserta perkiraan jarak berdasarkan tinggi koordinat vertikal.

68

5.10 Multilevel Thresholding dan Deteksi Sekuensial Pada penelitian ini peneliti diminta untuk dapat membuat penelitian yang dapat mendeteksi intensitas cahaya mobil dan motor baik lampu depan maupun lampu belakang. Pada sistem Adaptive High Lamp biasanya hanya mendeteksi cahaya lampu mobil, namun kurang cocok untuk motor karena intensitas cahaya motor lebih redup dari mobil. Karena keadaan jalan di Indonesia berbeda dengan di luar negeri, dimana motor dan mobil tidak dipisah, bahkan sepeda motor sering lebih banyak. Maka sistem baru harus dapat mendeteksi sepeda motor, dengan baik. Maka dari itu tingkat thresholding dari kendaraan bermotor lebih rendah dari mobil, maka pasti dengan tingkat cahaya mobil yang lebih tinggi maka didapatkan besarnya error yang tinggi pada pendeteksian mobil. Maka dengan pendekatan hasil kalibrasi sesuai dengan lampiran L3 dan L4 , maka diputuskan untuk membuat 5 level thresholding lampu depan dan 3 level thresholding lampu belakang. Konsep multi thresholding dipaparkan pada Gambar 5.25. Pada ROI Kanan, tingkat threshold frame paling tinggi adalah 40, sehingga posisi servo di kanan adalah posisi 4. Sedangkan pada ROI Kiri, tingkat threshold frame paling tinggi adalah 20, sehingga posisi servo di kiri adalah posisi 2.

Gambar 5.25 Hasil deteksi berbagai tingkat thresholding frame , ditunjukkan oleh warna

69

Berikut adalah data yang didapatkan, mengacu pada hasil kalibrasi data pada Lampiran 5. Pada Lampiran 5 divariasikan minimal thresholding. Kode Warna yang digunakan untuk membedakan tingkat thresholding frames pada lampu depan kendaraan dipaparkan pada Tabel 5.4. Tabel 5.4 Warna dan tingkat thresholding frame deteksi lampu depan Tingkat Threshold Putih 10-19 Threshold Putih 20-29 Threshold Putih 30-39 Warna Lingkaran Merah dengan titik tengah hijau Lingkaran Merah dengan titik tengah merah Lingkaran Orange dengan titik tengah orange Lingkaran Kuning dan titik tengah kuning Lingkaran Hijau dan titik tengah hijau

Threshold Putih 40-49 Threshold Putih >50

Kemudian berikut adalah data yang didapatkan mengacu pada hasil kalibrasi data Kode Warna yang digunakan untuk level threshold frame lampu belakang , diuraikan pada Tabel 5.5.

Tabel 5.5 Warna dan tingkat thresholding frame deteksi lampu belakang Warna Lingkaran Biru Muda dengan titik tengah Biru Muda Lingkaran Putih dengan titik tengah putih Lingkaran Ungu dengan titik tengah Ungu Jangkauan Threshold Threshold Merah10-19

Threshold Merah 20-29 Threshold Merah >30

70

5.11

Pemodelan Aktuator

5.11.1 Model protipe sistem Untuk mempermudah presentasi, dibuat puwarupa alat dengan sistem kerja menyerupai sistem sesungguhnya. Dengan demikian maka perintah-perintah dalam bentuk teks yang ada pada software OpenCV dapat dimodelkan dengan hardware.

Gambar 5.26 Hasil deteksi berbagai tingkat thresholding frame , ditunjukkan oleh warna Pada Gambar 5.26 dapat dilihat purwarupa pemodelan sistem ini. Lampu biru sebagai isyarat lampu jauh, sementara lampu hijau sebagai isyarat lampu dekat. Untuk tingkat intensitas cahaya (Dinamic Forward Lighting) yang akan

dikeluarkan diisyaratkan dengan posisi servo. Posisi ini akan berubah-ubah menyesuaikan dengan jeda PWM. Keterangan dapat dilihat pada Tabel 5.6. Tabel 5.6 Detail isyarat pe modelan sistem Isyarat Lampu Jauh Isyarat Lampu Dekat Posisi Servo 1 Posisi Servo 2 Posisi Servo 3 Posisi Servo 4 Posisi Servo 5 LED Biru LED Hijau PWM 1350 (paling menengadah) PWM 1200 PWM 1050 PWM 900 PWM 750

71

5.11.2 Setup Arduino Aktuator sebagai simulator pada penelitian ini menggunakan Arduino. Pada penggalan program arduino, setup digunakan untuk inisialisasi dan langkah awal karena program ini hanya akan dieksekusi sekali pada saat awal eksekusi sebelum masuk ke loop. Instruksi pada Gambar 5.27 adalah inisialisasi servo, buzzer, dan posisi servo awal, dan fungsi untuk membuka port serial pada Linux Ubuntu, yakni pada port /dev/ttyACM0.
17 18 19 20 21 22 25 26 30 31 32 33
void setup() { pinMode(servo_kanan, OUTPUT); pinMode(servo_kiri, OUTPUT); pinMode(buzzer, OUTPUT); pulseWidth_kiri = 750; pulseWidth_kanan = 750; pinMode(lampu_kanan, OUTPUT); pinMode(lampu_kiri, OUTPUT); Serial.begin(9600); Serial.println(" Serial.println();} Intellegent Light System"); Serial.println("Bismillah"); // aktifkan output

Gambar 5.27 Listing inisialisasi serial dan port pada Arduino

5.11.3 Pembacaan perintah serial Perintah pembacaan serial sebagai perintah dari komputer ke Arduino melalui port serial. Pada sisi OpenCV (Komputer), akan mengirimkan 4 buah karakter ASCII secara bersamaan, maka perintah while(Serial.available()>3), supaya mengesekusi 4 karakter sekaligus. Perintah ini dituliskan pada Gambar 5.28.

72

36 37 38 39 40 41 42 43 44 45 46 49 50 51 52 53 55 56 57 58 59 61 62 63 64

void loop() { // tunggu serial input if (Serial.available() > 3) { // baca bit yang masuk: delay(10); while(Serial.available()>3){ input[0] = Serial.read(); input[1] = Serial.read(); input[2] = Serial.read(); input[3] = Serial.read(); } //input berupa ascii if (input[0] == 48) { pulseWidth_kanan = 750; delay (300); }//ascii bilangan 0 if (input[0] == 49) { pulseWidth_kanan = 900; delay (200);} //ascii bilangan 1 if (input[0] == 50) { pulseWidth_kanan = 1050; delay (100);} //ascii bilangan 2 if (input[0] == 51) { pulseWidth_kanan = 1200;delay (100); } //ascii bilangan 3 if (input[0] == 52) { pulseWidth_kanan = 1350;delay (100); } //ascii bilangan 4 if (input[1] == 53) { pulseWidth_kiri = 750;delay(300);} //ascii bilangan 5 if (input[1] == 54) { pulseWidth_kiri = 900; delay(200);} //ascii bilangan 6 if (input[1] == 55) { pulseWidth_kiri = 1050; delay (100);} //ascii bilangan 7 if (input[1] == 56) { pulseWidth_kiri = 1200; delay (100);} //ascii bilangan 8 if (input[1] == 57) { pulseWidth_kiri = 1350; delay (100);} //ascii bilangan 9 if (input[2] == 65) { digitalWrite(lampu_kiri, HIGH); delay(50) ;} //ascii karakter A if (input[2] == 66) { digitalWrite(lampu_kiri, LOW); delay(120) ;} //ascii karakter B if (input[3] == 67) { digitalWrite(lampu_kanan, HIGH); delay (50);} //ascii karakter C if (input[3] == 68) { digitalWrite(lampu_kanan, LOW);delay (120); } //ascii karakter D

Gambar 5.28 Listing program parsing serial Arduino Pada fungsi pembacaan karakter ASCII pada Gambar 5.25 adalah karakter yang dikirimkan dari OpenCV. Karakter pertama yakni input[0] adalah bilangan antara 0-4, pada ASCII dinyatakan dengan 48-52, untuk mengatur posisi servo kanan. Karakter kedua yakni input[1] adalah bilangan antara 5-9, dinyatakan dengan ASCII 53-57 untuk mengatut posisi servo kiri. Karakter ketiga yakni

73

input[2] adalah karakter A (ASCII 65) untuk set lampu jauh disisi kiri, dan karakter B (ASCII 66) untuk set lampu dekat disisi kiri. Sedangkan Karakter ketiga yakni input[3] adalah karakter C (ASCII 67) untuk set lampu jauh di sisi kanan, dan karakter D (ASCII 68) untuk set lampu dekat di sisi kanan.

5.11.4 Pewaktuan servo Pewaktuan servo pada listing Gambar 5.29, dilakukan dengan menggunakan bantuan fungsi milis() (milisecond) yang merupakan bawaan dari arduino, untuk kemudian menyesuaikan pulsa PWM yang diset. Refresh time pada program ini diset 20 ms, artinya jeda antar pulsa adalah 20 Sehingga tiap 20 ms servo akan merefresh dengan pulsewidth yang baru.. Listing program dapat dilihat pada Gambar 5.29. Pada pewaktuan delay servo untuk pulsewidth pada servo sekitar 1ms-2ms, pada servo yang digunakan. Maka untuk menentukan posisi ditentukan berdasarkan besar pulse width antara 750- 1350. Perintah ini dituliskan di listing pada Gambar 5.29.
79 80 81 82 84 85 86 87 88
if (millis() - lastPulse >= refreshTime) { digitalWrite(servo_kanan, HIGH); digitalWrite(servo_kanan, LOW); digitalWrite(servo_kiri, HIGH); digitalWrite(servo_kiri, LOW); lastPulse = millis(); terakhir } delayMicroseconds(pulseWidth_kiri); // start pulsa // delay pulsa // stop pulsa // start pulsa // delay pulsa delayMicroseconds(pulseWidth_kanan);

// simpan pulsa

Gambar 5.29 Listing pewaktuan servo pada Arduino .

BAB VI PENGUJIAN DAN PEMBAHASAN


6.1 Kalibrasi Pengujian Kalibrasi ini adalah untuk mencari nilai referensi dan nilai error minimum untuk dapat melakukan pendeteksian objek. Ilustrasi skema kalibrasi ditunjukkan pada Gambar 6.1.
Titik 90 m dari titik nol (start mobil/motor)

3m 10 m

90 m

Kamera

titik nol

Gambar 6.1 Skema kalibrasi pendeteksian, di Lapangan SMA N 2, Donoharjo, Ngaglik, Sleman Pada Gambar 6.1 diterangkan kalibrasi pada penelitian ini dilakukan dengan menggunakan Lapangan SMA N 2 Ngaglik. Untuk dapat mengkalibrasikan parameter-parameter pada metode Hough Circle, dengan cara mengambil sampel lampu depan dan lampu belakang motor dan mobil yang telah ditentukan sebagai model kalibrator. Setting yang dibuat pada Gambar 6.1 dibuat mirip dengan lebar Jalan Palagan (jalan provinsi), dengan asumsi lebar jalan 6 meter. Letak pengamat adalah pada titik Kamera, sedangkan start mobil dan motor adalah dari titik 90 meter.

74

75

6.1.1 Pengaturan nilai window dari filter smooth OpenCV Pada sub bab ini diterangkan tentang variasi ukuran kernel pada filter smooth. Penelitian ini dilakukan untuk mengetahui apakah mempengaruhi sensitivitas pendeteksian objek. Ilustrasi hasil pendeteksian ditampilkan pada Gambar 6.2.

(a). Bagian kiri adalah hasil smooth window 9x9, hasilnya error masih banyak pada pantulan cahaya rumput

(b). Bagian kanan adalah hasil smooth window 15x15, hasilnya error pada pantulan rumput berkurang, namun menjadi tidak peka mendeteksi motor.

Gambar 6.2 Hasil filter image, dengan smooth, pada ukuran kernel (a) 9x9 dan (b) 15x15 Filter gaussian blurr(smooth) adalah fungsi konvolusi yang sudah dijelaskan di teori. Karena setiap ukuran window menghasilkan nilai Gaus yang berbeda pada window kernel untuk fungsi konvolusi. Maka dicari nilai window smooth untuk mengurangi noise, namun tidak mengurangi sensitivitas dalam mendeteksi

76

motor. Hasil Kalibrasi tabel dapat dilihat pada lampiran L2. Ilustrasi dapat dilihat di Gambar 6.2. Pada bagian (a) digunakan window ukuran 9x9, dimana hasilnya masih terdapat 4 error pada pantulan rumput, namun berhasil untuk mendeteksi motor pada jarak 10 meter. Pada ukuran window 15x15 dapat mereduksi kesalahan hingga turun separohnya menjadi 2 error , namun tidak mampu mendeteksi kendaraan motor pada jarak 10 meter.

6.1.2 Metode pendeteksian pola warna di OpenCV dengan menggunakan Hough Circle Ada beberapa hal yang perlu diperhatikan dari pendeteksian pola warna dengan menggunakan metode Hough Circle pada OpenCV. Pada OpenCV moetodenya sedikit berbeda karena hanya menggunakan sistem g radasi warna untuk pendeteksian pola. Kemudian ada beberapa parameter yang disediakan OpenCV untuk membatasi pendeteksian, sebagai berikut : a. Ukuran kepresisian resolusi image pada deteksi pola warna. Ukuran ini harus lebih besar atau sama dengan 1. Pada penelitian ini digunakan nilai 2 pixel untuk ukuran kepresisian image. b. Jarak antara titik tengah lingkaran dengan titik tengah lingkaran yang lain. Hal ini sangat berpengaruh terhadap deteksi dan error, maka pada penelitian ini divariasikan nilainya pada 30, 40, 50, 60, 70 pixel. c. Kisaran nilai Canny Threshold yang digunakan. Canny Threshold adalah ukuran kisaran nilai threshold Pada nilai maximum threshold yang digunakan untuk pendeteksian objek. didefinisikan 255 , untuk nilai minimmum

threshold akan dicari yang terbaik antara 10,20,30,40,50. d. Kisaran nilai Minummum dan maximum radius, yakni membatasi ukuran minimal dan maksimal lingkaran. Parameter ini optional, karena sebenarnya setting untuk parameter ini tidak akan membatasi pendeteksian dan mengurangi error sebenarnya. Karena pada Color Range yang dideklarasikan cukup lebar, sehingga kalau diset nilai minimumnya kecil, maka OpenCV

77

akan mencari grad ient warna terkuat, kalau diset nilai minimmumnya besar maka ia akan mencari gradasi diatasnya. Maka tidak akan mengurangi error. Dengan demikian didefinisikan untuk nilai minimmum radius sebesar 3 pixel, dan maximmum radius sebesar 40.

Kisaran nilai exposure Exposure digunakan untuk membatasi cahaya yang terserap oleh lensa video camera, (mengatur diafragma). Berbeda dengan canny threshold yang membatasi nilai threshold dengan variasi pada software, pada exposure setting adalah pada camera sehingga diharuskan mengambil gambar sebanyak nilai variasi exposure tersebut. Digunakan variasi antara exposure dan canny threshold dengan tujuan mengurangi error dan menambah akurasi dari hasil pendeteksian. Pada penelitian ini divariasikan nilai exposure pada 100%; 87,5%; 75%; 62,5%; 50%.

Variasi parameter kalibrasi Pendeteksian dengan sistem Hough Circles dipengaruhi oleh beberapa parameter. Telah disebutkan sebelumnya bahwa variabel- variabel yang

berpengaruh pada pendeteksian Hough Circles di OpenCV. Maka divariasikan pengujian kalibrasi dengan variasi parameter sebagai berikut : a. Jarak antar titik tengah centroid lingkaran b. Variasi exposure untuk menentukan 3 exposure terbaik c. Variasi 3 exposure terbaik dan variasi minimal threshold untuk membentuk hubungan linier antara minimal threshold dengan jarak objek terdeteksi. d. Exposure terbaik dan variasi threshold titik centroid. e. Memadukan semua parameter yang ada pada pemrosesan video (akurasi algoritma) untuk mendapat koordinat vertikal

78

6.1.3 Penjelasan hasil kalibrasi pendeteksian pola warna di OpenCV dengan menggunakan Hough Circle. Jarak antar titik tengah pendeteksian Jarak antar titik tengah ini berpengaruh kepada banyaknya lingkaran yang akan terdeteksi pada suatu grad ient warna yang sesuai. Karena jari-jari maksimal dan minimal tidak berpengaruh kepada banyaknya lingkaran (noise). Pada lampiran L3 divariasikan jarak antar titik tengah lingkaran antara 30,40,50,60,70. Hasil yang diinginkan untuk pendeteksian ini adalah nilai terbaik antara tingkat akurasi koordinat (tidak null) dan tingkat error yang rendah. Null pada hasil pendeteksian pada data kalibrasi adalah hasil pendeteksian yang tidak akurat pada area grad asi warna, maka dihitung sebagai error ditunjukkan pada Gambar 6.3. . Hasil deteksi

(a) Jarak antar pusat 50 pixels.

(b) Jarak antar pusat 10 pixels

Gambar 6.3 Hasil filter dengan minimal jarak pendeteksian antar titik pusat, (a) jarak 50 pixel (b) jarak 10 pixel Kesimpulan yang didapatkan pada lampiran L3, disimpulkan bahwa nilai jarak antar titik lingkaran yang baik adalah 50 pixels (ditujukkan pada Tabel L3.3) untuk lampu depan mobil, dan 40 pixels untuk lampu belakang mobil(ditunjukkan pada Tabel L3.8). Untuk motor tidak di modelkan karena hanya punya satu buah lampu depan dan belakang, sedangkan pada mobil adalah sepasang.

79

Variasi nilai exposure Nilai exposure ditentukan dengan membatasi intensitas cahaya yang dapat diterima oleh kamera. Dengan menggunakan exposure diharap dapat mengurangi error yang terbentuk daripada dengan thresholding biasa. Pada lampiran L4, divariasikan nilai Exposure antara

50%,62,5%,75%,87,5%,100% dengan nilai minimal thresholding 20. Pada lampiran L4 terdapat hasil pengujian lampu depan dan lampu belakang mobil dan motor, setting kamera kelima exposure tersebut .Ilustrasi pengujian dengan variasi nilai exposure ditunjukkan pada Gambar 6.4.

Gambar 6.4 Hasil pendeteksian dengan basis, (a) exposure 62,5% (b) exposure 87,5% Pada lampiran L4 didapatkan hasil pengujian pada berbagai nilai exposure. Pembahasan ringkas dalam pengujian adalah sebagai berikut : a. Kekurangan Exposure 100%(minimal threshold 20). Pada Exposure 100% pada pendeteksian lampu depan motor hasilnya cukup baik yakni deteksinya akurat dan tidak ada error , yang termuat pada Tabel L4.6. Pada pendeteksian lampu belakang motor dalam kondisi normal (tidak rem) dapat mencapai 20 meter, dan saat rem mencapai 40 meter, ditunjukkan pada Tabel L4.16. Pada pendeteksian lampu belakang mobil pada jarak <-30 meter banyak terjadi error , termuat pada Tabel Lampiran.4.11.

80

b. Kekurangan Exposure 87,5% (minimal threshold 20) Pada Exposure 87,5% adalah nilai yang lebih rendah dari exposure 100%. Banyak parameter yang sama dengan pada pendeteksian dengan exposure 100%, dengan tingkat error yang sedikit berkurang. Pada pendeteksian lampu depan (Tabel L.4.7) dan lampu belakang (Tabel L4.17) hasil pengujiannya relatif sama dengan exposure 100%. Pada pengujian lampu depan mobil (Tabel L4.2) dan lampu belakang mobil (Tabel L4.12), nilai error nya berkurang dibandingkan dengan pendeteksian dengan exposure 100%, terutama pada lampu jauh dan saat rem. c. Kekurangan Exposure 62,5% dan 50%(minimal threshold 20) Pada kedua exposure ini diafragma kamera terlalu sempit sehingga cahaya yang diterima lensa terlalu sedikit, Hal ini berakibat pada tingkat pendeteksian yang sangat terbatas, terutama pada keadaan normal. Pada pendeteksian lampu depan mobil normal sampai 10 meter pada exposure 62,5% (Tabel L4.4) dan pada exposure 50% (Tabel L4.5). Pada pendeteksian lampu depan motor dalam keadaan normal tidak terdeteksi, baik pada exposure 62,5% (Tabel L4.9), pada exposure 50% (Tabel L4.10). Pada pendeteksian lampu belakang motor pada saat normal juga tidak terdeteksi, pada exposure 62,5% (Tabel L4.14) dan pada exposure 50% (Tabel L4.15 ). Pada pendeteksian lampu belakang mobil juga tidak terdeteksi apapun, pada exposure 62,5% (Tabel L4.14) dan exposure 50% (Tabel L4.15). d. Kekurangan Exposure 75% (minimal threshold 20) Pada Exposure 75% adalah nilai yang terbaik dibandingkan dengan nilai exposure yang lain. Pada pendeteksian lampu depan mobil pada Tabel Lampiran L4.3. sangat sedikit error yang terjadi dan pada lampu depan motor pada Tabel L4.3 reduksi jarak terdeteksi juga tidak terlalu banyak dibanding exposure 87,5% dan 100%. Pada Tabel L4.8 pada pendeteksian lampu belakang mobil juga didapatkan reduksi error yang signifikan daripada exposure diatasnya ,dan pada Tabel L4.18. reduksi jarak terdeteksi dari lampu belakang motor tidak berubah banyak.

81

Namun Kelemahan pada Exposure 75% ini terletak jika dibandingkan antara Tabel L4.3. tentang lampu depan mobil, dan Tabel L4.8 tentang lampu depan motor. Pada Tabel L4.3. pada koordinat vertikal centroid 120 didapatkan jarak titik nol dengan mobil adalah 40-50 meter, sementara pada Tabel L4.8 koordinat vertikal centroid 120 didapatkan jarak estimasi hanya 20 meter. Padahal tinggi lampu depan motor 110 cm dan lampu depan mobil 80 cm. Ini berarti selisih tingginya hanya 30 cm, namun perbedaannya pada liniearitas dengan jarak sangatlah berbeda. Maka dari itu dapat disimpulkan bahwa tidak dapat menggunakan tinggi vertikal sebagai satu-satunya parameter untuk estimasi jarak. . Variasi 3 Expos ure dan 5 Threshold Nilai Exposure 87,5%, 75%, 62,5% akan di variasikan dengan nilai minimal Threshold 10,20,30,40,50 (maksimal tetap 255). Tujuannya adalah untuk mencari hubungan linier antara jarak dengan besarnya level minimal threshold . Dari variasi tersebut diharapkan dapat mengurangi tingkat error yang terjadi pada tingkat threshold rendah. Dengan kata lain akan mengukur seberapa kuat

intensitas cahaya yang dihasilkan oleh lampu belakang dan lampu depan motor dan mobil. Namun tujuan utama dari variasi exposure dan threshold ini adalah untuk mencari korelasi antara besarnya threshold frame dengan jarak maksimal

terdeteksi pada setiap nilai threshold . Jika nilai ini hanya mampu diterapkan pada lampu depan mobil, maka untuk lampu depan motor dan lampu belakang mobil serta motor yang tingkat intensitas cahayanya rendah, dapat diberikan parameter dengan sumbu vertikal. a. Variasi pada lampu depan mobil Divariasikan 3 nilai exposure yakni 87,5%, 75%, dan 62,5% terhadap variasi kisaran nilai Threshold (10-255), (20-255), (30-255), (40-255), (50-255). Maka dari ketiga nilai exposure hanya nilai exposure 87,5% yang membentuk hubungan linier dengan perubahan jarak. Hubungan ini dapat dilihat pada Tabel L5.1, grafik dari hubungan linier tersebut disajikan pada Gambar 6.5.

82

Threshold frame (X) vs Maksimal jarak mobil terdeteksi (Y) meter


120 100 80 60 40
20 0

Normal(Lampu Pendek)
Dim (Lampu Jauh)

Threshold 10 Threshold 20 Threshold 30 Threshold 40 Threshold 50

Gambar 6.5 Grafik threshold frame (X) vs maksimal jarak mobil terdeteksi (Y) b. Variasi pada lampu depan motor Karena exposure terbaik untuk lampu depan mobil adalah exposure 87,5%. Maka exposure 87,5% yang digunakan sebagai exposure terbaik. Hasil korelasi antara besar threshold dengan jarak terdeteksi ditunjukkan pada Tabel L5.2

Namun hubungannya tidak selinier lampu depan mobil. Lampu depan motor pada kondisi normal hanya bertahan pada threshold 30, itupun pada jarak 10 meter. Grafik hubungan besar threshold pada Gambar 6.6. Thresholded frame (X) vs Maksimal jarak motor terdeteksi (Y)
80
60

dengan jarak maksimal terdeteksi disajikan

40
20

Normal(Lampu Pendek) Dim (Lampu Jauh)

0
Threshold 10 Threshold 20 Threshold 30 Threshold 40 Threshold 50

Gambar 6.6 Grafik Threshold frame (X) vs maksimal jarak motor terdeteksi (Y)

83

c. Variasi pada lampu belakang motor dan mobil Pada lampu belakang di variasikan thresholding (10-255),(15-255),(20255),(25-255),(30-255) dengan nilai exposure 87,5%. Didapatkan dari hasil pendeteksian bahwa lampu belakang motor (Tabel L5.3) baik normal ataupun rem hanya bertahan pada thresholding 10. Sementara lampu belakang mobil (Tabel L5.4) hanya bertahan pada thresholding 20. Ini berarti Lampu belakang

kendaraan dalam kondisi normal hanya bagus pada thresholding 10. Untuk tingkat thresholding diatasnya hanya pada keadaan mengerem.

Variasi minimum threshold dengan exposure 87,5% untuk mencari hubungan koordinat vertikal centroid dengan jarak kalibrasi Setelah disepakati menggunakan exposure 87,5%, berdasarkan analisa pada sub bab 6.5.3, maka pada sub bab 6.5.4. dicari nilai koordinat yang jelas baik bersumber dari lampu jauh maupun lampu dekat, atau keadaan lampu belakang normal atau saat mengerem. a. Lampu depan mobil Variasi threshold minimal untuk lampu depan mobil. Pada Lampiran.6, ada 5 variasi threshold yakni (1-255), (5-255), (10-255), (15-255), dan (20-255),.

Hasil dengan nilai error yang rendah untuk lampu depan mobil adalah pada Tabel L6.1. Pada Tabel L6.1. diterjemahkan dalam bentuk grafik pada Gambar 6.7.

84

Thresholded 20 frame (X) vs Maksimal jarak mobil terdeteksi (Y)


160 140 120 100 80 60 40 20 0
0 20 40 60

Normal(Lampu Pendek) Dim (Lampu Jauh)

80

100

Gambar 6.7 Grafik jarak mobil terkalibrasi (X) vs tinggi koordinat vertikal centroid pada minimum threshold 20 (jangkauan 20-255) Pada Tabel L6.1. terlihat bahwa nilai lampu depan mobil dengan nilai lampu dekat mulai jarak 50 meter keatas, banyak terjadi error. Bahkan nilai deteksi tidak akurat pada area lampu namun pada area diluarnya. Jadi sebenarnya masih terdeteksi, namun koordinat vertikal centroid nya tidak tepat sehingga tidak dapat mewakilkan estimasi jarak berdasarkan tinggi vertikal centroid. Sementara pada lampu jauh mobil, error lebih banyak namun cahaya memfokus sehingga ada pendeteksian yang akurat pada wilayah cahaya lampu, sehingga koordinat vertikal centroid nya dapat digunakan untuk estimasi jarak. b. Lampu depan motor Pada deteksi lampu depan motor lampiran L6.2 terlihat bahwa divariasikan minimal threshold 1,,5,10,15,20; dengan maksimal 255. Dari variasi tersebut didapatkan nilai koordinat vertikal centroid dari minimum threshold selain 20 untuk jarak 20 meter ke atas dalam kondisi normal tidak stabil(banyak error). Oleh karena itu digunakan minimal thresholding 20 dengaan mengacu pada lampu jauh motor saja. Hal ini dituliskan pada Tabel L6.6.. Data tersebut dibuat grafik pada Gambar 6.8.

85

Thresholded frame (X) vs Maksimal jarak motor terdeteksi (Y)


130
125

120
115 110 105

Normal(Lampu Pendek) Dim (Lampu Jauh)

20

40

60

80

100

Gambar 6.8 Grafik jarak mobil terkalibrasi (X) vs tinggi koordinat vertikal centroid pada minimum Threshold 20 (jangkauan 20-255) c. Lampu belakang mobil dan motor. Pada lampiran L6.3 disimpulkan nilai minimal threshold 10 adalah terbaik untuk mendapat nilai vertikal centroid pada lampu belakang mobil dengan nilai error yang rendah. Hal ini termuat pada Tabel L.6.13. Pada lampiran L6.4., pada pengujian lampu belakang motor, dapat disimpulkan bahwa pada tingkat minimal threshold 10 dan threshold 8. Pada kedua jangkauan threshold didapatkan hasil pendeteksian dengan sedikit error. Hal ini termuat pada Tabel L6.18.dam Tabel L6.19 Pada Tabel 6.18 dan Tabel 6.19 didapatkan nilai vertikal centroid yang akurat dengan nilai error yang tidak ada. Namun untuk menyamakan dengan tingkat minimal threshold dengan lampu belakang mobil, maka lebih dipilih

minimum threshold 10 dibanding minimmum threshold 8. Hubungan nilai vertikal centroid dan jarak kalibrasi disajikan dalam bentuk grafik pada Gambar 6.9. untuk lampu belakang mobil. Pada Lampu belakang motor disajikan pada Gambar 6.10

Pada Gambar 6.9 tentang grafik lampu belakang mobil vs threshold serta Gambar 6.10 tentang grafik lampu belakang motor vs threshold terlihat bahwa yang terlihat hanya warna merah (Grafik saat mengerem). Sebenarnya pada saat normal juga di plot, hanya saja pada deteksi lampu belakang baik motor maupun, nilai koordinat vertikal centroid pada saat rem ataupun normal adalah sama.

86

Untuk dapat melihat koordinat vertikal secara jelas dapat dilihat pada Tabel lampiran L6.18. (lampu belakang motor) dan Tabel lampiran L6.13 (lampu belakang mobil).

Thresholded frame (X) vs Maksimal jarak mobil terdeteksi (Y)


150 100 Normal(Lampu Pendek) 50 0 0 20 40 60 80 100 Dim (Lampu Jauh)

Gambar 6.9 Grafik Jarak mobil terkalibrasi (X) vs tinggi koordinat ve rtikal centroid pada minimum Threshold 10 (jangkauan 10-255)

Thresholded frame (X) vs Maksimal jarak motor terdeteksi (Y)


140 120 100 80 60 40 20 0 0 20 40 60 80

Normal(Lampu Pendek) Dim (Lampu Jauh)

100

Grafik 6.10 Grafik Jarak motor terkalibrasi (X) vs tinggi koordinat vertikal centroid pada minimum Threshold 10 (jangkauan 10-255) Akurasi deteksi (penggabungan semua parameter) a. Deteksi Lampu Depan motor Dari lampiran Tabel L6.7 didapatkan bahwa titik vertikal untuk koordinat lampu motor dan mobil pada 40 meter adalah 120 pixels. Maka ditambahkan intepretasi algoritma deteksi lampu depan bahwa level thresholding 20 dengan

87

koordinat lebih rendah dari 120 pixels maka dikelompokkan ke posisi servo 3 (lebih dekat dari 40 meter) Kemudian level thresholding 30 dengan koordinat lebih rendah dari 110 dikelompokkan ke posisi servo 4.. Thresholding 40 dengan koordinat lebih rendah dari 110, maka dikelompokkan ke posisi servo 4. Deteksi dengan prioritas tertinggi, artinya nilai thresholding tertinggi yang akan diacu. . Pada lampiran Tabel L7.1, diterangkan bahwa lampu motor terdeteksi pada jarak 30 meter dengan minimmum threshold 20. Karakter cahaya nya tidak

menentu karena sering terdeteksi dan sering menyebabkan aksi bisa lampu jauh dan lampu dekat. Hal ini karena fluktuaktifnya cahaya motor pada saat keadaan diam karena hanya mengandalkan tenaga dari dinamo. Pada deteksi lampu jauh cukup stabil pada minimmum threshold 10, namun pada jarak 20 sampai 50 terdeteksi fluktuaktif, karena memang pada posisi diam tenaga dari dinamo motor tidak stabil dan tidak maksimal. b. Koreksi Lampu Belakang Motor Dari lampiran L6.3 pada Tabel L6.13 didapatkan bahwa deteksi jarak 30 meter didapatkan nilai koordinat vertikal lebih rendah dari 120. Oleh karena itu dibatasi bahwa level thresholding 20 (hati- hati) dengan koordinat vertikal kurang dari 110 di intepretasikan sebagai rem, sama dengan level threshold merah 30 (rem). Pada lampiran Tabel L7.5. terlihat bahwa kendaraan deteksi kendaraan didepan (threshold 10) terdeteksi sampai dengan jarak 70 meter. Sementara nilai hati-hati terdeteksi sampai dengan jarak 30 meter, dan pada saat injak rem terdeteksi sebagai rem sampai pada jarak 30 meter, sementara terdeteksi sebagai hati-hati adalah antara 40 meter sampai 90 meter. Pada kaitannya dengan lampu depan diintepretasikan kondisi rem dengan koordinat antara 110-120 diintepretasi sebagai posisi servo 4, dan pada koordinat <110 diintepretasi sebagai pos isi servo 5. Hal ini merupakan fungsi untuk supaya lampu rem tidak terhalang oleh

terangnya lampu, seperti ditulis pada sub bab 4.5.2. tentang rancangan deteksi lampu belakang motor. c. Deteksi Lampu Depan mobil Pada lampiran L7.3, pada Tabel L7.5, didapatkan error pengujian sama seperti motor, tidak ada banyak hal yang berubah dibanding saat deteksi dengan

88

sampling gambar. Hanya saja yang perlu diperhatikan adalah pada saat mobil melakukan lampu jauh, maka sekaligus terdeteksi sebagai REM (Merah threshold 30). Itu terjadi karena exposure yang digunakan terlalu tinggi sehingga tidak bisa jelas membedakan warna merah. Perlu diperhatikan juga bahwa deteksi mulau dari titik 40 meter sampa titik 10 meter terjadi error, program hang(keluar dari eksekusi) Hal ini terjadi karena program tidak mampu menahan fluktuasi cahaya dari Lampu jauh ke lampu dekat. Maka dari itu performa video pada saat dicoba ke jalan harus dicoba apakah sampai selesai video atau putus di tengah jalan. d. Deteksi lampu belakang mobil Pada pengujian deteksi lampu belakang mobil, digunakan algoritma yang sama dengan deteksi lampu belakang motor. Pada lampiran L7.4, pada Tabel L7.4 didapatkan pengujian deteksi lampu belakang mobil juga tidak ada perubahan, karena dengan hasilnya adalah seperti yang diperkirakan dengan aturan seperti pada deteksi lampu belakang motor. Pada lampiran Tabel L7.6 didapatkan hasil pengujian lampu kendaraaan mobil selalu terdeteksi sampai jarak 40 meter. Pada deteksi normal (threshold 20) didapatkan sampai dengan jarak 30 meter, objek lampu belakang mobil dideteksi sebagai hati-hati dan rem. Hal ini karena intensitas cahaya dari keadaan normal lampu belakang mobil bisa mencapai threshold 30, berbeda dengan pengujian dengan sampel gambar pada Tabel L5.5 yang menyatakan pada tingkat threshold 30 keadaan normal lampu belakang sudah tidak terdeteksi . Hanya saja setelah titik 40 meter program berhenti, masalah yang sama dengan deteksi lampu depan mobil, dimana program tidak kuat menerima fluktuasi cahaya antara cahaya saat rem diinjak dan pada saat normal.

6.1.4 Kesimpulan hasil kalibrasi Hasil dari kalibrasi yang ada pada lampiran dan telah dijelaskan pada poin sebelumnya. Jika pada lampiran L1 sampai dengan L6 menggunakan data sampel berupa gambar, pada lampiran L7 saat koreksi akurasi algoritma menggunakan sampel video. Terdapat sedikit perbedaan antar keduanya, karena sampel gambar

89

hanya berdasar 1 frame, sedang video beberapa frame. Maka diputuskan untuk intepretasi berdasar tingkat thresholding digunakan data pada lampiran L7. Maka didapatkan nilai kesimpulan hasil kalibrasi terbaik, pada Tabel 6.1. Tabel 6.1 Nilai Lampu HID pada format HSV, (a) kisaran warna Lampu HID mobil (b) konversi dalam format OpenCV Nilai jarak pusat ke pusat lingkaran Nilai minimal threshold 50 (Untuk Lampu Depan Mobil dan Motor) 40 (Untuk Lampu Belakang Mobil dan Motor) 10-50 (Lampu depan Mobil dan Motor) 10-30 (Lampu Belakang Mobil dan Motor) Nilai exposure Nilai Resolusi pixels Radius Lingkaran 87.5 2 3-40

Pada kesimpulan nilai kalibrasi didapatkan pendetekatan intepretasi aktuasi berdasarkan pendeteksian lampu depan kendaraan serta lampu belakang kendaraan. Maka didapatkan data kesimpulan untuk pengujian deteksi lampu depan pada Tabel 6.2, dan untuk pengujian deteksi lampu belakang pada Tabel 6.3. Pada nilai kalibrasi digunakan frame utuh ukuran (540x300) untuk kalibrasi. Pada sub bab 5.6, dijelaskan frame dipecah menjadi ROI. Pada kalibrasi ini didapatkan nilai tertinggi hasil kalibrasi adalah 131 (Tabel L6.18 lampu belakang motor). Maka dengan toleransi 10 pixel didapatkan nilai batas ROI untuk

koordinat vertikal adalah 140. Dengan batas baru tersebut, ukuran frame dapat diperingkas dan lebih ringan prosesnya. Dengan anggapan nilai maksimal koordinat vertikal 140, maka nilai- nilai batas ROI disesuaikan. OpenCV sejatinya membaca koordinat vertikal dari atas, maka koordinat Y<120, menjadi Y>20, Y<110 menjadi Y>30. Maka didapatkan data wilayah ROI dan thresholding pada lampu depan ditampilkan pada Tabel 6.2, dan pada lampu belakang ditampilkan pada Tabel 6.3.

90

Tabel 6.2 Warna dan tingkat thresholding frame lampu depan dan belakang kendaraan Tingkat Tingkat 1 (Servo Posisi 1) Tingkat 2 (Servo Posisi 2) Tingkat 3 (Servo Posisi 3) Tingkat 4 (Servo Posisi 4) Thresholding dan Wilayah Deteksi Threshold 10(lampu depan mobil dan motor) Threshold 20(lampu depan mobil dan motor) Threshold 30 (lampu depan mobil) Atau Threshold 20 Y>20 (lampu depan motor) Threshold 40 (lampu depan mobil) atau Threshold 30 Y >20 (lampu depan motor) atau Threshold merah 30 Y(20-29) (Deteksi lampu belakang mobil dan motor) Threshold 50 (lampu depan mobil) atau Threshold 40 Y >30 (lampu depan motor) atau Threshold merah 30 Y(>30) (lampu belakang mobil dan motor)

Tingkat 5 (Servo Posisi 5)

Tabel 6.3 Warna dan tingkat thresholding frame lampu belakang kendaraan Tingkat Deteksi Depan (ada kendaraan di depan) Hati-hati Rem Warna Lingkaran biru muda dengan titik tengah biru Lingkaran Putih dengan titik tengah putih Lingkaran Ungu dengan titik tengah Ungu Thresholding dan Wilayah Deteksi Threshold merah 10

Threshold merah 20 Y(20-29) (Threshold merah 30 Y>30), (Threshold merah 20 Y>30)

91

6.3 Pengujian Tiap Tipe Jalan Dalam Kondisi Hujan dan Cerah 6.3.1 Jalan negara Jalan Magelang (hujan) Sampel data untuk kriteria jalan negara adalah Jalan Magelang. Keadaan pencahayaan saat hujan berbeda dengan saat cerah. Pada bagian ini diambil sampel Jalan Magelang saat hujan. Ilustrasi keadaan pendeteksian tersebut ditampilkan pada Gambar 6.11. Intepretasi pengujian ditunjukkan pada Tabel 6.4.

Gambar 6.11 Pendeteksian Jalan Magelang pada saat hujan Tabel 6.4 Intepretasi pengujian sampel Jalan Magelang hujan Lokasi Jalan Magelang Deteksi Lampu Kanan - Pantulan Lampu Jalan Mercury sampai threshold 40 (lingkaran kuning) - Pantulan cahaya lampu kendaraan arah sebaliknya sampai threshold 50 (lingkaran hijau) Deteksi Lampu Kiri - Pantulan aspal pada threshold 10 (lingkaran merah titik hijau), threshold 20 (lingkaran merah titik merah), dan threshold 40 (kuning) Deteksi Depan Kendaraan - Deteksi tepat pada lampu belakang (lingkaran biru muda) kendaraan bermotor - Terdeteksi pada pantulan aspal Deteksi Hati-hati - Deteksi tepat pada lampu belakang (lingkaran putih) kendaraan bermotor - Terdeteksi pada pantulan aspal Deteksi Rem - Tidak ada kendaraan mengerem (lingkaran ungu)

92

Gambar 6.11

adalah hasil deteksi Jalan Magelang dengan menggunakan

algoritma yang diterapkan. Pada Tabel 6.4. telah disajikan tentang intepretasi maksud dari Gambar 6.11. Hasilnya adalah threshold maksimal 50 (hijau) di ROI Kanan dan Threshold 40 di ROI Kiri (Kuning). Namun kedua-duanya tidak pas pada titik centroid objek yang benar melainkan pada pantulan cahaya di aspal. Hasil yang akurat adalah pada threshold 30 (lingkaran orange), namun dengan tingkat error sejumlah 4 titik Pada fungsi deteksi kendaraan di depan dan fungsi hati-hati selain terdeteksi tepat pada lampu belakang kendaraan bermotor juga terdeteksi di pantulan aspal. Hal ini berarti fungsi Smooth dengan filter windows 9 pada OpenCV tidak berjalan dengan baik. Hal ini dimungkinkan oleh ko ndisi aspal basah yang memantulkan cahaya dan exposure yang digunakan terlalu tinggi sehingga fungsi smooth tidak efektif mengurangi error . Jalan Magelang (ce rah) Sampel data untuk kriteria jalan negara adalah Jalan Magelang. Keadaan pencahayaan saat hujan berbeda dengan saat cerah. Pada bagian ini diambil sampel Jalan Magelang saat cerah. Ilustrasi keadaan pendeteksian tersebut ditampilkan pada Gambar 6.12. Interpretasi dari gambar tersebut disajikan pada Tabel 6.5.

Gambar 6.12 Pendeteksian Jalan Magelang pada saat cerah

93

Tabel 6.5 Intepretasi pengujian sampel Jalan Magelang hujan Lokasi Deteksi Lampu Kanan Jalan Magelang - Posisi kamera salah - Semua error terjadi pada pantulan aspal,dari threshold 10 (lingkaran merah titik hijau), sampai dengan threshold 50 (lingkaran hijau titik hijau). - Posisi Kamera salah - Pantulan cahaya aspal pada thresholding 10 - Tidak terdeteksi - Tidak terdeteksi - Tidak terdeteksi

Deteksi Lampu Kiri

Deteksi Depan Kendaraan Deteksi Hati-hati Deteksi Rem

Pada pengujian sampel Jalan Magelang cerah, terjadi kesalahan dalam menempatkan kamera. Karena kamera salah, maka hasil kurang valid, karena estimasi pendeteksian secara vertikal. Secara vertikal penempatan kamera salah sehingga tidak bisa digunakan sebagai estimasi jarak. Secara horizontal penempatan kamera juga salah sehingga tidak akurat menempatkan batas region lampu kanan dan lampu kiri. Pada Gambar 6.12 terlihat karena penempaatan kamera yang salah secara horizontal dan vertikal, deteksi menghasilkan error yang tertumpu pada pantulan aspal dan garis putih marka jalan. 6.3.2 Jalan provinsi

Ringroad jalur lambat (hujan) Sampel data untuk tipe jalan propinsi ada beberapa tipe jalan. Diantaranya adalah tipe jalan ringroad dan tipe jalan double track . Pada bagian ini diuji sampel data jalan propinsi tipe ringroad, jalur lambat pada saat hujan. Ilustrasi pengujian tersebut ditampilkan pada Gambar 6.13.

94

Gambar 6.13 Pendeteksian Ringroad jalur lambat pada saat hujan Pada pendeteksian ringroad jalur lambat pada saat hujan, terdapat banyak pantulan cahaya pada saat pendeteksian objek. Marka jalan menumbulkan error sampai pada tingkat threshold 40. Hal ini dimungkinkan oleh exposure yang terlalu besar. Pada pendeteksian terdapat lingkaran berwarna biru muda yang menandakan didepan ada kendaraan, dan lingkaran putih yang menandakan kendaraan lebih dekat dari jarak 40 meter. Namun hasil pendeteksian didepan kendaraan (biru muda) tingkat ketidakakuratan tinggi, karena threshold memang dibuat rendah, dengan resiko exposure tinggi, untuk dapat mendeteksi kendaraan dengan tingkat cahaya yang rendah. Namun dari sisi pendeteksian menjadi tidak akurat. Penjelasan secara detail dituliskan pada Tabel 6.6.

95

Tabel 6.6 Pengujian sampel Ringroad jalur lambat hujan. Lokasi Deteksi Lampu Kanan Ringroad Monjali jalur lambat -Threshold 40(lingkaran kuning) berasal dari pantulan cahaya dari body mobil -Threshold 10 (lingkaran merah titik hijau) dan 20 (lingkaran merah titik merah) berasal dari pantulan aspal dan marka jalan - Threshold 10 berasal dari pantulan aspal - Threshold 20 berasal dari pantulan marka jalan - Tepat mendeteksi ada kendaran didepan, kalau banyak error nya wajar karena tingkat threshold merah 10 - Tidak tepat posisinya karena pada pantulan cahaya - Tepat pada lampu merah mobil.

Deteksi Lampu Kiri

Deteksi Depan Kendaraan (lingkaran biru muda)

Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Ringroad jalur cepat 1 (hujan) Sampel data untuk tipe jalan propinsi ada beberapa tipe jalan. Diantaranya adalah tipe jalan ringroad dan tipe jalan double track . Pada bagian ini diuji sampel data jalan propinsi tipe ringroad, jalur cepat pada saat hujan. Ilustrasi pengujian tersebut ditampilkan pada Gambar 6.14. Intepretasi pada gambar tersebut ditampilkan pada Tabel 6.7.

96

Gambar 6.14 Pendeteksian Ringroad jalur cepat pada saat hujan Tabel 6.7 Intepretasi pengujian sampel Ringroad jalur cepat (hujan) Lokasi Deteksi Lampu Kanan Ringroad Monjali jalur lambat - Threshold 30 (lingkaran orange), dan threshold 40 (lingkaran kuning) berasal dari cahaya lampu dari arah berlawanan, -Threshold 10 (lingkaran merah titik hijau) , dan threshold 20 (lingkaran merah titik merah) berasal dari pantulan aspal - Threshold 10 (lingkaran merah titik hijau) dan threshold 20 (lingkaran merah titik merah) berasal dari pantulan aspal - Pada pantulan lampu belakang mobil - Berasal dari pantulan marka jalan - Tepat pada lampu merah mobil.

Deteksi Lampu Kiri

Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Pada pendeteksian ringroad jalur cepat banyak juga terjadi pantulan cahaya pada saat pendeteksian objek. Pada jalur cepat pantulan cahaya dari aspal threshold 40. Deteksi REM (Ungu) sudah tepat pada objek kendaraan motor di jalur lambat yang sedang mengerem, pada deteksi hati- hati berasal dari pantulan

97

lampu belakang kendaraan bermotor. Posisi servo 5 pada ROI kiri, bukan berasal dari deteksi lampu depan, namun dari deteksi rem, dengan koordinat vertikal lebih rendah dari 110 pixels. Ringroad jalur cepat 2 (hujan) Sampel ini berbeda dengan sebelumnya. Pada bagian ini dicoba pengujian pada medan yang terdapat pantulan cahaya pada mobil di depan. Pada Gambar 6.15, dapat dilihat terdapat pantulan cahaya pada bus, dari lampu kendaraan. Intepretasi pada gambar tersebut ditampilkan pada Tabel 6.7.

Gambar 6.15 Pendeteksian Ringroad jalur cepat pada saat hujan Pada pendeteksian ringroad jalur cepat banyak juga terjadi pantulan cahaya dari bodi kendaraan di depannya. Pada ROI kanan pantulan pada bodi bus bahkan mencapai threshold 50 (hijau). Pada ROI kiri pantulan pada bodi bus mencapai threshold 30. Namun yang perlu dicermati pada gambar diatas adalah deteksi Rem justru muncul dari lampu sen bus sebelah kiri bawah, bukan dari lampu merahnya. Deteksi hati- hati dan depan kendaraan bahkan tidak ada. Hal ini sebagai masukan bagi penelitian ini dan penelitian selanjutnya perlu dimasukkan sampling skala warna dari lampu belakang kendaraan yang nyalanya pudar seperti bus ini.

98

Tabel 6.8 Intepretasi pengujian sampel Ringroad jalur cepat hujan Lokasi Deteksi Lampu Kanan Ringroad Monjali jalur cepat -Threshold 10(lingkaran merah titik hijau), 20(lingkaran merah titik merah), 30(lingkaran orange), 40 (lingkaran kuning), 50 (lingkaran hijau) berasal dari pantulan cahaya dari body bus - Threshold 10,20,30 berasal dari pantulan aspal dan bodi bus - Tidak ada - Tidak ada - Pada lampu sen bus

Deteksi Lampu Kiri Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Pada pendeteksian ringroad jalur cepat banyak juga terjadi pantulan cahaya dari bodi kendaraan di depannya. Pada ROI kanan pantulan pada bodi bus bahkan mencapai threshold 50 (hijau). Pada ROI kiri pantulan pada bodi bus mencapai threshold 30 (orange). Namun yang perlu dicermati pada Gambar 6.15 adalah deteksi Rem justru muncul dari lampu sen bus sebelah kiri bawah, bukan dari lampu merahnya. Deteksi hati- hati dan depan kendaraan bahkan tidak ada. Hal ini sebagai masukan bagi penelitian ini dan penelitian selanjutnya perlu dimasukkan sampling skala warna dari lampu belakang kendaraan yang nyalanya pudar seperti bus ini. Jalan Kaliurang (hujan) Pada bagian ini diambil sampel pada jalan provinsi saat hujan dengan tipe double track . Pada tipe jalan tersebut diambil sampel Jalan Kaliurang saat hujan. Hasil pengujian ditampilkan pada Gambar 6.16. Intepretasi tentang hasil pengujian ditampilkan pada Tabel 6.9.

99

Gambar 6.16 Pendeteksian pada Jalan Kaliurang KM 9 pada saat hujan Tabel 6.9 Intepretasi pengujian sampel Jalan Kaliurang saat hujan Lokasi Deteksi Lampu Kanan Jalan Kaliurang KM 9 -Threshold 10 (lingkaran merah titik hijau), 20 (lingkaran merah titik merah), 30 (lingkaran orange), 40 (lingkaran kuning) berasal dari pantulan cahaya dari aspal terhadap pencahayaan lingkungan - Threshold 10,20,30,40,50 (lingkaran hijau) berasal dari pantulan cahaya dari aspal terhadap pencahayaan lingkungan - Berasal dari pantulan lampu belakang mobil yang parkir - Berasal dari pantulan lampu belakang mobil yang parkir - Berasal dari pantulan lampu belakang mobil yang parkir

Deteksi Lampu Kiri

Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Pada Gambar 6.16 didapatkan kesalahan dalam menempatkan kamera secara vertikal., kamera kurang tinggi, sehingga estimasi jarak berdasar sumbu vertikal tidak tepat. hal ini karena tripod goyang dan diulangi proses kalibrasi kamera ke posisi awal, namun di tempat yang tidak datar, akhirnya kamera mengarah ke bawah

100

Pada pendeteksian di Jalan Kaliurang saat hujan error yang terjadi lebih besar daripada di RingRoad. Tidak hanya mempengaruhi deteksi lampu depan, namun juga berpengaruh di deteksi lampu belakang. Pada Gambar 6.16 terdapat kendaraan yang parkir dengan kondisi mengerem, pantulan cahayanya terlalu kuat. Pada pantulan aspal sampai terdeteksi sebagai Rem(threshold merah 30) dan Hati- hati (threshold merah 20) .Pantulan lampu pada aspal lebih kuat karena lebar jalan lebih kecil daripada ringroad, namun penerangan di pinggir jalan lebih kuat. Akhirnya menimbulkan error yang lebih besar pada pantulan aspal.

Ringroad jalur lambat (cerah) Pada bagian sebelumnya, telah diuji pendeteksian pada Ringroad jalur lambat pada kondisi hujan. Pada bagian ini akan diuji pendeteksian pada kondisi kering. Pada kondisi hujan, telah didapatkan banyak error terutama akibat pantulan cahaya pada aspal, kendaraan dan objek lain di sekitar medan. Hasil pengujian pada kondisi cerah, ditunjukkan pada Gambar 6.17, intepretasi keterangan gambar ditunjukkan pada Tabel 6.10.

Gambar 6.17 Pendeteksian pada Ringroad jalur lambat pada saat cerah

101

Tabel 6.10 Intepretasi pengujian sampel Ringroad jalur lambat saat hujan Lokasi Deteksi Lampu Kanan Ringroad Monjali jalur lambat - Threshold 10 (lingkaran merah titik hijau), 20 (lingkaran merah titik merah), 30 (lingkaran orange),40 (lingkaran kuning), 50 (lingkaran hijau) berasal dari pantulan marka jalan - Threshold 10,20 berasal dari pantulan bangunan - Pada pantulan lampu belakang mobil yang parkir - Pada pantulan lampu belakang mobil yang parkir - Pada pantulan lampu belakang mobil yang parkir

Deteksi Lampu Kiri Deteksi Depan Kendaraan Deteksi Hati-hati Deteksi Rem

Pada Gambar 6.17 terlihat, deteksi pada jalur lambat saat terang tidak hujan menimbulkan pantulan cahaya dari aspal jauh lebih kecil dibanding saat hujan. Ini terbukti dari error yang terjadi paling besar dibuat oleh marka jalan.Pada ROI kiri terdapat objek kendaraan mobil yang parkir, dan lampu belakangnya

menghasilkan error deteksi Depan Kendaraan, error deteksi Hati-hati, dan error deteksi Rem. Namun dibandingkan pada saat keadaan hujan pad Gambar 6.16, tingkat error nya relatif lebih kecil. Pantulan cahaya lampu belakang cukup banyak, namun tidak sebanyak saat hujan. Pada objek di ROI kiri Warna cat merah dari taksi yang parkir juga mengakibatkan error deteksi Rem. Pada pendeteksian lampu belakaang taksi yang sedang parkir juga didapat deteksi lampu depan sampai threshold 50 (hijau). Hal ini terjadi karena penggunaan nilai exposure yang besar. Karena sudah konsekuensi dengan hasil kalibrasi yang harus dapat mendeteksi motor dengan baik. Pada ROI kanan, didapatkan error deteksi lampu depan tidak banyak, karena sumber cahaya adalah pada jalur dari arah sebaliknya yang jauh dari pendeteksi.

102

Ringroad jalur cepat 1 (cerah) Pada bagian sebelumnya, telah diuji pendeteksian pada Ringroad jalur cepat pada kondisi hujan. Pada bagian ini akan diuji pendeteksian pada kondisi cerah. Pada kondisi hujan, telah didapatkan banyak error terutama akibat pantulan cahaya pada aspal, kendaraan dan objek lain di sekitar medan. Hasil pengujian pada kondisi cerah, ditunjukkan pada Gambar 6.18, intepretasi keterangan gambar ditunjukkan pada Tabel 6.11.

Gambar 6.18 Pendeteksian pada Ringoad jalur cepat pada saat cerah Tabel 6.11 Intepretasi pengujian sampel Ringroad jalur cepat saat cerah Lokasi Deteksi Lampu Kanan Ringroad Monjali jalur cepat -Threshold 20 (lingkaran merah titik merah) dan 30 (lingkaran orange) berasal dari garis putih di aspal, -Threshold 10 (lingkaran merah titik hijau berasal dari pantulan bodi kendaraan di depan - Tidak ada deteksi - Tepat pada lambu belakang kendaraan, dan pantulan cahaya di aspal. - Error pada lampu depan kendaraaan yang melaju berlawanan arah - Tidak ada - Tepat pada lampu merah mobil.

Deteksi Lampu Kiri Deteksi Depan Kendaraan

Deteksi Hati-hati Deteksi Rem

103

Pada deteksi jalur cepat pada saat tidak hujan pantulan pada aspal sangat sedikit. Pada ROI kiri tidak ada, bahkan marka jalan tidak memberi error . Hal ini karena pada ROI kiri pencahayaan di sisi kiri relatif gelap. Di ROI Kanan error berasal dari garis putih putus-putus di aspal dan pantulan cahaya di aspal Untuk deteksi rem hasilnya cukup baik karena tepat pada lampu belakang kendaraan. Deteksi di depan kendaraan terjadi error pada pendeteksian lampu depan kendaraan yang melaju berlawanan arah. Hal ini karena tingat exposure tinggi, karena pendeteksian merah idealnya adalah pada exposure rendah. Maka dari itu hal ini sudah konsekuensi karena hasil kalibrasi mengharuskan untuk memekai exposure 87,5%.

Ringroad jalur cepat 2 (cerah) Pengujian pada jalur cepat kedua dilakukan dekat dengan mobil yang be rada tepat didepannya. Hal ini untuk menguji besarnya tingkat error akibat pantulan cahaya lampu depan kendaraan peneliti dan lampu belakang kendaraan yang berada didepannya . Pada kondisi terang, hasil pengujian ditunjukkan pada Gambar 6.19. Intepretasi tentang gambar dipaparkan pada Tabel 6.12.

Gambar 6.19 Pendeteksian pada Ringroad jalur cepat pada saat cerah Pada sampel ini diujikan sampel tingkat pantulan objek yang dimungkinkan pada jalan yang ramai. Pada Gambar 6.19 dapat diperoleh informasi bahwa

104

pendeteksian dengan tingkat exposure yang rendah berakibat banyak terjadi error terutama pada thresholding rendah. Deteksi lampu belakang yakni deteksi depan kendaraan (biru muda/ threshold merah 10), deteksi hati- hati (putih/threshold merah 20), dan deteksi rem (ungu/ threshold merah 30), terdapat banyak error akibat pantulan cahaya merah lampu belakang mobil, dan pantulan cahaya objek di sekililingnya. Pada Gambar 6.19 terlihat bahwa hasil pemantulan pada badan mobil di depannya mencapai threshold 40. Besarnya kekuatan pantulan karena nilai exposure yang digunakan tinggi (87,5%). Penjelasan lebih detail dimuat pada Tabel 6.12. Tabel 6.12 Intepretasi pengujian sampel Ringroad jalur cepat saat cerah Lokasi Deteksi Lampu Kanan Ringroad Monjali jalur lambat -Threshold 20 (lingkaran merah), 30(lingkaran orange), 40(lingkaran kuning) berasal dari pantulan cahaya dari body mobil -Threshold 10 (lingkaran merah titik hijau) berasal dari pantulan marka jalan - Threshold 10 (lingkaran merah titik hijau) ,20 ,30, berasal dari pantulan bodi mobil - Threshold 30 berasal dari pantulan lampu pinggir jalan - Pada pantulan bodi dan pantulan marka dan aspal - Berasal dari lampu belakang dan pantulan mobil, dan lampu pinggir jalan - Berasal dari lampu belakang dan pantulan mobil

Deteksi Lampu Kiri

Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Tingkat error pada deteksi lampu depan kendaraan juga cukup tinggi termuat pada Tabel 6.12, mencapai threshold 30 (orange) pada ROI kiri, dan threshold 40 pada ROI kanan. Hal ini diakibatkan kendaraan didepan objek mobil berwarna

105

putih. Warna putih itu yang masuk colorspace, karena dengan exposure tinggi , pada saat terang tidak bisa dibedakan warna lampu dan warna cat Jalan Kaliurang (cerah) Pada sampel jalan provinsi tipe double track pada saat cerah dipilih Jalan Kaliurang KM 7 untuk sampel kasus. Dari hasil pengujian, didapatkan hasil yang ditampilkan pada Gambar 6.20, dan intepretasi gambar terdapat pada Tabel 6.13.

Gambar 6.20 Pendeteksian pada Jalan Kaliurang KM 7 saat cerah Tabel 6.13 Intepretasi pengujian sampel Jalan Kaliurang saat cerah Lokasi Deteksi Lampu Kanan Jalan Kaliurang KM 7 - Threshold 10 (lingkaran merah titik hijau), 20 (lingkaran merah), 30(lingkaran orange), berasal dari pantulan cahaya aspal dan garis putih aspal -Threshold 40 (lingkaran kuning) berasal dari cahaya lampu dari arah berlawanan - Threshold 10,20,30,40 berasal dari pantulan bodi mobil - Threshold 10 berasal dari pantulan aspal dan pengemudi motor - Pada pantulan lampu belakang mobil - Tidak ada - Tidak jelas (objek jauh)

Deteksi Lampu Kiri

Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

106

Karakteristik Jalan Kaliurang adalah jalanannya terang karena pinggirnya sangat terang pencahayaannya dari lampu jalan maupun toko-toko. Akan tetapi pada saat kering pantulan aspal tidak terlalu kuat. Error yang terjadi pada Gambar 6.20 adalah karena garis putih tengah pada ROI kanan, dan pantulan bodi mobil pada ROI kiri. Di depan ada pengemudi motor namun tidak terdeteksi lampu belakangnya, mungkin karena lampu belakangnya mati. Pada deteksi hati- hati adalah pada pantulan lampu belakang mobil. Pada deteksi Rem tidak jelas objek yang melakukan pengereman, karena jaraknya ternyata masih cukup jauh. 6.3.3 Jalan kabupaten

Jalan Kamdanen (hujan) Pada sampel pengujian pada jalan kabupaten saat, dipilih sampel pengujian pada Jalan Kamdanen pada saat hujan. Hasil pengujian ditunjukkan pada Gambar 6.21. Penjelasan intepretasi hasil pengujian dijelaskan pada Tabel 6.14.

Gambar 6.21 Pendeteksian pada Jalan Beran saat hujan

107

Tabel 6.14 Intepretasi pengujian sampel Jalan Kamdanen saat hujan Lokasi Deteksi Lampu Kanan Kamdanen - Threshold 10 (lingkaran merah titik hijau) ,20 (lingkaran merah) ,30 (lingkaran orange), 40 ( lingkaran kuning), dan 50 (lingkaran Hijau) berasal dari pantulan aspal dan cahaya dari arah berlawanan - Threshold 10 (lingkaran merah titik hijau), 20 (lingkaran merah) titik merah) berasal dari pantulan aspal dan pantulan bangunan - Tidak ada - Tidak ada - Tidak ada

Deteksi Lampu Kiri

Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Posisi Kamera pada Gambar 6.21 kurang tepat karena menghadap ke bawah, sehingga ROI secara vertikal tidak pas. Namun dari potongan Gambar 6.21 terlihat bahwa semakin deras hujan, maka pantulan cahaya pada aspal semakin kuat. Ini terlihat dari banyaknya lingkaran deteksi yang timbul di aspal. Bahkan pada threshold 50 pada ROI kanan dideteksi pada pantulan aspal bukan pada lampu kendaraan. Pada ROI kiri error terjadi karena pantulan cahaya pada

bangunan di pinggir dengan threshold 20 (lingkaran merah).

Jalan Damai (cerah) Pada bagian ini, diujikan sistem pada medan jalan kabupaten pada saat cerah. Sampel yang kami pilih adalah Jalan Damai pada saat cerah. Hasil penguj ian ditampilkan pada Gambar 6.22, dan intepretasi tentang gambar tersebut kami sajikan pada Tabel 6.15.

108

Gambar 6.22 Pendeteksian pada Jalan Damai saat cerah Tabel 6.15 Intepretasi pengujian sampel Jalan Damai saat cerah Lokasi Deteksi Lampu Kanan Jalan Damai -Threshold 30 (Orange), 40 (kuning) ,50( hijau) berasal dari lampu motor -Threshold 10 dan 20 berasal dari pantulan aspal dan pantulan cahaya. - Threshold 10,20, dari pantulan aspal. - Tidak ada - Tidak ada - Tidak ada

Deteksi Lampu Kiri Deteksi Depan Kendaraan Deteksi Hati-hati Deteksi Rem

Pada Gambar 6.15 terlihat bahwa lampu depan motor mampu mencapai threshold 50. Ini berlawanan dengan hasil di kalibrasi di Lampiran, bahwa lampu depan motor hanya mampu mencapai threshold 30 itupun pada jarak 10 meter. Hal ini karena latar lingkungan yang lebih terang sebab dilakukan kalibrasi pada lapangan yang gelap, dan juga asumsi lebar jalan yang lebih sempit, sebab pada kalibrasi menggunakan asumsi lebar jalan 7 meter (seperti jalan palagan). Pada jalan damai relatif lebih kecil sekitar 5,5 meter, ini yang menyebabkan cahaya lebih terfokus, dan tentu saja pada pendeteksian ini motor dengan putaran

109

mesin tinggi sehingga tenaga lampu penuh, sementara pada kalibrasi motor diam sehingga tenaga dari dinamo kurang. 6.3.4 Jalan desa

Jalan Panggung Sari (hujan) Salah satu sampel pengujian pada penelitian ini adalah jalan desa pada saat hujan. Pada kondisi tersebut , diujikan sampel pada Jalan Panggung sari saat hujan. Hasil pengujian ditunjukkan pada Gambar 6.23.

Gambar 6.23 Pendeteksian pada Jalan Panggung Sari saat hujan Pada Gambar 6.23 terlihat bahwa ROI yang digariskan pada garis hijau salah. Hasilnya adalah wilayah ROI dengan estimasi jarak yang ditunjukkan dengan nomor 0,1,2,3,4, menjadi salah. Hal ini karena posisi kamera salah dimungkinkan karena tripod geser, atau klem pada kamera merunduk ke bawah. Penelitian ini dilakukan dengan alat seadanya, sehingga sangat dimungkinkan ketidakpresisian posisi, sehingga berbeda dengan hasil kalibrasi. Intepretasi tentang gambar tersebut disajikan pada Tabel 6.16.

110

Tabel 6.16 Intepretasi pengujian sampel Jalan Panggung Sari saat hujan Lokasi Deteksi Lampu Kanan Jalan Panggung sari -Threshold 10 (lingkaran merah titik hijau), 20 (lingkaran merah titik merah), 30 (lingkaran orange) berasal dari pantulan aspal - Threshold 10 berasal dari pantulan aspal - Pada mobil jeep berwarna merah - Pada mobil jeep berwarna merah - Pada mobil jeep berwarna merah.

Deteksi Lampu Kiri Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Pada Gambar 6.24 terlihat bahwa pada jalan desa walaupun kondisi hujan, namun karena tingkat pencahayaan rendah, maka pantulan aspal tidak sekuat jalan kabupaten. Kemudian yang menjadi perhatian adalah pada ROI kiri terdapat mobil merah yang parkir di kiri jalan. Kemudian warna merah mobil tersebut diidentifikasi sebagai deteksi depan(Biru), Deteksi Hati- hati (Putih), dan Deteksi Rem (Ungu). Maka permasalahan ini akibat nilai eksposure terlalu tinggi yakni 87,5% sehingga OpenCV tidak bisa membedakan warna merah yang berasal dari lampu dan warna merah yang berasal dari cat. Jalan Lempong Sari (cerah) Sampel untuk kondisi jalan desa yang lain adalah pada kondisi cerah (kering). Sampel yang dipilih pada jalan desa saat cerah adalah Jalan Lempong Sari pada saat cerah. Hasil pengujian untuk jenis dan kondisi jalan ini, ditampilkan pada Gambar 6.24. Intepretasi hasil pengujian untuk Gambar 6.24 disajikan pada Tabel 6.17.

111

Gambar 6.24 Pendeteksian pada Jalan Le mpong Sari saat hujan Tabel 6.17 Intepretasi pengujian sampel Jalan Le mpong Sari saat cerah Lokasi Deteksi Lampu Kanan Jalan Lempong Sari -Threshold 20 (lingkaran merah titik merah), 30 (lingkaran Orange) berasal dari lampu kendaraan bermotor -Threshold 10(merah titik hijau) berasal dari pantulan aspal - Threshold 10 (lingkaran merah titik hijau,berasal dari pantulan cahaya aspal - Tidak ada - Tidak ada - Tidak ada

Deteksi Lampu Kiri

Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Pada Gambar 6.24, terlihat lokasi jalan desa saat keadaan tidak hujan pantulan di aspal hanya sampai thresholding 10. Deteksi cahaya lampu motor hanya sampai pada thresholding 30 (Orange). Padahal Jalan di Desa tidaklah selebar jalan Kabupaten, padahal di jalan kabupaten cahaya lampu motor mampu mencapai thresholding 50. Hal ini dimungkinkan di desa kendaraan bermotor jalan pelanpelan, sehingga putaran mesin tidak tinggi, yang berakibat power daya lampu motor tidak maksimal.

112

6.3.5

Jalan sepi dan menanjak

Jalan Turgo (ce rah) Pada bagian sebelumnya, telah diujikan tentang berbagai tipe jalan pada kondisi hujan dan cerah. Pada bagian ini diujikan latar belakang pengujian pada medan jalan menanjak dan keadaannya relatif sepi dibanding jalan kota.Dipilih sampel untuk kondisi ini pada Jalan Turgo. Hasil pendeteksian ditampilkan pada Gambar 6.25. Intepretasi tentang hasil pengujian kami sajikan pada Tabel 6.18.

Gambar 6.25 Pendeteksian pada Jalan Turgo saat cerah Tabel 6.18 Intepretasi pengujian sampel Jalan Turgo saat hujan Lokasi Deteksi Lampu Kanan Jalan Turgo -Threshold 20 (lingkaran merah titik merah), 30 (lingkaran orange), 40(lingkaran kuning), dan 50 (lingkaran hijau) berasal lampu motor - Threshold 10 (lingkaran merah titik hijau), berasal dari pantulan lampu motor dan aspal - Tidak ada - Tidak ada - Tidak ada - Tidak ada

Deteksi Lampu Kiri Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

113

Pada daerah pegunungan Turgo, pada keadaan terang, terdeteksi pengendara motor yang mengendara. Cahaya dari lampu motor mampu mencapai thresholding 50. Hal ini dikarenakan putaran mesin tinggi pengendara motor di daerah pegunungan, dan lebar jalan yang sempit sehingga cahayanya dapat fokus. Hal yang perlu diperhatikan adalah ROI kurang naik pada daerah pegunungan. Kemungkinan pertama adalah kesalahan dalam posisi kamera yang geser. Kemungkinan kedua, penelitian ini hanya terbatas pada daerah datar, dan tidak menutup kemungkinan pada daerah miring dibutuhkan ROI yang berbeda. Maka dari itu usulan untuk penelitian mendatang adalah ROI pada kemiringan tertentu, dengan perubahan otomatis dengan menggunakan bantuan gyrometer.

Jalan Pulowato (cerah) Pada kondisi medan jalan naik dan kondisi relatif sepi dibanding jalanan di kota. Sampel lain untuk kondisi tersebut dipilih Jalan Pulowatu. Dipilih Jalan Pulowatu, karena jalan ini termasuk kategori jalan provinsi, sementara Jalan Turgo masuk kategori jalan kabupaten. Hasil pendeteksian pada Jalan Pulowatu, ditunjukkan pada Gambar 6.26.

Gambar 6.26 Pendeteksian pada Jalan Pulowatu saat cerah Pada Gambar 6.26 terlihat Pulowatu, sebuah dataran miring namun tidak semiring di turgo. Permasalahan yang terjadi pada sebuah dataran miring di

114

Pulowatu, sama seperti yang terjadi di Turgo. Meskipun level kemiringan tidak setajam Turgo. ROI yang dikalibrasi pada dataran datar tidak tepat diaplikasikan pada dataran miring. Intepretasi pendeteksian pada Jalan Pulowatu disajikan pada Tabel 6.19. Tabel 6.19 Intepretasi pengujian sampel Jalan Pulowatu saat hujan Lokasi Deteksi Lampu Kanan Pulowatu -Threshold 10 (lingkaran merah titik hijau) dan 30 (lingkaran Orange) berasal dari pantulan garis putih jalan. - Threshold 10 untuk pendeteksian objek kendaraan - Tidak ada - Tidak ada - Tidak ada - Tidak ada

Deteksi Lampu Kiri Deteksi Depan Kendaraan Deteksi Hati-hati Deteksi Rem

Pada Tabel 6.19 terlihat error deteksi timbul dari garis putih tengah jalan, hal ini terjadi karena eksposure 87,5% memang terlalu tinggi sehingga tidak bisa membedakan warna cat dan warna lampu. Pada pendeteksian objek hanya mampu mencapai tingkat minimal threshold 10. Hal ini terjadi karena latar belakang medan gelap, sementara jalan relatif lebih lebar pada tipe jalan provinsi, sehingga cahaya tidak terkumpul mengarah ke kamera, sehingga intensitas cahaya yang terbaca pada kamera hanya mampu mencapai minimal threshold 10, tidak mampu mencapai threshold 20. Lapangan Donoharjo (lampu dekat) Pada sampel pengujian lain, dipilih medan pendeteksian yang tidak beraspal. Untuk sampel tersebut, dipilih Lapangan Donoharjo pada kondisi cerah, pada saat kondisi lampu filamen lampu dekat. Pengujian ditampilkan pada Gambar 6.27. Intepretasi tentang hasil pengujian pada Gambar 6.27, disajikan pada Tabel 6.20.

115

Gambar 6.27 Pendeteksian pada Lapangan Donoharjo (lampu dekat) Tabel 6.20 Intepretasi pengujian sampel Lapangan Donoharjo (lampu dekat) Lokasi Deteksi Lampu Kanan Lapangan Donoharjo (Lampu Dekat) - Threshold 10 (lingkaran merah titik hijau), 20 (lingkaran merah), 30(lingkaran orange), 40 (lingkaran kuning) berasal dari pantulan rumput - Tidak ada - Tidak ada - Tidak ada - Tidak ada

Deteksi Lampu Kiri Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

Pada Gambar 6.27, terlihat pada ROI Kanan rumput memantulkan cahaya sampai pada thresholding 40(Kuning). Sedangkan pada ROI Kiri, tidak ada

pantulan cahaya dari rumput. Hal ini dikarenakan pada lampu kiri kendaraan standar memang diset lebih rendah daripada lampu sebelah kanan, sehingga lebih memantul ke rumput. Hal ini terjadi karena nilai ukuran kernel yang digunakan untuk smoothing (menggaburkan gambar), sangat terbatas karena mempengaruhi pendeteksian lampu kendaraan bermotor. Pengkalibrasian nilai smooth dilampirkan pada

116

Lampiran L1. Terlihat bahwa smooth dapat mengurangi error pantulan rumput, namun juga mengurangi sensitivitas deteksi lampu depan motor.

Lapangan Donoharjo (Lampu Jauh) Pada bagian sebelumnya telah diujikan pengujian pada medan rumput dengan setting lampu dekat. Pada pengujian ini diujikan pada medan rumput dengan setting lampu jauh. Hasil pendeteksian ditunjukkan pada Gambar 6.28. Intepretasi pendeteksian pada Gambar 6.28 ditunjukkan pada Tabel 6.21.

Gambar 6.28 Pendeteksian pada Lapangan Donoharjo (lampu jauh) Tabel 6.21 Intepretasi pengujian sampel Lapangan Donoharjo (lampu jauh) Lokasi Deteksi Lampu Kanan Lapangan Donoharjo (Lampu Jauh) - Threshold 10 (lingkaran merah titik hijau), 20 (lingkaran merah titik merah), 30 (lingkaran orange) berasal dari pantulan rumput -Tidak ada - Tidak ada - Tidak ada - Tidak ada.

Deteksi Lampu Kiri Deteksi Depan Kendaraan (lingkaran biru muda) Deteksi Hati-hati (lingkaran putih) Deteksi Rem (lingkaran ungu)

117

Pada Gambar 6.28 terlihat bahwa dalam kondisi lampu jauh, pantulan cahaya di rumput pada ROI Kanan mencapai thresholding 30, lebih rendah daripada lampu pendek yang mencapai thresholding 40. Pada ROI kiri tidak ada pantulan cahaya yang terdeteksi karena posisi lampu sebelah kiri lebih tinggi daripada sebelah kanan. 6.3 Hasil Pengujian Kendaraan 6.3.1 Hasil pengujian lampu depan kendaraan Pada sub bab 6.3.1 dibahas tentang peringkasan dari seluruh hasil pengujian lampu depan kendaraan. Hasil perangkuman gejala pendeteksian meliputi tingkat akurasi pendeteksian benar atau salah, kemudian dihitung presentase kebenaran meliputi jumlah benar dibagi dengan total benar dan salah. Untuk memperingkas penyajian tabel, dipersingkat notasinya. Minimal threshold disingkat menjadi T (contoh T10 = T10-19), jumlah deteksi benar disingkat menjadi B, jumlah deteksi salah disingkat menjadi S, tingkat persentasi kebenaran disingkat menjadi %B. Berikut hasil pengujian, disajikan pada Tabel 6.22. Tabel 6.22 Hasil pengujian lampu depan kendaraan Jalan T 10
B S
% B

T 20
B S

% B

T 30
B S

% B

T 40
B S

% B

T 50
B S

% B

Jalan Magelang (cerah) Jalan Magelang (hujan) Jalan Kaliurang (cerah) Jalan Kaliurang (hujan) Jalan Ringroad jalur cepat 1 (hujan)

9 22

0 2

5 0

20

0 2

9 0

2 3

40

8 1

22

0 6

7 0

50

1 0

100

118

Tabel 6.23 Hasil pengujian lampu depan kendaraan (lanjutan) Jalan T 10 % B T 20 B S 1 3 % B 25 T 30 B 0 S 1 0 % B T 40 B S 0 0 % B 0 T 50 % B

Jalan Ringroad jalur cepat 1 (cerah) Jalan Ringroad jalur cepat 2 (hujan) Jalan Ringroad jalur cepat 2 (cerah) Jalan Ringroad jalur lambat (cerah) Jalan Ringroad jalur lambat (hujan) Jalan Kamdanen (hujan) Jalan Damai (cerah) Jalan Panggung Sari (hujan) Jalan Lempong Sari (cerah) Jalan Turgo (cerah)

B S 0 2 0

B S 0 0 0

5 0

4 0

6 0

20

50

7 0

7 0

13

7 0

50

50

50

4 0

100

2 0

100

100

3 0

100

100

119

Tabel 6.22 Hasil pengujian lampu depan kendaraan (lanjutan) Jalan Jalan Pulowatu (cerah) Lapangan Donoharjo (Lampu Jauh) Lapangan Donoharjo (Lampu Pendek) T 10 % B T 20 B S 0 0 % B 0 T 30 B 0 % B T 40 B S 0 0 % B 0 T 50 % B

B S 2 2 50

S 2 0

B S 0 0 0

3 0

0 0

3 0

0 1

Pada Tabel 6.22 diperlihatkan hasil pengujian beserta tingkat kebenaran. Pada bagian yang diblok dengan arsiran abu-abu adalah tingkat minimal threshold terbaik. Threshold terbaik ditentukan pada wilayah threshold manakah tingkat pendeteksian dengan nilai persentasi kebenaran tertinggi. Jika tidak ada pendeteksian yang benar, dipilih tingkat error terendah sebagai wilayah threshold terbaik. Contoh pada Jalan Damai saat cerah didapatkan 3 threshold dengan nilai persentasi kebenaran yang sama. Maka threshold 30,40,50 dinyatakan sebagai threshold terbaik untuk kategori jalan kabupaten kondisi cerah. Pada tipe jalan lain, contohnya pada Jalan Ringroad jalur lambat pada saat hujan didapatkan nilai terbaik pada threshold 40 dimana tidak ada nilai yang akurat, namun dengan jumlah error yang lebih sedikit, maka nilai threshold yang paling baik untuk kondisi jalan tersebut. Pada variasi kondisi hujan dan cerah dapat dilihat tingkat error pada kondisi

hujan lebih besar. Sehingga nilai threshold yang digunakan lebih tinggi. Contohnya dapat dilihat pada pengujian Jalan Ringroad jalur lambat pada kondisi cerah didapatkan pendeteksian objek pada threshold 20, dengan nilai centroid yang benar ada satu objek, sementara yang 4 salah. Pada waktu hujan didapatkan

120

nilai error

yang terlalu banyak pada threshold 20, sehingga didapat nilai terbaik

pada threshold 40, dimana deteksi yang benar tidak ada, namun tingkat error hanya satu. Kondisi ini sekaligus mewakili kondisi tipe jalan lain yang menghasilkan error lebih tinggi pada saat hujan. Pada pengujian Jalan Ringroad jalur cepat, terdapat 2 macam,. Pengujian jalur cepat 1 adalah pengujian pendeteksian dengan setting tidak ada kendaraaan searah yang tepat ada didepan pendeteksi (sensor). Sedangkan pada jalur cepat 2 adalah pengujian pendeteksian dengan setting ada kendaraan searah pada jarak yang dekat dengan pendeteksi (sensor). Pada pengujian jalur cepat 1, berdasarkan Tabel 6.22 didapatkan nilai error untuk kondisi hujan lebih besar dengan tingkat threshold (40) yang lebih tinggi daripada pengujian pada jalan yang cerah. Pada pengujian jalur cepat 2, untuk mengetahui tingkat pantulan cahaya dari objek kendaraan yang ada di depan . Pada keadaan hujan didapatkan nilai pantulan threshold yang tinggi (50), dibandingkan tingkat pantulan yang lebih rendah (threshold 40). Namun error pada kondisi cerah lebih tinggi, hal ini akibat jarak dengan objek di depan lebih dekat, serta warna dasar objek adalah putih, sehingga nilai error besar akibat exposure tinggi (87,5%). Pada pengujian di Jalan Kaliurang dari Tabel 6.22 didapatkan nilai thresholding terbaik pada kondisi cerah lebih tinggi daripada kondisi hujan. Hal ini disebabkan oleh 2 kemungkan. Kemungkinan pertama tingkat pencahayaan pada sampel cerah lebih besar daripada sampel hujan. Hal ini dikarenakan tipe Jalan Kaliurang adalah jalan yang ramai, tidak terlalu lebar jalannya, sementara pada pinggir jalan dipenuhi pusat keramaian dengan tingkat cahaya yang tinggi. Kemungkinan kedua ROI keduanya berbeda akibat tingkat kemiringan yang berbeda, karena Jalan Kaliurang diatas kilometer 5 cenderung menanjak,.

Sehingga ROI tidak sesuai dengan medan. ROI adalah batas pendeteksian, sehingga intensitas cahaya yang diterima pasti berpengaruh. Pada kondisi pendeteksian medan jalan tak beraspal (lapangan berumput) didapatkan nilai error yang lebih besar pada saat lampu pendek, dibandingkan dengan pada saat lampu panjang. Pada setting lampu pendek didapatkan

thresholding terbaik adalah threshold 50, pada setting lampu panjang thresholding

121

terbaik adalah threshold 40. Keduanya menjadi threshold terbaik asalkan objek yang terdeteksi adalah mobil yang mempunyai cahay a lampu yang kuat hingga dapat terdeteksi dengan baik. Namun jika terdapat kendaraan motor, maka lebih baik kembali ke parameter awal, sehingga pada kondisi medan tak beraspa l sistem akan selalu menggunakan lampu pendek. 6.3.2 Hasil pengujian pada lampu belakang kendaraan Pada sub bab 6.3.2, diterangkan tentang ringkasan hasil pengujian pada lampu belakang kendaraan yang dijelaskan pada sub bab 6.2.Pada Tabel 6.23 ditampilkan tentang hasil pengujian lampu belakang kendaraan. Yang ditampilkan pada tabel hanyalah pada sampel dimana terdapat objek lampu belakang

kendaraan. Jadi pada sampel yang tidak terdapat objek kendaraan yang melaju searah (terdeteksi lampu belakang), maka tidak dimuat dalam tabel karena

hasilnya adalah nol. Berikut ringkasan hasil pengujian pada Tabel 6.23. Tabel 6.23 Hasil pengujian lampu belakang kendaraan Jalan T 10 Merah (Deteksi di Depan kendaraan) B S 1 4 %B T 20 Merah (Peringatan Hati- hati) B 1 S 3 % B T 30 (Peringatan REM) B 0 S 2 % B

Jalan Magelang Cerah Jalan Kaliurang Cerah Jalan Kaliurang Hujan Jalan Ringroad jalur cepat Hujan 1 Jalan Ringroad jalur cepat Cerah 1

20

25

>5

<17

10

25

29

100

16

100

100

122

Tabel 6.23 Hasil pengujian lampu belakang kendaraan (lanjutan) Jalan T 10 (Deteksi di depan ada kendaraan B S 0 0 %B T 20 (Peringatan Hati- hati) B 0 0 0 S 0 1 %B T 30 (Peringatan %B

B 0

S 100

Jalan Ringroad jalur cepat Hujan 2 Jalan Ringroad jalur cepat Cerah 2 Jalan Ringroad jalur lambat Cerah Jalan Ringroad jalur lambat Hujan Jalan Panggung Sari (hujan)

>8

10

40

75

20

Pengujian lampu belakang kendaraan berbeda dengan pengujian lampu depan kendaraan. Pada pengujian lampu belakang kendaraan, terdapat 3 kelas, yakni deteksi depan kendaraan (T10), deteksi hati- hati(T20), dan deteksi rem(T30). Deteksi depan kendaraan untuk mengintepretasi kendaraan didepan dengan laju searah , deteksi hati- hati untuk mengintepretasi kendaraan didepan dengan laju searah tidak sedang mengerem dengan jarak cukup dekat <40 meter. Sedangkan deteksi rem adalah untuk mengintepretasi kendaraan didepan yang sedang mengerem dengan jarak <30 meter. Pada Tabel 6.23 dapat dilihat bahwa masih banyak kesalahan hasil deteksi pada lampu belakang kendaraan, terlebih dalam medan yang ramai atau hujan

123

sehingga banyak pantulan cahaya. Keadaan ini dapat dilihat pada jalan-jalan yang dijadikan sampel pada Tabel 6.23. Semakin ramai jalan, maka semakin besar error nya, salah satunya pada Jalan Ringroad jalur cepat baik pada saat hujan atau cerah lebih banyak error dibanding Jalan Magelang saat cerah.. Kondisi hujan dan warna cat merah di sekitar wilayah deteksi juga memperbanyak error. Kondisi error akibat cat merah diwakili oleh pengujian pada Jalan Lempong Sari saat hujan. Pada wilayah pendeteksian terdapat tembok dengan cat merah yang terdeteksi sebagai deteksi depan (T10). Error pada saat hujan dapat dilihat pada pengujian pada Jalan Ringroad jalur cepat 1(hujan) lebih banyak error daripada pengujian pada Jalan Ringroad jalur cepat 1 (cerah). Kemudian semakin dekat objek yang mengerem, dan semakin kuat intensitas cahaya lampu belakang saat rem, maka semakin banyak error nya. Kondisi ini

diwakili oleh pengujian pada Jalan Ringroad jalur cepat 2 (cerah) dan Jalan Ringroad jalur cepat 2 (hujan). Objek pada jalur cepat 2 (cerah) adalah mobil yang sedang mengerem pada jarak sangat dekat, sedangkan objek pada jalur cepat 2 (hujan) adalah bus dengan lampu belakang yang sedikit redup, dengan jarak yang sedikit lebih jauh.

6.4 Respon Aktuator (Arduino) Arduino Mega 2560 mampu menggerakkan servo kanan kiri, dan lampu kanan kiri, secara bersamaan. Dengan melakukan parsing data 4 karakter ASCII, Arduino Mega mampu mengeksekusi 4 task sekaligus. Namun ada perlu beberapa hal yang perlu digaris bawahi dari sistem single loop. Kelemahan tersebut adalah . a. Delay terlalu singkat akhirnya gerakan tidak halus. b. Delay terlalu lama, akhirnya gerakan servo terlambat dari perintah yang ada di video sekuensial. Maka pada penelitian selanjutnya disarankan penambahan RTOS. RTOS yang mampu menyempurnakan pemodelan sistem ini. Sistem RTOS ini harus mampumenjalankan counter servo dan counter sistem operasi. Secara teori,

counter harus terpecah menjadi 2 yakni counter RTOS dan counter servo. Jika RTOS tersebut mampu, maka keuntungan yang didapat adalah

124

a. Counter sistem operasi dengan counter task akan terpisah. b. Tiap task punya loop tersendiri, sehingga eksekusi dan delay dari tiap task tidak akan berpengaruh pada task lain. c. Sistem level prioritas dapat berjalain baik, karena didukung oleh tick counting dari RTOS. Untuk mendukung kualitas gerak servo, pada penelitian selanjutnya dianjurkan diteliti tentang kontrol digital seperti PID, fuzzy logic, dll.

BAB VII PENUTUP


7.1 Kesimpulan Dari penelitian yang dilakukan, didapatkan kesimpulan sebagai berikut : 1. Hasil penelitian menunjukkan sistem dapat mengatur lampu dan peringatan secara otomatis, sesuai dengan lingkungan di Indonesia, khususnya di Kabupaten Sleman. 2. Dengan fluktuasi tingkat intensitas cahaya lampu depan dan belakang kendaraan, terutama pada motor, maka digunakan beberapa level thresholding yang rendah (10, 20, 30), tingkat exposure tinggi (87,5%), dan filter smoothing yang terbatas (ukuran 9x9) untuk kemungkinan pendeteksian objek pada intensitas cahaya rendah. 3. Hasil pengujian sistem pada daerah yang ramai (terang) didapatkan banyak error, maka perkiraan jarak objek dilakukan dengan mengambil parameter objek terdeteksi pada threshold yang paling tinggi. 4. Hasil pengujian menunjukkan bahwa tingkat keberhasilan implementasi sistem pada daerah yang gelap lebih tinggi tingkat kebenarannya. 5. Hasil pengujian pada jalan negara dengan sampel Jalan Magelang didapatkan nilai kebenaran terbaik pada threshold 10 (saat cerah) dan threshold 30 (saat hujan). 6. Hasil pengujian pada jalan provinsi dengan sampel Jalan Kaliurang didapatkan nilai kebenaran terbaik pada threshold 30 (saat hujan) dan threshold 40 (saat cerah). 7. Hasil pengujian pada jalan kabupaten dengan sampel Jalan Damai saat cerah nilai terbaik pada threshold 30, 40, 50. Sedangkan pada Jalan Kamdanen saat hujan didapatkan nilai kebenaran terbaik pada threshold 30. 8. Hasil pengujian pada jalan desa dengan sampel Jalan Panggung Sari pada saat hujan didapatkan nilai kebenaran terbaik pada threshold 40, sedangkan pada sampel Jalan Lempong Sari pada saat kering didapat nilai kebenaran terbaik pada threshold 20, 30.
125

126

9. Hasil pemodelan intepretasi kontrol lampu depan mobil otomatis dapat berjalan cukup baik, sementara intepretasi peringatan berdasarkan deteksi lampu belakang membutuhkan tambahan parameter atau sensor lain.

7.2 Saran Beberapa saran dari penulis untuk pengembangan sistem kontrol lampu depan otomatis dan peringatan antara lain : 1. Sistem ini membutuhkan perangkat dengan tingkat kepresisian tinggi. Dibutukan perangkat dengan nilai kesalahan kecil untuk menempatkan kamera pada sudut yang tepat tegak lurus dan tinggi yang tepat. Karena tinggi vertikal centroid menjadi parameter penting untuk mendapatkan estimasi jarak berdasarkan tinggi centroid dalam koordinat vertikal citra. 2. Disarankan menggunakan 2 buah kamera, 1 kamera untuk deteksi cahaya lampu depan kendaraan berbasis nilai exposure tinggi, dan deteksi cahaya lampu belakang kendaraan berbasis nilai exposure rendah. Sehingga lebih meminimalisir error pendeteksian objek kendaraan, terlebih di tempat yang ramai. 3. Untuk aktuasi sistem, pada penelitian selanjutnya dianjurkan meneliti tentang RTOS. Sistem RTOS yang dibutuhkan harus dapat memecah counting timer servo dan counting timer sistem operasi, jika menggunakan servo. Maka

setiap aktuasi mempunyai kendali dan delay yang indepentdent , sehingga tiap task tidak saling mengganggu. 4. Perlu diteliti tentang batas wilayah pemantauan kamera, sebab kamera harus dapat menggantikan peran mata pengemudi untuk mengatur lampu. Sehingga posisi dan titik blind spot harus tepat . Atau ada sensor lain yang mendukung. 5. Perlu diteliti tentang kecepatan respon kendali lampu. Aktuasi kendali akan lebih sempurna jika ditambahkan Kontrol Digital, seperti PID, fuzzy, dan teknologi lain, untuk kepresisian, dan efektivitas gerak.

127

6. Disarankan menggunakan teknologi Stereo Vision Camera jika sudah mampu mendeteksi jarak yang jauh. Karena teknologi kamera 3D saat ini hanya mampu mendeteksi objek pada jarak sangat terbatas. 7. Disarankan untuk bekerja sama dengan pihak pemerintah, khususnya instansi terkait regulasi perhubungan darat untuk menyempurnakan instrumentasi.

128

DAFTAR PUSTAKA
Alcantarilla, P,F., Bergasa,L.M., Jimenez,P., Sotelo,M.A., Parra,I., Fernandez, D., 2008. Night Time Vehicle Detection for Driving Assistance LightBeam Controller. Spain Research Department . Alcantarilla, P,F., Bergasa, L.M., Jimenez, P., Sotelo, M.A., Parra, I. 2011. Automatic Light Beam Controller for driver asistance. Proc. Machine Vision
and Applications DOI 10.1007/s00138-011-0327-. Springerlink.

Bradski dan Kaehler, 2008, Learning OpenCV, OReally Publication. New York . Destefani, J. 2010. Microcomponents save lives in accidents and help keep cars out of danger. Disadur dari http://www.micromanufacturing.com/ content/market-report-safety-patrol ,diakses pada tanggal 14 September 2012. Gonzalez, R.C., and Woods, R.E., 2008, Digital Image Processing Third Edition, Pearson Prenctice Hall, New Jearsy. Henry, T, 2011, Night Vision - seeing is believing, disadur dari http://www.autoliv.com/ProductsAndInnovations/ActiveSafetySystem s/Page /NightVisionSystem s.aspx, diakses pada tanggal 14 September 2012. Hu, Y,H., 2002. Introduction to Digital Image Processing , Dept. of Electrical and Computer Engineering, ECE533 Digital Image Processing Univ of Wisconsin. Huaman, A., 2012. OpenCV Reference Manual, disadur dari www.opencv.org/download/manual/OpenCV_Manual.pdf, diakses pada 14 September 2012. Hyundai , 2010. After Sales Training: Hyundai Electrical System . Hyundai Indonesia, disadur dari http://hyundaimobil-ass.com/programtraining/download/Step%202%20Electrical%20Auto%20lighting.pdf. diakses pada tanggal 9 September 2012. Malley, R.O., Jones, E., Glavin, M., 2010. Rear-Lamp Vehicle Detection and Tracking in Low-Exposure Color Video for Night Conditions. Proc. IEEE Transactions on Intelligent Transportation System, Vol. 11, No. 2 . Munir, R., 2004. Kontur dan Representasinya. Dept. Sekolah Tinggi Elektro dan Informatika, Institut Teknologi Bandung. Disadur dari http://informatika.stei.itb.ac.id/~rinaldi.munir/Buku/Pengolahan%20Citra%2 0Digital/Bab-9_Kontur%20dan%20Representasinya.pdf. Diakses pada 24 Oktober 2012.

129

OpenCV. 2012. OpenCV Documents. OpenCV It Seez, disadur dari http://docs.opencv.org/doc/, diakses tanggal 3 Oktober 2012. Pedersen, S.J.K., 2007 Circular Hough Transform . Aalborg Universitym Vision, Graphics and Interactive System Dept. Disadur dari http://www.cvmt.dk/education/teaching/e07/MED3/IP/Simon_Pedersen_Cir cularHoughTransform.pdf. Diakses tanggal 18 September 2012. Sharma,N., Dixit,D. ., 2012. Intelligent Smart Approach to Design an Automatic Featured Car. Institute of Computer Science and Information Engineering National Central University, disadur dari http://www.vsrdjournals.com/EEC/ Issue/2012_04_Apr/Web/3_Navneet_Sharma_318_Research_Article_Apr_2 012.html, diakses pada tanggal 18 September 2012.

130

LAMPIRAN DATA KALIBRASI L1 L1.1 Kisaran Warna Lampu Kendaraaan Kisaran warna lampu belakang kendaraan pada format HSV Tabel L1.1 Kisaran warna lampu belakang kendaraan
Mobil h 203 227 232 170 225 180 231 226 223 239 250 229 232 234 177 210 220 231 178 206 180 234 rem s 240 235 240 240 160 240 198 193 163 220 240 233 171 170 240 240 240 173 240 240 240 191 v 233 194 176 236 234 238 144 192 192 172 153 149 121 104 237 234 229 114 237 233 235 92 tidak rem h s v 176 200 234 230 131 104 231 150 97 231 139 101 222 197 219 228 171 154 239 170 101 230 240 236 180 240 240 230 121 106 224 240 231 231 139 101 200 240 238 232 202 41 233 176 32 230 223 187 180 240 238 198 228 229 172 198 229 233 205 65 234 168 47 232 190 40 h 180 200 239 235 234 213 230 230 213 200 232 190 172 231 235 233 235 215 228 180 213 230 rem s 240 240 64 208 223 240 173 170 240 240 150 240 240 215 221 240 214 240 184 240 250 240 v 236 236 113 35 55 233 88 90 233 238 119 233 240 186 95 59 96 231 88 235 233 65 Motor tidak rem h s v 229 240 181 230 240 176 231 146 96 230 240 176 231 154 141 236 236 54 236 228 58 231 52 140 231 140 102 236 236 58 232 50 87 231 149 96 233 234 52 231 52 102 232 157 83 231 215 240 235 221 95 233 240 59 235 214 96 239 240 34 232 190 68 235 240 30

Nilai terendah Nilai tertinggi

131

L1.2

Kisaran warna lampu depan kendaraan pada format HSV Tabel L1.2 Kisaran warna lampu depan kendaraan
Mobil Dim S 108 155 153 0 112 0 0 110 119 111 112 119 72 155 63 45 118 117 117 113 116 Normal s 0 103 81 110 110 139 0 155 61 141 0 70 152 69 60 55 96 107 138 155 73 Dim s 0 119 115 115 0 75 107 103 112 101 143 112 153 211 99 72 98 0 109 76 154 Motor Normal s v 0 38 153 64 48 103 65 104 52 0 52 122 55 0 56 0 48 111 65 65 33

h 40 18 15 60 45 160 160 43 40 44 42 20 18 114 12 13 31 22 23 19 16

v 233 199 100 240 235 240 240 232 239 240 216 216 116 178 115 173 210 207 200 220 228

h 164 27 10 70 40 5 60 60 12 8 166 13 11 5 5 9 0 6 85 19 23

v 240 200 134 237 232 215 255 254 126 216 240 216 152 163 151 100 198 167 224 228 127

60 12 16 15 70 12 12 76 20 17 13 17 9 36 11 13 12 74 21 14 13

v 240 152 180 201 240 130 186 240 202 193 133 192 173 218 143 163 221 240 196 180 169

h 75 4 31 2 1 170 12 18 6 60 3 76 4 60 10 50 11 51 12 1 67

239 159 236 182 149 240 138 236 139 240 126 198 122 240 110 234 104 239 138 150 168

Nilai terendah Nilai tertinggi

132

L1.3

Kisaran warna lampu depan mobil khusus jenis Lampu HID

Tabel L1.3

Kisaran warna lampu depan kendaraan ( khusus Lampu HID )


Normal (HID) s v 0 0 140 120 130 0 140 140 0 0 0 0 0 0 0 0 0 140 129 135 140 140 240 240 239 238 238 240 238 232 240 240 240 240 240 240 240 240 240 239 220 230 238 239

h 160 160 40 40 120 160 120 120 160 160 160 160 160 160 160 160 160 120 131 130 120 40 Nilai terendah Nilai tertinggi

133

L2

Variasi Nilai Window Smooth

Setting Threshold 20, jarak P.P 50, Radius 3-40 Tabel L.2.1
Resolusi Window

Kisaran warna lampu depan kendaraan


Jarak maksimum, deteksi motor normal (meter)

Pantulan cahaya rumput

7x7 9x9 11x11 13x13 15x15

5 4 3 3 2

10 10 <10 <10 <10

<10 artinya adalah mungkin dapat terdeteksi pada jarak < 10meter, karena sampel data paling kecil 10 meter.

134

L3.

Variasi Nilai Jarak Antar Titik Tengah Centroid (Setting Exposure =100%, Threshold=20-255. Radius= 3-40)

L3.1

Variasi nilai jarak antar pusat tengah lingkaran pada lampu depan mobil Tabel L3.1 Jarak antar titik pusat jarak p.p=30, lampu depan mobil

jarak koord Y1 119 119 null 123 119 115 119

Lampu Pendek rad 11 11 null 13 15 17 14 koord Y2 null null null null null null 109 rad null null null null null null 20 error 1 1 2 2 2 3 4 18 8 koord Y1 125 129 125 127 127 119 125

Lampu Jauh rad 13 13 13 13 15 15 25 koord Y2 null null null null null null null rad null null null null null null null error 2 7 10 9 5 10 16 19 21

90 80 70 60 50 40 30 20 10

tidak terbaca tidak terbaca

tidak terbaca tidak terbaca

tidak terbaca tidak terbaca

tidak terbaca tidak terbaca

Tabel L3.2 Jarak antar titik pusat jarak p.p=40, lampu depan mobil
Lampu Pendek jarak 90 80 70 60 50 40 30 20 10 koord Y1 119 119 null 123 119 113 119 117 95 rad 11 11 null 13 12 17 14 17 22 koord Y2 null null null null null null null null 95 rad null null null null null null null null 22 error 0 0 2 0 1 3 2 10 4 Lampu Jauh koord koord rad rad Y1 Y2 127 13 null null 123 18 null null 129 25 null null 127 19 null null 127 23 null null 109 13 null null tidak terbaca null null tidak terbaca null null tidak terbaca tidak terbaca

error 1 4 5 5 3 6 12 16 15

135

Tabel L3.3 Jarak antar titik pusat jarak p.p=50, lampu depan mobil
jarak koord Y1 90 80 70 60 50 40 30 20 10 119 119 null 123 119 115 119 111 95 Lampu Pendek koord rad Y2 11 null 11 null null null 13 null 12 null 17 null 14 null 17 null 12 95 koord rad Y1 127 13 120 19 129 25 127 25 127 23 117 20 121 30 tidak terbaca 99 12 Lampu Jauh koord Y2 null null null null null null null null 99

rad null null null null null null null null 22

error 0 0 1 0 0 2 2 5 3

rad null null null null null null null null 17

error 0 4 5 3 2 4 7 10 9

Tabel L3.4 Jarak antar titik pusat jarak p.p=60, lampu depan mobil
jarak koord Y1 90 80 70 60 50 40 30 20 10 119 119 null 123 119 115 119 117 95 Lampu Pendek koord rad Y2 11 null 11 null null null 13 null 12 null 17 null 14 null 11 null 12 95 koord Y1 127 127 129 127 127 117 107 null 99 Lampu Jauh koord Y2 null null null null null null null null 109

rad null null null null null null null null 22

error 0 0 1 0 0 0 0 4 0

rad 13 19 25 25 23 20 18 null 21

rad null null null null null null null null 29

error 0 2 2 3 1 2 4 8 7

Tabel L3.5 Jarak antar titik pusat jarak p.p=70, lampu depan mobil
jarak koord Y1 90 80 70 60 50 40 30 20 10 119 119 null 123 119 115 119 111 95 Lampu Pendek koord rad Y2 11 null 11 null null null 13 null 12 null 17 null 14 null 17 null 12 null koord Y1 127 127 125 127 127 117 null null 99 Lampu Jauh koord Y2 null null null null null null null null null

rad null null null null null null null null null

error 0 0 1 0 0 0 0 3 3

rad 13 19 25 25 23 20 null null 20

rad null null null null null null null null null

error 0 2 2 3 0 2 5 9 6

136

L3.2 Variasi nilai jarak antar pusat tengah lingkaran lampu belakang mobil setting exposure =100%, canny threshold=10-255. radius= 3-40 Tabel L3.6 Jarak antar titik pusat jarak p.p=30, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 Lampu Pendek koord koord Y1 rad rad Y2 null null null null null null null null 131 6 null null 123 4 null null 123 4 null null 121 4 null null 119 4 null null 115 4 113 4 tidak terbaca tidak terbaca koord rad Y1 123 4 127 4 123 6 123 3 123 5 121 6 119 3 115 4 tidak terbaca Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null 115 4 tidak terbaca

error 0 0 0 0 0 0 3 0 8

error 1 1 2 2 3 4 5 3 16

Tabel L3.7 Jarak antar titik pusat jarak p.p=40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 Lampu Pendek koord rad rad Y2 null null null null null null 6 null null 4 null null 4 null null 4 null null 4 null null 4 105 8 7 105 4 koord rad Y1 123 4 127 4 123 6 123 3 123 5 121 6 119 3 115 4 tidak terbaca Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null 115 4 tidak terbaca

koord Y1 null null 131 123 123 121 119 113 103

error 0 0 0 0 0 0 1 0 0

error 0 0 0 0 1 2 2 1 7

Tabel L3.8 Jarak antar titik pusat jarak p.p=50, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 Lampu Pendek koord rad rad Y2 null null null null null null 6 null null 4 null null 4 null null 4 null null 4 null null 4 null null 4 103 7 koord Y1 123 127 123 123 123 121 119 113 103 Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null null null tidak terbaca

koord Y1 null null 131 123 123 121 119 113 105

error 0 0 0 0 0 0 1 1 0

rad 4 4 6 3 5 6 3 4 14

error 0 0 0 0 0 0 0 1 7

137

Tabel L3.9 Jarak antar titik pusat jarak p.p=60, lampu belakang mobil
jarak koord Y1 90 80 70 60 50 40 30 20 10 null null 131 123 123 121 119 113 103 Lampu Pendek koord rad rad Y2 null null null null null null 6 null null 4 null null 4 null null 4 null null 4 null null 4 null null 5 105 4 koord Y1 123 127 123 123 123 121 119 113 109 Lampu Jauh koord Y2 null null null null null null null null null

error 0 0 0 0 0 0 0 0 0

rad 4 4 6 3 5 6 3 4 4

rad null null null null null null null null null

error 0 0 0 0 0 0 0 1 5

Tabel L3.10 Jarak antar titik pusat jarak p.p=70, lampu belakang mobil
jarak koord Y1 90 80 70 60 50 40 30 20 10 null null 131 123 123 121 119 113 95 Lampu Pendek koord rad rad Y2 null null null null null 6 null null 4 null null 4 null null 4 null null 4 null null 4 null null 9 103 7 koord Y1 123 127 123 123 123 121 119 113 93 Lampu Jauh koord Y2 null null null null null null null null null

error 0 0 0 0 0 0 0 0 0

rad 4 4 6 3 5 6 3 4 14

rad null null null null null null null null null

error 0 0 0 0 0 0 0 0 5

Kesimpulan dari Tabel Lampiran 1 tentang variasi nilai jarak antar titik pusat lingkaran untuk nilai pendeteksian. Maka didapatkan nilai terbaik untuk lampu de pan adalah pada nilai 50 pixels. Dan nilai terbaik untuk lampu belakang mobil adalah pada nilai 40 pixels.

138

L4. Variasi nilai Exposure, (Setting Canny Threshold=20-255. Radius= 3-40) L4.1 Lampu Depan Mobil jarak p.p=50 Tabel L4.1 Nilai exposure 100, jarak p.p 50 , lampu depan mobil
jarak koord Y1 90 80 70 60 50 40 30 20 10 119 119 null 123 119 115 119 111 95 Lampu Pendek koord rad Y2 11 null 11 null null null 13 null 12 null 17 null 14 null 17 null 12 95 koord rad Y1 127 13 120 19 129 25 127 25 127 23 117 20 121 30 tidak terbaca 99 12 Lampu Jauh koord Y2 null null null null null null null null 99

rad null null null null null null null null 22

error 0 0 1 0 0 2 2 5 3

rad null null null null null null null null 17

error 0 4 5 3 2 4 7 10 9

Tabel L4.2 Nilai exposure 87,5, jarak p.p 50 , lampu depan mobil
jarak koord Y1 90 80 70 60 50 40 30 20 10 null null null 121 null null 117 113 105 Lampu Pendek koord Rad Y2 null null null null null null 11 null null null null null 14 null 10 null 12 105 koord Y1 135 125 123 121 121 117 119 115 101 Lampu Jauh koord Y2 null null null null null null null null 101

rad null null null null null null null null 17

error 0 0 0 0 2 1 0 0 0

rad 17 13 12 15 12 38 13 12 11

rad null null null null null null null null 11

error 0 0 0 3 2 2 4 2 3

139

Tabel L4.3 Nilai exposure 75, jarak p.p 50 , lampu depan mobil
jarak koord Y1 90 80 70 60 50 40 30 20 10 119 129 127 125 null null 115 117 97 Lampu Pendek koord Rad Y2 11 null 10 null 11 null 10 null Null null Null null 11 null 10 null 10 93 koord Y1 125 123 129 129 125 113 115 115 103 Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null null null 103 10

rad null null null null null null null null 15

error 0 0 0 0 1 0 0 0 0

rad 13 19 13 13 11 15 11 10 10

error 0 0 0 0 0 0 0 0 0

Tabel L4.4
jarak koord Y1 90 80 70 60 50 40 30 20 10 null 127 null null null null null null 99

Nilai exposure 62,5, jarak p.p 50 , lampu depan mobil


Lampu Pendek Rad Null 10 Null null null null null null 10 koord Y2 null null null null null null null null null rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0 koord Y1 null null 121 127 123 125 123 115 95 rad null null 12 10 11 11 11 16 12 Lampu Jauh koord Y2 null null null null null null null null 97 rad null null null null null null null null 10 error 0 0 0 0 0 0 0 0 0

Tabel L4.5
jarak koord Y1 90 80 70 60 50 40 30 20 10 null null null null null null null null 93

Nilai exposure 50, jarak p.p 50 , lampu depan mobil


koord Y1 127 127 null null null null 117 115 95 Lampu Jauh koord Y2 null null null null null null null null null

Lampu Pendek koord Rad Y2 Null null Null null Null null Null null Null null Null null Null null Null null 11 null

rad null null null null null null null null null

error 0 0 0 0 0 0 0 0 0

rad 11 15 null null null null 10 13 10

rad null null null null null null null null null

error 0 0 2 2 1 2 0 0 0

140

L4.2 Lampu depan motor jarak p.p=50

Tabel L4.6 Nilai exposure 100, jarak p.p 50 , lampu depan motor
Jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 Null 127 129 125 125 123 121 117 107 Pendek rad null 11 13 11 10 12 10 20 14 error 0 0 0 0 0 0 0 0 0 koord Y1 127 127 125 127 125 121 121 123 107 Lampu Jauh rad 11 11 10 14 12 21 12 14 14 error 0 0 0 0 0 0 0 2 0

Tabel L4.7 Nilai exposure 87,5, jarak p.p 50 , lampu depan motor
jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 null null null null null null null null 111 Pendek rad null null null null null null null null 10 error 0 0 0 0 0 0 0 0 0 koord Y1 null null 125 125 125 121 121 119 109 Lampu Jauh rad null null 11 10 11 15 10 10 11 error 0 0 0 0 0 0 0 0 0

Tabel L4.8
jarak 90 80 70 60 50 40 30 20 10

Nilai exposure 75, jarak p.p 50 , lampu depan motor


Pendek rad null null null null null null null 11 10 error 0 0 0 0 0 0 0 0 0 koord Y1 null null null 125 127 null 115 119 105 Lampu Jauh rad null null null 11 11 null 10 10 21 error 0 0 0 0 0 0 0 0 0

Lampu koord Y1 Null Null Null Null Null Null Null 121 109

141

Tabel L4.9 Nilai exposure 62,5, jarak p.p 50 , lampu depan motor
jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 null null null null null null null null null Pendek rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0 koord Y1 null null null null null null null null 109 Lampu Jauh rad null null null null null null null null 11 error 0 0 0 0 0 0 0 0 0

Tabel L4.10 Nilai exposure 50, jarak p.p 50 , lampu depan motor
jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 null null null null null null null null null Pendek rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0 koord Y1 null null null null null null null null null Lampu Jauh rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0

L4.3.

Lampu belakang mobil, jarak p.p=40

Tabel L4.11 Nilai exposure 100, jarak p.p 40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 Normal koord Y2 null null null null null null null 105 105 Rem koord Y2 null null null null null null null 115 tdk trbaca

koord Y1 null null 131 123 123 121 119 113 103

rad null null 6 4 4 4 4 4 7

rad null null null null null null null 8 4

error 0 0 0 0 0 0 1 0 0

koord Y1 123 127 123 123 123 121 119 115 tdk trbaca

rad 4 4 6 3 5 6 3 4

rad null null null null null null null 4

error 0 0 0 0 1 2 2 1 7

142

Tabel L4.12 Nilai exposure 87,5, jarak p.p 40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null 117 133 null 119 113 101 Normal koord Y2 null null null null null null null 113 103 koord Y1 127 125 125 123 123 121 119 113 99 Rem koord Y2 null null null null null null null 113 99

rad null null null 9 12 null 3 4 4

rad null null null null null null null 4 4

error 0 0 0 0 0 0 0 0 0

rad 4 3 3 4 6 4 4 4 4

rad null null null null null null null 4 4

error 0 1 0 0 1 2 2 0 0

Tabel L4.13 Nilai exposure 75, jarak p.p 40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 123 null 119 133 127 null 119 113 97 Normal koord Y2 null null null null null null null null 99 koord Y1 127 125 125 125 123 121 119 115 97 Rem koord Y2 null null null null null null null 115 97

rad 6 null 9 11 7 null 3 4 4

rad null null null null null null null null 4

error 0 0 0 0 0 0 0 0 0

rad 3 3 3 4 4 4 4 4 3

rad null null null null null null null 4 4

error 0 0 0 0 0 0 0 0 0

Tabel L4.14 Nilai exposure 62.5, jarak p.p 40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null null null Normal koord Y2 null null null null null null null null null koord Y1 null null 119 null null 121 115 113 99 Rem koord Y2 null null null null null null null null 97

rad null null null null null null null null null

rad null null null null null null null null null

error 0 0 0 0 0 0 0 0 0

rad null null 6 null null 3 4 4 4

rad null null null null null null null null 4

error 0 0 0 0 0 0 0 0 0

143

Tabel L4.15 Nilai exposure 50, jarak p.p 40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null null null Normal koord Y2 null null null null null null null null null koord Y1 null null null 133 null null 117 113 99 Rem koord Y2 null null null null null null null 113 99

rad null null null null null null null null null

rad null null null null null null null null null

error 0 0 0 0 0 0 0 0 0

rad null null null 11 null null 4 4 4

rad null null null null null null null 4 3

error 0 0 0 0 0 0 0 0 0

L4.4

Lampu belakang motor, jarak p.p=40 Tabel L4.16 Nilai exposure 100 , jarak p.p 40, lampu belakang motor

jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null 119 97

Normal rad null null null null null null null 3 4

error 0 0 0 0 0 0 0 0 0

koord Y1 null null null null null 125 121 119 97

Rem rad null null null null null 4 3 4 4

error 0 0 0 0 0 0 0 0 0

Tabel L4.17 Nilai exposure 87,5 , jarak p.p 40, lampu belakang motor
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null 119 97 Normal rad null null null null null null null 4 4 error 0 0 0 0 0 0 0 0 0 koord Y1 null null null null null 125 121 119 97 Rem rad null null null null null 4 3 4 4 error 0 0 0 0 0 0 0 0 0

144

Tabel L4.18 Nilai exposure 75 , jarak p.p 40, lampu belakang motor
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null 119 null Normal rad null null null null null null null 3 null error 0 0 0 0 0 0 0 0 0 koord Y1 null null null null null null 123 119 97 Rem rad null null null null null null 4 4 4 error 0 0 0 0 0 0 0 0 0

Tabel L4.19 Nilai exposure 62,5 , jarak p.p 40, lampu belakang motor
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null null null Normal rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0 koord Y1 null null null null null null 123 117 101 Rem rad null null null null null null 4 5 4 error 0 0 0 0 0 0 0 0 0

Tabel L4.20 Nilai exposure 50 , jarak p.p 40, lampu belakang motor
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null null null Normal rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0 koord Y1 null null null null null null null null 101 Rem rad null null null null null null null null 4 error 0 0 0 0 0 0 0 0 0

145

L5. Variasi Exposure dan Variasi Thresholding L5.1. Variasi exposure dan variasi thresholding lampu depan mobil Tabel L5.1 Exposure 87,5% dan variasi thresholding
Jarak Mobil 90 80 70 60 50 40 30 20 10 Threshold 10 normal terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi dim terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 20 normal tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi dim terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 30 normal tidak tidak tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi dim terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 40 normal tidak tidak tidak tidak tidak tidak terdeteksi terdeteksi terdeteksi dim terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 50 normal tidak tidak tidak tidak tidak tidak tidak tidak terdeteksi dim terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi tidak tidak terdeteksi

146

Tabel L5.2 Exposure 75% dan variasi thresholding


Jarak Mobil 90 80 70 60 50 40 30 20 10 Threshold 10 normal terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi dim terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 20 normal tedeteksi tedeteksi tedeteksi tedeteksi tedeteksi tedeteksi tedeteksi tedeteksi tedeteksi dim terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 30 normal tidak tidak terdeteksi tidak tidak tidak tidak tidak terdeteksi dim tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 40 normal tidak tidak tidak tidak tidak tidak tidak tidak tidak dim tidak tidak tidak tidak tidak tidak tidak tidak tidak Threshold 50 normal tidak tidak tidak tidak tidak tidak tidak tidak tidak dim tidak tidak tidak tidak tidak tidak tidak tidak tidak

Tabel L5.3 Exposure 62,5% dan variasi thresholding


Jarak Mobil 90 80 70 60 50 40 30 20 10 Threshold 10 normal tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi dim terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 20 normal tidak tidak tidak tidak tidak tidak tidak tidak terdeteksi dim tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 30 Normal tidak tidak tidak tidak tidak tidak tidak tidak terdeteksi dim tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 40 normal tidak tidak tidak tidak tidak tidak tidak tidak tidak dim tidak tidak tidak tidak tidak tidak terdeteksi terdeteksi terdeteksi Threshold 50 normal tidak tidak tidak tidak tidak tidak tidak tidak tidak dim tidak tidak tidak tidak tidak tidak tidak terdeteksi tidak

147

Dari hasil kalibrasi lampu depan mobil pada lampiran L5 terlihat bahwa dengan exposure 87,5% dapat menghasilkan sifat linier antara besarnya threshold dengan jarak pada kalibrasi. Maka dari itu nilai exposure ini yang akan digunakan untuk setting kalibrasi parameter lainnya. L5.2 Exposure 87,5% dan variasi thresholding pada lampu depan motor Tabel L5.4 Exposure 87,5% dan variasi thresholding
Jarak Motor 90 80 70 60 50 40 30 20 10 Threshold 10 normal tidak tidak tidak tidak tidak tidak terdeteksi terdeteksi terdeteksi dim tidak tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 20 normal tidak tidak tidak tidak tidak tidak tidak tidak terdeteksi dim tidak tidak tidak tidak tidak tidak terdeteksi terdeteksi terdeteksi Threshold 30 normal tidak tidak terdeteksi tidak tidak tidak tidak tidak tidak dim tidak tidak tidak tidak tidak tidak tidak terdeteksi terdeteksi Threshold 40 normal tidak tidak tidak tidak tidak tidak tidak tidak tidak dim tidak tidak tidak tidak tidak tidak tidak tidak terdeteksi Threshold 50 normal tidak tidak tidak tidak tidak tidak tidak tidak tidak dim tidak tidak tidak tidak tidak tidak tidak tidak tidak

148

L5.3. Exposure 87,5% dengan variasi thresholding lampu belakang mobil. Tabel L5.5 Exposure 87,5% dan variasi thresholding
Jarak Mobil 90 80 70 60 50 40 30 20 10 Threshold 10 normal dim tidak terdeteksi tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi Threshold 15 normal dim tidak terdeteksi tidak terdeteksi tidak terdeteksi tidak terdeteksi tidak terdeteksi tidak terdeteksi tidak terdeteksi tidak terdeteksi terdeteksi terdeteksi Threshold 20 normal dim tidak terdeteksi tidak tidak tidak terdeteksi tidak terdeteksi tidak terdeteksi tidak terdeteksi tidak terdeteksi tidak tidak terdeteksi terdeteksi Threshold 25 normal dim tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak terdeteksi tidak tidak tidak tidak tidak terdeteksi Threshold 30 normal dim tidak tidak tidak tidak terdeteksi tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak terdeteksi tidak terdeteksi

L5.4

Exposure 87,5% dengan variasi thresholding lampu belakang motor. Tabel L5.6 Exposure 87,5% dan variasi thresholding
Threshold 10 normal tidak tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi dim tidak tidak terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi terdeteksi

Jarak Motor 90 80 70 60 50 40 30 20 10

Threshold 15 normal dim tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak Tidak tidak tidak

Threshold 20 normal dim tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak Tidak tidak tidak

Threshold 25 normal dim tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak Tidak tidak tidak

Threshold 30 normal dim tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak tidak

149

L6 Variasi Nilai Canny Threshold L6.1 Lampu depan mobil Tabel L6.1 Canny threshold 20-255, exposure 87,5%, jarak p.p 50, lampu depan mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null 121 null 127 117 113 101 Lampu Pendek koord rad rad Y2 null null null null null null null null null 11 null null null null null 25 null null 14 null null 10 null null 12 105 13 koord Y1 null 125 123 121 124 127 119 115 101 Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null null null 103 12

error 0 1 1 0 2 0 0 0 0

rad null 13 12 15 12 22 13 12 10

error 1 0 0 3 2 2 3 2 3

Tabel L6.2 Canny threshold 15-255, exposure 87,5%, jarak p.p 50, lampu depan mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null Null null 121 null null 117 113 105 Lampu Pendek koord rad rad Y2 10 null null null null null null null null 11 null null null null null null null null 17 null null 10 null null 17 105 12 koord Y1 null 125 123 121 121 117 119 115 101 Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null null null 101 11

error 1 2 0 0 2 2 0 2 1

rad null 13 12 15 12 34 13 16 11

error 1 1 1 5 4 4 5 5 3

150

Tabel L6.3 Canny threshold 10-255, exposure 87,5%, jarak p.p 50, lampu depan mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null 121 null null 117 113 105 Lampu Pendek koord rad rad Y2 null null null null null null null null null 11 null null null null null null null null 14 null null 10 null null 15 105 12 koord Y1 null 125 123 121 122 117 113 115 101 Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null null null 101 11

error 2 2 2 0 2 2 4 1 0

rad null 11 12 15 11 25 19 10 11

error 2 4 4 4 4 5 9 4 7

Tabel L6.4. Canny threshold 5-255, exposure 87,5%, jarak p.p 50, lampu depan mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null 121 null null 117 113 105 Lampu Pendek koord rad rad Y2 null null null null null null null null null 11 null null null null null null null null 14 null null 10 null null 17 105 12 koord Y1 null 125 123 121 121 117 119 112 101 Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null null null 103 10

error 2 3 2 2 3 3 3 4 4

rad null 13 12 15 12 18 13 15 11

error 6 4 6 8 5 6 10 10 7

Tabel L6.5 Canny threshold 1-255, exposure 87,5%, jarak p.p 50, lampu depan mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null 121 null null 117 113 105 Lampu Pendek koord rad rad Y2 null null null null null null null null null 11 null null null null null null null null 14 null null 10 null null 13 103 17 koord Y1 125 125 123 121 123 117 121 115 101 Lampu Jauh koord rad Y2 null null null null null null null null null null null null null null null null 101 10

error 2 4 4 3 5 5 5 4 6

rad 15 15 13 15 11 25 11 11 10

error 5 4 6 8 5 6 10 11 10

151

L6.2

Lampu depan motor Tabel L6.6. Canny threshold 20-255, exposure 87,5%, jarak p.p 50, lampu depan motor
jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 null null null null null null null null 111 Pendek rad null null null null null null null null 10 error 0 0 0 0 0 0 0 0 0 koord Y1 null null 125 125 125 121 121 119 109 Lampu Jauh rad null null 11 10 11 15 10 10 11 error 0 0 0 0 0 0 0 0 0

Tabel L6.7 Canny threshold 15-255, exposure 87,5%, jarak p.p 50, lampu depan motor
jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 null null null null 125 null null null 109 Pendek rad null null null null 10 null null null 11 error 1 0 0 0 0 1 0 0 0 Lampu Jauh koord Y1 rad 129 11 125 11 125 10 125 11 125 11 121 15 121 10 119 10 111 10 error 0 0 0 0 0 0 0 0 0

Tabel L6.8 Canny threshold 10-255, exposure 87,5%, jarak p.p 50, lampu depan motor
jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 null null null null 125 null null null 111 Pendek rad null null null null 10 null null null 10 error 0 0 0 0 0 1 1 0 0 koord Y1 null null 125 125 125 121 121 119 109 Lampu Jauh rad null null 11 10 11 15 10 10 11 error 1 1 0 0 0 1 0 0 2

152

Tabel L6.9 Canny threshold 5-255, exposure 87,5%, jarak p.p 50, lampu depan motor
jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 null null null null 125 null null null 111 Pendek rad null null null null 10 null null null 10 error 0 3 1 1 0 2 3 0 0 koord Y1 129 null 125 125 125 121 121 129 109 Lampu Jauh rad 11 null 11 10 11 15 10 10 10 error 0 1 2 0 0 2 0 0 4

Tabel L6.10 Canny threshold 1-255, exposure 87,5%, jarak p.p 50, lampu depan motor
jarak 90 80 70 60 50 40 30 20 10 Lampu koord Y1 null null null null 125 null null null 111 Pendek rad null null null null 10 null null null 10 error 3 3 4 2 1 3 8 4 2 koord Y1 129 null 125 125 125 121 121 119 109 Lampu Jauh rad 11 null 11 10 11 15 10 10 11 error 2 4 2 1 2 6 0 3 1

L6.3

Lampu belakang mobil

Tabel L6.11 Canny threshold 15-255, exposure 87,5%, jarak p.p 50, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null null 101 Normal koord Y2 null null null null null null null null null Rem rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0 koord Y1 127 121 125 123 123 121 119 113 99 rad 3 8 4 4 4 6 4 13 4 koord Y2 null null null null null null 119 null 99 rad null null null null null null 4 null 6 error 0 0 0 0 0 0 2 0 0

rad null null null null null null null null 4

153

Tabel L6.12 Canny threshold 13-255, exposure 87,5%, jarak p.p 40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null 125 null null 121 null null 101 Normal koord Y2 null null null null null null null null 97 Rem rad null null null null null null null null 4 error 0 0 0 0 0 0 0 0 0 koord Y1 127 121 125 123 123 121 119 113 99 rad 3 8 4 4 4 6 4 3 4 koord Y2 null null null null null null null null 99 rad null null null null null null null null 6 error 0 0 0 0 0 0 2 2 0

rad null null 2 null null 4 null null 4

Tabel L6.13 Canny threshold 10-255, exposure 87,5%, jarak p.p 40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null 125 123 123 121 null 113 101 Normal koord Y2 null null null null null null null null 105 Rem rad null null null null null null null null 2 error 0 0 0 0 0 0 0 0 0 koord Y1 127 125 125 123 123 121 113 113 99 rad 3 2 2 4 2 6 2 2 4 koord Y2 null null null null null null null 113 99 rad null null null null null null null 2 6 error 0 0 0 0 1 2 2 0 0

rad null null 2 2 2 2 null 2 4

Tabel L6.14 Canny threshold 8-255, exposure 87,5%, jarak p.p 40, lampu belakang mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null 125 123 123 121 121 113 101 Normal koord Y2 null null null null null null null null 101 koord Y1 127 null 125 123 null 121 119 113 99 Rem koord Y2 null null null null null null null 113 99

rad null null 2 2 2 2 1 2 4

rad null null null null null null null null 2

error 0 2 0 2 0 2 0 0 0

rad 3 null 2 4 null 6 2 2 4

rad null null null null null null null 2 6

error 0 2 1 3 3 2 2 1 0

154

Tabel L6.15 Canny threshold 5-255, exposure 87,5%, jarak p.p 40, lampu depan mobil
jarak 90 80 70 60 50 40 30 20 10 koord Y1 127 null 125 129 123 121 119 117 101 rad 3 null 2 2 2 2 1 2 4 Normal koord Y2 null null null null null null null 117 101 rad null null null null null null null 2 2 error 0 1 0 2 2 0 1 1 1 koord Y1 129 null 125 123 null null null 113 99 rad 2 null 2 2 null null null 2 4 Rem koord Y2 null null null null null null null 113 99 rad null null null null null null null 2 6 error 2 3 2 2 4 4 4 3 1

L6.4. Lampu Belakang Motor Tabel L6.16 Canny threshold 15-255, exposure 87,5%, jarak p.p 40, lampu belakang motor.
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null null null null Normal rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0 koord Y1 null null null null null null null null null Rem rad null null null null null null null null null error 0 0 0 0 0 0 0 0 0

Tabel L6.17 Canny threshold 13-255, exposure 87,5%, jarak p.p 40, lampu belakang motor.
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null 123 124 null Normal rad null null null null null null 2 4 null error 0 0 0 0 0 0 0 0 0 koord Y1 null null null 129 null 127 null 119 97 Rem rad null null null 13 null 4 null 2 3 error 1 0 0 0 0 0 0 0 0

155

Tabel L6.18 Canny threshold 10-255, exposure 87,5%, jarak p.p 40, lampu belakang motor
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null null null 123 119 97 Normal rad null null null null null null 2 4 2 error 0 0 0 0 0 0 0 0 0 koord Y1 131 null 129 null 129 127 123 119 97 Rem rad 2 null 3 null 2 4 2 2 3 error 0 0 0 0 0 0 0 0 0

Tabel L6.19 Canny threshold 8-255, exposure 87,5%, jarak p.p 40, lampu belakang motor
jarak 90 80 70 60 50 40 30 20 10 koord Y1 null null null null 129 null 123 119 97 Normal rad null null null null 2 null 2 4 2 error 0 0 0 0 0 0 0 0 0 koord Y1 131 131 129 null 129 125 123 119 97 Rem rad 2 2 3 null 1 2 2 2 3 error 0 0 0 0 0 0 0 0 0

Tabel L6.20 Canny threshold 5-255, exposure 87,5%, jarak p.p 40, lampu belakang motor
jarak 90 80 70 60 50 40 30 20 10 Normal koord Y1 rad null null 127 4 Null null 127 2 129 2 null null null null 119 4 97 2 Rem error 3 0 0 0 0 2 3 0 1 koord Y1 131 131 129 129 129 125 123 119 97 rad 2 2 3 3 1 2 3 2 3 error 0 0 0 0 1 1 0 0 1

156

L7 L7.1

Pengujian Akurasi Deteksi Koreksi lampu depan motor Tabel L7.1 Lampu pendek motor

motor jarak 90 80 70 60 50 40 30 20 10

terdeteksi REM normal tidak tidak tidak tidak tidak tidak tidak tidak tidak rem tidak tidak tidak tidak tidak tidak tidak tidak tidak

video lampu kiri posisi servo filamen 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh lampu kanan posisi servo filamen 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh,Dekat 1 Jauh,Dekat 2 Jauh,Dekat 2 Jauh,Dekat 2 Dekat

servo lampu kiri lampu kanan posisi servo filamen posisi sevo filamen 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Dekat 1 Jauh 1 Dekat 1 Jauh 1 Dekat 1 Jauh 1 Dekat 1 Jauh 1 Dekat

157

Tabel L7.2. Lampu jauh motor


Motor jarak 90 80 70 60 50 40 30 20 10 terdeteksi REM normal tidak tidak tidak tidak tidak tidak tidak tidak tidak rem iya iya iya iya iya iya iya iya iya video lampu kiri posisi servo filamen 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh lampu kanan posisi servo filamen 1 Jauh 1 Jauh 2,3,4 Dekat 2,3,4 Dekat 2,3,4 Dekat 2,3,4,5 Dekat 2,3,4,5 Dekat 2,3,4,5 Dekat 2,3,4,5 Dekat servo lampu kiri posisi servo filamen 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh 1 Jauh lampu kanan posisi sevo filamen 1 Jauh 1 Jauh 1 Dekat 1 Dekat 1 Dekat 1 Dekat 1 Dekat 1 Dekat 1 Dekat

L7.2

Koreksi lampu depan mobil Tabel L7.3. Lampu dekat mobil


video lampu kiri posisi servo 1 1 1 1 1 error error error error filamen Jauh Jauh Jauh Jauh Jauh error error error error lampu kanan posisi servo filamen 1 Jauh,Dekat 1 Dekat 2 Dekat 2 Dekat 2 Dekat error error error error error error error error lampu kiri posisi servo 1 1 1 1 1 error error error error servo filamen Jauh Jauh Jauh Jauh Jauh error error error error lampu kanan posisi sevo filamen 1 Dekat 2 Dekat 2 Dekat 2 Dekat 2 Dekat error error error error error error error error

mobil jarak 90 80 70 60 50 40 30 20 10

terdeteksi REM normal tidak tidak tidak tidak tidak error error error error rem tidak tidak tidak tidak tidak error error error error

158

Tabel L7.4. Lampu jauh mobil


mobil jarak 90 80 70 60 50 40 30 20 10 terdeteksi REM normal tidak tidak tidak tidak tidak error error error error rem iya iya iya iya iya error error error error video lampu kiri posisi servo filamen 1 Dekat 1 Dekat 1 Jauh 1 Jauh 1 Jauh error error error error error error error error lampu kanan posisi servo filamen 2 Dekat 3 Dekat 3 Dekat 4 Dekat 4 Dekat error error error error error error error error servo lampu kiri lampu kanan posisi servo posisi sevo filamen filamen 1 Jauh 2 Dekat 1 Jauh 3 Dekat 1 Jauh 3 Dekat 1 Jauh 4 Dekat 1 Jauh 4 Dekat error error error error error error error error error error error error error error error error

159

L7.3 Koreksi Lampu Belakang Motor.


Tabel L7.5 Lampu belakang motor
Jarak motor Posisi REM Ada kendaraan di depan Tidak terdeteksi Tidak terdeteksi Terdeteksi Terdeteksi Hati-hati Tidak terdeteksi Tidak terdeteksi Tidak terdeteksi Tidak terdeteksi rem Normal Normal Normal Normal video lampu kiri posisi servo 1 1 1 1 filamen Jauh Jauh Jauh Jauh lampu kanan posisi servo 1 1 1 1(normal), 4 (rem) 1(normal), 4 (rem) 1(normal), 4 (rem) 1 filamen Dekat Dekat Dekat Dekat lampu kiri posisi servo 1 1 1 1 filamen Jauh Jauh Jauh Jauh servo lampu kanan posisi sevo 1 1 1 1 filamen Dekat Dekat Dekat Dekat

90 80 70 60

50

Terdeteksi

Tidak terdeteksi

Normal

Jauh

Dekat

Dekat

Dekat

40

Terdeteksi

Tidak terdeteksi

Rem,Normal

1 1(normal), 4 (rem) 1(normal), 4 (rem) 1(normal), 5 (rem)

Jauh

Dekat

Dekat

Dekat

30

Terdeteksi

Normal

Rem

Dekat

Jauh

Dekat

Jauh

20

Terdeteksi

Normal

Rem

Dekat

Jauh

Dekat

Jauh

10

Terdeteksi

Normal

Rem

Dekat

Jauh

Dekat

Jauh

160

L7.4 Koreksi Lampu Belakang Mobil


Tabel L7.6. Lampu belakang mobil
mobil Deteksi Kendaraan error error error error error Terdeteksi Posisi REM normal error error error error error rem error error error error error video lampu kiri posisi servo error error error error error 1(normal), 4 (rem) 1(normal), 4 (rem) 30 Terdeteksi 20 Terdeteksi 10 Normal, Rem Rem Normal, Rem Rem 1(normal), 5 (rem) Dekat 1 Jauh Normal, Rem Rem 1(normal), 5 (rem) Dekat 1 Jauh 1(normal), 5 (rem) Dekat 1 Jauh Dekat 1 Jauh 1(normal), 5 (rem) Dekat 1 Jauh filamen error error error error error lampu kanan posisi servo error error error error error filamen error error error error error servo lampu kiri lampu kanan posisi posisi sevo servo filamen filamen error error error error error error error error error error error error error error error error error error error error 1(normal), 4(rem) Dekat 1 Jauh 1(normal), 4 (rem) Dekat 1 Jauh

jarak 90 80 70 60 50

40 Terdeteksi

Normal

Rem

Dekat

Jauh

161

LAMPIRAN LISTING PROGRAM


LP1 Listing Program Kalibrasi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
#include<opencv/cvaux.h> #include<opencv/highgui.h> #include<opencv/cxcore.h> #include<cvblob.h> #include<stdio.h> #include<stdlib.h> #include <iostream> #include <vector> #include <cmath> #include <numeric> CvCapture* video_asli; CvCapture* video_cropped; int main(int argc, char* argv[]) { //Fungsi untuk membuat frame pemrosesan // inisialisasi frame frame asli IplImage * gambar_asli=cvCreateImage(cvSize(640, 480), // ukuran frame yang akan ditampilkan 8, 3); // kedalaman warna 8 bit // pointer 3 channel untuk struktur RGB

//inisialisasi frame Region of Interest IplImage* ROI=cvCreateImage(cvSize(540, 300), 8, 3); //inisialisasi frame untuk konversi ke HSV untuk proses lampu depan IplImage* HSV_putih=cvCreateImage(cvSize(540, 300), 8, 3); //inisialisasi frame untuk konversi ke HSV untuk proses lampu belakang IplImage* HSV_merah=cvCreateImage(cvSize(540, 300), 8, // 8-bit color depth 1);// pointer 1 channel untuk strukter HSV //inisialisasi frame untuk proses houch circle lampu depan IplImage* proses_putih = cvCreateImage(cvSize(540, 300),

162

// ukuran frame

38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

IPL_DEPTH_8U, // kedalaman warna 8 bit unsigned 1); //pointer 1 channel untuk strukter hsv //inisialisasi frame untuk proses houch circle lampu belakang IplImage* proses_merah=cvCreateImage(cvSize(540, 300), IPL_DEPTH_8U, 1); // CvHoughCIrcles membutuhkan memory storage untuk poenyimpanan memory saat pemrosesan CvMemStorage* simpan_putih; // deklarasi untuk memory proses lampu depan CvMemStorage* simpan_merah; // deklarasi untuk memory proses lampu belakang //CVHoughCircles membutuhkan pointer circles, untuk deklarasi sebelum fungsi dieksekusi dengan fungsi cvGetSeqElem(p_seqCircles,1) yang akan menghasilkan variabel // koordinat x titik tengah, koordinat y titik tengah , dan jari-jari lingkaran CvSeq* p_seqCirclesputih; // pointer untuk deklarasi sebelum dieksekusi // call cvGetSeqElem(p_seqCircles, i) will return a 3 element array of the ith circle (see next variable) CvSeq* p_seqCirclesmerah; //pointer untuk deklarasi tipe data untuk data yang akan dikeluarkan oleh fungsi cvGetSeqElem(p_seqCircles,1) float* p_fltXYRadiusputih ; // pointer untuk 3 elemen objek terdeteksi;[0] => x posisi titik tengah objek; [1] => y posisi titik tengah objek, [2] => radies dari tiap objek float* p_fltXYRadiusmerah; cvNamedWindow("Main Frame", CV_WINDOW_AUTOSIZE ); cvNamedWindow("Proses Putih", CV_WINDOW_AUTOSIZE); cvNamedWindow("Proses Merah", CV_WINDOW_AUTOSIZE); cvNamedWindow("ROI", CV_WINDOW_AUTOSIZE); while(1) { video_asli = cvCaptureFromFile("gelap/sepi2.mp4" ); video_cropped = cvCaptureFromFile("gelap/sepi2.mp4"); // capture setiap frame dari video_asli pada frame gambarasli gambar_asli = cvQueryFrame(video_asli); // capture setuap frame dari video_cropped pada frame ROI ROI = cvQueryFrame(video_cropped); // dilakukan cropping image dengan fungsi setImageROI cvSetImageROI(ROI,cvRect(100,60,540,300)); //digambar bentuk kotak sebagai virtualisasi area gambar yang

55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

163

dicropping

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106

cvRectangle(gambar_asli, cvPoint(100,60), // point kiri atas cvPoint(640, 360), // point kanan bawah cvScalar(0, 255, 0, 20), // warna hijau, 1, 8, 0); //tebal garis, tipe garis if(p_imgOriginal == NULL) { // jika tidak sukses capturing video printf("error: frame is NULL \n"); // pesan error getchar(); break; } // fungsi konversi RGB ke HSV cvCvtColor(ROI, HSV_putih , CV_BGR2HSV); //untuk lampu depan cvCvtColor(ROI, HSV_merah , CV_BGR2HSV); //untuk lampu belakang // fungsi filter skala warna lampu depan cvInRangeS(HSV_putih, cvScalar(0,0, 86), proses_putih); cvInRangeS(HSV_merah, cvScalar(120,53, 32), cvScalar(180,255,255), proses_merah); simpan_putih = cvCreateMemStorage(0); // mengalokasikan memori untuk fungsi cvHoughCircles() simpan_merah = cvCreateMemStorage(0); // frame masukan // nilai minimal //frame keluaran

cvScalar(128,165,255), // nilai maksimal // fungsi filter skala warna lampu belakang

//fungsi untuk melakukan filter blur/smooth untuk mengurngai noise konversi warna cvSmooth(proses_putih, proses_putih, CV_GAUSSIAN, blurr 9, // tinggi kernel 9); // lebar kernel cvSmooth(proses_merah, proses_merah, // masukan frame // keluaran frame // menggunakan gaussian

164

107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

CV_GAUSSIAN, 9, 9); //melakukan pendeteksian hough circle pada frame proses putih p_seqCirclesputih = cvHoughCircles( proses_putih, //input frame simpan_putih, //memory untuk elements CV_HOUGH_GRADIENT,// algorithma berbasis gradien warna 1, 40, 10, 3, // resolusi gradient pixel ,>=1 // minimal jarak // Batas bawah threshold // min jari-jari lingkaran dalam pixel

255, // Batas atas threshold

15); // max jari-jari lngkarang dalam pixel p_seqCirclesmerah = cvHoughCircles( proses_merah, simpan_merah, CV_HOUGH_GRADIENT, 1, 40, 255, 10, 40,); for(i=0; i < p_seqCirclesputih->total; i++) { // dilakukan iterasi untuk mendeteksi lingkaran pada cahaya putih p_fltXYRadiusputih = (float*)cvGetSeqElem (p_seqCircles, i); // mendapatkan parameter dari hough circle, kemudian memasukkan nilainya kedalam tipe data float if (p_fltXYRadiusputih[1]>169) // batas vertikal pendeteksian { printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYRadiusputih [0], p_fltXYRadiusputih [1], // posisi x centroid // posisi y centroid

134 135 136 137 138 139 140 141 142 143 144

p_fltXYRadiusputih [2]); }// radius centroid // fungsi drawing garis dan teks informasi int y; int x; int z;// const char *label; int s=int(300-p_fltXYRadiusputih [1]); x=(p_fltXYRadiusputih[0]);

165

145 146 147 148 149 150 151 152 153

y= ((p_fltXYRadiusputih [1]+400)/2); z=(y-20); char jarak[255]; char radius[255]; sprintf(jarak, "Jarak %d", (int)s); sprintf(radius, "Radius %d", (int)p_fltXYRadiusputih[2]); cvPutText(ROI, radius ,cvPoint(x,z),&font,cvScalar(255, 255, 255, 0)); cvPutText(ROI, jarak ,cvPoint(x,y),&font,cvScalar(255, 255, 255, 0)); //garis bantu untuk menunjukkan tinggi vertikal centroid obje cvLine(ROI, //input frame cvPoint(x,400), //titik awal cvPoint(p_fltXYRadiusputih [0], p_fltXYRadiusputih[1]), //titik akhir cvScalar(0, 255, 0, 20), 1, 8, 0); //ketebalan dan tipe garis cvCircle(ROI, // gambar di frame ROI cvPoint(cvRound(p_fltXYRadiusputih[0]), cvRound(p_fltXYRadiusputih[1])), //tengah centroid 3, // 3 pixel jari lingkarn // warna hijau //diisi dengan ketebalan 3 pixel CV_RGB(0,100,0), CV_FILLED);

154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177

cvCircle(ROI,

// gambar pada frame ROI

cvPoint(cvRound(p_fltXYRadiusputih[0]), cvRound(p_fltXYRadiusputih[1])), cvRound(p_fltXYRadiusputih [2]), CV_RGB(100,0,0), 3); } // end for //lingkaran merah // ketebalan 3 pixel

for(i=0; i < p_seqCirclesmerah->total; i++) { detect_merah=1; p_fltXYRadiusmerah2 = (float*)cvGetSeqElem(p_seqCirclesmerah, i); printf("ball position x1m = %f, y1m = %f, r1m = %f \n", p_fltXYRadiusmerah[0], // posisi x centroid p_fltXYRadiusmerah [1],// posisi y centroid p_fltXYRadiusmerah[2]); // radius lingkaran

166

178 179 180 181 182 183 184 185 186 187 188 189 190

int y; int x; int z; // const char *label; int s=int(300-p_fltXYRadiusmerah[1]); x=(p_fltXYRadiusmerah[0]); y= ((p_fltXYRadiusmerah [1]+400)/2); z=(y-20); char jarak[255]; sprintf(jarak, "Jarak %d", (int)s); char radius[255]; sprintf(radius, "Radius %d", (int)p_fltXYRadiusmerah[2]); cvPutText(ROI, radius , cvPoint(x,z),&font,cvScalar(255, 255, 255, 0));

191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209

cvPutText(ROI, jarak ,cvPoint(x,y),&font,cvScalar(255, 255, 255, 0)); cvLine(ROI,cvPoint(x,400),cvPoint(p_fltXYRadiusmerah[0],p_fltX YRadiusmerah[1]),cvScalar(0, 255, 0, 20), 1, 8, 0);

cvCircle(ROI, cvPoint(cvRound(p_fltXYRadiusmerah [0]), cvRound(p_fltXYRadiusmerah [1])), 3, CV_RGB(0,100,0), CV_FILLED); cvCircle(ROI, cvPoint(cvRound(p_fltXYRadiusmerah [0]), cvRound(p_fltXYRadiusmerah [1])), cvRound(p_fltXYRadiusmerah[2]), CV_RGB(100,0,0), 3); } // end for // // gamabr //

cvShowImage("Original", gambar_asli); gambar asli cvShowImage("Processed", proses_putih); setelah terproses cvShowImage("Processed2", proses_merah);

167

image after processing

210 211 212 213 214 215 216 217 218

cvShowImage("ROI", ROI); with detectec ball overlay cvReleaseMemStorage (&proses_merah); cvReleaseMemStorage(&proses_putih); charCheckForEscKey = cvWaitKey(10); if(charCheckForEscKey == 27) break; } // end while cvDestroyAllWindows (); return(0); } // end main

// original image

LP2 Listing Program Final


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/* Header Progream yang diperlukan*/ #include<opencv/cvaux.h> fungsi drawings //memanggil library aux untuk

#include<opencv/highgui.h> //memanggil library untuk user interface berupa graphical atau form #include<opencv/cxcore.h> pengenalan pola opencv //library C++ standart #include<stdio.h> #include<stdlib.h> #include <iostream> //library untuk melakukan perhitungan #include <vector> #include <cmath> #include <numeric> int main(int argc, char* argv[]) { /*Fungsi untuk membuat frame pemrosesan*/ // inisialisasi frame frame asli bool detect_depan_kanan=0, detect_depan_kiri =0, detect_hati_hati_kanan =0, detect_hati_hati_kiri =0, detect_rem_kanan=0, detect_rem_kiri=0, tres_kanan10=0, tres_kiri10=0, tres_kanan20=0, //memanggil inti library

168

26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

tres_kiri20 =0, tres_kanan30=0, tres_kiri30=0, tres_kanan40=0, tres_kiri40=0, tres_kanan50=0, tres_kiri50=0; int xt; // int yt; int s1; int s2, d=1; xt=225, yt=150;

bool servo1_kanan = 0, servo1_kiri=0, servo2_kanan = 0, servo2_kiri=0, servo3_kanan = 0, servo3_kiri=0, servo4_kanan = 0, servo4_kiri=0, servo5_kanan = 0, servo5_kiri=0, kanan_jauh=0, kanan_dekat=0, kiri_jauh=0, kiri_dekat=0;

CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, CV_AA); IplImage * gambar_asli=cvCreateImage(cvSize(640, 480), // ukuran frame yang akan ditampilkan 8, 8 bit 3) ; jenis pointer untuk image structure color image //inisialisasi frame Region of Interest IplImage* ROI=cvCreateImage(cvSize(540, 300), 8, 3); IplImage* ROI_kanan=cvCreateImage(cvSize(540, 300), 8, 3); IplImage* ROI_kiri=cvCreateImage(cvSize(250, 140), 8, 3); IplImage* ROI_rem_kanan=cvCreateImage(cvSize(290, 140), // // kedalaman warna

169

63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

8, 3); IplImage* ROI_rem_kiri=cvCreateImage(cvSize(250, 140), 8, 3); //inisialisasi frame untuk konversi ke HSV untuk proses lampu depan IplImage* HSV_putih_kanan=cvCreateImage(cvSize(290, 140), 8, 3); IplImage* HSV_putih_kiri=cvCreateImage(cvSize(250, 140), 8, 3);

//inisialisasi frame untuk konversi ke HSV untuk proses lampu belakang IplImage* HSV_merah_kanan=cvCreateImage(cvSize(290, 140), // 640 x 480 pixels 8, // 8-bit color depth 3);// 3 channel untuk warna

80 81 82 83 84

85 86 87 88 89 90 91 92 93

IplImage* HSV_merah_kiri=cvCreateImage(cvSize(250, 140), // 640 x 480 pixels 8, // 8-bit color depth 3);//3 channel untuk warna

//inisialisasi frame untuk proses houch circle lampu belakang IplImage* hati_hati_kanan = cvCreateImage(cvSize(290, 140), // ukuran frame IPL_DEPTH_8U, // kedalaman warna 8 bit, namun tipenya adalah unsigned

170

94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130

1); untuk pemrosesanhitam putih (threshold) memakai 1 bit

//

IplImage* hati_hati_kiri = cvCreateImage(cvSize(250, 140), IPL_DEPTH_8U, 1); IplImage* detect_depan_kanan = cvCreateImage(cvSize(290, 140), IPL_DEPTH_8U, 1); IplImage* detect_depan_kiri = cvCreateImage(cvSize(250, 140), IPL_DEPTH_8U, 1); IplImage* rem_kanan = cvCreateImage(cvSize(290, 140), IPL_DEPTH_8U, 1); IplImage* rem_kiri = cvCreateImage(cvSize(250, 140), IPL_DEPTH_8U, 1); IplImage* kanan10 = cvCreateImage(cvSize(290, 140), IPL_DEPTH_8U, 1); IplImage* kiri10 = cvCreateImage(cvSize(250, 140), IPL_DEPTH_8U, 1); IplImage* kanan20 = cvCreateImage(cvSize(290, 140), IPL_DEPTH_8U, 1); IplImage* kiri20 = cvCreateImage(cvSize(250, 140), IPL_DEPTH_8U, 1); IplImage* kanan30 = cvCreateImage(cvSize(290, 140), IPL_DEPTH_8U, 1); IplImage* kiri30 = cvCreateImage(cvSize(250, 140), IPL_DEPTH_8U, 1); IplImage* kanan40 = cvCreateImage(cvSize(290, 140), IPL_DEPTH_8U, 1);

171

131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

IplImage* kiri40 = cvCreateImage(cvSize(250, 140), IPL_DEPTH_8U, 1); IplImage* kanan50 = cvCreateImage(cvSize(290, 140), IPL_DEPTH_8U, 1); IplImage* kiri50 = cvCreateImage(cvSize(250, 140), IPL_DEPTH_8U, 1);

//inisialisasi capture video CvCapture* video, *video_roi, *video_kanan, *video_kiri, *video_rem; // CvHoughCIrcles membutuhkan memory storage untuk poenyimpanan memory saat pemrosesan CvMemStorage* simpan_hati_hati_kanan ; CvMemStorage* simpan_hati_hati_kiri ; CvMemStorage* simpan_depan_kanan; CvMemStorage* simpan_depan_kiri; CvMemStorage* simpan_rem_kanan; CvMemStorage* simpan_rem_kiri; CvMemStorage* simpan_kanan10; CvMemStorage* simpan_kiri10; CvMemStorage* simpan_kanan20; CvMemStorage* simpan_kiri20; CvMemStorage* simpan_kanan30; CvMemStorage* simpan_kiri30; CvMemStorage* simpan_kanan40; CvMemStorage* simpan_kiri40; CvMemStorage* simpan_kanan50; CvMemStorage* simpan_kiri50; //CVHoughCircles membutuhkan pointer circles, untuk deklarasi sebelum fungsi dieksekusi dengan fungsi cvGetSeqElem(p_seqCircles,1) yang akan menghasilkan variabel // koordinat x titik tengah, koordinat y titik tengah , dan jari-jari lingkaran CvSeq* p_seqHati_hati_kanan ; // pointer untuk deklarasi sebelum dieksekusi sebagai tempat sekuensial 3 parameter pada float (lhat float)

163 164

165

172

166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204

CvSeq* p_seqHati_hati_kiri; CvSeq* p_seqDepan_kiri; CvSeq* p_seqDepan_kanan; CvSeq* p_seqRem_kanan; CvSeq* p_seqRem_kiri; CvSeq* p_seqKanan10; CvSeq* p_seqKiri10; CvSeq* p_seqKanan20; CvSeq* p_seqKiri20; CvSeq* p_seqKanan30; CvSeq* p_seqKiri30; CvSeq* p_seqKanan40; CvSeq* p_seqKiri40; CvSeq* p_seqKanan50; CvSeq* p_seqKiri50; //pointer untuk deklarasi tipe data untuk data yang akan dikeluarkan oleh fungsi cvGetSeqElem(p_seqCircles,1) float* p_fltXYhati_hati_kanan ; // pointer untuk 3 elemen objek // [0] => x posisi titik tengah objek terdeteksi // [1] => y posisi titik tengah objek terdeteksi //[2] => radies dari tiap objek yang terdeteksi float* p_fltXYhati_hati_kiri ; float* depan_kanan; float* depan_kiri; float* p_fltXYrem_kanan; float* p_fltXYrem_kiri; float* p_fltXYkanan10; float* p_fltXYkiri10; float* p_fltXYkanan20; float* p_fltXYkiri20; float* p_fltXYkanan30; float* p_fltXYkiri30; float* p_fltXYkanan40; float* p_fltXYkiri40; float* p_fltXYkanan50; float* p_fltXYkiri50; int i; // loop counter // char untuk

char charCheckForEscKey; melakukan exit termination program

173

205 206

//mendeklarasikan window yang akan ditampilkan cvNamedWindow("Asli", CV_WINDOW_AUTOSIZE ); // window untuk frame gambar_asli, ukuran menyesuaikan frame cvNamedWindow("ROI", CV_WINDOW_AUTOSIZE); //window untuk ROI, ukuran menyesuaikan frame cvNamedWindow("Kanan", CV_WINDOW_AUTOSIZE ); // window untuk frame gambar_asli, ukuran menyesuaikan frame cvNamedWindow("Kiri", CV_WINDOW_AUTOSIZE ); //window untuk ROI, ukuran menyesuaikan frame video = cvCaptureFromFile("gelap/sepi2.mp4"); video_roi = cvCaptureFromFile ("gelap/sepi2.mp4"); video_kanan = cvCaptureFromFile("gelap/sepi2.mp4" ); video_kiri = cvCaptureFromFile("gelap/sepi2.mp4"); video_rem = cvCaptureFromFile ("gelap/sepi2.mp4"); if((video) == NULL) { capture tidak sempurna // jika proses //

207 208

209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231

printf("error: capture is NULL \n"); maka pesan error akan muncul termination return(-1); } while(1) { FILE* { printf("Failed to open serial port\n"); return -1; } // dilakukan perulangan ...... serial = fopen("/dev/ttyACM1", "w"); // exit program

getchar(); // stekan ctrl+c //esc key untuk

if (serial == 0)

//memanggil video yang akan di capture per frame gambar_asli = cvQueryFrame(video); // capture setiap frame dari video_asli pada frame gambarasli ROI = cvQueryFrame(video_roi); // capture setuap frame dari video_cropped pada frame ROI cvSetImageROI(ROI,cvRect(100,60,540,300)); dilakukan cropping image dengan menggunakan fungsi setImageROI //

232 233

234

174

235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261

cvRectangle(gambar_asli, //digambar bentuk kotak sebagai virtualisasi area gambar yang dicropping cvPoint(100,220), point kiri atas cvPoint(640, 360), point kanan bawah cvScalar(0, 255, 0, 20), //membuat garus batas cvLine(gambar_asli, //input cvPoint(350,220), //titik akhir cvPoint(350,360), //titik awal cvScalar(0, 255, 0, 20), //warna hijau tebal 20pt 1, 8, 0); cvLine(gambar_asli, cvPoint(100,240), cvPoint(640,240), cvScalar(0, 255, 0, 20), 1, 8, 0); cvLine(gambar_asli, cvPoint(350,260), cvPoint(640,260), cvScalar(0, 255, 0, 20), 1, 8, 0); cvLine(gambar_asli, cvPoint(350,280), cvPoint(640,280), cvScalar(0, 255, 0, 20), 1, 8, 0); ROI_kanan=cvQueryFrame(video_kanan); cvSetImageROI(ROI_kanan,cvRect(350,220,290,140)); // dilakukan cropping image dengan menggunakan fungsi setImageROI ROI_kiri=cvQueryFrame(video_kiri); cvSetImageROI(ROI_kiri,cvRect(100,220,250,140)); ROI_rem_kanan=cvQueryFrame(video_rem); cvSetImageROI(ROI_rem_kanan,cvRect(0,220,540,140)); // exceptio frame error if((gambar_asli || ROI ) == NULL) { // //

// warna hijau,

1, 8, 0); //tebal garis, tipe garis

262 263 264 265 266 267 268

175

269 270 271 272 273

printf("error: frame is NULL \n"); getchar(); break; } // fungsi koneversi ke HSV cvCvtColor(ROI_kanan, HSV_putih_kanan , CV_BGR2HSV); //konversi RGB ke HSV untuk pemrosesan lampu depan cvCvtColor(ROI_kiri, HSV_putih_kiri , CV_BGR2HSV); //konversi RGB ke HSV untuk pemrosesan lampu depan cvCvtColor(ROI_kanan, HSV_merah_kanan , CV_BGR2HSV); //konversi RGB ke HSV untuk pemrosesan lampu depan cvCvtColor(ROI_kiri, HSV_merah_kiri , CV_BGR2HSV); //konversi RGB ke HSV untuk pemrosesan lampu depan cvInRangeS(HSV_putih_kanan, // frame input // min dan // max cvScalar(0,0, 100), equal nilai filter untuk hsv lampu depan cvScalar(60,155,255), nilai filter untuk hsv lampu depan kanan10); // frame output //frame input // min dan // max cvInRangeS(HSV_putih_kiri,

274

275

276

277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296

cvScalar(0,0, 100), equal nilai filter untuk hsv lampu depan cvScalar(60,155,255), nilai filter untuk hsv lampu depan kiri10); //output frame cvInRangeS(HSV_merah_kanan, cvScalar(120,50, 30), dan equal nilai filter untuk hsv lampu belakang cvScalar(180,255,255), nilai filter untuk hsv lampu belakang hati_hati_kanan); cvInRangeS(HSV_merah_kiri, cvScalar(120,50, 30), dan equal nilai filter untuk hsv lampu belakang cvScalar(180,255,255), nilai filter untuk hsv lampu belakang hati_hati_kiri);

// min // max

// min // max

depan_kanan=cvCloneImage(hati_hati_kanan);

176

297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335

depan_kiri=cvCloneImage(hati_hati_kiri); rem_kanan=cvCloneImage(hati_hati_kanan); rem_kiri=cvCloneImage(hati_hati_kiri); kanan20=cvCloneImage(kanan10); kiri20=cvCloneImage(kiri10); kanan30=cvCloneImage(kanan10); kiri30=cvCloneImage(kiri10); kanan40=cvCloneImage(kanan10); kiri40=cvCloneImage(kiri10); kanan50=cvCloneImage(kanan10); kiri50=cvCloneImage(kiri10); // mengalokasikan memory sebesar 64 kb untuk digunakan untuk pemrosesan simpan_depan_kanan = cvCreateMemStorage(0); simpan_depan_kiri = cvCreateMemStorage(0); simpan_hati_hati_kanan = cvCreateMemStorage (0); simpan_hati_hati_kiri = cvCreateMemStorage(0); simpan_rem_kanan = cvCreateMemStorage (0); simpan_rem_kiri = cvCreateMemStorage (0); simpan_kanan10 = cvCreateMemStorage(0); simpan_kiri10 = cvCreateMemStorage(0); simpan_kanan20 = cvCreateMemStorage(0); simpan_kiri20 = cvCreateMemStorage(0); simpan_kanan30 = cvCreateMemStorage(0); simpan_kiri30 = cvCreateMemStorage(0); simpan_kanan40 = cvCreateMemStorage(0); simpan_kiri40 = cvCreateMemStorage(0); simpan_kanan50 = cvCreateMemStorage(0); simpan_kiri50 = cvCreateMemStorage(0); //fungsi untuk melakukan filter blur/smooth cvSmooth(hati_hati_kanan, // masukan frame hati_hati_kanan, // keluaran frame CV_GAUSSIAN,// menggunakan gaussian blur filter 9, jendela 9); jendela cvSmooth(hati_hati_kiri, hati_hati_kiri, CV_GAUSSIAN, // smoothing filter untuk lebar // smoothing filter untuk tinggi

177

336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376

9, 9); cvSmooth(depan_kanan, depan_kanan, CV_GAUSSIAN, 9, 9); cvSmooth(depan_kiri, depan_kiri, CV_GAUSSIAN, 9, 9); cvSmooth(rem_kanan, rem_kanan, CV_GAUSSIAN, 9, 9); cvSmooth(rem_kiri, rem_kiri, CV_GAUSSIAN, 9, 9); cvSmooth(kanan10, kanan10, CV_GAUSSIAN, 9, 9); cvSmooth(kiri10, kiri10, CV_GAUSSIAN, 9, 9); cvSmooth(kanan20, kanan20, CV_GAUSSIAN, 9, 9); cvSmooth(kiri20, kiri20, CV_GAUSSIAN, 9,

178

377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414

9); cvSmooth(kanan30, kanan30, CV_GAUSSIAN, 9, 9); cvSmooth(kiri30, kiri30, CV_GAUSSIAN, 9, 9); cvSmooth(kanan40, kanan40, CV_GAUSSIAN, 9, 9); cvSmooth(kiri40, kiri40, CV_GAUSSIAN, 9, 9); cvSmooth(kanan50, kanan50, CV_GAUSSIAN, 9, 9); cvSmooth(kiri50, kiri50, CV_GAUSSIAN, 9, 9); //Melakukan fungsi pendeteksian hough circle untuk lampu depan p_seqdepan_kanan = cvHoughCircles(depan_kanan, //frame masukan simpan_depan_kanan, //memory untuk pemrosesan CV_HOUGH_GRADIENT, // algoritma hough berbasis gradien warna 2, //resolusi pendeteksian 40, //jarak antar pusat centroid terdeteksi 255, //maksimal threshold

179

415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455

10, //minimal threshold 1, 40); p_seqRem_kiri = cvHoughCircles(rem_kiri, simpan_rem_kiri, CV_HOUGH_GRADIENT, 2, 40, 255, 30, 1, 40); p_seqHati_hati_kanan = cvHoughCircles(hati_hati_kanan, simpan_hati_hati_kanan , CV_HOUGH_GRADIENT, 2, 40, 255, 20, 1, 40); p_seqHati_hati_kiri = cvHoughCircles(hati_hati_kiri, simpan_hati_hati_kiri , CV_HOUGH_GRADIENT, 2, 40, 255, 20, 1, 40); p_seqRem_kanan = cvHoughCircles(rem_kanan, simpan_rem_kanan, CV_HOUGH_GRADIENT, 2, 40, 255, 30, 1, 40); p_seqRem_kiri = cvHoughCircles(rem_kiri, simpan_rem_kiri,

180

456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496

CV_HOUGH_GRADIENT, 2, 40, 255, 30, 1, 40); p_seqKanan10 = cvHoughCircles(kanan10, simpan_kanan10, CV_HOUGH_GRADIENT, 2, 40, 255, 10, 10, 40); p_seqKiri10 = cvHoughCircles(kiri10, simpan_kiri10, CV_HOUGH_GRADIENT, 2, 40, 255, 10, 10, 40); p_seqKanan20 = cvHoughCircles(kanan20, simpan_kanan20, CV_HOUGH_GRADIENT, 2, 40, 255, 20, 10, 40); p_seqKiri20 = cvHoughCircles(kiri20, simpan_kiri20, CV_HOUGH_GRADIENT, 2, 40, 255, 20,

181

497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537

10, 40); p_seqKanan30 = cvHoughCircles(kanan30, simpan_kanan30, CV_HOUGH_GRADIENT, 2, 40, 255, 30, 10, 40); p_seqKiri30 = cvHoughCircles(kiri30, simpan_kiri30, CV_HOUGH_GRADIENT, 2, 40, 255, 30, 10, 40); p_seqKanan40 = cvHoughCircles(kanan40, simpan_kanan40, CV_HOUGH_GRADIENT, 2, 40, 255, 40, 10, 40); p_seqKiri40 = cvHoughCircles(kiri40, simpan_kiri40, CV_HOUGH_GRADIENT, 2, 40, 255, 40, 10, 40); p_seqKanan50 = cvHoughCircles(kanan50, simpan_kanan50, CV_HOUGH_GRADIENT,

182

538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576
\n",

2, 40, 255, 50, 10, 40); p_seqKiri50 = cvHoughCircles(kiri50, simpan_kiri50, CV_HOUGH_GRADIENT, 2, 40, 255, 50, 10, 40); for(i=0; i < p_seqDepan_kanan->total; i++) { detect_depan_kanan=1; p_fltXYhati_hati_kanan = (float*)cvGetSeqElem(p_seqHati_hati_kanan , i); printf("ball position x1m = %f, y1m = %f, r1m = %f p_fltXYdepan_kanan[0], // koordinat x centroid p_fltXYdepan_kanan[1], // koordinat y centroid p_fltXYdepan_kanan[2]); // radius lingkaran //mencetak gambar di frame cvCircle(gambar_asli, // gambar di frame asli cvPoint(cvRound(p_fltXYdepan_kanan[0]+350), cvRound(p_fltXYdepan_kanan [1]+220)),// titik tengah 3, // titik setebal 3 pixel CV_RGB(110,228,223), // titik tengah biru muda CV_FILLED); // ketebalan lingkaran cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYdepan_kanan[0]+350), cvRound(p_fltXYdepan_kanan [1]+220)), cvRound(p_fltXYdepan_kanan [2]), CV_RGB(110,228,223), //lingkaran warna biru muda 3); } //tidak ada warna merah terdeteksi

183

577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615
\n",

for(i=0; i <!p_seqDepan_kanan->total; i++) { detect_depan_kanan=0; } for(i=0; i < p_seqDepan_kiri->total; i++) { detect_depan_kiri=1; p_fltXYhati_hati_kiri = (float*)cvGetSeqElem(p_seqHati_hati_kiri , i); printf("ball position x1m = %f, y1m = %f, r1m = %f p_fltXYdepan_kiri[0], p_fltXYdepan_kiri[1], p_fltXYdepan_kiri[2]); //mencetak gambar di frame cvCircle(gambar_asli, // gambar di frame asli cvPoint(cvRound(p_fltXYdepan_kiri[0]+100), cvRound(p_fltXYdepan_kiri[1]+220)), 3, CV_RGB(110,228,223),//titik tengah biru muda CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYdepan_kiri[0]+100), cvRound(p_fltXYdepan_kiri[1]+220)), cvRound(p_fltXYdepan_kiri[2]), CV_RGB(110,228,223), //lingkaran warna biru muda 3); } //tidak ada warna merah terdeteksi for(i=0; i <!p_seqDepan_kiri->total; i++) { detect_depan_kiri=0; } for(i=0; i < p_seqHati_hati_kanan->total; i++) { detect_hati_hati_kanan =1; detect_rem_kanan=0; p_fltXYhati_hati_kanan = (float*)cvGetSeqElem(p_seqHati_hati_kanan , i); printf("ball position x1m = %f, y1m = %f, r1m = %f \n", p_fltXYhati_hati_kanan [0],// koordinat x centroid p_fltXYhati_hati_kanan [1], // koordinat y centroid p_fltXYhati_hati_kanan [2]); // radius lingkaran //mencetak gambar di frame cvCircle(gambar_asli,

184

616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652

cvPoint(cvRound(p_fltXYhati_hati_kanan [0]+350), cvRound(p_fltXYhati_hati_kanan [1]+220)), 3, CV_RGB(229,228,243),// titik tengah putih CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYhati_hati_kanan [0]+350), cvRound(p_fltXYhati_hati_kanan [1]+220)), cvRound(p_fltXYhati_hati_kanan [2]), CV_RGB(229,228,243),//lingkaran warna putih 3); } //tidak ada warna merah terdeteksi for(i=0; i <!p_seqHati_hati_kanan->total; i++) { detect_hati_hati_kanan =0; } for(i=0; i < p_seqHati_hati_kiri->total; i++) { detect_hati_hati_kiri =1; detect_rem_kiri=0; p_fltXYhati_hati_kiri = \ (float*)cvGetSeqElem(p_seqHati_hati_kiri , i); printf("ball position x1m = %f, y1m = %f, r1m = %f \n", p_fltXYhati_hati_kiri [0], p_fltXYhati_hati_kiri [1], p_fltXYhati_hati_kiri [2]); circle //mencetak gambar di frame cvCircle(gambar_asli,// gambar di frame asli cvPoint(cvRound(p_fltXYhati_hati_kiri [0]+100), cvRound(p_fltXYhati_hati_kiri [1]+220)), 3, CV_RGB(229,228,243), // gambar titik tengah hijau CV_FILLED); // ketebalan lingkaran cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYhati_hati_kiri [0]+100), cvRound(p_fltXYhati_hati_kiri [1]+220)), cvRound(p_fltXYhati_hati_kiri [2]), CV_RGB(229,228,243), 3); // radius of

185

653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691
\n",

} //tidak ada warna merah terdeteksi for(i=0; i <!p_seqHati_hati_kiri->total; i++) { detect_hati_hati_kiri =0; } for(i=0; i < p_seqRem_kanan->total; i++) { p_fltXYrem_kanan = (float*)cvGetSeqElem(p_seqRem_kanan, i); printf("ball position x1m = %f, y1m = %f, r1m = %f p_fltXYrem_kanan[0], p_fltXYrem_kanan[1], p_fltXYrem_kanan[2]); if(p_fltXYrem_kanan[1]>=10) { servo3_kanan=1; } if(p_fltXYrem_kanan[1]>=20) { detect_hati_hati_kanan =0; detect_rem_kanan=1;servo4_kanan=1; } if(p_fltXYrem_kanan[1]>=30) { servo5_kanan=1; } //mencetak gambar di frame cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYrem_kanan[0]+350), cvRound(p_fltXYrem_kanan[1]+220)), 3, CV_RGB(188,54,222), //titik tengah berwarna ungu CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYrem_kanan[0]+350), cvRound(p_fltXYrem_kanan[1]+220)), cvRound(p_fltXYrem_kanan[2]), CV_RGB(188,54,222), //lingkaran warna ungu 3); } //tidak ada warna merah terdeteksi

186

692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731

for(i=0; i < !p_seqRem_kanan->total; i++) { detect_rem_kanan=0; } for(i=0; i < p_seqRem_kiri->total; i++) { p_fltXYrem_kiri = (float*)cvGetSeqElem(p_seqRem_kiri, i); printf("ball position x1m = %f, y1m = %f, r1m = %f \n", p_fltXYrem_kiri[0], p_fltXYrem_kiri[1], p_fltXYrem_kiri[2]); if(p_fltXYrem_kiri[1]>=10) { servo3_kiri=1; } if(p_fltXYrem_kiri[1]>=20) { detect_hati_hati_kiri =0; detect_rem_kiri=1; servo4_kiri=1; } if(p_fltXYrem_kiri[1]>=30) { servo5_kiri=1; } //mencetak gambar di frame cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYrem_kiri[0]+100), cvRound(p_fltXYrem_kiri[1]+220)), 3, // titik setebal 3 pixel CV_RGB(188,54,222), //titik tengah berwarna ungu CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYrem_kiri[0]+100), cvRound(p_fltXYrem_kiri[1]+220)), cvRound(p_fltXYrem_kiri[2]), CV_RGB(188,54,222), // lingkaran warna ungu 3); } //tidak ada warna merah terdeteksi for(i=0; i < !p_seqRem_kiri->total; i++) { detect_rem_kiri=0; }

187

732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767
\n",

//melakukan fungsi perulangan mendeteksi cahaya putih for(i=0; i < p_seqKanan10->total; i++) { tres_kanan10=1; detect_putih_kanan=1; p_fltXYkanan10 = (float*)cvGetSeqElem(p_seqKanan10, i); printf("ball position x1 = %f, y1 = %f, r1 = %f p_fltXYkanan10[0], p_fltXYkanan10[1], printf("Lampu Kanan \n"); printf( "X: %d\n", p_fltXYkanan10[0] ); "Y: %d\n", p_fltXYkanan10[1] ); //fungsi drawing pada OpenCV //membuat titik pada titik tengah lingkaran terdeteksi cvCircle(gambar_asli,// gambar frame aslinya cvPoint(cvRound(p_fltXYkanan10[0]+350), cvRound(p_fltXYkanan10[1]+220)),//tengah centroid 3, // 3 pixel radius of circle CV_RGB(0,255,0),// titik lingkaran berwarna hijau CV_FILLED); // thickness, fill in the circle //menggambar lingkaran pada area terdeteksi cvCircle(gambar_asli, // gambar frame aslinya cvPoint(cvRound(p_fltXYkanan10[0]+350), cvRound(p_fltXYkanan10[1])+220), // titik tengah cvRound(p_fltXYkanan10[2]), // radius lingkaran CV_RGB(255,0,0), 3); // warna RGB lingkaran // ketebalan lingkaran 3 pixel printf( // posisi x centroid // posisi y centroid

p_fltXYkanan10[2]); // radius lingkaran

} //apabila tidak ada circle terdeteksi, maka lampu High Beam for(i=0; i < !p_seqKanan10->total; i++) { detect_putih_kanan=0; tres_kanan10=1; } for(i=0; i < p_seqKanan20->total; i++) {

188

768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806

tres_kanan20=1; if (p_fltXYkanan20[1]>=20) { tres_kanan40; } p_fltXYkanan20 = (float*)cvGetSeqElem(p_seqKanan20, i); printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYkanan20[0], p_fltXYkanan20[1], p_fltXYkanan20[2]); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkanan20[0]+350), cvRound(p_fltXYkanan20[1]+220)), 3, CV_RGB(231,5,42), CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkanan20[0]+350), cvRound(p_fltXYkanan20[1]+220)), cvRound(p_fltXYkanan20[2]), CV_RGB(231,5,42), 3); } // end for tres_kanan20=0; } for(i=0; i < p_seqKanan30->total; i++) { tres_kanan30=1; p_fltXYkanan30 = (float*)cvGetSeqElem(p_seqKanan30, i); printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYkanan30[0], p_fltXYkanan30[1], p_fltXYkanan30[2]); if (p_fltXYkanan30[1]>=20) { tres_kanan40; } if (p_fltXYkanan30[1]>=30) for(i=0;i<!p_seqKanan20->total; i++){ //lingkaran merah

189

807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846
orange

{ tres_kanan50; } cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkanan30[0]+350), cvRound(p_fltXYkanan30[1]+220)), 3, CV_RGB(231,106,5), CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkanan30[0]+350), cvRound(p_fltXYkanan30[1]+220)), cvRound(p_fltXYkanan30[2]), CV_RGB(231,106,5), //lingkaran 3); } for(i=0; i < !p_seqKanan30->total; i++) { tres_kanan30=0; } for(i=0; i < p_seqKanan40->total; i++) { tres_kanan40=1; p_fltXYkanan40 = (float*)cvGetSeqElem(p_seqKanan40, i); if (p_fltXYkanan40[1]>=30) { tres_kanan50; } printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYkanan40[0], p_fltXYkanan40[1], p_fltXYkanan40[2]); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkanan40[0]+350), cvRound(p_fltXYkanan40[1]+220)), 3, CV_RGB(246,220,44), //titik kuning CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkanan40[0]+350), cvRound(p_fltXYkanan40[1]+220)), cvRound(p_fltXYkanan40[2]), // titik orange

190

847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885
%f \n",

CV_RGB(246,220,44), //lingkaran kuning 3); } for(i=0; i < !p_seqKanan40->total; i++) { tres_kanan40=0; } for(i=0; i < p_seqKanan50->total; i++) { tres_kanan50=1; p_fltXYkanan50 = (float*)cvGetSeqElem(p_seqKanan50, i); printf("ball position x1 = %f, y1 = %f, r1 = p_fltXYkanan50[0], p_fltXYkanan50[1], p_fltXYkanan50[2]); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkanan50[0]+350), cvRound(p_fltXYkanan50[1]+220)), 3, CV_RGB(40,189,36), CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkanan50[0]+350), cvRound(p_fltXYkanan50[1]+220)), cvRound(p_fltXYkanan50[2]), CV_RGB(40,189,36), 3); } for(i=0; i < !p_seqKanan50->total; i++) { tres_kanan50=0; } //melakukan fungsi perulangan mendeteksi cahaya putih for(i=0; i < p_seqKiri10->total; i++) { tres_kiri10=1; detect_putih_kiri=1; p_fltXYkiri10 = (float*)cvGetSeqElem(p_seqKiri10, i); // mendapatkan parameter dari hough circle, //kemudian memasukkan nilainya kedalam tipe data float printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYkiri10[0],// posisi x centroid //lingkaran hijau // titik tengah hijau

191

886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922

p_fltXYkiri10[1],// posisi y centroid p_fltXYkiri10[2]);// radius lingkaran printf("Lampu Kiri \n"); printf( "X: %d\n", p_fltXYkiri10[0] ); "Y: %d\n", p_fltXYkiri10[1] ); printf(

//fungsi drawing pada OpenCV //membuat titik pada titik tengah lingkaran terdeteksi cvCircle(gambar_asli,// gambar frame aslinya cvPoint(cvRound(p_fltXYkiri10[0]+100), cvRound(p_fltXYkiri10[1]+220)),// titik tengah 3, // 3 pixel radius lingkaran CV_RGB(0,255,0),// titik lingkaran berwarna hijau CV_FILLED); // thickness, //menggambar lingkaran pada area terdeteksi cvCircle(gambar_asli,// gambar frame aslinya cvPoint(cvRound(p_fltXYkiri10[0]+100), cvRound(p_fltXYkiri10[1]+220)), // titik tengah cvRound(p_fltXYkiri10[2]),// radius lingkaran CV_RGB(255,0,0), // warna RGB lingkaran 3); } for(i=0; i < !p_seqKiri10->total; i++) { detect_putih_kiri=0; tres_kiri10=1; } for(i=0; i < p_seqKiri20->total; i++) { tres_kiri20=1; if (p_fltXYkiri20[1]>=20) { tres_kiri40; } p_fltXYkiri20 = (float*)cvGetSeqElem(p_seqKiri20, i); printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYkiri20[0], p_fltXYkiri20[2]); cvCircle(gambar_asli, // ketebalan lingkaran 3 pixel

192

923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962

cvPoint(cvRound(p_fltXYkiri20[0]+100), cvRound(p_fltXYkiri20[1]+220)), 3, CV_RGB(231,5,42), CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkiri20[0]+100), cvRound(p_fltXYkiri20[1]+220)), cvRound(p_fltXYkiri20[2]), CV_RGB(231,5,42), 3); } // end for tres_kiri20=0; } for(i=0; i < p_seqKiri30->total; i++) { tres_kiri30=1; p_fltXYkiri30 = (float*)cvGetSeqElem(p_seqKiri30, i); printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYkiri30[0], p_fltXYkiri30[1], p_fltXYkiri30[2]); if (p_fltXYkiri30[1]>-20) { tres_kiri40; } if (p_fltXYkiri30[1]>=30) { tres_kiri50; } cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkiri30[0]+100), cvRound(p_fltXYkiri30[1]+220)), 3, CV_RGB(231,106,5), CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkiri30[0]+100), for(i=0;i<!p_seqKiri20->total; i++){ //lingkaran merah //titik tengah merah

193

963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002
%f \n",

cvRound(p_fltXYkiri30[1]+220)), cvRound(p_fltXYkiri30[2]), CV_RGB(231,106,5), // lingkaran orange 3); } for(i=0; i < !p_seqKiri30->total; i++) { tres_kiri30=0; } for(i=0; i < p_seqKiri40->total; i++) { tres_kiri40=1; p_fltXYkiri40 = (float*)cvGetSeqElem(p_seqKiri40, i); if (p_fltXYkiri40[1]>=30) { tres_kiri50; } printf("ball position x1 = %f, y1 = %f, r1 = p_fltXYkiri40[0], p_fltXYkiri40[1], p_fltXYkiri40[2]); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkiri40[0]+100), cvRound(p_fltXYkiri40[1]+220)), 3, CV_RGB(246,220,44), CV_FILLED);

cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkiri40[0]+100), cvRound(p_fltXYkiri40[1]+220)), cvRound(p_fltXYkiri40[2]), CV_RGB(246,220,44), // lingkaran warna kuning 3); } for(i=0; i < !p_seqKiri40->total; i++) { tres_kiri40=0; }

194

1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041

for(i=0; i < p_seqKiri50->total; i++) { tres_kiri50=1; p_fltXYkiri50 = (float*)cvGetSeqElem(p_seqKiri50, i); printf("ball position x1 = %f, y1 = %f, r1 = %f \n", p_fltXYkiri50[0], p_fltXYkiri50[1], p_fltXYkiri50[2]); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkiri50[0]+100), cvRound(p_fltXYkiri50[1]+220)), 3, CV_RGB(40,189,36), CV_FILLED); cvCircle(gambar_asli, cvPoint(cvRound(p_fltXYkiri50[0]+100), cvRound(p_fltXYkiri50[1]+220)), cvRound(p_fltXYkiri50[2]); //sesuai jarijari CV_RGB(40,189,36), hijau 3); } for(i=0; i < !p_seqKiri50->total; i++) { tres_kiri50=0; //melakukan peringatan } if (tres_kanan10&&(!tres_kanan20||!tres_kanan30|| !tres_kanan40||!tres_kanan50)) { servo1_kanan=1; servo2_kanan=0; servo3_kanan=0; servo4_kanan=0; servo5_kanan=0; } if (tres_kanan20&&(!tres_kanan30||!tres_kanan40|| !tres_kanan50)) { servo1_kanan=0; servo2_kanan=1; servo3_kanan=0; //gambar lingkaran // warna hijau

195

1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082

servo4_kanan=0; servo5_kanan=0; } if (tres_kanan30&&(!tres_kanan40||!tres_kanan50)) { servo1_kanan=0; servo2_kanan=0; servo3_kanan=1; servo4_kanan=0; servo5_kanan=0; } if (tres_kanan40&&(!tres_kanan50)) { servo1_kanan=0; servo2_kanan=0; servo3_kanan=0; servo4_kanan=1; servo5_kanan=0; } if (tres_kanan50) { servo1_kanan=0; servo2_kanan=0; servo3_kanan=0; servo4_kanan=0; servo5_kanan=1; } if (tres_kiri10&&(!tres_kiri20||!tres_kiri30|| !tres_kiri40||!tres_kiri50)) { servo1_kiri=1; servo2_kiri=0; servo3_kiri=0; servo4_kiri=0; servo5_kiri=0; } if (tres_kiri20 &&(!tres_kiri30||!tres_kiri40|| !tres_kiri50)) { servo1_kiri=0; servo2_kiri=1;

196

1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123

servo3_kiri=0; servo4_kiri=0; servo5_kiri=0; } if (tres_kiri30&&(!tres_kiri40||!tres_kiri50)) { servo1_kiri=0; servo2_kiri=0; servo3_kiri=1; servo4_kiri=0; servo5_kiri=0; } if (tres_kiri40&&(!tres_kiri50)) { servo1_kiri=0; servo2_kiri=0; servo3_kiri=0; servo4_kiri=1; servo5_kiri=0; } if (tres_kiri50) { servo1_kiri=0; servo2_kiri=0; servo3_kiri=0; servo4_kiri=0; servo5_kiri=1; } //intepretasi deteksi lampu belakang if (detect_putih_kanan||detect_hati_hati_kanan || detect_rem_kanan||detect_depan_kanan ) { kanan_dekat=1; kanan_jauh=0; } if (!detect_putih_kanan &&!detect_hati_hati_kanan && !detect_rem_kanan&&!detect_depan_kanan) { kanan_dekat=0; kanan_jauh=1; }

197

1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162

if (detect_putih_kiri||detect_hati_hati_kiri || detect_rem_kiri||detect_depan_kiri) { kiri_dekat=1; kiri_jauh=0; } if (!detect_putih_kiri&&!detect_hati_hati_kiri && !detect_rem_kiri&&!detect_depan_kiri) { kiri_dekat=0; kiri_jauh=1; } //cetak di atas frame asli, untuk menandakan hati-hati, dan rem if(detect_hati_hati_kanan ) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Hati-Hati Kanan!!" , cvPoint(200,225),&font,cvScalar(255, 255, 255, 0)); } if(detect_hati_hati_kiri ) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Hati-Hati Kiri!!" , cvPoint(20,225),&font,cvScalar(255, 255, 255, 0)); } if(detect_rem_kanan) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Rem Kanan!!" , cvPoint(200,225),&font,cvScalar(255, 255, 255, 0)); } if(detect_rem_kiri) {

198

1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201
0));

CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Rem Kiri!!" , cvPoint(20,225),&font,cvScalar(255, 255, 255, } //cetak diatas frame asli if(servo1_kanan) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 1 Kanan" , cvPoint(180,60),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "%d",4); //kirim karakter ke arduino } if(servo2_kanan) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 2 Kanan" , cvPoint(180,60),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "%d",3); } if(servo3_kanan) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 3 Kanan" , cvPoint(180,60),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "%d",2); } if(servo4_kanan) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA);

199

1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240
0));

cvPutText(gambar_asli, "Servo 4 Kanan" , cvPoint(180,60),&font,cvScalar(255, 255, 255, fprintf(serial, "%d",1); } if(servo5_kanan) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 5 Kanan" , cvPoint(180,60),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "%d",0); } if(servo1_kiri) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 1 Kiri" , cvPoint(15,60),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "%d",9); } if(servo2_kiri) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 2 Kiri" , cvPoint(15,60),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "%d",8); } if(servo3_kiri) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 3 Kiri" , cvPoint(15,60),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "%d",7);

200

1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279
0));

} if(servo4_kiri) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 4 Kiri" , cvPoint(15,60),&font,cvScalar(255, 255, 255, fprintf(serial, "%d",6); } if(servo5_kiri) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Servo 5 Kiri" , cvPoint(15,60),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "%d",5); } if(kiri_jauh) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Lampu Jauh!!" , cvPoint(15,25),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "A"); } //cetak diatas frame asli if(kiri_dekat) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Lampu Dekat!!" , cvPoint(15,25),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "B"); } if(kanan_jauh)

201

1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308
0));

{ CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Lampu Jauh!!" , cvPoint(200,25),&font,cvScalar(255, 255, 255, fprintf(serial, "C"); } //cetak diatas frame asli if(kanan_dekat) { CvFont font; cvInitFont(&font, CV_FONT_HERSHEY_PLAIN , 1.0, 1.0, 0, 1, CV_AA); cvPutText(gambar_asli, "Lampu Dekat!!" , cvPoint(200,25),&font,cvScalar(255, 255, 255, 0)); fprintf(serial, "D"); } fprintf(serial, "\n"); cvShowImage("Asli", gambar_asli); // tayangkan gambar asli cvShowImage("Kanan", ROI_kanan);// tayangkan ROI kanan cvShowImage("Kiri", ROI_kiri); // tayangkan ROI kiri charCheckForEscKey = cvWaitKey(10); if(charCheckForEscKey == 27) break; } // end while //menghapuskan semua window cvDestroyAllWindows ; return(0); }

202

LP3 Listing Program Arduino ( Sisi Hardware)


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 25 26 30 31 32 33 34 35 36 37 38 39 40 41
/** Adjust these values for your servo and setup, if necessary **/ int servo_kanan = 10; // control pin for servo motor int servo_kiri int refreshTime (50Hz) = = 8; 20; // time (ms) between pulses

int lampu_kanan = 2;//pin 1 relay int lampu_kiri = 4;//pin 2 relay int buzzer=12; int interval=1000; /** The Arduino will calculate these values for you **/ int pulseWidth_kanan, pulseWidth_kiri; // servo pulse width long lastPulse = 0; // recorded time (ms) of the last pulse char buffer [2]; int x=0; int input [4]; int inByte; void setup() { pinMode(servo_kanan, OUTPUT); output pin pinMode(servo_kiri, OUTPUT); pinMode(buzzer, OUTPUT); pulseWidth_kiri = 750; pulseWidth_kanan = 750; pinMode(lampu_kanan, OUTPUT); pinMode(lampu_kiri, OUTPUT); Serial.begin(9600); Serial.println(" Arduino Serial Servo Control"); Serial.println("Press < or > to move, spacebar to center"); Serial.println(); } void loop() { // tunggu serial input if (Serial.available() > 3) { // baca bit yang masuk: delay(10); while(Serial.available()>3){

// Set servo pin as an

203

42 43 44 45 46 49 50 51 52 53 55 56 57 58 59 61 62 63 64 67 68 69 70 72 73 74 75 77 78 79 80 81

input[0] = Serial.read(); input[1] = Serial.read(); input[2] = Serial.read(); input[3] = Serial.read(); } //input berupa ascii if (input[0] == 48) { pulseWidth_kanan = 750; delay (300); } if (input[0] == 49) { pulseWidth_kanan = 900; delay (200);} if (input[0] == 50) { pulseWidth_kanan = 1050; delay (100);} if (input[0] == 51) { pulseWidth_kanan = 1200;delay (100); } if (input[0] == 52) { pulseWidth_kanan = 1350;delay (100); } if (input[1] == 53) { pulseWidth_kiri = 750;delay(300);} if (input[1] == 54) { pulseWidth_kiri = 900; delay(200);} if (input[1] == 55) { pulseWidth_kiri = 1050; delay (100);} if (input[1] == 56) { pulseWidth_kiri = 1200; delay (100);} if (input[1] == 57) { pulseWidth_kiri = 1350; delay (100);} if (input[2] == 65) { digitalWrite(lampu_kiri, HIGH); delay(50) ;} if (input[2] == 66) { digitalWrite(lampu_kiri, LOW); delay(120) ;} if (input[3] == 67) { digitalWrite(lampu_kanan, HIGH); delay (50);} if (input[3] == 68) { digitalWrite(lampu_kanan, LOW);delay (120); } // print pulseWidth back to the Serial Monitor (uncomment to debug) Serial.print("Pulse Width1: "); Serial.print(pulseWidth_kanan); Serial.println("us"); // microseconds Serial.print("Pulse Width2: "); Serial.print(pulseWidth_kiri); Serial.println("us"); // microseconds } // pulse the servo every 20 ms (refreshTime) with current pulseWidth // this will hold the servo's position if unchanged, or move it if changed if (millis() - lastPulse >= refreshTime) { digitalWrite(servo_kanan, HIGH); // start the pulse // pulse width delayMicroseconds(pulseWidth_kanan);

204

82 84 85 86 87 88 89

digitalWrite(servo_kanan, LOW); digitalWrite(servo_kiri, HIGH); digitalWrite(servo_kiri, LOW); lastPulse = millis(); the last pulse } } delayMicroseconds(pulseWidth_kiri);

// stop the pulse // start the pulse // pulse width

// save the time of

205

Você também pode gostar