HALAMAN JUDUL
TUGAS AKHIR – TE 145561
Dimas Novian Aditia Syahputra NRP 2214030048
Dosen Pembimbing Suwito, ST., MT.
PROGRAM STUDI KOMPUTER KONTROL Departemen Teknik Elektro Otomasi Fakultas Vokasi
Institut Teknologi Sepuluh Nopember Surabaya2017
ALGORITMA PENDETEKSI MARKA JALAN BERBASIS
PENGOLAHAN CITRA SEBAGAI PEMANDU NAVIGASI
PADA MINIATUR MOBIL
HALAMAN JUDUL
FINAL PROJECT – TE 145561
Dimas Novian Aditia Syahputra NRP 2214030048
Advisor
Suwito, ST., MT.
COMPUTER CONTROL STUDY PROGRAM
Electrical and Automation Engineering Department Vocational Faculty
Institut Teknologi Sepuluh Nopember Surabaya 2017
ROAD MARKINGS DETECTION ALGORITHM BASED ON
IMAGE PROCESSING AS A NAVIGATION GUIDE ON A CAR
MINIATURE
PERNYATAAN KEASLIAN
PERNYATAAN KEASLIAN
TUGAS AKHIR
Dengan ini saya menyatakan bahwa isi sebagian maupun keseluruhan Tugas Akhir saya dengan judul “Algoritma Pendeteksi Marka Jalan Berbasis Pengolahan Citra Sebagai Pemandu Navigasi Pada Miniatur Mobil” adalah benar-benar hasil karya intelektual mandiri, diselesaikan tanpa menggunakan bahan-bahan yang tidak diijinkan dan bukan merupakan karya pihak lain yang saya akui sebagai karya sendiri.
Semua referensi yang dikutip maupun dirujuk telah ditulis secara lengkap pada daftar pustaka.
Apabila ternyata pernyataan ini tidak benar, saya bersedia menerima sanksi sesuai peraturan yang berlaku.
Surabaya, 17 Juli 2017
Dimas Novian Aditia Syahputra NRP 2214030048
HALAMAN PENGESAHAN
ALGORITMA PENDETEKSI MARKA JALAN BERBASIS PENGOLAHAN CITRA SEBAGAI PEMANDU NAVIGASI PADA
MINIATUR MOBIL
TUGAS AKHIR
Diajukan Guna Memenuhi Sebagian Persyaratan Untuk Memperoleh Gelar Ahli Madya
Pada
Program Studi Komputer Kontrol Departemen Teknik Elektro Otomasi Institut Teknologi Sepuluh Nopember
Menyetujui: Dosen Pembimbing Suwito, ST., MT. NIP. 1981 01 05 2005 01 1004 SURABAYA Juli, 2017
ALGORITMA PENDETEKSI MARKA JALAN BERBASIS PENGOLAHAN CITRA SEBAGAI PEMANDU NAVIGASI PADA
MINIATUR MOBIL
Nama : Dimas Novian Aditia Syahputra Pembimbing : Suwito, ST., MT.
ABSTRAK
Dalam sistem transportasi telah dikembangkan kendaraan dengan sistem navigasi otomatis untuk meningkatkan keamanan dan kenyamanan dalam berkendara. Sistem tersebut mampu mengendalikan mobil agar berjalan pada rute tertentu secara otomatis(humanless). Teknologi pengolahan citra dapat diterapkan dalam hal ini. Kebanyakan penelitian tentang sistem navigasi otomatis dengan pengolahan citra menggunakan garis marka jalan sebagai pemandu navigasi. Umumnya pendeteksian marka jalan dilakukan dengan metode hough transform. Maka dari itu, Tugas Akhir ini bertujuan untuk membuat sistem navigasi otomatis menggunakan algoritma pendeteksi marka jalan dengan metode segmentasi warna dan deteksi kontur. Sehingga diharapkan mobil dapat melaju dan mempertahankan posisinya diantara dua marka jalan. Pada pengujian yang telah dilakukan sistem ini membutuhkan waktu rata-rata 0,5248 detik untuk merespon perubahan posisi marka pada citra yang ditangkap. Kemampuan navigasi yang dapat dilakukan terbatas pada besar sudut lintasan 50ͦ sampai 90ͦ derajat. Hasil sistem navigasi otomatis dalam melakukan satu kali putaran pada lintasan memiliki tingkat keberhasilan 60% pada kecepatan rata-rata 0,48 m/s dan intensitas cahaya kurang dari 145 lux.
Kata Kunci : Automatic Navigation System, Color Segmentation, Contour detection
ROAD MARKINGS DETECTION ALGORITHM BASED ON IMAGE PROCESSING AS A NAVIGATION GUIDE ON A CAR
MINIATURE
Name : Dimas Novian Aditia Syahputra Advisor : Suwito, ST., MT.
ABSTRACT
In vehicle transportation systems have been developed with automated navigation system to enhance security and comfort in drive. The system able to control the cars to run on certain routes automatically (humanless). Image processing technology can be applied in this. Most research about automated navigation system with image processing using line marking path as a navigation guide. Generally path detection performed by hough transform method. So from that, this Final Project aims to make automated navigation system using algorithm marking road marker with method of color segmentation and contour detection. So expect cars can go and maintain their position among the two road markers. In testing that have been performed this system requires average time of 0.5248 seconds to respond to the change of roads marker position in the captured image. Navigation capabilities the forum limited large angle tracks 50 to 90 degree. Results of automated navigation system in performing one-time round on track have 60% success rate at average speed 0,48 m / s and light intensity under 145 lux.
Keywords : Automatic Navigation System, Color Segmentation, Contour detection
KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Tuhan yang selalu memberikan rahmat dan hidayah-Nya sehingga Tugas Akhir ini dapat terselesaikan dengan baik.
Tugas Akhir ini disusun untuk memenuhi sebagian persyaratan Guna Memenuhi Sebagian Persyaratan Untuk Memperoleh Gelar Ahli Madya pada Program Studi Komputer Kontrol, Departemen Teknik Elektro Otomasi, Institut Teknologi Sepuluh Nopember Surabaya dengan judul:
ALGORITMA PENDETEKSI MARKA JALAN BERBASIS PENGOLAHAN CITRA SEBAGAI PEMANDU NAVIGASI PADA
MINIATUR MOBIL
Dalam Tugas Akhir ini dirancang Algoritma Pendeteksi markaa jalan menggunakan metode segmentasi warna dan deteksi kontur. Untuk memandu jalannya mobil.
Penulis mengucapkan terima kasih kepada Ayah dan Ibu tercinta yang senantiasa memberikan dukungan, Bapak Suwito, ST., MT. atas segala bimbingan ilmu, moral, dan spiritual dari awal hingga terselesaikannya Tugas Akhir ini, Bapak dan Ibu guru tersayang yang telah mengantarkan penulis ke jenjang perguruan tinggi dengan ilmu yang bermanfaat. Penulis juga mengucapkan banyak terima kasih kepada semua pihak yang telah membantu baik secara langsung maupun tidak langsung dalam proses penyelesaian Tugas Akhir ini.
Penulis menyadari dan memohon maaf atas segala kekurangan pada Tugas Akhir ini. Akhir kata, semoga Tugas Akhir ini dapat bermanfaat dalam pengembangan keilmuan di kemudian hari.
Surabaya, 17 Juli 2017
DAFTAR ISI
HALAMAN
HALAMAN JUDUL ... i
PERNYATAAN KEASLIAN TUGAS AKHIR... v
HALAMAN PENGESAHAN ... vii
ABSTRAK ... ix
ABSTRACT ... xi
KATA PENGANTAR ... xiii
DAFTAR ISI ... xv
DAFTAR GAMBAR ... xix
DAFTAR TABEL ... xxi
BAB I PENDAHULUAN ... 1 1.1 Latar Belakang ... 1 1.2 Permasalahan ... 1 1.3 Batasan Masalah ... 2 1.4 Tujuan ... 2 1.5 Metodologi Penelitian ... 2 1.6 Sistematika Laporan ... 3 1.7 Relevansi ... 3
BAB II TEORI DASAR ... 5
2.1 Pengertian Citra ... 5
2.2 Dasar Pengolahan Citra Digital ... 5
2.2.1 Teknik Pengambilan Citra Digital ... 6
2.2.2 Teknik Pengolahan Citra Digital [2] ... 6
2.3 Jenis-Jenis Citra Digital ... 7
2.4 Segmentasi Warna ... 9
2.5 Transformasi Morpologi ... 12
2.5.1 Dilatasi ... 12
2.5.2 Erosi ... 13
2.6 Dasar Operasi Threasholding ... 13
2.7 Kontur ... 14
2.7.1 Deteksi Kontur ... 14
2.7.2 Fitur Pada Kontur... 15
2.8 Momen Kontur dan Titik Pusat Massa (Centroid) ... 15
2.9 Sudut Dalam Segitiga ... 15
BAB III PERANCANGAN SISTEM ...17
3.1 Perencanaan Sistem ... 17
3.2 Konfigurasi Perangkat Pengolahan Citra ... 17
3.2.1 Installasi Sistem Operasi... 18
3.2.2 Installasi OpenCV dan Paket Pendukung ... 20
3.3 Algoritma Pengolahan Citra ... 21
3.3.1 Pengambilan Citra ... 22
3.3.2 Pemotongan citra ... 25
3.3.3 Segmentasi Citra ... 28
3.3.4 Menemukan Kontur ... 32
3.3.5 Menemukan Titik Pusat Massa ... 34
3.3.6 Titik Antara Dua Marka ... 36
3.3.7 Sudut Navigasi ... 37
3.4 Perancangan Mekanik Miniatur Mobil ... 38
3.5 Karakteristik Sensor ... 40
3.6 Perancangan Perangkat Keras ... 41
3.7 Kecepatan Minatur Mobil ... 42
3.8 Sistem Komunikasi Raspberry Pi dengan Mikrokontroler ... 42
BAB IV PENGUJIAN SISTEM ...45
4.1 Pengujian Kemampuan Deteksi Lintasan ... 45
4.2 Pengujian Kemampuan Deteksi Lintasan pada Intensitas Cahaya Tertentu ... 47
4.3 Pengujian Kemampuan Tracking Marka ... 51
4.4 Pengujian Kecepatan Respon Sistem ... 53
4.5 Pengujian Kemampuan Pemandu Navigasi ... 54
BAB V PENUTUP ...61
5.1 Kesimpulan ... 61
5.2 Saran ... 61
DAFTAR PUSTAKA ...63
LAMPIRAN A ...65
A.1 Program Pengolahan Citra ... 65
A.2 Program Penggerak Servo ... 70
LAMPIRAN B ...75
B.1 Datasheet Raspberry Pi ... 75
B.2 Datasheet Arduino Uno R3 ... 77
B.4 Spesifikasi Webcam M-Tech WB-200 ... 79
B.5 Datasheet Driver Motor L298N ... 81
LAMPIRAN C ... 83
C.1 Data Waktu Respon Sistem ... 83
C.2 Data Sudut Navigasi ... 84
C.3 Dokumentasi Pengujian Pengaruh Intensitas Cahaya ... 90
C.4 Dokumentasi Pengujian Kemampuan Navigasi ... 91
DAFTAR GAMBAR
HALAMAN
Gambar 2.1 Citra RGB ... 8
Gambar 2.2 Citra Abu-abu ... 8
Gambar 2.3 Pembentukan Citra Biner ... 9
Gambar 2.4 Filter Gaussian ... 10
Gambar 2.5 Perbedaan RGB dan HSV ... 11
Gambar 2.6 Tabel Warna ... 11
Gambar 2.7 Dilatasi ... 12
Gambar 2.8 Erosi ... 13
Gambar 2.9 Contoh Thresholding... 13
Gambar 2.10 A. Orisinil B. Biner C. Biner Terbalik D. Potong E. Zero F. Zero Terbalik ... 14
Gambar 2.11 Contoh Kontur ... 14
Gambar 2.12 Segitiga ... 16
Gambar 3.1 Diagram Fungsional Sistem ... 17
Gambar 3.2 Sistem Operasi Raspbian Jessie ... 19
Gambar 3.3 Tampilan Win32 Disk Imager ... 19
Gambar 3.4 Menulis Sistem Operasi ... 19
Gambar 3.5 Perintah Update dan Upgrade Raspberry Pi ... 20
Gambar 3.6 Perintah Install Python IDLE ... 20
Gambar 3.7 Perintah Install Paket Penunjang Python ... 20
Gambar 3.8 Perintah Install Codec dan Ffmpeg ... 21
Gambar 3.9 Perintah Import Library OpenCV pada Python ... 21
Gambar 3.10 Diagram Pengolahan Citra ... 22
Gambar 3.11 Diagram Alir Pengambilan Citra ... 23
Gambar 3.12 Citra Kamera ... 24
Gambar 3.13 Desain Pemotongan Citra ... 25
Gambar 3.14 Pemotongan Citra Menjadi ROI ... 26
Gambar 3.15 Pemotongan Roi Menjadi Kiri ... 27
Gambar 3.16 Pemotongan ROI Menjadi Kanan ... 27
Gambar 3.17 Hasil Pemotongan Citra ... 28
Gambar 3.18 Flowchart Konversi RGB Ke HSV ... 30
Gambar 3.19 Flowchart Thresholding ... 30
Gambar 3.20 A.Citra Asal, B. Hasil Filter Gaussian C.Citra HSV dan D.Citra Biner. ... 31
Gambar 3.21 A. Citra Biner B. Citra Hasil Erosi dan Dilatasi ... 32
Gambar 3.22 A. Kontur B. Citra Biner ... 34
Gambar 3.23 Hasil Pencarian Centroid ... 35
Gambar 3.24 Flowchart Pencarian Titik Antara Dua Marka ... 36
Gambar 3.25 Hasil Pencarian Tiik Tengah ... 37
Gambar 3.26 Ilustrasi Pencarian Sudut Navigasi ... 37
Gambar 3.27 Miniatur Mobil Dengan Kamera ... 39
Gambar 3.28 Roda Depan dengan Kemudi Servo. ... 39
Gambar 3.29 Penempatan Kamera ... 40
Gambar 3.30 Field of View ... 41
Gambar 3.31 Rangkaian Perangkat Keras ... 42
Gambar 3.32 Flowchart Kontrol Arah Navigasi ... 43
Gambar 3.33 Flowchart Penerima Arduino ... 44
Gambar 4.1 Deteksi Lintasan Lurus ... 45
Gambar 4.2 Deteksi Lintasan Belok Kanan ... 46
Gambar 4.3 Deteksi Lintasan Belok kiri ... 46
Gambar 4.4 Kemampuan Tracking Lintasan ... 52
Gambar 4.5 Pengujian Kecepatan Respon Sistem ... 53
Gambar 4.6 Grafik Respon Sistem ... 54
Gambar 4.7 Lintasan ... 55
DAFTAR TABEL
HALAMAN
Tabel 4.1 Kemampuan Deteksi Marka Pada Intensitas 13lx ... 47
Tabel 4.2 Kemampuan Deteksi Marka Pada Intensitas 23lx ... 48
Tabel 4.3 Kemampuan Deteksi Marka Pada Intensitas 29lx ... 49
Tabel 4.4 Kemampuan Deteksi Marka Pada Intensitas 39lx ... 50
Tabel 4.5 Kemampuan Deteksi Marka Pada Intensitas 145lx ... 50
Tabel 4.6 Waktu respon Sistem ...5483
Tabel 4.7 Uji Kemampuan Navigasi Dengan Kemiringan 90 ... 56
Tabel 4.8 Uji Kemampuan Navigasi Dengan Kemiringan 75 ... 56
Tabel 4.9 Uji Kemampuan Navigasi Dengan Kemiringan 50 ... 57
Tabel 4.10 Uji Kemampuan Navigasi dengan kemiringan 30 ... 57
Tabel 4.11 Uji Kemampuan Navigasi Dengan Kemiringan 0 ... 58
Tabel 4.12 Pengujian Sistem Secara Keseluruhan Berlawanan Arah Jarum Jam ... 58
1
BAB I
PENDAHULUAN
1.1 Latar Belakang
Perkembangan jumlah kendaraan di Indonesia mengalami peningkatan yang sangat pesat. Salah satunya adalah kendaraan jenis mobil pribadi. Pada tahun 2009 terdapat 7.910.407 unit mobil pribadi, sedangkan pada tahun 2013 meningkat menjadi 11.484.514 unit [10]. Perkembangan ini diikuti oleh peningkatan angka kecelakaan akibat pengemudi kendaraan yang kemungkinan mengalami kelelahan pada saat mengendarai mobil.
Untuk mengurangi resiko kecelakaan tersebut, saat ini telah dikembangkan sebuah teknologi yang disebut ITS (Intelligent
Transportation System). Menurut EU Directive 2010/40/EU (7 juli
2010), ITS didefinisikan sebagai sebuah sistem yang menggabungkan teknologi informasi, elektronika dan komunikasi yang kemudian diaplikasikan pada bidang transportasi [16]. Tujuan utama dari sistem ini adalah untuk meningkatkan keamanan dan kenyamanan dalam berkendara. Salah satu aplikasi dari ITS adalah navigasi otomatis pada kendaraan roda empat. Kendaraan tersebut dapat berjalan melalui rute tertentu tanpa pengemudi. Salah satu metode yang digunakan pada ITS adalah menggunakan kamera sebagai penangkap gambar. Gambar dari kamera akan melalui proses pengolahan citra. Dengan pengolahan citra ini, kendaraan dapat melakukan navigasi agar tetap berada dalam jalur lalu lintas.
Atas latar belakang dan permasalahan tersebut dalam tugas akhir ini akan dibuat sebuah sistem pengendali navigasi pada miniatur mobil yang dapat melakukan navigasi otomatis melintasi rute tertentu. Sistem ini terdiri dari single board computer yang dilengkapi dengan kamera yang akan memproses gambar untuk mendeteksi marka jalan sebagai pemandu navigasi kendaraan. Sinyal kontrol dari hasil pengolahan citra diumpankan pada motor servo sebagai penggerak roda depan miniatur mobil.
1.2 Permasalahan
Berdasarkan latar belakang diatas maka permasalahan utama pada tugas akhir ini adalah melakukan tracking terhadap marka jalan agar dapat digunakan sebagai pemandu navigasi miniatur mobil. Algoritma
yang dirancang harus mampu membedakan antara garis marka jalan dan jalan. Dimana garis marka jalan di deteksi marka secara kontinyu. Intensitas cahaya berlebih dapat mempengaruhi hasil penangkapan citra dan mengakibatkan kegagalan deteksi marka, sehingga perlu dilakukan
thresholding yang tepat agar penangkapan citra berjalan dengan baik.
1.3 Batasan Masalah
Tugas Akhir ini berfokus pada pengendalian navigasi miniatur mobil agar tetap berjalan pada lintasan yang berupa model jalan dengan background berwarna hitam dan garis berwarna putih pada sisi kanan dan kiri mobil sebagai marka jalan. Miniatur mobil hanya mendeteksi marka jalan pada sisi kiri dan kanan mobil dan berjalan diantara kedua garis tersebut. Lintasan berupa sirkuit berbentuk huruf 0 tanpa persimpangan dan halangan dengan sudut belokan lebih besar dari 50ͦ. Pengujian dilakukan pada lingkungan dengan intensitas cahaya kurang dari 145 lux.
1.4 Tujuan
Perancangan algoritma pendeteksi marka jalan berbasis pengolahan citra bertujuan sebagai referensi alternatif bagi perkembangan dunia transportasi dalam hal kendaraan otomatis untuk meningkatkan keamanan dan kenyamanan dalam berkendara. Dengan menerapkan teknologi pengolahan citra pada sistem trasportasi, khususnya miniatur mobil serta menerapkan teknologi single board
computer dan mikrokontroler dalam mengatur navigasi pada miniatur
mobil.
1.5 Metodologi Penelitian
Dalam pembuatan Tugas Akhir ini dilakukan melalui beberapa tahapan, tahapan tersebut antara lain studi literatur, perancangan dan pembuatan perangkat keras, perancangan dan pembuatan perangkat lunak, integrasi perangkat keras dan perangkat lunak, dan yang terakhir adalah pembuatan buku Tugas Akhir. Pada tahap studi literatur akan dipelajari teori dasar mengenai teknik pengolahan citra digital, metode pendeteksian objek menggunakan pengolahan, komunikasi serial, serta pengaturan servo. Pada tahap perancangan dan pembuatan perangkat keras akan dilakukan modifikasi miniatur mobil. Pada tahap perancangan dan pembuatan perangkat lunak akan dibuat perangkat lunak pendetaksi marka jalan dan perangkat lunak pengatur servo. Yang
terakhir adalah integrasi antara perangkat keras dan perangkat lunak serta melakukan uji coba dan perbaikan sistem. Tahap akhir dari Tugas Akhir ini adalah penyusunan buku Tugas Akhir.
1.6 Sistematika Laporan
Pembahasan Tugas Akhir ini akan dibagi menjadi lima Bab dengan sistematika sebagai berikut:
Bab I Pendahuluan
Bab ini meliputi latar belakang, permasalahan, tujuan , metodologi penelitian, sistematika laporan, dan relevansi.
Bab II Teori Dasar
Pada bab ini akan dibahas teori dasar dan teori penunjang terkait perangkat dan bahan yang digunakan dalam Tugas Akhir ini.
Bab III Perancangan Sistem
Membahas perencanaan dan pembuatan perangkat keras yang meliputi rangkaian-rangkaian, desain prototipe, dan perangkat lunak yang yang akan digunakan untuk menjalankan alat tersebut
Bab IV Pengujian Sistem
Pada bab ini dilakukan pengujian dari sistem yang telah dibuat pada bab 3.
Bab V Penutup
Bab ini berisi kesimpulan dan saran dari hasil pembahasan yang telah diperoleh.
1.7 Relevansi
Dengan adanya Tugas Akhir ini diharapkan dapat diaplikasikan pada mobil sesungguhnya, serta dapat dijadikan sebagai referensi atau ide dalam kemajuan transportasi, khususnya sistem navigasi otomatis.
2
BAB II
TEORI DASAR
Pada bab ini akan dibahas teori dasar dan teori penunjang terkait perangkat dan bahan yang digunakan dalam tugas akhir ini.
2.1 Pengertian Citra
Citra atau gambar dua dimensi merupakan informasi berbentuk visual. Suatu citra diperoleh dari penangkapan intensitas cahaya yang dipantulkan oleh suatu objek. Ketika cahaya mengenai suatu objek, sebagian dari cahaya tersebut akan dipantulkan kembali. Pantulan tersebut akan diterima oleh alat – alat pengindra optik seperti kamera, mata manusia , scanner, dan sebagainya. Alat pengindra optik akan menangkap bayangan dari objek sesuai intensitas cahaya yang dipantulkan.
Berdasarkan sinyal pembentuknya, citra dibedakan menjadi dua jenis yaitu citra analog dan citra digital. Citra analog merupakan citra yang terbentuk dari sinyal kontinyu. Nilai intensitas cahaya pada citra analog memiliki rentang dari 0 sampai tak hingga. Contoh alat akuisisi citra analog antara lain mata manusia dan kamera analog. Pada citra digital, kontinuitas intensitas cahaya dikuantisasi sesuai resolusi alat perekam. Besar resolusi citra digital merupakan pembagian gambar analog menjadi N baris dan M kolom sehingga menjadi citra diskrit dalam fungsi intensitas 2 dimensi f(x, y), dimana x dan y adalah koordinat spasial dan f pada titik (x, y) merupakan tingkat kecerahan (brightness) atau tingkat keabuan suatu citra pada suatu titik. Citra digital adalah citra f(x,y) yang telah dilakukan digitalisasi baik koordinat area maupun tingkat kecerahannya. Nilai f di koordinat (x,y) menunjukkan tingkat kecerahan atau tingkat keabuan dari citra pada titik tersebut
2.2 Dasar Pengolahan Citra Digital
Secara umum pengolahan citra mencakup dua aspek pengubahan sebuah citra seperti berikut ini:
1. Meningkatkan kualiatas informasi dari sebuah citra(gambar) yang digunakan untuk kepentingan interpretasi manusia. 2. Mengubah citra dari sebuah gambar yang digunakan untuk
mempermudah pemrosesan persepsi mesin autonomous agar lebih mudah dalam menggambil keputusan.
Pengolahan citra digital, merupakan teknik pengolahan citra dengan menggunakan komputer. [9]
2.2.1 Teknik Pengambilan Citra Digital
Tahap pertama dari pengolahan citra digital adalah menentukan gambar yang akan diolah. Ada beberapa teknik pengambilan citra digital yang bisa dilakukan dengan menggunakan alat pengindra optik digital, antara lain dengan kamera digital atau scanner. Hasil yang diperoleh dari kamera atau scanner berupa citra dalam bentuk raster(citra dengan model matriks). Selain membutuhkan peralatan input, teknik pengambilan citra juga membutuhkan frame graber yang berupa rangkaian elektrik penangkap citra dalam satuan frame tunggal.
Selain mengunakan perangkat pengindra optik, teknik pengambilan citra dapat dilakukan dengan menggunakan teknik grafika komputer, yaitu dengan membentuk objek citra komputer. Contoh dari teknik ini adalah pembuatan animasi dan pembuatan logo. Hasil dari teknik grafika komputer dapat berupa citra raster maupun citra vektor.
Terdapat beberapa perbedaan antara citra raster dan dan citra vektor, keduanya memiliki kelebihan dan kekurangan masing-masing sehingga untuk memutuskan menggunakan citra raster maupun citra vektor dapat disesuaikan dengan proyek yang dikerjakan.
2.2.2 Teknik Pengolahan Citra Digital [2]
Secara umum terdapat tiga kelas dalam pengolahan citra digital, kelas tersebut dibagi lagi dalam beberapa sub kelas. Setiap sub kelas digunakan untuk mengatasi permasalahan yang spesifik. Adapun pembagian kelas tersebut antara lain :
1. Kelas pengolahan tingkat rendah(low level processing). Pengolahan ini merupakan operasi dasar dalam pengolahan citra. Terdapat tiga sub kelas dalam pengolahan tingkat rendah, seperti perbaikan citra(image enhancement), pengurangan noise(noise reduction), restorasi citra(image restoration). 2. Kelas pengolahan tingkat menengah(mid level processing).
Pengolahan ini meliputi segmentasi citra(Image segmentation), deskripsi objek(object description), dan klasifikasi objek(object
classification).
3. Kelas pengolahan tingkat tinggi(high level processing). Pengolahan ini meliputi analisa citra(image analysis).
Dari ketiga kelas tersebut, sub kelas pada teknik-teknik pengolahan citra antara lain:
1. Image Enhancement meliputi teknik pemrosesan citra sehingga hasilnya menjadi lebih bagus. Contohnya menajamkan atau mengurangi blur, menandai tepi, meningkatkan kontras dan kecerahan, serta menghilangkan noise pada citra.
2. Image Restoration adalah proses mengembalikan keadaan suatu citra yang telah rusak menjadi seperti sedia kala. Sebagai contoh seperti menghilangkan blur akibat pergerakan linier, menghilangkan distorsi optik, serta menghilangkan efek tua pada sebuah gambar.
3. Image Compression meliputi merubah ukuran suatu citra dalam bentuk yang lebih compact sehingga memori yang digunakan semakin sedikit. Hal yang harus diperhatikan dalam image
compression adalah citra hasil kompresi harus mempunyai
informasi yang bagus atau tidak rusak.
4. Image Segmentation meliputi pembagian gambar menjadi bagian yang berbeda atau mengisolasi aspek tertentu dari sebuah gambar. Sebagai contoh diantaranya menemukan garis, bentuk khusus pada gambar, mengidentifikasi pohon, gedung atau jalan.
5. Image Analysis bertujuan untuk mendapatkan informasi khusus dari suatu citra sehingga membantu dalam identifikasi objek. 6. Image Reconstruction bertujuan untuk membentuk ulang objek
dari beberapa hasil proyeksi. 2.3 Jenis-Jenis Citra Digital
Berdasarkan komponen pembentuk warnanya citra digital dibedakan menjadi tiga macam, yaitu :
a. Citra RGB
Pada citra RGB, masing-masing piksel terbentuk dari kombinasi tiga komponen warna yaitu merah(Red), hijau(Green) dan biru(Blue). Setiap komponen memiliki nilai antara 0-255, sehingga total nilai yang digunakan dalam citra RGB adalah 256 pangkat 3 atau 16.777.216 kemungkinan warna. Contoh citra RGB dapat dilihat pada gambar 2.1.
Gambar 2.1 Citra RGB
b. Citra Abu-abu
Setiap piksel pada citra grayscale berisikan warna abu-abu dengan nilai antara 0-255. Nilai tersebut diperoleh dari rata-rata ketiga komponen pembentuk citra RGB dengan perhitungan dan contoh citra abu-abu dapat dilihat pada gambar 2.2 :
Gambar 2.2 Citra Abu-abu
c. Citra Biner
Pada citra biner hanya terdapat dua nilai piksel, yaitu 0 yang merepresentasikan warna hitam dan 1 yang merepresentasikan warna putih. Pembentukan citra biner dilakukan dengan pemetaan nilai piksel
dengan syarat tertentu. Perhatikan contoh pembentukan citra biner pada gambar 2.3.
Gambar 2.3 Pembentukan Citra Biner
2.4 Segmentasi Warna
Segmentasi citra merupakan salah satu teknik pengolahan citra yang umum digunakan dalam pendeteksian dan tracking objek tertentu. Salah satu teknik segmentasi citra yang sering digunakan dalam tracking objek adalah segmentasi citra berdasarkan warna. Warna pada dasarnya merupakan hasil persepsi cahaya dalam spektrum wilayah yang terlihat oleh retina mata, dan memiliki panjang gelombang antara 400nm sampai dengan 700nm (Poynton, 1997). Ruang warna atau yang lebih sering disebut sebagai model warna merupakan sebuah cara atau metode untuk mengatur, membuat dan memvisualisasikan warna (Ford and Roberts, 1998). Terdapat beberapa jenis ruang warna, diantaranya sebagai berikut:
1. Ruang Warna RGB(Red Green Blue) 2. Ruang Warna HSV(Hue Saturation Value)
3. Ruang Warna YcbCr (Lumunance-Chromium)
Pada segmentasi warna dapat digunakan ruang warna HSV. Untuk menggunakan ruang warna HSV diperlukan proses konversi dari citra RGB yang ditangkap oleh kamera. Langkah-langkah segmentasi citra menggunakan ruang warna HSV adalah sebagai berikut ini:
1. Filter semua noise pada citra asli sebelum melakukan segmentasi warna. Salah satu filter yang sering digunakan adalah filter Gaussian. Filter tersebut akan melakukan konvolusi pada setiap piksel pada citra input dengan kernel Gaussian dan kemudian menjumlahkan semuanya untuk menghasilkan citra output. Fungsi filter Gausian 2d adalah sebagai berikut.
Proses konvolusi citra dengan filter tersebut dapat dilihat pada gambar 2.4.
Gambar 2.4 Filter Gaussian
2. Proses berikutnya adalah transformasi ruang warna dari RGB ke HSV. Proses konversi tersebut dilakukan dengan memperhatikan perbedaan antara model warna RGB dan HSV yang dapat dilihat pada gambar 2.5.
Gambar 2.5 Perbedaan RGB dan HSV
Perhitungan trasnformasi dari model warna RGB ke HSV sesuai ilustrasi pada gambar 2.5 dapat dirumuskan dengan :
Rumus tersebut menghasilkan nilai HSV dalam skala 0-1. Kalikan dahulu dengan 255 untuk memperoleh nilai jangkauan 0-255. Setelah citra diubah dalam bentuk HSV langkah berikutnya adalah menentukan nilai warna objek yang akan diambil. Umumnya batas warna tersebut memiliki batas atas dan batas bawah untuk setiap komponen HSV. Rentang nilai warna objek tersebut dapat dicari dengan melihat tabel warna atau trial and error. Contoh dari tabel warna pada gambar 2.6.
2.5 Transformasi Morpologi
Secara singkat transformasi morpologi dapat diartikan sebagai sebuah operasi yang mengolah citra berdasarkan bentuk. Operasi morpologi menggunakan elemen struktur kepada citra input dan menghasilkan citra output. Terdapat berbagai macam metode transformasi morpologi, namun yang paling sering digunakan adalah operasi erosi dan dilatasi. Dua operasi tersebut memiliki penggunaan yang luas.
2.5.1 Dilatasi
Operasi dilatasi terdiri dari konvolusi sebuah citra A dengan kernel B, Pada umumnya kernel berbentuk persegi atau lingkaran. Prosesnya adalah membandingkan setiap piksel citra input dengan nilai anchor
point dengan cara melapiskan (superimpose) kernel dengan citra
sehingga pusat kernel tepat dengan posisi piksel citra yang diproses. Jika paling sedikit ada 1 piksel pada kernel sama dengan nilai piksel objek (foreground) citra maka piksel input di set nilainya dengan nilai pixel
foreground, dan bila semua piksel yang berhubungan adalah background
maka input pixel di beri nilai pixel background. Proses serupa dilanjutkan dengan menggerakan tapis piksel demi piksel pada citra input. Operasi ini mengakibatkan daerah terang dalam citra akan “tumbuh” (sehingga disebut dilatasi). Pada gambar 2.7 merupakan ilustrasi operasi dilatasi.
2.5.2 Erosi
Berkebalikan dengan operasi dilatasi, erosi akan membandingkan nilai minimum yang dilalui kernel dan kemudian akan mengganti nilai piksel dibawah anchor point dengan nilai piksel minimal. Ilustrasi erosi dapat dilihat pada gambar 2.8.
Gambar 2.8 Erosi
2.6 Dasar Operasi Threasholding
Thersholding merupakan salah satu metode segmentasi citra yang
paling sederhana. Contoh penggunaannya adalah memisahkan daerah dari sebuah citra yang berhubungan dengan objek yang akan kita analisa(mencari Region Of Interest). Pemisahan ini berdasarkan variasi intensitas antara piksel pada objek dan piksel pada background. Untuk membedakan piksel yang kita butuhkan dan piksel sisa(yang terkadang tidak digunakan lagi), kita melakukan pembandingan nilai intensitas masing-masing piksel dengan mematuhi threshold(daerah ambang batas) sesuai dengan kebutuhan. Sebagai contoh telah dilakukan pemisahan piksel yang dianggap penting, kita dapat menentukan nilai untuk mengidentifikasi suatu objek (0 sebagai hitam dan 255 sebagai putih atau nilai lain yang sesuai kebutuhan). Contoh thresholding ada pada gambar 2.9.
Secara umum terdapat lima macam thresholding. Untuk mengilustrasikan cara kerja dari thresholding, Pada gambar 2.10 merupakan perbandingan dari masing-masing thresholding, Gambar A merupakan citra sumber, citra B adalah hasil thresholding biner, dan seterusnya.
Gambar 2.10 A. Orisinil B. Biner C. Biner Terbalik D. Potong E. Zero F. Zero Terbalik
2.7 Kontur
Kontur(Contour) dapat diartikan secara sederhana sebagai sebuah kurva yang semua titiknya saling terhubung(sepanjang batas) dan memiliki warna atau intensitas yang sama. Kontur merupakan alat yang sangat bermanfaat untuk analisa bidang serta deteksi dan pengenalan objek. Untuk akurasi yang lebih baik dapat menggunakan citra biner. 2.7.1 Deteksi Kontur
Untuk mencari sebuah kontur dengan akurasi yang baik, sebelumnya harus dilakukan prosedur binerisasi citra. kontur yang terbaca merupakan wilayah terang atau putih dari citra biner. Untuk lebih jelasnya dapat dilihat pada gambar 2.11.
2.7.2 Fitur Pada Kontur
Pada sebuah kontur terdapat beberapa fitur yang dapat digunakan untuk berbagai tujuan seperti menentukan titik masa atau deteksi objek. Fitur tersebut diantaranya adalah moments, contour area, contour
perimeter, contour approximation, convex hull, bounding rectangle, minimum enclosing circle, fitting an ellipse, fitting a line.
2.8 Momen Kontur dan Titik Pusat Massa (Centroid)
Dalam pengolahan citra, image moment dapat didefinisikan sebagai nilai rata-rata intensitas piksel pada sebuah gambar. Momen merupakan salah satu fitur pada fungsi kontur. Momen dapat digunakan untuk melakukan perhitungan terhadap kontur, seperti menentukan titik pusat massa dan area dari objek. Variabel momen didasarkan pada citra biner. momen memiliki beberapa orde, setiap orde memiliki kegunaannya masing-masing.
1. Momen orde 0 : ukuran
2. Momen orde 1 : titik pusat massa 3. Momen orde 2 : orientasi 4. Momen orde > 2 : bentuk
dari citra dengan intensitas I(x,y), moment didefinisikan oleh: ...(1) Sehingga pusat moment merupakan translasi invarian:
...(2) ...(3)
Dari persamaan diatas centroid dapat didefinisikan sebagai titik pusat massa bidang dua dimensi dengan koordinat .
2.9 Sudut Dalam Segitiga
Pada sebuah bangun segitiga terdapat jumlah sudut 180 . Sudut sudut dalam segitiga dapat dicari dengan persamaan trigonometri. Pada contoh bangun segitiga siku-siku pada gambar 2.12 dapat dicari besar setiap sudut jika diketahui panjang dua sisi dari segitiga.
Gambar 2.12 Segitiga
Diasumsikan nilai X dan Y telah diketahui, maka dapat dihitung nilai R dengan . Sedangkan sudut α dapat dihitung dengan:
2.10 Single Board Computer
Single Board Computer(SBC) merupakan sebuah komputer yang
dirangkai dalam sebuah papan sirkuit tunggal. Pada papan tersebut sudah terdapat mikroprosesor, memori dan perangkat input output. Pada umumnya SBC sering dibuat secara sederhana tanpa bergantung pada slot ekspansi sebagai gantinya biasanya SBC dilengkapi oleh pin GPIO(General Purpose Input Output). Beberapa contoh SBC antara lain adalah Raspberry Pi, Orange Pi, Latte Panda, dan Beaglebone Black.
3
BAB III
PERANCANGAN SISTEM
Pada bab ini akan dijelaskan mengenai perancangan dan pembuatan Sistem Pengendali Navigasi Pada Miniatur Mobil Menggunakan Algoritma Pendeteksi Marka Jalan Berbasis Pengolahan Citra meliputi blok fungsional sistem yang akan menjelaskan proses kerja alat dalam bentuk alur diagram, perancangan dan desain mekanis yang mendukung cara kerja alat, serta algoritma pengolahan citra dan perangkat lunak yang mengatur cara kerja alat..
3.1 Perencanaan Sistem
Pada Tugas Akhir ini, sistem pemandu navigasi pada miniatur mobil menggunakan kamera sebagai sensor visual. Kamera akan menangkap citra lintasan yang akan diproses pada tahap pengolahan citra sehingga terdeteksi marka jalan. Setelah marka jalan terdeteksi dan diperoleh posisi miniatur terhadap marka jalan, data posisi akan dikirimkan ke mikrokontroler melalui komunikasi serial, mikrokontroller akan menggerakan servo penggerak roda depan. Diagram fungsional sistem yang akan dibuat dapat dilihat pada gambar 3.1. Miniatur Mobil Kamera Servo Penggerak Roda Depan Pengolahan Citra Komunikasi Serial Slave Mikrokontroler
Gambar 3.1 Diagram Fungsional Sistem
3.2 Konfigurasi Perangkat Pengolahan Citra
Pengolahan citra membutuhkan perangkat pendukung seperti prosesor dan alat penangkap citra. Pada Tugas Akhir ini pengolahan
citra menggunakan sebuah webcam sebagai perangkat penangkap citra dan sebuah Single Board Computer (SBC) Raspberry Pi 3 sebagai prosesor dalam pengolahan citra. Adapun spesifikasi Raspberry Pi 3 adalah sebagai berikut :
1. RAM :1GB LPDDR2
2. CPU :4xCPU ARM Cortex-A53 1,2GHz 3. GPU :Broadcom Videocore IV
4. Dimensi : 85 x 56 x 17mm
Digunakannya Raspberry Pi dalam Tugas Akhir ini karena ukurannya yang kecil sehingga memungkinkan membuat sistem yang
portable. Kecepatan CPU yang digunakan juga setara dengan komputer
desktop sehingga memungkinkan untuk melakukan pengolahan citra. GPU Broadcom Videocore IV yang disematkan dalam Raspberry Pi mampu memutar sebuah video 1080p dengan kecepatan 30fps dapat membantu pemrosesan citra.
Raspberry Pi membutuhkan beberapa konfigurasi yang harus dilakukan sebelum perangkat siap digunakan sebagai prosesor pada pengolahan citra. Konfigurasi yang dilakukan antara lain instalasi sistem operasi yang akan berjalan pada Raspberry Pi serta paket pendukung yang dibutuhkan untuk melakukan pengolahan citra. Sistem operasi yang akan digunakan adalah Raspbian Jessie. Pada Tugas Akhir ini Raspbian Jessie digunakan sebagai sistem operasi karena merupakan sistem operasi yang umum digunakan dan memiliki repository dan dokumentasi yang lengkap sebagai referensi dalam mempermudah proses pembuatan Tugas Akhir. Perangkat pendukung antara lain Python IDLE untuk menulis program, library OpenCV-Python untuk pengolahan citra, codec dan ffmpeg sebagai paket multimedia.
3.2.1 Installasi Sistem Operasi
Pada Raspberry Pi sistem operasi dipasang pada sebuah SD card yang akan bertindak sebagai harddisk pada komputer. Proses pemasangan sistem operasi pada SD card dilakukan dengan bantuan program Win32 Disk Imager dengan langkah sebagai berikut.
1. Untuk mendapatkan sistem operasi Raspbian Jessie yang terbaru sistem operasi dapat didownload dari situs resmi Raspberry Pi pada alamat berikut https://www.RaspberryPi.org/downloads/Raspbian/. Setelah download selesai kemudian file akan diekstrak sehingga didapatkan file dengan ekstensi “.img”. File ini merupakan image
sistem operasi Raspbian. Contoh sistem operasi yang telah diekstrak ada pada gambar 3.2.
Gambar 3.2 Sistem Operasi Raspbian Jessie
2. Langkah selanjutnya adalah memasukkan sistem operasi tersebut dalam sebuah sd card menggunakan program Win32 Disk Imager. Tampilan program Win32 Disk Imager seperti pada gambar 3.3.
Gambar 3.3 Tampilan Win32 Disk Imager
3. Pada image file, masukkan file sistem operasi Raspbian jessie dan pada device dipilih sdcard yang akan digunakan. Kemudian klik write dan tunggu hingga selesai. Untuk lebih jelas dapat dilihat pada gambar 3.4.
3.2.2 Installasi OpenCV dan Paket Pendukung
Setelah menginstal sistem operasi dan Raspberry dapat digunakan, tahap selanjutnya adalah dengan melakukan instalasi Python IDLE dan dan library OpenCV serta perangkat pendukung lain seperi codec dan ffmpeg. Pada saat instalasi pastikan Raspberry terhubung dengan internet.
1. Tahap pertama dalam instalasi dilakukan dengan mengupdate dan mengupgrade Raspbian dengan mengetikkan perintah gambar 3.5 pada terminal.
Gambar 3.5 Perintah Update dan Upgrade Raspberry Pi
2. Setelah update dan upgrade selesai kemudian dilakukan instalasi Python IDLE dengan mengetikkan perintah gambar 3.6 pada terminal.
Gambar 3.6 Perintah Install Python IDLE
3. Setelah Python IDLE terinstall, berikutnya adalah menginstall paket penunjang Python dan OpenCV dengan mengetikkan perintah gambar 3.7 pada terminal.
Gambar 3.7 Perintah Install Paket Penunjang Python
4. Berikutnya adalah menginstall codec dan ffmpeg untuk pelengkap OpenCV dan Python. Instalasi dapat dilakukan dengan mengetikkan perintah gambar 3.8 pada terminal.
Gambar 3.8 Perintah Install Codec dan Ffmpeg
5. Tahap selanjutnya adalah memastikan bahwa OpenCV telah terhubung pada Python dengan baik. Ketikkan perintah gambar 3.9 pada pyhon shell. Setelah OpenCV terhubung dengan baik maka Raspberry siap digunakan untuk proses pengolahan citra.
import cv2
Gambar 3.9 Perintah Import Library OpenCV pada Python
3.3 Algoritma Pengolahan Citra
Pada Tugas Akhir ini digunakan marka jalan berwarna putih sebagai pemandu navigasi miniatur mobil. Penggunaan warna marka putih disesuaikan dengan kondisi jalanan di Indonesia. Pada setiap
frame yang ditangkap oleh kamera, pengolahan citra untuk mendeteksi
marka akan dilakukan secara bertahap. Proses tersebut antara lain: pemotongan citra input dengan ukuran tertentu, Gaussian Filtering, konversi warna RGB ke HSV, segmentasi citra berdasarkan warna, erosi dan dilatasi, menemukan kontur, dan menemukan centroid. Diagram alir proses pengolahan citra terdapat pada gambar 3.10. Pembuatan software pengolahan citra tersebut akan dikerjakan pada Python IDLE 2.79 yang didukung oleh library OpenCV.
Menangkap Citra
Serial Pemotongan Citra Dengan Ukuran Tertentu
Segmentasi Citra Bedasarkan Warna
Menemukan Kontur
Menemukan Titik Tengah Kontur
Mendapatkan Titik Diantara Dua Marka
Gambar 3.10 Diagram Pengolahan Citra
3.3.1 Pengambilan Citra
Tahap awal dalam pemrosesan citra digital adalah mendapatkan citra yang akan diproses, citra tersebut dapat berupa citra dari internal komputer ataupun citra dari luar. Pengambilan citra dari luar komputer membutuhkan perangkat tambahan seperti kamera atau scanner. Pada
Tugas Akhir ini pengambilan citra dilakukan dengan menggunakan
webcam. Citra yang diambil berupa video dengan resolusi 640x480
piksel dan kecepatan tangkap maksimum 30 fps. Penggunaan resolusi 640x480 piksel digunakan agar matriks citra yang didapat tidak terlalu besar sehingga proses komputasi pata tahap selanjutnya akan berjalan lebih cepat, sedangkat kecepatan tangkap maksimum 30 fps merujuk pada spesifikasi kamera yang digunakan. Proses pengambilan citra dilakukan sesuai flowchart pada gambar 3.11.
MULAI X=0 Y=0 Tentukan Tinggi Citra = 480 Tentukan Lebar Citra = 640 Mengambil Citra Frame=Citra yang ditangkap
Gambar 3.11 Diagram Alir Pengambilan Citra
Pada gambar 3.11 tahap pengambilan citra dimulai dengan menetapkan ukuran dari citra yang nantinya akan dihasilkan, kemudian proses penangkapan citra dilakukan, citra yang ditangkap berupa video, setiap frame dari video tersebut akan disimpan dalam sebuah variabel,
variabel inilah yang akan diproses dalam setiap loop. Pada Python IDLE program pengambilan citra dapat ditulis dengan perintah-perintah berikut ini :
a. Inisialisasi kamera. Dengan Python dan OpenCV dapat dilakukan dengan menulis program dibawah ini pada Python IDLE
b. Pengaturan resolusi. Tahap pengaturan resolusi kamera dapat dilakukan dengan perintah
c. Penyimpanan frame dalam variabel. Karena video yang ditangkap merupakan citra yang berifat kontinyu, maka penyimpanan dalam variabel juga harus berulang sehingga diperoleh hasil yang realtime. Perintah penyimpanan citra dalam variabel dapat ditulis dengan
Hasil dari tahap pengambilan citra dapat dilihat pada gambar 3.15.
3.3.2 Pemotongan citra
Pada Tugas Akhir ini digunakan dua marka jalan yang berada pada sisi kanan dan kiri mobil. Pendeteksian kedua marka tersebut dilakukan secara terpisah, tujuan pemisahan tersebut agar algoritma pendeteksi tidak perlu membedakan antara marka kanan dan marka kiri, sehingga proses komputasi lebih sederhana. Pada proses tersebut diperlukan pemotongan citra(cropping). Citra yang ditangkap akan dipotong menjadi tiga bagian sesuai desain pada gambar 3.13.
Citra
480*640
ROI
160*640
Kiri
160*260
Kanan
160*260
Gambar 3.13 Desain Pemotongan Citra
Prosses pemotongan citra tersebut dilakukan dengan menggunakan dua koordinat, yaitu koordinat awal pemotongan dan koordinat akhir pemotongan sehingga dihasilkan matrik segi empat yang akan menyimpan nilai tiap piksel dalam rentang koordinat tersebut. Berdasarkan desain tersebut citra yang dihasilkan dari proses pemotongan citra adalah Roi, Kanan, dan Kiri.
1. Pemotongan Citra Menjadi ROI. Citra yang dipotong Citra 480*640 Koordinat Akhir Pemotonga n Koordinat awal Pemotongan Pemotongan Citra ROI 160*640
Gambar 3.14 Pemotongan Citra Menjadi ROI
Pada tahap ini citra yang ditangkap akan dipotong pada bagian bawah citra dengan ketinggian 320 hingga 480 piksel dengan lebar 0 hingga 640. Koordinat awal pemotongan citra yang diberikan adalah pada titik (320,0) sedangkan titik akhir pemotongan adalah pada koordinat (480,640). Hasil yang diperoleh dari pemotongan tersebut merupakan sebuah citra baru dengan resolusi 160x640 piksel. Citra baru tersebut selanjutnya akan dipotong lagi untuk membedakan marka kanan dan marka kiri. Proses pemotongan citra selanjutnya sama dengan pemotongan tahap awal ini, yaitu dengan memberikan nilai koordinat awal dan nilai koordinat akhir pemotongan. Berdasarkan pada desain pada gambar 3.13 resolusi pada masing masing citra kiri dan citra kanan adalah 160x260 piksel. Koordinat awal dan koordinat akhir pada citra kiri berturut-turut adalah (0,0) dan (160,260). Sedangkan pada citra kanan adalah (0,380) dan (160,640).
2. Pemotongan Roi Menjadi Kiri. ROI 160*640 Koordinat awal Pemotongan Kiri 160*260
Koordinat Akhir Pemotongan Citra yang
dipotong
Pemotongan Citra
Gambar 3.15 Pemotongan Roi Menjadi Kiri
3. Pemotongan ROI Menjadi Kanan.
ROI 160*640 Koordinat Akhir Pemotongan Pemotongan Citra Kanan 160*260
Koordinat Awal Pemotongan
Citra Yang Dipotong
Penulisan program pemotongan citra dapat dituliskan dengan perintah berikut ini.
roi = frame[320:480,0:640] kiri=roi[0:160,0:260] kanan=roi[0:160,380:640]
Dimana frame merupakan citra yang ditangkap oleh kamera, roi merupakan pemotongan pada tahap awal, kiri, dan kanan merupakan citra hasil pemotongan untuk mendeteksi masing-masing marka. Hasil pemotongan citra dapat dilihat pada gambar 3.17.
Gambar 3.17 Hasil Pemotongan Citra
Setelah dilakukan pemotongan citra menjadi bagian kanan dan kiri, proses segmentasi citra berdasarkan warna hingga pencarian centroid akan dikerjakan pada masing-masing bagian kiri dan kanan. 3.3.3 Segmentasi Citra
Segmentasi citra merupakan teknik pemisahan antara objek dan
background pada citra, terdapat berbagai teknik segmentasi citra
diantaranya adalah segmentasi citra berdasarkan warna, segmentasi citra bedasarkan bentuk objek, dan lain sebagainya. Pada Tugas Akhir ini digunakan teknik segmentasi citra berdasarkan warna untuk memisahkan antara bagian marka jalan berwarna putih yang dianggap
sebagai objek deteksi dengan bagian hitam dari lintasan yang merupakan background dari citra. Proses segmentasi tersebut dapat dilakukan pada ruang warna HSV, untuk itu perlu dilakukan konversi dari ruang warna RGB ke HSV. Pada ruang warna HSV akan dilakukan thresholding nilai intensitas warna sehingga diperoleh objek yang diinginkan. Tresholding tersebut menghasilkan citra biner. Warna yang diinginkan akan bernilai
HIGH dan menganggap warna yang tak diharapkan sebagai background
dan bernilai ZERO.
Penghalusan citra menggunakan filter Gaussian dilakukan sebelum proses konversi warna dari RGB ke HSV. Penghalusan citra bertujuan untuk mengurangi noise yang ada pada citra yang ditangkap oleh kamera pada tahap sebelumnya, filter Gaussian dipilih karena hasilnya yang baik, namun memiliki kelemahan pada waktu proses yang lebih lama. Cara kerja filter Gaussian adalah dengan melakukan konvolusi setiap piksel dari citra input dengan kernel gausian kemudian menjumlahkan semuanya dan dihasilkan gambar output. Hasil filter Gaussian dapat dilihat pada gambar 3.20 bagian B.
Pada OpenCV-Python filter Gaussian dapat dipanggil dengan perintah berikut:
Citra yang telah melalui tahap filterasi kemudian akan dikonversi. Proses konversi dilakukan pada masing-masing komponen RGB(Merah,Hijau,Biru), kemudian dihasilkan citra dengan komponen HSV. Proses tersebut berjalan sesuai dengan flowchart pada gambar 3.18. Pada flowchart tersebut nilai RGB dicara nilai maksimum dan nilai minimum dari ketiga komponen tersebut, misalkan nilai RGB(160,100,40) maka didapaatkan nilai maksimum adalah nilai R yaitu 160, sedangkan nilai minimum adalah nilai B yaitu 40. Dari hasil tersebut sudah dapat dicari nilai dari komponen V dan S pada ruang waarna HSV. Nilai V sama dengan nilai maksimum dari ketiga komponen RGB, pada contoh diatas nilai V adalah 160. Sedangkan nilai S dan H dapat dicari melalui perhitungan pada flowchart tersebut.
Mulai
Citra RGB Input tiap piksel Max=max(R,G,B) Min=min(R,G,B) V=Max S=(Max-Min)/ Min R = Max G = Max H=60((G-B)/(Max-Min) mod6) H=60((B-R)/(Max-Min) +2) H=60((R-G)/(Max-Min) +4) Y Y T T
Gambar 3.18 Flowchart Konversi RGB Ke HSV
Pada Python perintah konversi RGB ke HSV dilakukan dengan perintah berikut ini.
Mulai
Citra HSV Input tiap piksel Batas_atas=(H,S,V) Batas_bawah=(H,S,V) Batas_bawahH<H<Batas_atasH Batas_bawahS<S<Batas_atasS Batas_bawahV<V<Batas_atasV 0(Hitam) 1(Putih) T Y
Tahap selanjutnya adalah thresholding citra HSV. Thresholding dilakukan dengan syarat warna objek memiliki nilai intensitas diantara batas bawah(min) dan batas atas(max) dari ketiga komponen HSV. Rentang nilai threshold berkisar antara 0 sampai 255. Proses tersebut bekerja sesuai flowchart pada gambar 3.19.
Perintah untuk melakukan thresholding pada Python dapat ditulis dengan:
thresh = cv2.inRange(HSV, batas_bawah,batas_atas)
Pada perintah diatas, thresh merupakan citra hasil thresholding yang berupa citra biner, HSV merupakan citra asal yang diproses, batas_bawah dan batas_atas merupakan batas threshold. Dalam melakukan segmentasi warna tertentu, perlu dicari nilai batas treshold yang tepat. Terdapat dua cara yang umum digunakan dalam pencarian nilai threshold dapat menggunakan tabel warna dan trial and error.
Pada Tugas Akhir ini, pencarian syarat treshold dilakukan dengan trial and error. Perubahan citra dalam proses segmentasi secara bertahap dapat diamati pada gambar 3.20 .
A. Citra Asal B. Hasil Filter Gaussian
C. Citra HSV D. Citra Biner
Gambar 3.20 A.Citra Asal, B. Hasil Filter Gaussian C.Citra HSV dan D.Citra Biner.
Pada citra biner yang telah diperoleh dari segmentasi citra akan dilakukan erosi dan dilatasi. Tujuan proses tersebut untuk memperbaiki bentuk objek dan mengurangi noise yang terdeteksi sebagai objek pada citra biner. Pada OpenCV Python penggunaan operasi dilatasi dan erosi dilakukan dengan menggunakan perintah berikut ini:
erosi=cv2.erode(citrabiner,None,iterations=jumlah) dilatasi=cv2.dilate(citrabiner,None,iterations=jumlah)
Parameter yang digunakan pada perintah tersebut antara lain: 1. Erosi dan dilatasi merupakan citra hasil,.
2. Citra biner merupakan yang diproses.
3. None merupakan structuring element yang digunakan. 4. Jumlah merupakan perulangan erossi dan dilatasi.
Pada Tugas Akhir ini citra biner akan mengalami erosi dengan lima kali iterasi dan satu kali dilatasi, pengulangan proses dilatasi dan erosi bersifat opsional bergantung pada besarnya noise yang dihasilkan oleh proses segmentasi. Hasil dari proses tersebut dapat dilihat pada gambar 3.21.
A. Citra Biner B. Citra Hasil Erosi dan Dilatasi
Noise
Gambar 3.21 A. Citra Biner B. Citra Hasil Erosi dan Dilatasi
Pada gambar 3.21 bagian A, noise pada lingkaran kuning dapat dihilangkan dan tidak ada pada gambar bagian B.
3.3.4 Menemukan Kontur
Kontur akan menghubungkan titik-titik pada tepi area dengan nilai intensitas yang sama. Pada citra biner kontur akan menghubungkan tepi area berwarna putih. Kontur yang terdeteksi dapat digunakan untuk melakukan tracking objek dengan memanfaatkan fitur momen pada
kontur. Fitur momen tersebut dapat digunakan untuk mencari titik tengah dari objek yang terdeteksi atau titik tengah dari kontur, titik inilah yang nantinya dimanfaatkan sebagai fitur point untuk tracking objek. Dalam mencari kontur pada OpenCV-Python ,terdapat beberapa parameter yang digunakan,parameter tersebut diantaranya:
1. src yang merupakan citra input 8-bit single-chanel, piksel yang bernilai tidak nol akan dianggap bernilai satu, piksel dengan nilai nol akan dianggap nol.
2. Contour adalah contour yang terdeteksi, setiap contour akan disimpan sebagai titik vektor.
3. Hierarchy output vektor yang bersifat opsional. Jika tidak digunakan maka diganti dengan tanda underscore(_). Pada hierarchy terdapat elemen pada contour untuk setiap contour ke-n contours[n].
4. Mode, merupakan mode pencarian contour, terdapat 4 mode pada OpenCV-Python.
a. CV_RETR_EXTERNAL hanya mencari contour paling luar. Dipengaruhi oleh hierarchy.
b. CV_RETR_LIST mencari semua contour tanpa menetapkan hubungan antar hierarchy.
c. CV_RETR_CCOMP mencari semua contour dan mengatur semua Contour menjadi hierarchy level 2.
d. CV_RETR_TREE mencari semua contour dan membangun ulang contour dari sekumpulan contour.
5. Method, merupakan metode perkiraan contour. Terdapat tiga jenis perkiraan contour.
a. CV_CHAIN_APPROX_NONE mode ini akan menyimpan semua tirik contour, kemudian akan menghubungkan titik-titik yang bertetangga secara horizontal, verrtikal, maupun diagonal. b. CV_CHAIN_APPROX_SIMPLE meringkas hubungan antara
titik-titik kontour baik secara horizontal,vertikal maupun diagonal. Sebgaai contoh pada contour berbentuk persegi panjang hanya akan menyisakan empat titik pada setiap sudut persegi panjang.
c. CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC 89_KCOS menggunakan metode perkiraan Teh-Chin.
Perintah pencarian kontur pada OpenCV-Python dapat ditulis sebagai berikut:
kontur,_ = cv2.findContours(citrasumber,<mode>,<method>)
Pada Tugas Akhir ini digunakan metode
CV_CHAIN_APPROX_SIMPLE dan mode CV_RETR_TREE pada pencarian contour. Mode CV_RETR_TREE dipilih karena kemampuannya mencari semua kontur sehingga dapat dilakukan seleksi kontur yang kemungkinan merupakan marka jalan, sedangkan penggunaan metode CV_CHAIN_APPROX_SIMPLE bertujuan untuk meringkas proses yang dilakukan dalam pembentukan kontur karena metode ini hanya memproses titik-titik sudut pada kontur yang terdeteksi sehingga proses lebih sederhana dan menggunakan memori yang lebih kecil.
Pada gambar 3.22 bagian A citra biner yang telah diperoleh dari operasi dilatasi dan erosi kemudian dicari konturnya, contoh kontur yang terdeteksi dapat dilihat pada gambar 3.22 bagian B.
A. Citra Biner B. Kontur Gambar 3.22 A. Kontur B. Citra Biner
3.3.5 Menemukan Titik Pusat Massa
Titik pusat massa atau centroid merupakan pusat dari bidang dua dimensi. Dalam hal ini, bidang dua dimensi berupa kontur dari objek yang terdeteksi. Untuk memperoleh informasi titik pusat masa dari kontur, digunakan fitur momen area. Momen area inilah yang akan dihitung titik centroidnya. Pada OpenCV Python perintah pencarian momen dapat ditulis dengan:
areakontur=max(kontur, key=cv2.contourArea) momen= cv2.moments(areakontur)
1. areakontur merupakan hasil pencarian kontur terbesar. 2. Kontur merupakan semua kontur yang terdeteksi pada citra. 3. cv2.contourArea merupakan perintah mencari nilai area dari
kontur.
4. Momen merupakan momen yang didapatkan dari areakontur. Penggunaan mode CV_RETR_TREE pada pencarian kontur memungkinkan terdeteksi lebih dari satu kontur, ketika lebih dari satu kontur terdeteksi maka dapat dihasilkan lebih dari satu buah titik
centroid dan mengakibatkan kerancuan pada proses selanjutnya. Oleh
karena hal tersebut maka digunakan program untuk memilih kontur dengan luas area paling besar agar titik centroid yang dihasilkan hanya satu. Kontur paling besar merupakan objek yang dideteksi(bukan i noise). Setelah didapatkan momen dari kontur, berikutnya pencarin titik pusat massa dapat dilakukan. Pada OpenCV-Python program pencarian titik pusat masa ditulis dengan perintaah berikut ini.
x = int(momen['m10']/momen['m00']) y = int(momen['m01']/momen['m00']
Pada perintah diatas, m10,m01, dan m00 merupakan parameter orde pada momen. Koordinat centroid kemudian disimpan pada variabel x dan y. Hasil dari pencarian centroid dapat dilihat pada gambar 3.23 berikut ini.
3.3.6 Titik Antara Dua Marka
Proses pencarian kontur dan centroid dilakukan pada citra kanan dan Kiri, sehingga akan diperoleh dua titik centroid. Informasi titik centroid marka kanan dan marka kiri akan diolah sehingga diperoleh titik tengah diatantara keduanya. Titik tengah tersebut akan dibandingkan dengan titik acuan sehingga diperoleh posisi aktual dari miniatur mobil terhadap marka jalan. Terkadang salah satu titik centroid tidak terdeteksi, sehingga pencarian titik diantara kedua marka akan mengalami gangguan, untuk mengatasi hal tersebut proses pencarian titik antara dua marka dilakukan sesuai flowchart pada gambar 3.24.
Mulai
Kanan dan kiri terdeteksi? (Xkiri+(Xkanan+380))/2 Kiri Terdeteksi? Kanan terdeteksi? (Xkiri+640)/2 (Xkanan+380)/2 Koordinat Tengah T Y Y T Y T
Tidak ada aksi
Hasil Pencarian titik antara dua marka dapat dilihat pada gambar 3.25. Titik berwarna merah pada sisi kanan dan kiri merupakakan titik pusat masa dari masing-masing marka, sedangkan titik hijau pada bagian tengah gambar merupakan titik tengah yang diperoleh.
Gambar 3.25 Hasil Pencarian Tiik Tengah
3.3.7 Sudut Navigasi
Titik antara dua marka atau titik simpang yang telah didapatkan akan dibandingkan dengan titik acuan untuk mencari besarnya jarak simpangan. Pada ilustrasi gambar 2.26 bagian a merupakan kondisi mobil tepat berada pada tengah lintasan, sehingga sudut navigasi yang diperlukan 0 derajat. Pada ilustrasi bagian b posisi mobil berada pada sisi kiri lintasan sehingga titik simpang bergeser ke kanan dan menimbulkan jarak antara titik pusat field of view dan membentuk sebuah bangun segitiga siku-siku terhadap posisi kamera. Bangun segitiga berwarna putih tersebut dapat digunakan untuk mencari sudut navigasi yang diperlukan agar posisi mobil kembali pada tengah lintasan.
a. Berada Pada Tengah Lintasan
b. Berada pada tepi lintasan
Dari ilustrasi pada gambar 3.26, sudut B merupakan sudut navigasi dan A pada bangun segitiga merupakan jarak yang dibentuk oleh titik simpang dan pusat field of view. Program perhitungan sudut navigasi pada Python dapat ditulis seperti perintah berikut ini.
jarak_simpangan = titik_tengah – titik_simpang
sisi_miring = math.sqrt(tinggi*tinggi+jarak_simpang*jarak_simpang) Cos_theta=tinggi/sisi_miring
theta = int(math.degrees(math.acos(Cos_theta)))
Pada perhitungan diatas besarnya titik acuan dan tinggi diatur terlebih dahulu. Titik acuan diberi nilai 320 yang merupakan titik tengah
field of view . Sedangkan tinggi diatur 180. Theta yang diperoleh
kemudian dikirim ke kontroler sebagai perintah navigasi. 3.4 Perancangan Mekanik Miniatur Mobil
Miniatur mobil yang digunakan pada Tugas Akhir ini merupakan sebuah mainan radio kontrol yang telah dimodifikasi sehingga memungkinkan untuk meletakkan komponen yang diperlukan pada bagian dalam mobil, serta mengganti sistem kemudi roda depan yang awalnya digerakkan oleh motor gearbox dengan sebuah servo mg90s. Spesifikasi miniatur mobil yang digunakan adalah sebagai berikut ini :
1. Jarak poros roda depan dan roda belakang adalah 21,5cm 2. Jarak roda kanan dan kiri bagian terluar 15cm.
3. Panjang Bodi mobil 34,8 cm
4. Diameter masing-masing roda adalah 5,5 cm 5. Jarak roda depan dan bamper mobil adalah 6,5cm
Kemampuan navigasi miniatur mobil dipengaruhi oleh besarnya sudut yang yang mampu dibuat oleh roda depan saat berbelok dari keadaan lurus. Semakin besar sudut yang dapat dibentuk maka semakin kecil lingkaran yang dapat lalui oleh miniatur mobil ketika berbelok maksimal atau semakin tajam tikungan yang dapat dilalui. Minatur mobil yang telah dimodifikasi seperti pada gambar 3.27.
Gambar 3.27 Miniatur Mobil Dengan Kamera
Pengaturan besar sudut navigasi pada minatur mobil yang awalnya digerakkan oleh motor gearbox memiliki kelemahan, yaitu hanya mampu memberi tiga kondisi navigasi, yaitu berbelok maksimal kekanan, berbelok ke kiri maksimal dan lurus, hal ini tidak relevan terhadap mobil sebenarnya. Modifikasi penggerak kemudi roda depan dengan servo dilakukan agar sudut navigasi yang diberikan lebih beragam. Modifikasi penggerak roda depan dapat dilihat pada gambar 3.28.
3.5 Karakteristik Sensor
Kamera sebagai sensor visual yang bertugas untuk menangkap citra memiliki peranan yang penting pada Tugas Akhir ini. Kamera harus mampu memberikan data digital yang akurat dan sesuai dengan keadaan yang sebenarnya. Pada percobaan ini sensor visual menggunakan sebuah webcam M-Tech WB200 dengan spesifikasi sebagai berikut:
1. 5 MP(megapiksel)
2. Mampu merekam video dengan resolusi 640x480 dengan kecepatan tangkap 30fps.
Penempatan kamera dapat berpengaruh pada kinerja sistem, hal ini disebabkan oleh perbedaan luas field of view yang ditangkap oleh kamera. Pada Tugas Akhir ini, kamera diletakkan diatas miniatur mobil dengan ketinggian 26 cm dari lintasan, dan kemiringan 50ͦ . dengan peletakan tersebut diperoleh luas field of view 1052 cm2
dan sudut lateral 14,6ͦ. Kemiringan kamera dapat digerakkan antar 0- 90ͦ, semakin kecil sudut yang dipentuk maka pandangan kamera akan semakin jauh dan menghasilkan field of view yang lebih luas, dan sebaliknya semakin besar sudut yang dibentuk field of view yang didapat semakin kecil namun lintasan semakin tidak terdeteksi. Ilustrasi penempatan kamera dapat dilihat pada gambar 3.29.
13cm 50cm
Dari penempataan kamera diatas diperoleh jarak terjauh yang dapat ditangkap kamera adalah 50cm dan jarak terdekat yang diperoleh adalah 13cm jika diukur dari poros roda depan. Field of view akan berbentuk sebuah bangun trapesium dan lintasan yang dapat digunakan sebagai pemandu jalan oleh miniatur mobil harus berada dalam jangkauan field of view. Sehingga lebar lintasan yang diijinkan juga merujuk pada lebar field of view yang terkecil atau bagian b pada trapesium berwarna biru pada gambar 3.30.
C B
A
Gambar 3.30 Field of View
3.6 Perancangan Perangkat Keras
Tugas Akhir ini menggunakan sebuah SBC dan sebuah mikrokontroler yang terhubung dengan komunikasi serial. Dalam hal ini, mikrokontroler yang digunakan adalah Arduino Uno R3. Fungsi dari mikrokontroler adalah untuk menerima informasi besar sudut yang diperlukan untuk navigasi miniatur mobil dari Rasberry. Mikrokontroler akan menggerakan servo sesuai perintah yang diterima dari Raspberry. Penambahan mikrokontroller bertujuan sebagai kontroller bantu, sehingga Raspberry Pi hanya bertugas mengolah citra dan tidak terbebani oleh proses kontrol hardware mekanis penggerak seperti servo dan driver motor, selain itu juga untuk mempermudah proses pemrograman. Skema hardware dapat dilihat pada gambar 3.31.
D9 Signal SERVO D8 D7 D3 In2 In1
En2 DRIVERMotor Motor DC
Out1 Out2
In1 In2
Gambar 3.31 Rangkaian Perangkat Keras
3.7 Kecepatan Minatur Mobil
Pada setiap frame yang ditangkap oleh kamera akan dilakukan pemrosesan citra sehingga didapatkan perintah navigasi yang nantinya akan di eksekusi mikrokontroller untuk menggerakkan miniatur mobil. Diperlukan waktu untuk memproses setiap frame yang ditangkap. Oleh karena itu apabila kecepatan miniatur mobil melebihi batas kecepatan yang diijnkan maka pemrosesan citra tidak dapat berjalan maksimal sehingga miniatur mobil akan tidak terkontrol.
Merujuk pada field of view yang dibentuk oleh posisi kamera memiliki jarak terjauh 50 cm dari miniatur mobil maka kecepatan maksimal yang di ijinkan agar miniatur mobil dapat terkendali adalah 0,5 m/s.
3.8 Sistem Komunikasi Raspberry Pi dengan Mikrokontroler Perintah navigasi yang telah diperoleh dari proses pengolahan citra kemudian akan dikirimkan pada mikrokontroller yang bertugas mengatur pergerakan hardware mekanis seperti servo dan motor. Penggunaan mikrokontroller bertujuan untuk menyederhanakan proses yang dilakukan oleh Raspberry Pi. Pengiriman perintah dilakukan dengan komunikasi serial UART dari USB host pada Raspberry ke Mikrokontroller. Komunikasi UART akan membaca data dalam bentuk tipe data string. Untuk itu perlu dilakukan pengaturan komunikasi agar data yang dikirim dapat diterima dengan baik oleh mikrokontroler.
Pengaturan tersebut dengan cara membuat kontrol komunikasi dan
buffer data.
Pada bagian pengirim kontrol komunikasi diatur dengan memberi format pengiriman sebagai berikut:
Byte Kontrol Data
3 Byte
Sedangkan pada penerima dibuat buffer yang dapat menampung sedikitnya 4 karakter. Selain berfungsi sebagai pemisah data sekarang dan data sebelumnya byte kontrol juga digunakan sebagai pemberi perintah orientasi navigasi ke kanan atau ke kiri karena dari pengolahan citra hanya didapat besaran sudut tanpa diketahui arah kanan atau kiri. Pada Tugas Akhir ini byte kontrol menggunakan karakter “,” dan “p” untuk mengarahkan orientasi. Orientasi dapat diketahui dari nilai “jarak_simpang” yang diperoleh pada tahap sudut navigasi dengan algoritma seperti flowchart pada gambar 3.32.
Mulai
Titik_tengah=320
Ambail nilai titik_simpang
jarak_simpangan = titik_tengah – titik_simpang
Jarak_simpang >0 Orientasi=kanan (,) Orientasi=kiri(p)
Y
T
Gambar 3.32 Flowchart Kontrol Arah Navigasi
Untuk menjalankan perintah tersebut pada Python dapat ditulis dengan :