Laporan Tugas Khusus 13699
-
Upload
jake-dillon -
Category
Documents
-
view
68 -
download
4
description
Transcript of Laporan Tugas Khusus 13699
-
TUGAS KHUSUS
PENGHITUNGAN JUMLAH MOBIL DENGAN COMPUTER
VISION MENGGUNAKAN LIBRARY OPENCV
CAR COUNTING WITH COMPUTER VISION USING OPENCV LIBRARY
FATTAH AZZUHRY
11/313564/PA/13699
PROGRAM STUDI ILMU KOMPUTER
JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2015
-
i
HALAMAN PENGESAHAN
TUGAS KHUSUS
Laporan tugas khusus ini disusun sebagai salah satu prasyarat
kelulusan mata kuliah tugas khusus dengan judul :
PENGHITUNGAN JUMLAH MOBIL DENGAN COMPUTER
VISION MENGGUNAKAN LIBRARY OPENCV
Telah dipersiapkan dan disusun oleh
FATTAH AZZUHRY
11/313564/PA/13699
Dr.-Ing.MHD Reza Pulungan, S.Si, M.Sc.
Dosen Pembimbing
-
ii
PERNYATAAN
Dengan ini saya menyatakan bahwa Tugas Khusus 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 yang secara tertulis
diacu dalam naskah ini dan disebutkan dalam daftar pustaka.
Yogyakarta, 10 Juli 2015
Fattah Azzuhry
-
iii
KATA PENGANTAR
Puji syukur kehadirat Allah SWT atas limpahan rahmat, karunia, serta
petunjuk-Nya sehingga tugas akhir berupa penyusunan tugas khusus ini telah
terselesaikan dengan baik.
Dalam penyusunan tugas akhir ini penulis telah banyak mendapatkan
arahan, bantuan, serta dukungan dari berbagai pihak. Oleh karena itu pada
kesempatan ini penulis mengucapan terima kasih kepada:
1. Bapak Dr.-Ing.MHD Reza Pulungan,S.Si, M.Sc. selaku Dosen
Pembimbing serta Ketua Program Studi Ilmu Komputer Fakultas
Matematika dan Ilmu Pengetahuan Alam Universitas Gadjah Mada yang
telah berkenan meluangkan waktu dan pikiran dalam penyelesaian tugas
khusus ini.
2. Bapak Prof. Jazi Eko Istiyanto, M.Sc.,Ph.D. selaku Ketua Jurusan Ilmu
Komputer dan Elektronika Fakultas Matematika dan Ilmu Pengetahuan
Alam Universitas Gadjah Mada.
3. Bapak Anifuddin Azis, M.Kom. selaku Dosen Pembimbing Akademik
penulis.
4. Bapak Dr. Pekik Purwantoro, M.Si selaku Dekan Fakultas Matematika dan
Ilmu Pengetahuan dan telah menyumbangkan template naskah tugas
khusus FMIPA UGM berbasis OpenOffice untuk menyusun naskah ini.
5. Segenap Dosen dan civitas akademik di lingkungan Program Studi Ilmu
Komputer, Jurusan Matematika, Fakultas Matematika dan Ilmu
Pengetahuan Alam, Universitas Gadjah Mada.
6. Kedua Orang Tua, kakak dan adik yang selalu memberikan doa restu serta
arahan selama belajar dan menyelesaikan tugas khusus ini.
Akhir kata penulis berharap semoga tugas khusus ini dapat memberikan
manfaat bagi kita semua, terutama bagi perkembangan ilmu pengetahuan serta
perkembangan Ilmu Komputer dan Teknologi Informasi.
Yogyakarta, 10 Juli 2015
Penulis
-
iv
DAFTAR ISI
HALAMAN PENGESAHAN ................................................................................ i
PERNYATAAN ...................................................................................................... ii
KATA PENGANTAR ........................................................................................... iii
DAFTAR ISI ......................................................................................................... iv
DAFTAR GAMBAR ............................................................................................ vi
INTISARI............................................................................................................. vii
ABSTRACT ........................................................................................................ viii
Bab I PENDAHULUAN ....................................................................................... 1
1.1 Latar Belakang Masalah ...................................................................... 1
1.2 Perumusan Masalah ............................................................................ 2
1.3 Batasan Masalah.................................................................................. 2
1.4 Tujuan dan Manfaat Penelitian ........................................................... 3
1.5 Metodologi Penelitian ......................................................................... 3
1.6 Sistematika Penulisan.......................................................................... 4
BAB II TINJAUAN PUSTAKA ........................................................................... 5
BAB III DASAR TEORI ...................................................................................... 9
3.1 Pengolahan Citra ................................................................................. 9
3.1.1 Pengertian ....................................................................................... 9
3.1.2 Piksel dan Resolusi Citra ................................................................ 9
3.1.3 Hubungan Antar Piksel ................................................................. 10
3.1.4 Ciri Gambar .................................................................................. 10
3.1.5 Grayscale ....................................................................................... 11
3.1.6 Binary Image .................................................................................. 11
3.1.7 Thresholding ................................................................................. 12
3.1.8 Erosi .............................................................................................. 12
3.1.9 Dilasi ............................................................................................. 13
3.1.10 Operasi Closing ........................................................................... 13
3.1.11 Canny Edge Detection................................................................. 13
3.1.12 Contour dan Hierarchy ................................................................ 14
3.1.13 Matriks ........................................................................................ 14
3.1.14 Deteksi Gerakan .......................................................................... 14
3.2 Computer vision ................................................................................ 15
3.3 OpenCV............................................................................................. 17
3.3.1 Pengertian ..................................................................................... 17
3.3.2 Fitur ............................................................................................... 17
3.4 Bahasa C++ ....................................................................................... 18
BAB IV ANALISIS DAN PERANCANGAN ................................................... 20
4.1 Bahan................................................................................................. 20
-
v
4.2 Peralatan ............................................................................................ 20
4.3 Prosedur Kerja dan Pengumpulan Data ............................................ 21
4.4 Analisis dan Perancangan Sistem...................................................... 22
4.4.1 Analisis kebutuhan fungsional ...................................................... 22
4.4.2 Kebutuhan non-fungsional ............................................................ 22
4.5 Rancangan Penelitian ........................................................................ 23
4.5.1 Rancangan Arsitektur Sistem ........................................................ 23
4.5.2 Rancangan Proses ......................................................................... 23
BAB V IMPLEMENTASI DAN HASIL PENGUJIAN ................................... 26
5.1 Inisialisasi Program ........................................................................... 26
5.1.1 Inisialisasi Capture........................................................................ 26
5.1.2 Inisialisasi Parameter Mixture of Gauss ........................................ 27
5.1.3 Inisialisasi rectangle, contour, dan hierarchy ................................ 28
5.2 Program Utama ................................................................................. 29
5.2.1 Iterasi while ................................................................................... 29
5.2.2 Inisialisasi Matriks Video .............................................................. 30
5.2.3 Pengambilan frame ....................................................................... 30
5.2.4 Penerapan Gaussian Mixture pada Video ..................................... 30
5.2.5 Perbaikan Model Foreground Hasil dari Gaussian Mixture ......... 31
5.2.6 Cropping ROI (Region of Interest) Frame dan Duplikasi ............ 32
5.2.7 Pencarian Kontur .......................................................................... 33
5.2.8 Pengkotakan dan Penghitungan Mobil ......................................... 34
5.3 Display Window ................................................................................ 35
5.4 Hasil Pemrosesan Citra ..................................................................... 36
BAB VI PENGUJIAN DAN PEMBAHASAN .................................................. 39
6.1 Uji Variasi Parameter Gaussian Mixture ........................................... 39
6.1.1 Hasil Pengujian dan Pembahasan Variasi Nilai Gaussian Mixture 39
6.1.2 Hasil Pengujian dan Pembahasan Variasi Nilai Variansi .............. 42
6.2 Uji Fungsi Perbaiki ........................................................................... 46
6.3 Uji Akurasi ........................................................................................ 48
6.3.1 Tingkat Akurasi Penghitungan Mobil ........................................... 48
6.3.2 Pembahasan Akurasi Penghitungan Mobil ................................... 49
BAB VII PENUTUP ............................................................................................ 51
7.1 Kesimpulan ....................................................................................... 51
7.2 Saran .................................................................................................. 52
DAFTAR PUSTAKA........................................................................................... 53
-
vi
DAFTAR GAMBAR
Gambar 3.1. Blok Diagram Pengolahan Citra ........................................................ 9
Gambar 3.2 Binary Image ..................................................................................... 12
Gambar 4.1 Arsitektur sistem penghitung mobil .................................................. 23
Gambar 4.2 Diagram blok algoritma penghitungan jumlah mobil ....................... 24
Gambar 5.1 Inisialisasi capture ............................................................................. 26
Gambar 5.2 Inisialisasi parameter Mixture of Gaussian ....................................... 28
Gambar 5.4 Kode inisialisasi rectangle, contour, dan hierarchy .......................... 28
Gambar 5.5 Kode masukan key untuk perulangan ............................................... 29
Gambar 5.6 Kode inisialisasi matriks video ......................................................... 30
Gambar 5.7 Kode pengambilan frame .................................................................. 30
Gambar 5.8 Kode Penerapan Gaussian Mixture pada Video ................................ 31
Gambar 5.9 Kode Perbaikan Model Foreground .................................................. 31
Gambar 5.10 Kode Program Perbaikan Model Foreground ................................. 32
Gambar 5.12 Kode fungsi pembuatan garis pada video ....................................... 33
Gambar 5.11 Kode fungsi pencarian kontur yang ada di video ............................ 34
Gambar 5.12 Kode fungsi pengkotakan dan penghitungan mobil ........................ 35
Gambar 5.13 Kode penampil video ...................................................................... 36
Gambar 5.14. Hasil algoritma Gaussian Mixture (a) Video asli (b) Hasil
segmentasi Background (c) Hasil segmentasi Foreground ................................... 37
Gambar 5.15. Hasil perbaikan foreground (a) Foreground (b) Hasil perbaikan ... 37
Gambar 5.16 Pendeteksian mobil ......................................................................... 38
Gambar 5.17 Penghitungan mobil......................................................................... 38
Gambar 6.1 Ekstraksi foreground dengan threshold background = 0 .................. 40
Gambar 6.2 Ekstraksi foreground dengan threshold background = 0,1................ 40
Gambar 6.3 Ekstraksi foreground dengan threshold background = 0,5 ............... 41
Gambar 6.4 Ekstraksi foreground dengan threshold background = 0,9 ............... 41
Gambar 6.5 Ekstraksi foreground dengan threshold background = 1 .................. 42
Gambar 6.6 Ekstraksi foreground dengan nilai variansi = 0 ................................. 43
Gambar 6.7 Ekstraksi foreground dengan nilai variansi = 10 ............................... 44
Gambar 6.8 Ekstraksi foreground dengan nilai variansi = 20 ............................... 44
Gambar 6.9 Ekstraksi foreground dengan nilai variansi = 25 ............................... 44
Gambar 6.10 Ekstraksi foreground dengan nilai variansi = 50 ............................. 45
Gambar 6.11 Proses perbaikan dengan ukuran lingkaran 5 .................................. 46
Gambar 6.12 Proses perbaikan dengan ukuran lingkaran 10 ................................ 47
Gambar 6.13 Proses perbaikan dengan ukuran lingkaran 15 ................................ 47
Gambar 6.14 Rumus pengukuran akurasi penghitungan mobil ............................ 48
Gambar 6.15 Aplikasi rumus pada penghitungan mobil yang dilakukan ............. 49
-
vii
INTISARI
PENGHITUNGAN JUMLAH MOBIL DENGAN COMPUTER
VISION MENGGUNAKAN LIBRARY OPENCV
Fattah Azzuhry
11/313564/PA/13699
Suatu sistem transportasi pintar (intelligent transport system) adalah suatu
sistem cerdas terkait transportasi yang semakin diminati dan semakin penting
seiring dengan perkembangan teknologi dan pertumbuhan penduduk. Beberapa
kegunaan dari sistem ini adalah untuk fungsi keamanan seperti pencegahan
kecelakaan, fungsi produktivitas seperti pengaturan lalu lintas dan pencegahan
macet, fungsi lingkungan seperti pengurangan konsumsi gas emisi, serta fungsi
informasi sebagai sumber informasi bagi pengguna untuk keperluan yang lain.
Salah satu bagian penting dari penerapan sistem ini adalah informasi terkait
jumlah mobil yang ada di jalan. Oleh karena itu, pada penelitian ini
dikembangkan Sistem Penghitung Mobil, yakni salah satu penerapan computer
vision yang digunakan untuk penghitungan jumlah mobil yang ada di jalan raya.
Pada penerapan Sistem Penghitung Mobil ini, terlebih dahulu dilakukan
pengambilan gambar video dari jalan raya tempat mobil berada. Adapun pada
penelitian ini, video yang diambil adalah video suatu jalan dari internet. Video ini
kemudian diubah ke dalam matriks frame dan warna dari video diubah ke dalam
warna biner sehingga pada citra tersebut, warna yang dimiliki hanyalah hitam dan
putih. Setelah didapatkan citra biner ini, dilakukan pemisahan antara bagian
foreground (bagian yang bergerak) dari background (bagian yang diam) dengan
algoritma Gaussian Mixture Frame Differencing. Foreground yang didapat ini
kemudian diperbaiki dengan pengisian bagian yang kurang jelas seperti masih
putus-putus agar dapat terbentuk suatu kontur yang untuh. Setelah itu dilakukan
pendeteksian dengan pengkotakan pada setiap mobil yang terdeteksi dan
penghitungan jumlah kontur yang dideteksi tersebut. Hasil yang didapat kemudian
diperlihatkan pada window display di mana jumlah mobil yang terdeteksi dapat
dilihat.
-
viii
ABSTRACT
CAR COUNTING WITH COMPUTER VISION
USING OPENCV LIBRARY
Fattah Azzuhry
11/313564/PA/13699
The demand and importance for an intelligent transport system is getting
higher throughout the years in line with the increasing development of technology
and population growth. This system is useful because of its importance for
facilitating safety functions, such as accident prevention, productivity functions
such as traffic control and the prevention of traffic jams, environmental functions
such as reduction of emission gas consumption, as well as a source of information
functions for the user so that the information can be used for other purposes. In
order to fully develop this system, one important part for implementation of this
system is the information regarding the number of cars on the road. Therefore, in
this study, a Car Counting System is developed, which is one of the application of
computer vision for counting the number of cars on the road.
For implementation of this Car Counting System, an input of a video
capturing the road used for car counting is needed. In this study, however, the video
that is used is obtained from the internet. The video is then converted into frame
matrices and the color used in the video is converted into binary color, where the
image only consists of black and white color. After this binary image from the video
is extracted, the separation between the foreground (moving parts) from
background (stationary part) can be done using Gaussian Mixture Frame
Differencing algorithm. Now that the foreground is already extracted from this
algorithm, it is then corrected by filling the empty parts between two contours and
the broken contours, using white circular shape to form a better contour. After this
repaired contour is produced, the detection and counting of car can be performed.
The detection is done by boxing every car that is detected and then the car counting
is performed. The results are then shown in the display window where the number
of cars that are detected can be seen.
-
1
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Pada zaman sekarang, kecelakaan lalu lintas yang terjadi di jalanan adalah
salah satu masalah pokok di berbagai negara di dunia ini. Berdasarkan hasil statistic
yang dilakukan oleh WHO, terdapat sekitar 1,24 juta orang meninggal dan 50 juta
orang cedera yang diakibatkan oleh adanya kecelakaan lalu lintas (Peden, 2004), di
mana sebagian besar di antaranya terjadi di negara berkembang seperti Indonesia.
Salah satu penyebab utama dari permasalahan tersebut adalah semakin padatnya
jalanan, baik jalan raya maupun jalan biasa, terutama di kota-kota besar pada saat
jam masuk, pulang, dan istirahat kantor.
Dalam rangka penanggulangan masalah kemacetan dan kecelakaan yang
semakin parah dari hari ke hari tersebut, beberapa langkah penanganan dapat
diambil. Salah satu langkah penanganan yang bersifat preventif adalah
pembangunan suatu sistem pemantauan arus lalu lintas sebagai sarana pendeteksian
gerakan kendaraan bermotor. Sistem pemantauan arus lalu lintas ini banyak
didiskusikan dan dipelajari dalam beberapa tahun terakhir karena dapat
memberikan informasi yang bermanfaat seperti kepadatan arus lalu lintas, panjang
antrian, rata-rata kecepatan lalu lintas, dan jumlah total kendaraan pada interval
waktu tertentu (Salvi, n.d.). Sebagai contoh untuk di daerah Yogyakarta terdapat
sistem Intelligent Transportation System (ITS) yang sedang dikembangkan dan
akan diimplementasikan pada Trans Jogja sebagai sarana informasi bagi pengguna
Trans Jogja.
Mekanisme kerja dari sistem ini pada dasarnya adalah dengan pemasangan
suatu kamera di jalan tertentu. Hasil berupa rekaman video tersebut kemudian
dikirimkan ke sistem tracking dan menghitung kendaraan dengan menganalisis
-
2
suatu video input menggunakan computer vision. Metode yang dapat digunakan
untuk mengekstrak informasi mengenai kondisi lalu lintas tersebut adalah dengan
mendeteksi dan melakukan tracking pada kendaraan (Sirisha et al., 2013,
Daigavane et al., n.d., Choi, 2006).
Sebelum sistem tersebut dapat diimplementasikan, perlu dilakukan
pencarian algoritma sebagai rancangan langkah-langkah yang akan dilakukan oleh
sistem dan program untuk implementasi dari algoritma penghitungan kendaraan
bermotor tersebut. Pada penelitian ini, dilakukan implementasi computer vision di
mana suatu inputan berupa video dianalisis dengan menggunakan algoritma
Gaussian Frame Differencing, sehingga dapat dihasilkan output berupa data
informasi lalu lintas kendaraan di jalan yang bersangkutan.
1.2 Perumusan Masalah
1. Bagaimana cara menghitung jumlah kendaraan dengan computer
vision menggunakan library OpenCV?
2. Berapa tingkat keakurasian yang dapat dicapai oleh algoritma yang
digunakan?
3. Apakah parameter yang berpengaruh pada akurasi dari algoritma
yang digunakan?
4. Langkah apa yang harus dilakukan untuk meningkatkan keakurasian
tersebut agar algoritma ini layak untuk digunakan untuk
implementasi sistem traffic monitoring?
1.3 Batasan Masalah
1. Library yang digunakan adalah OpenCV
2. Objek/kendaraan yang akan diujikan adalah mobil yang berada di
jalan yang besar. Hal ini dikarenakan ukuran mobil yang relatif
cukup besar untuk dideteksi serta kecepatan mobil yang cukup tinggi
sehingga jarak antar mobil renggang satu sama lain.
-
3
3. Algoritma yang digunakan dalam pendeteksian dan tracking dari
mobil tersebut adalah algoritma Gaussian Average dan Frame
Differencing.
4. Penelitian ini dibatasi pada implementasi algoritma penghitungan
jumlah mobil dengan menggunakan suatu video arus lalu lintas
mobil di jalan raya yang berasal dari internet, tidak meliputi
pengambilan data secara real-time di jalan raya.
1.4 Tujuan dan Manfaat Penelitian
Tujuan yang ingin dicapai dalam penelitian ini adalah :
1. Meneliti pemrosesan citra dengan metode Gaussian Average and
Frame Differencing pada sistem penghitungan mobil dengan bahasa
C++ dan library OpenCV
2. Melakukan uji akurasi algoritma penghitungan mobil yang
diterapkan
Manfaat dari penelitian ini adalah untuk mengetahui cara meningkatkan
efisiensi dan efektivitas dari program dan metode ini agar selanjutnya dapat
diterapkan untuk pembangunan sistem pemantauan lalu lintas yang dapat
diterapkan secara nyata dan bermanfaat bagi penggunanya.
1.5 Metodologi Penelitian
Metodologi penelitian yang direncanakan dalam penelitian ini adalah
sebagai berikut :
1. Perumusan masalah yang akan diajukan sebagai tema
2. Pengkajian dan pembelajaran lebih lanjut mengenai Sistem Penghitungan
Jumlah Kendaraan di Jalan dengan metode sebagai berikut :
a. Studi literatur dan konsultasi dosen pembimbing agar didapatkan
pengetahuan mengenai sistem.
b. Analisis dari sistem yang akan dibuat, meliputi kebutuhan
-
4
fungsional dan non-fungsional serta spesifikasi teknis dan non-
teknis pada sistem tersebut. Setelah itu dilakukan perancangan
metode penghitungan mobilnya.
c. Implementasi sistem dilakukan dengan pembuatan program
kemudian diujicobakan pada suatu video dengan pengkalibrasian
parameter di dalam program dengan kondisi jalan yang ada di
video. Setelah itu dilakukan pengujian untuk mengetahui tingkat
akurasi dan keberhasilan yang didapatkan.
1.6 Sistematika Penulisan
Laporan tugas khusus ini terdiri dari beberapa bagian, antara lain :
BAB I PENDAHULUAN
BAB II TINJAUAN PUSTAKA
BAB III DASAR TEORI
BAB IV ANALISIS DAN PERANCANGAN
BAB V IMPLEMENTASI DAN HASIL PENGUJIAN
BAB VI KESIMPULAN
-
5
BAB II
TINJAUAN PUSTAKA
Penelitian yang berhubungan dengan pendeteksian gerak lewat kamera telah
banyak dilakukan. Metode pendeteksian yang pertama dilakukan oleh Young et al.
(2011), yang terdiri dari metode frame differences, background subtraction,
pixellate filter, dan bob counter. Pada metode frame differences, citra ke t-1
digunakan sebagai citra referensi. Penelitian lain dilakukan oleh Li et al. (2010) di
mana algoritma pendeteksian gerak yang digunakan adalah algoritma Support
Vector Machine (SVM). Selain pendeteksian gerak, pada penelitian tersebut juga
dibahas adanya segmentasi untuk masing-masing objek.
Terobosan baru dengan penggabungan dua metode dilakukan oleh Zheng et
al. (2009), di mana metode yang digunakan adalah metode frame differences yang
digabungkan dengan pengaturan ambang batas yang bersifat adaptif (adaptive
threshold). Dengan adanya penelitian ini, dimungkinkan adanya pendeteksian suatu
area yang dinyatakan bergerak di mana nilai threshold yang digunakan bersifat
variatif dan dapat secara otomatis disesuaikan dengan kebutuhan.
Selain itu, penelitian lain juga dilakukan oleh dengan teknik pendeteksian
gerak yang diterapkan dengan metode statistical correlation method (Murali &
Girisha 2009). Metode ini digunakan setelah penerapan teknik temporal differences
(frame differences) pada analisis suatu frame citra. Berbeda dengan penelitian yang
telah dilakukan, pada penelitian ini pendeteksian gerak dilakukan dengan
kombinasi antara teknik frame differences dengan optical flow. Setelah itu, metode
ini dilanjutkan dengan teknik morphological filter untuk pendeteksian gerak. Selain
metode-metode yang diusulkan pada penelitian di atas, beberapa penelitian lain
-
6
juga pernah dilakukan untuk pengembangan computer vision yang dapat
diimplementasikan sebagai mekanisme penanganan kemacetan dan pengelolaan
lalu lintas.
Pada pendeteksian kendaraan dengan model lain, beberapa studi telah
dilakukan di mana pendeteksian dilakukan tanpa background modelling untuk
mengatasi permasalahan variasi pencahayaan, bayangan, dan pohon-pohon yang
bergoyang (Alasdair, 2004). Selain itu, diskusi lain terkait kemampuan video
kamera dalam pemantauan dan pelacakan kendaraan bergerak dengan OpenCV
telah dilakukan di mana dilakukan perbandingan hasil kombinasi antara
pemrograman computer vision dan network socket pada GNU Linux (Pambudi et
al., 2011). Penggunaan metode lain juga dilakukan oleh beberapa peneliti lain di
mana algoritma Gaussian Mixture Model diimplementasikan untuk identifikasi
background pada gambar dengan resolusi HD. Rangkaian yang diusulkan oleh
peneliti tersebut didasarkan pada implementasi OpenCV yang sangat cocok untuk
peningkatan performa pada fase background learning di awal (Kusumanto et al.,
2011).
Pada penelitian lain dilakukan pendeteksian kelelahan mata pada seorang
pengemudi dengan algoritma deteksi berbasis OpenCV dan platform
pengembangan computer vision. Cara kerja algoritma tersebut adalah dengan
penerapan suatu lokalisasi pada daerah mata kemudian dilakukan pendeteksian
kondisi pada daerah mata tersebut berdasarkan perhitungan kasar. Setelah itu,
tingkat kelelahan pengemudi dapat dideteksi oleh sistem yang kemudian dapat
diimplementasikan untuk penanggulangan kecelakaan pada pengendara mobil
(Pambudi, 2011).
Penelitian lain juga dilakukan dengan suatu mesin untuk pengenalan dan
pelacakan suatu objek planar dan mesin grafis dengan menggunakan library
-
7
OpenCV dan API Frankencamera (Kusumanto et al., 2011), serta pembangunan
sistem parkir otomatis berbasis pada teori binocular dan metode bidirectional path-
planning dengan platform OpenCV (Liang, 2011).
Salah satu metode dilakukan untuk abstraksi dan klasifikasi data kendaraan
di mana sensor penglihatan didapatkan dengan Graphics Processing Units (GPU)
sebagai prototipe kemudian dilakukan integrasi data navigasi yang didapat dengan
data dari sensor RADAR. Penelitian ini dapat digunakan pada Visual Simultaneous
Localization and Mapping (V-SLAM) yang dapat dimanfaatkan pada platform
kendaraan masa depan (Nagendra, 2011). Penelitian lain juga dilakukan di mana
algoritma penghapusan bayangan yang mengkombinasikan informasi pada warna
RGB dan HSV serta algoritma Iterative Pyramidal LK Optical Flow digunakan
untuk desain dan implementasi sistem pendeteksi dan pelacakan arus lalu lintas
kendaraan pada OpenCV. Dari hasil eksperimen didapat kinerja yang jauh lebih
baik dari metode yang diusulkan ini jika dibandingkan dengan algoritma optical
flow tradisional (Zhaoxiang et al., 2011).
Penelitian lain yang juga diusulkan adalah metode perkiraan lokasi
kendaraan di jalan apabila dilihat dari perspektif mata burung (Nagendra and
Venkatesh, 2012). Selain itu, terdapat studi lain juga yang dilakukan terkait desain,
implementasi, dan uji suatu metode untuk pendeteksian rambu-rambu lalu lintas
berdasarkan computer vision. Sistem ini memiliki dua modul utama. Modul yang
pertama adalah preprocessing dengan segmentasi warna, teknik threshold, filter
Gaussian, deteksi tepian, dan deteksi kontur, sedangkan modul yang kedua adalah
deteksi yang berbasis Polygonal Approximation yang diterapkan pada kontur untuk
identifikasi area yang mengandung rambu-rambu lalu lintas (Salhi et al., 2014).
Pada studi yang lain juga dibahas pengembangan suatu sistem pengelolaan dan
pengendalian kemacetan lalu lintas di mana pengguna akan diberikan peringatan
-
8
dan saran apabila terdapat kemacetan di suatu tempat (Aslam et al., 2011,
Alcantarilla et al., 2008). Selain itu juga dilakukan pengembangan sistem cerdas
lalu lintas berbasis vision (Malhi et al., 2011).
-
9
BAB III
DASAR TEORI
3.1 Pengolahan Citra
3.1.1 Pengertian
Image processing atau yang sering disebut dengan pengolahan citra digital
adalah suatu proses pengolahan suatu gambar asli menjadi gambar lain sesuai
dengan yang diinginkan. Misalnya, apabila gambar yang didapatkan terlalu gelap,
dengan image processing ini gambar tersebut dapat diproses sehingga didapatkan
gambar yang lebih jelas. Secara garis besar, image processing dapat diilustrasikan
sebagai berikut :
Gambar 3.1. Blok Diagram Pengolahan Citra
Prinsip dasar dari pengolahan citra adalah pengolahan warna RGB pada
posisi tertentu. Dalam pengolahan citra, warna direpresentasikan dengan nilai
hexadesimal, antara 0x00000000 yaitu warna hitam sampai 0x00ffffff yaitu warna
putih.
3.1.2 Piksel dan Resolusi Citra
Piksel merupakan satuan komponen terkecil dari gambar yang menentukan
ukuran suatu gambar. Resolusi citra menyatakan ukuran bit dari suatu citra dalam
satuan piksel. Untuk citra biner, piksel gambar dengan tingkat kecerahan di bawah
suatu angka tertentu diwakili oleh 0 sedangkan piksel dengan tingkat kecerahan
Gambar
Asli
Proses
Filter
Gambar
Hasil
-
10
di atas angka tersebut diwakili oleh 1. Dengan demikian seluruh citra yang
terdapat di dalam memory komputer dapat diwakili oleh logika 1 dan 0.
3.1.3 Hubungan Antar Piksel
Dalam masalah pengolahan citra, hubungan antar piksel itu sangat penting.
Pada setiap piksel p di suatu koordinat (x,y), terdapat 4 tetangga secara horizontal
dan vertikal. Dengan adanya hubungan antar piksel ini, batas-batas suatu objek serta
bagian-bagian daerah kecil dari suatu gambar dapat didefinisikan. Untuk itu,
diperlukan beberapa kriteria sebagai pertimbangan apakah dua piksel saling
terhubung atau tidak. Di antara kriteria tersebut adalah apakah pada kedua piksel
itu terdapat prinsip kedekatan yang sesuai dengan konsep yang telah ditentukan
seperti konsep 4-neighbours atau 8-neighbours. Kriteria yang lain adalah apakah
kedua piksel tersebut memiliki gray level sesuai dengan kriteria yang diinginkan.
Sebagai contoh, jika nilai yang terdapat pada kedua piksel masing-masing adalah 0
dan 1, dan keduanya merupakan bagian dari 4-neighbours, maka kedua piksel
tersebut dinyatakan tidak saling terhubung. Hal ini dikarenakan nilai yang terdapat
pada kedua piksel tersebut berbeda.
3.1.4 Ciri Gambar
Ciri adalah suatu tanda khas yang dapat digunakan sebagai pembeda antara
satu hal dengan yang lain. Ciri-ciri dasar dari suatu gambar adalah :
a. Warna : warna pada suatu gambar dapat dinyatakan dalam bentuk
histogram dari gambar tersebut yang dituliskan dengan notasi H(r,g,b) di
mana r adalah jumlah kemunculan merah, g adalah hijau, dan b adalah
biru.
b. Bentuk : ciri bentuk suatu gambar dapat ditentukan oleh tepi atau besaran
momen dari suatu gambar. Proses penentuan ciri suatu bentuk antara lain
adalah deteksi tepi, threshold, segmentasi dan penghitungan momen
-
11
seperti mean, median, dan standar deviasi dari setiap gambar.
c. Tekstur : dapat ditentukan dengan filter di mana ciri ini sangat handal
dalam penentuan informasi suatu gambar.
3.1.5 Grayscale
Proses awal yang banyak dilakukan dalam pengolahan citra adalah
pengubahan citra berwarna menjadi citra grayscale agar model citra dapat
disederhanakan. Citra yang awalnya terdiri dari 3 layer matriks yaitu R-layer, G-
layer, dan B-layer diubah ke dalam 1 matriks grayscale. Proses pengubahan citra
berwarna dengan nilai matriks masing-masing r, g, dan b ini adalah dengan suatu
konversi di mana nilai yang terdapat di layer r, g, dan b dimasukkan ke dalam
matriks grayscale. Dengan demikian, maka persamaan matriks grayscale ini dapat
dituliskan sebagai berikut :
= + +
3
Di mana rxy adalah nilai piksel red titik (x,y), gxy adalah nilai piksel green
titik(x,y), bxy adalah nilai piksel blue titik (x,y), sedangkan grxy adalah nilai piksel
grayscale titik (x,y).
3.1.6 Binary Image
Setiap piksel yang ada pada binary image hanya terdiri dari warna hitam
atau putih. Karena hanya ada dua piksel, maka hanya diperlukan 1 bit per piksel (0
dan 1) atau apabila dituliskan dalam 8 bit, hanya terdapat 0 dan 255, sehingga sangat
efisien dalam penyimpanan. Binary image ini adalah hasil pengolahan dari
grayscale image di mana digunakan suatu nilai threshold sehingga gambar dengan
tingkat keputihan kurang dari threshold akan diberi nilai 0 (warna hitam) sedangkan
gambar dengan tingkat keputihan lebih dari/sama dengan threshold akan diberi nilai
1 (warna putih).
-
12
Gambar 3.2 Binary Image
3.1.7 Thresholding
Thresholding adalah konversi citra grayscale ke citra biner (binary image)
yang dilakukan dengan pengelompokan nilai derajat keabuan setiap piksel ke dalam
2 kelas, yaitu hitam dan putih. Pada suatu citra grayscale, terdapat 256 level di mana
terdapat skala 0 hingga 255 atau [0,255] pada setiap piksel, di mana warna
hitam dinyatakan oleh nilai intensitas 0, warna putih dinyatakan oleh nilai intensitas
255, sedangkan warna keabuan yang terletak di antara warna hitam dan putih
dinyatakan oleh nilai intensitas antara 0 sampai 255. Setelah itu, objek dapat
dipisahkan menurut rentang threshold tersebut.
3.1.8 Erosi
Erosi adalah proses penghapusan titik-titik batas objek menjadi bagian dari
latar berdasarkan structuring element yang digunakan. Pada operasi ini ukuran
objek diperkecil dengan pengikisan bagian sekeliling objek. Cara ini dapat
dilakukan dengan dua cara. Cara yang pertama adalah dengan pengubahan semua
titik batas yang ada ke dalam titik latar. Setelah itu, cara yang kedua adalah dengan
pengaturan agar semua titik di sekeliling titik latar menjadi titik latar.
Algoritma untuk operasi erosi diawali dengan fungsi iteratif (for), untuk
seluruh titik di dalam citra dan dilakukan pengecekan (if) apakah titik tersebut titik
latar atau tidak. Apabila iya, maka dilakukan pengubahan seluruh tetangganya
-
13
menjadi titik latar. Sedangkan apabila tidak, maka tidak dilakukan apa-apa
(dilanjutkan titik berikutnya).
3.1.9 Dilasi
Dilasi adalah proses penggabungan titik latar menjadi bagian dari objek
berdasarkan structuring element yang digunakan, sehingga proses ini dapat dikatan
sebagai kebalikan dari erosi. Cara ini dapat dilakukan dengan pengubahan seluruh
titik latar yang bertetangga dengan titik batas dan yang terdapat di sekeliling titik
batas menjadi titik objek.
Algoritma yang digunakan adalah dengan iterasi (for) untuk seluruh titik
dalam citra kemudian dilakukan pengecekan kondisional (if) apakah titik tersebut
titik objek atau tidak. Apabila iya, dilakukan pengubahan seluruh tetangganya
menjadi titik objek. Sedangkan apabila tidak, maka tidak dilakukan apa-apa
(lanjutkan).
3.1.10 Operasi Closing
Operasi closing ini adalah kombinasi antara operasi erosi dan dilasi yang
dilakukan secara berurutan, di mana citra asli dierosi terlebih dahulu baru kemudian
hasilnya didilasi. Efek yang dihasilkan adalah pengisian lubang kecil pada objek,
penggabungan objek-objek yang berdekatan dan penghalusan batas dari objek besar
tanpa mengubah area objek secara signifikan.
3.1.11 Canny Edge Detection
Pada metode Canny ini tidak terdapat operator khusus, akan tetapi metode
ini terdiri dari beberapa langkah khusus. Pada metode ini, bagian tepi dideteksi
dengan dilakukan pencarian nilai gradien lokal maksimal dari suatu citra I. Gradien
tersebut dihitung dengan turunan dari Gaussian filter. Untuk pendeteksian tepian
yang terlihat jelas, kurang jelas/lemah, dan yang kurang jelas/lemah tetapi
terhubung dengan yang jelas, digunakan dua threshold. Metode ini berbeda dengan
-
14
metode sebelumnya di mana proses penghilangan noise harus dilakukan terlebih
dahulu. Metode Canny ini lebih utama apabila digunakan pada pendeteksian tepian
yang kurang jelas, yang tidak dapat diperoleh dengan metode lain.
3.1.12 Contour dan Hierarchy
Contour adalah kumpulan titik piksel secara kontinu di mana warna dan
intensitas yang dimiliki sama. Contour dapat digunakan sebagai alat pendeteksian
dan pengenalan objek, yang mana pada penelitian ini contour yang diinginkan
adalah mobil. Contour ini dapat dicari setelah dilakukan perbaikan pada citra biner
foreground, di mana dapat pada pencarian contour ini dapat ditentukan threshold
(ukuran minimal suatu objek agar dapat dihitung sebagai contour) terlebih dahulu.
Pada OpenCV, pencarian contour dilakukan seperti pada pencarian suatu objek
putih dari suatu background hitam.
Sementara itu, hierarchy adalah gambaran hubungan antara contour, di
mana dari hierarchy ini adalah letak suatu kontur relatif terhadap kontur yang lain.
Sebagai contoh kasus, letak contour yang terdapat di dalam contour yang lain bisa
ditentukan dari hierarchy dari contour tersebut. Bagian yang ada di luar disebut
dengan parent sedangkan bagian yang ada di dalam disebut child. Representasi dari
hubungan inilah yang disebut sebagai hierarchy.
3.1.13 Matriks
Suatu array multi-channel dengan n dimensi dapat direpresentasikan oleh
matriks. Matriks ini dapat digunakan sebagai media penyimpanan vector, citra
berwarna/grayscale, voxel volume, vector field, point cloud, tensor, dan histogram.
3.1.14 Deteksi Gerakan
Dalam deteksi pergerakan objek terdapat proses pencocokan yang disebut
dengan Frame Difference di mana frame yang satu dikurangi dengan frame yang
lain serta pemberian label pada frame berbeda yang lebih besar dari objek. Dari
-
15
proses ini, batas tepian dari suatu objek yang bergerak dapat ditangkap.
Langkah pertama adalah dengan pengubahan suatu video image grayscale
image untuk memudahkan pemrosesan citra. Apabila timbul suatu image baru pada
video tersebut (image bergerak), maka program akan menghitung perbedaan yang
terjadi antara dua image dengan melakukan penghitungan nilai rata-rata dari semua
nilai gray value dari gambar tersebut sebagai mean. Nilai mean yang didapat akan
dibandingkan dengan nilai threshold yang ditentukan oleh user. Semakin kecil
batas nilai threshold-nya, maka motion detection akan semakin sensitif.
Ada tiga metode yang umum digunakan untuk mendeteksi gerak. Metode
tersebut adalah background subtraction, optical flow, dan frame differences.
Background subtraction dilakukan dengan membandingkan citra tertentu dengan
citra yang dijadikan sebagai referensi. Metode deteksi gerak dengan metode ini
dianggap sederhana tetapi kurang sesuai untuk semua kondisi lingkungan yang
dipantau. Sedangkan optical flow adalah metode yang menggunakan karakteristik
pergerakan untuk mendeteksi gerak secara independen yang melewati sebuah
kamera. Metode yang terakhir adalah frame differences, yang juga dikenal sebagai
temporal differences. Metode ini dilakukan dengan membandingkan frame citra
yang ditangkap sesuai dengan urutan waktu. Algoritma dari frame differences ini
dilakukan melalui 3 tahap. Tahap pertama adalah proses penentuan citra latar
(background). Tahap kedua adalah proses aritmatika subtraction. Pembandingan
dilakukan terhadap nilai-nilai piksel yang dihasilkan dari proses komputasi
komponen warna citra. Selanjutnya dilakukan operasi AND untuk mengkomparasi
piksel kedua citra tersebut. Tahap terakhir adalah pengaturan ambang batas
(threshold) yang merupakan bagian penting untuk penentuan ketelitian dari
pendeteksian gerak.
3.2 Computer vision
-
16
Computer vision adalah ilmu dan metode aplikasi dalam menggunakan
komputer untuk memahami isi suatu citra (image content). Pada hakikatnya,
computer vision mencoba meniru cara kerja visual manusia (human vision). Human
vision sesungguhnya sangat kompleks, manusia melihat obyek dengan indera
penglihatan (mata) lalu objek citra diteruskan ke otak untuk diinterpretasi sehingga
manusia mengerti objek apa yang dilihat. Hasil interpretasi ini dapat digunakan
untuk mengambil suatu keputusan. Sebagaimana mata dan otak, computer vision
adalah sistem yang dapat menganalisis objek secara visual setelah data objek yang
bersangkutan dimasukkan dalam bentuk citra.
Area permasalahan dalam computer vision adalah pengukuran dan
pemrosesan yang dapat dilakukan dengan berbagai metode. Beberapa area
permasalahan dalam computer vision adalah sebagai berikut :
1. Recognition : untuk mengenali objek data citra, aplikasinya seperti
Content Based Image Retrieval (CBIR)
2. Motion : untuk mengenali data citra bergerak. Aplikasinya seperti
Egomotion yang membagi gerakan 3D dari kamera.
3. Restorasi citra : untuk mendapatkan data suatu citra, citra bergerak atau
objek 3D tanpa noise.
Proses-proses dalam computer vision dibagi dalam 3 aktivitas :
1. Memperoleh atau mengakuisisi citra digital. Proses ini bisa juga disebut
sebagai image preprocessing.
2. Melakukan teknik komputasi untuk memproses atau memodifikasi data
citra berupa piksel.
3. Menganalisis dan menginterpretasi citra menggunakan hasil pemrosesan
untuk tujuan tertentu, misalnya memandu robot, mengontrol peralatan,
memantau manufaktur, dan lain-lain (Pambudi, 2011).
-
17
3.3 OpenCV
3.3.1 Pengertian
OpenCV adalah library gratis yang dikembangkan oleh developer Intel
Corporation. Library ini terdiri dari fungsi-fungsi computer vision dan API untuk
image processing, baik level tinggi maupun rendah. Library ini didesain untuk
meningkatkan efisiensi komputasional dan optimasi pada aplikasi yang bersifat
realtime. OpenCV sangat disarankan bagi programmer yang berkutat pada bidang
computer vision karena library ini menyediakan infrastruktur computer vision yang
simpel, standar dan tetap handal, yang digunakan oleh banyak ilmuwan komputer
dan programmer-programmer lain. Meskipun Intel membuat library ini, library ini
tetap bersifat cuma-cuma dan opensource sehingga aplikasi ini bebas digunakan
semua orang dan dibangun pada hampir semua arsitektur komputer. Selain itu,
OpenCV juga memberikan kemudahan dalam eksekusi dan mempunyai operasi
run-time yang mudah.
Saat ini developer dari Intel Corporation telah membuat berbagai macam
versi OpenCV untuk bahasa pemrograman C/C++, C#, dan Java. Akan tetapi untuk
bahasa C# dan Java masih dalam tahap pengembangan. Sedangkan untuk bahasa
pemrograman C/C++, library OpenCV sudah cukup lengkap sehingga tidak
memerlukan library lainnya untuk pemrosesan computer vision. Oleh karena itu,
pada penelitian ini digunakan bahasa C++ sebagai bahasa pemrogramannya.
3.3.2 Fitur
Berikut ini adalah fitur-fitur yang tersedia pada library OpenCV :
a. Manipulasi data gambar (alokasi memori, melepaskan memori, copy gambar,
setting serta konversi gambar)
b. Image/Video I/O (bisa menggunakan kamera yang sudah didukung oleh
library ini)
-
18
c. Manipulasi matrikss dan vektor serta terdapat juga routines aljabar linear
(products, solvers, eigenvalues, SVD)
d. Image processing dasar (filtering, edge detection, pendeteksian tepi, sampling
dan interpolasi, konversi warna, operasi morfologi, histogram, image
pyramids)
e. Analisis struktural
f. Kalibrasi kamera
g. Pendeteksian Gerak
h. Pengenalan Objek
i. Basic GUI (display gambar/video, mouse/keyboard kontrol, scrollbar)
j. Image labelling (line, comic, polygon, text drawing)
3.4 Bahasa C++
Bahasa C++ adalah bahasa pemrograman yang diturunkan dari bahasa
pemrograman sebelumnya yaitu BCL dan C. Untuk mendukung fitur-fitur pada
C++, dibangun efisiensi dan support sistem untuk pemrograman tingkat rendah.
Berbeda dari C, bahasa C++ memberikan dukungan terhadap pemrograman
berorientasi objek (OOP). Pada dasarnya C++ adalah bahasa C yang telah sedikit
dikembangkan, di mana bahasa ini memiliki kemampuan utama seperti :
a. Bahasa standard-nya ANSI bisa dipakai di berbagai platform
b. Kecepatan program yang relatif lebih cepat dibandingkan program yang
sama buatan bahasa lain
c. Kode bahasa C++ mempunyai portabilitas dan fleksibilitas tinggi
d. Bahasa C++ tersedia hampir di semua jenis komputer
e. Kode program bersifat reusable sehingga dapat digunakan pada project
lainnya dengan hanya menggunakan library dan file header
-
19
f. Bahasa C++ hanya menyediakan sedikit kata kunci (48 kata kunci)
g. Dukungan pustaka fungsi dan kelas yang banyak
h. Bahasanya terstruktur sehingga akan lebih mendukung OOP
i. Termasuk bahasa tingkat menengah dan dekat dengan bahasa mesin
j. C++ dapat membuat aplikasi graphic prosessor berkualitas tinggi
Selain kelebihan, C++ juga memiliki kekurangan antara lain :
a. C++ tidak murni OOP sehingga kurang cocok untuk mengajarkan konsep
OOP karena kaidah-kaidah OOP dapat dilanggar
b. Pada C++ terdapat konsep pointer yang sangat membingungkan
sekaligus menjadi alasan mengapa C++ kurang disukai.
c. Walaupun tidak terpengaruh oleh sistem operasi, tool development-nya
harus spesifik pada salah satu sistem operasi.
d. Implementasi C++ di jaman sekarang sudah sangat sedikit sekali
e. Membuat sesuatu dengan C++ relatif sulit dibandingkan bahasa lain
-
20
BAB IV
ANALISIS DAN PERANCANGAN
4.1 Bahan
Bahan yang digunakan adalah video hasil pengambilan gambar suatu jalan
raya yang didapatkan dari sumber di internet. Video tersebut digunakan sebagai
gambaran dari implementasi sistem ini terhadap suatu jalan raya tertentu.
4.2 Peralatan
Pada pengembangan suatu perangkat lunak, dibutuhkan perangkat keras dan
perangkat lunak yang digunakan untuk proses pembuatan program. Adapun
peralatan yang digunakan adalah sebagai berikut :
a. Hardware Pemroses Video
Pada penelitian ini, hardware pemroses video yang digunakan adalah
laptop/komputer standar. Hal ini dikarenakan tahap penelitian masih sebatas
prototype. Adapun detail spesifikasi dari pemroses video yang digunakan dapat
dilihat pada Tabel 4.1.
Tabel 4.1 Hardware yang digunakan sebagai pemroses video
Model CPU AMD Quad-Core Processor 1.4 GHz
Memori 4 GB RAM DDR2
Sistem Operasi Linux Mint
Penyimpanan SSD 80 GB
Tampilan Standard
-
21
Seperti yang diperlihatkan pada Tabel 4.1, penelitian akan dilaksanakan
pada suatu PC pemroses dengan spesifikasi prosesor AMD Quad-Core 1.4 GHz,
4GB RAM DDR2, dan SSD 80 GB. Agar sistem yang didapat lebih leluasa dan
ringan, maka sistem operasi yang digunakan adalah Linux Mint yang merupakan
turunan dari Linux Ubuntu. Hal ini dikarenakan Linux Mint relatif lebih ringan,
cepat dan kecil memori yang dibutuhkan, apabila dibandingkan dengan sistem
operasi yang lain.
b. Software Pemroses Video
Untuk kebutuhan pemrosesan video ini, library yang digunakan pada
pengolahan citra adalah OpenCV karena OpenCV bersifat opensource dan
memenuhi standar untuk computer vision di mana cukup banyak algoritma-
algoritma efisien yang sudah tersedia di dalam library ini. Selain itu, kelebihan
utama yang lain dari library ini adalah ringan untuk dipakai. Adapun IDE yang
digunakan untuk pemrograman adalah Code::Blocks sedangkan compiler yang
digunakan adalah compiler GCC terbaru. Video codec yang digunakan oleh
OpenCV Linux versi 2.4.2 ini adalah V4Lan dan FFMPEG 0.8x.
4.3 Prosedur Kerja dan Pengumpulan Data
1. Studi literatur tentang metode yang dibutuhkan untuk pemrosesan video.
2. Pengambilan suatu video suatu arus lalu lintas dari internet.
3. Analisis kebutuhan untuk video jalan raya tersebut kemudian dilakukan
perancangan algoritma dengan flowchart, yang meliputi pendeteksian
gambar bergerak, pemisahan antara background dengan foreground,
perbaikan gambar foreground yang kurang sempurna, dan pendeteksian
serta penghitungan kontur mobil yang terlihat.
4. Implementasi dari algoritma yang telah dibuat pada program dengan bahasa
C++ dan library OpenCV.
-
22
5. Pengujian algoritma dan analisis data.
6. Pembuatan laporan berupa tugas khusus.
4.4 Analisis dan Perancangan Sistem
Berikut ini adalah analisis kebutuhan dari sistem yang dibuat :
4.4.1 Analisis kebutuhan fungsional
Kebutuhan fungsional adalah kebutuhan yang berisikan proses yang
dilakukan oleh perangkat lunak yang akan dibuat. Adapun kebutuhan fungsional
dari sistem ini adalah bahwa jumlah dari kendaraan di jalan raya yang direkam oleh
camcorder dapat dihitung dengan sistem ini.
4.4.2 Kebutuhan non-fungsional
Kebutuhan non-fungsional adalah kebutuhan terkait kriteria yang dapat
digunakan dalam pengukuran kinerja sistem yang ada. Adapun kebutuhan non-
fungsional dari sistem ini adalah bahwa sistem yang dikembangkan memiliki
kinerja sebagai berikut :
a. Waktu respon cepat, pemrosesan video di dalam sistem harus dilakukan
secara cepat sehingga sistem ini dapat diterapkan untuk keperluan di
dunia nyata secara real-time.
b. Stabil dan dapat diandalkan, adanya error, bug, dan kesalahan lain pada
sistem sedapat mungkin dikurangi/dihilangkan.
c. Portable, sistem ini dapat digunakan di berbagai platform tanpa
kendala.
d. Dapat dikembangkan lagi, sistem sebaiknya dapat ditambahkan fitur
atau pengaturan baru apabila suatu saat dilakukan upgrade.
e. Dapat digunakan untuk berbagai macam jalan raya, sistem sebaiknya
dapat diimplementasikan pada bentuk jalan raya yang lain, tidak sebatas
-
23
pada jalan raya yang ditampilkan pada video.
4.5 Rancangan Penelitian
4.5.1 Rancangan Arsitektur Sistem
Gambar 4.1 Arsitektur sistem penghitung mobil
Seperti yang diperlihatkan pada gambar 4.1, alur kerja sistem diawali oleh
kamera di mana pengambilan gambar video ini dilakukan oleh kamera yang
dipasang di jalan. Dikarenakan penelitian ini dibatasi hanya pada pengambilan
video dari internet, maka langkah ini hanya dilakukan pada implementasi sistem
yang secara nyata. Setelah itu video disimpan ke dalam media penyimpanan. Dari
media penyimpanan tersebut, video tersebut dikirimkan ke PC pemroses dengan
program yang dibuat dengan library OpenCV ini. Dari PC pemroses ini didapatkan
hasil output berupa jumlah mobil yang ada di jalan raya tersebut. Setelah itu, hasil
yang didapat dapat digunakan sesuai kebutuhan. Sebagai contoh, apabila sistem
penghitungan mobil ini akan digunakan untuk aplikasi tertentu, maka hasil dapat
dikirimkan ke suatu server dari aplikasi tersebut sehingga informasi terkait jumlah
mobil yang telah dihitung dapat diakses oleh pengguna.
4.5.2 Rancangan Proses
Pada penelitian ini dilakukan suatu penghitungan jumlah mobil dengan yang
termasuk dalam lingkup computer vision. Algoritma yang digunakan adalah
Gaussian Average dan Frame Differencing di mana suatu objek yang bergerak
dengan background yang ada dapat dipisahkan. Adapun diagram blok algoritma
Kamera Penyimpan
video
PC
Pemroses Hasil
Pemrosesan
-
24
dari analisis penghitungan jumlah mobil ini dapat dimodelkan seperti pada Gambar
4.2 berikut :
Gambar 4.2 Diagram blok algoritma penghitungan jumlah mobil
Diagram algoritma yang digunakan dalam penghitungan jumlah mobil di
jalan raya ini diperlihatkan pada gambar 1. Langkah pertama, input video yang
digunakan di dalam sistem ini bisa terdiri dari dua buah tipe, yaitu video yang
langsung diambil dari kamera secara realtime atau video yang telah disimpan di
dalam suatu media penyimpanan tertentu. Setelah itu, input video tersebut diambil
frame yang terdapat di dalamnya satu per satu sehingga didapat satu buah citra
untuk setiap frame. Citra dari tiap frame ini diproses dengan fungsi Frame
Differencing yang terdapat pada OpenCV agar dapat dibedakan antara objek yang
bergerak dengan background. Setelah itu, objek yang didapat kemudian dilakukan
segmentasi. Hasil yang didapat dari segmentasi ini adalah objek yang dianggap
kurang sempurna sehingga perlu diperbaiki terlebih dahulu dengan dilakukan
Input
Video
Ekstraksi
Background
Ekstraksi
Foreground
Segmentasi
Foreground
Cek video
dari kamera
atau file AVI
Capture
Frame
Pencarian
perbedaan
frame
Difference
Perbaikan
Hasil Biner
Foreground
Pendeteksian
Mobil Dengan
Gaussian Average
Penghitungan
Jumlah Mobil Hasil Berupa
Jumlah Mobil
Pencarian
kontur yang
terbentuk
-
25
pengisian pada bagian yang pecah-pecah di dalam objek yang ada. Setelah
didapatkan hasil yang cukup mudah untuk dibaca, dilakukan pencarian kontur
yang terbentuk pada video di mana pada pencarian setiap kontur ini terdapat batas
minimal ukuran kontur agar didapatkan hasil yang benar-benar berupa mobil. Dari
kontur yang didapatkan ini, mobil yang ada dapat dihitung dengan algoritma
Gaussian Average sehingga didapatkan hasil berupa jumlah mobil yang ada di
jalan tersebut.
-
26
BAB V
IMPLEMENTASI DAN HASIL PENGUJIAN
5.1 Inisialisasi Program
Pada program ini ada beberapa inisialisasi yang harus dilakukan, yaitu
inisialisasi capture video dan frame serta deklarasi ukuran frame yang akan
digunakan.
5.1.1 Inisialisasi Capture
Fungsi capture adalah fungsi pada OpenCV yang digunakan untuk
pemanggilan file baik berupa gambar maupun video. Deklarasi inisialisasi capture
dan frame dituliskan pada Gambar 5.1.
Gambar 5.1 Inisialisasi capture
Ketiga baris kode di atas berada pada baris yang berbeda-beda. Dikarenakan
kode yang cukup banyak, seluruh kode tidak dapat ditampilkan di laporan ini
sehingga hanya diambil bagian inti dari kode tersebut.
Pada program ini digunakan sumber yang berupa gambar video dari internet.
Oleh karena itu, setelah dilakukan deklarasi variabel capture, fungsi capture yang
digunakan adalah kode di baris ketiga pada gambar 5.1. Frame pada OpenCV
digunakan sebagai basis pemrosesan video dengan sistem sequential frame, di mana
pemrosesan dilakukan pada tiap bagian dari frame yang ada. Pada program ini
ditampilkan beberapa frame untuk didapatkan pemrosesan yang baik, antara lain :
a. Frame gambar asli, yakni frame video asli sebelum diproses.
CvCapture* capture;
capture = cvCaptureFromCAM( argc == 2 ? argv[1][0] - '0' : 0 );
capture = cvCaptureFromAVI( argv[1] );
-
27
b. Frame background, yakni frame yang terdiri dari bagian yang tidak
bergerak. Frame ini didapatkan ketika proses frame differencing
dilakukan.
c. Frame foreground, yakni frame yang terdiri dari bagian yang bergerak.
Frame ini didapatkan lewat proses yang sama dengan frame background,
yakni saat dilakukan proses frame differencing.
d. Frame hasil perbaikan, yakni frame yang didapat dari hasil perbaikan
foreground sehingga didapat frame yang lebih mudah untuk dideteksi
e. Frame display window, yakni frame di mana identifikasi mobil pada
gambar dilakukan dengan penandaan pada setiap mobil yang terdeteksi
dengan kotak. Pada frame ini terdapat garis di daerah jalan sehingga
apabila garis tersebut dilewati oleh mobil, mobil tersebut akan dihitung.
5.1.2 Inisialisasi Parameter Mixture of Gauss
Sebelum pemanggilan fungsi Mixture of Gauss, terlebih dahulu dilakukan
inisialisasi parameter berikut :
a. Pointer untuk menyimpan address sementara yang disediakan oleh fungsi
CvGaussBGStatModelParams.
b. Pointer untuk menyimpan address model hasil dari penerapan Mixture of
Gauss terhadap video.
-
28
Adapun inisialisasi parameter ini dituliskan pada gambar 5.2.
Gambar 5.2 Inisialisasi parameter Mixture of Gaussian
Dari gambar 5.3 dapat dilihat bahwa dilakukan deklarasi variabel params
sebagai pointer penyimpanan nilai parameter yang digunakan. Adapun nilai
win_size adalah tingkatan learning rate di mana nilai alpha adalah 1. Nilai
n_gauss adalah jumlah dari Gaussian mixture untuk setiap piksel. Nilai
bg_threshold digunakan sebagai nilai minimal untuk suatu objek dapat dianggap
sebagai background. Nilai std_threshold adalah nilai minimal objek dapat
dianggap sebagai objek yang bergerak. Nilai minArea adalah ukuran minimal
suatu objek agar dapat dimasukkan ke dalam foreground. Nilai weight_init adalah
nilai weight di waktu awal dan variance_init adalah nilai variansi di waktu awal.
5.1.3 Inisialisasi rectangle, contour, dan hierarchy
Gambar 5.4 Kode inisialisasi rectangle, contour, dan hierarchy
CvGaussBGStatModelParams* params = new
CvGaussBGStatModelParams;
params->win_size=10;
params->n_gauss=5;
params->bg_threshold=0.2;
params->std_threshold=1.5;
params->minArea=0.01;
params->weight_init=0.05;
params->variance_init=30;
CvBGStatModel* bgModel = cvCreateGaussianBGModel(videoFrame
,params);
Rect bounding_rect,bounding_rect2;
vector contours;
vector hierarchy;
vector contours1;
vector hierarchy1;
-
29
Sebelum rectangle, contour, dan hierarchy digunakan, dilakukan inisialisasi
variabel terlebih dahulu. Adapun pengertian dari rectangle adalah bentuk kotak
yang digunakan pada tiap mobil di mana seluruh mobil yang terdeteksi pada suatu
frame akan ditandai dengan kotakan di area mobil tersebut. Yang kedua dilakukan
inisialisasi dua buah contour dengan menggunakan tipe data
vector. Selain itu juga dilakukan inisialisasi dua buah hierarchy
sebagai gambaran hubungan antar contour dengan tipe data vector.
5.2 Program Utama
Program utama (main program) ini adalah bagian di mana skrip yang ingin
diimplementasikan dari algoritma yang ada dapat dijalankan.
5.2.1 Iterasi while
Bagian main program ini dimulai dengan iterasi while di mana program
dapat dihentikan dengan penekanan tombol q di keyboard seperti yang
diperlihatkan pada gambar 5.5.
Gambar 5.5 Kode masukan key untuk perulangan
Seperti yang diperlihatkan pada gambar 5.5, key adalah masukan pengguna
di mana apabila input yang dimasukkan pengguna adalah huruf q, maka program
akan dilanjutkan pada bagian setelah iterasi while tersebut. Adapun cvWaitKey(10)
adalah fungsi input di mana penungguan dilakukan setiap 10 ms. Apabila nilai 10
diganti dengan 0, maka input akan ditunggu terus menerus. Hal ini dapat digunakan
untuk pendeteksian frame demi frame dengan penekanan keyboard pada setiap
pergantian frame.
int key=-1;
key = cvWaitKey(10);
while(key != 'q')
-
30
5.2.2 Inisialisasi Matriks Video
Gambar 5.6 Kode inisialisasi matriks video
Sebelum dapat diproses, frame harus diubah ke dalam matriks terlebih
dahulu. Oleh karena itu, matriks yang akan digunakan harus diinisialisasi terlebih
dahulu di bagian awal. Variabel matriks yang digunakan ini diperlihatkan pada
gambar 5.6.
5.2.3 Pengambilan frame
Setelah dilakukan inisialisasi, alur program yang sebenarnya dapat
dijalankan. Seluruh bagian pengambilan frame ini berada di dalam iterasi while
sehingga selalu dilakukan pengambilan frame dari seluruh frame yang ada di
dalam video. Adapun kode program diperlihatkan pada gambar 5.7.
Gambar 5.7 Kode pengambilan frame
Seperti yang diperlihatkan pada gambar 5.7, program diawali dengan query
frame yang diambil dari video capture (video yang asli). Setelah itu dilakukan
pengecekan conditional if, di mana apabila tidak terdapat frame lagi, maka iterasi
while di program utama ini akan dihentikan. Apabila frame sudah didapatkan dari
video, maka frame tersebut diubah dengan fungsi cvarrToMat dan disimpan ke
dalam variabel matriks video.
5.2.4 Penerapan Gaussian Mixture pada Video
Mat video, fg_perbaikan, fg_perbaikan1, video1, video2;
videoFrame = cvQueryFrame(capture);
if( !videoFrame) break;
video=cvarrToMat(videoFrame);
-
31
Setelah frame video diambil, dipanggil suatu fungsi cvUpdateBGStatModel
agar didapatkan model foreground/background yang telah di-update pada frame
video. Adapun bgModel sendiri adalah model foreground/background Gaussian
dengan parameter yang telah disebutkan pada inisialisasi parameter Gaussian.
Untuk kode program dari fungsi ini diperlihatkan pada gambar 5.8.
Gambar 5.8 Kode Penerapan Gaussian Mixture pada Video
Pada bagian ini dilakukan isolasi bagian tertentu (foreground) dari bagian
lainnya (background). Foreground adalah bagian frame yang relatif kecil dan
berubah dalam jangka waktu yang relatif pendek. Sedangkan background adalah
bagian besar dari frame yang cenderung tidak berubah dalam jangka waktu yang
cukup panjang.
5.2.5 Perbaikan Model Foreground Hasil dari Gaussian Mixture
Dari hasil ekstraksi foreground tersebut dilakukan suatu segmentasi
foreground yang kemudian dilakukan perbaikan pada model Gaussian bgModel
yang dimiliki agar didapatkan foreground yang lebih jelas. Dikarenakan
foreground yang dimiliki semakin jelas, maka proses pendeteksian dan
pengenalan objek akan semakin akurat. Adapun kode program pemanggilan
fungsi perbaikan foreground ini diperlihatkan pada gambar 5.9.
Gambar 5.9 Kode Perbaikan Model Foreground
cvUpdateBGStatModel(videoFrame,bgModel);
fg_perbaikan=perbaiki(bgModel->foreground);
-
32
Seperti yang diperlihatkan pada gambar 5.9, dari kode ini dilakukan
pemanggilan fungsi perbaiki. Input dari fungsi perbaiki ini adalah model
foreground yang biasa, kemudian dilakukan pemrosesan dan dihasilkan output
berupa model foreground yang telah diperbaiki. Adapun kode program dari fungsi
perbaiki ditunjukkan pada gambar 5.10.
Gambar 5.10 Kode Program Perbaikan Model Foreground
5.2.6 Cropping ROI (Region of Interest) Frame dan Duplikasi
Pada bagian ini dilakukan pembatasan wilayah pendeteksian di mana region
of interest atau bagian yang diinginkan adalah di daerah jalan yang ingin dihitung.
Agar ROI yang diinginkan lebih jelas, dibuat suatu garis di dalam video display
yang akan diperlihatkan. Garis tersebut adalah penanda di mana bagian tempat
mobil yang ingin dihitung adalah mobil yang melewati garis tersebut. Adapun kode
fungsi pembuatan garis, pembatasan wilayah pendeteksian, dan duplikasi frame
Mat perbaiki(Mat grey){
Mat tmp=grey.clone;
morphologyEx(tmp,tmp,MORPH_GRADIENT,getStructuringEleme
nt(MORPH_ELLIPSE,Size(30,30)));
bitwise_not(tmp,tmp);
Mat smallholes=Mat::zeros(tmp.size(), CV_8UC1);
vector contours;
findContours(tmp,contours,CV_RETR_LIST,CV_CHAIN_APPRO
X_SIMPLE);
for(int i = 0; i < contours.size(); i++){
double area = contourArea(Mat(contours[i]));
if(area
-
33
pada video tersebut diperlihatkan pada gambar 5.12.
Gambar 5.12 Kode fungsi pembuatan garis pada video
Seperti yang diperlihatkan di gambar 5.12, dibuat garis pada frame dengan
nama video antara titik (0,100) dengan (420,000) dengan warna (110,220,0) dengan
ketebalan 2 dan bertipe 8-connected. Setelah itu dilakukan duplikasi oleh video1 di
mana dilakukan cropping pada video sehingga area batas area yang dihasilkan
dimulai dari titik (0,100) dengan ukuran tinggi 7 dan lebar 320, kemudian dilakukan
duplikasi oleh video2 dari video karena video akan diubah untuk keperluan tertentu
di kode selanjutnya. Selain duplikasi dari frame video, duplikasi juga dilakukan
terhadap frame fg_perbaikan dengan lebar yang sama pada titik yang sama,
kemudian disimpan ke dalam fg_perbaikan1.
5.2.7 Pencarian Kontur
Operasi pencarian kontur dilakukan setelah bagian foreground dari frame
telah diperbaiki. Pada OpenCV, fungsi pencarian kontur ini dilakukan fungsi yang
terdiri dari parameter antara lain :
a. Input, frame video input tempat di mana kontur ingin dicari;
b. Output, berupa contour dengan tipe data vector seperti
yang telah diperlihatkan pada bagian inisialisasi contour;
c. Hubungan antar contour yang direpresentasikan oleh hierarchy dengan tipe
data vector
d. Mode pencarian, pada kasus ini mode pencarian yang digunakan adalah
CV_RETR_CCOMP. Pada mode ini, seluruh kontur dicari dan
line( video, Point( 0, 100 ), Point( 420, 100), Scalar( 110, 220, 0 ), 2, 8);
video1=video(Rect(0,100,320,7));
video2=video.clone();
fg_perbaikan1=fg_perbaikan(Rect(0,100,320,7));
-
34
diorganisasikan ke dalam 2 level hierarchy. Level yang pertama dari
hierarchy ini digunakan untuk kontur yang ada di luar sedangkan level
kedua digunakan untuk pembatas kontur.
e. Metode aproksimasi, pada kasus ini metode aproksimasi yang digunakan
adalah CV_CHAIN_APPROX_SIMPLE. Dengan metode ini,
pengkompresan dilakukan pada segmen horizontal, vertikal, dan diagonal
sehingga yang disimpan hanyalah titik penyusun kontur tersebut berada.
Sebagai contoh, apabila kontur yang ditemukan adalah suatu kotak
sempurna (tanpa lengkungan), maka yang disimpan hanyalah 4 buah titik
penyusun yang berada di masing-masing pojok dari kotak tersebut. Tujuan
utama dari metode ini adalah agar data dapat dikurangi dengan pencarian
fitur tertentu sehingga kontur dapat dibedakan antara yang satu dengan yang
lain
Fungsi pencarian kontur ini diperlihatkan pada gambar 5.11.
Gambar 5.11 Kode fungsi pencarian kontur yang ada di video
Dari gambar 5.11, dapat dilihat bahwa pencarian kontur dilakukan terhadap
video coba1 dan coba. Hasil kontur yang didapat disimpan di dalam contours dan
contours1 sedangkan hierarchy yang didapat disimpan dalam hierarchy dan
hierarchy1.
5.2.8 Pengkotakan dan Penghitungan Mobil
findContours( coba1, contours, hierarchy,CV_RETR_CCOMP,
CV_CHAIN_APPROX_SIMPLE );
findContours( coba, contours1, hierarchy1,CV_RETR_CCOMP,
CV_CHAIN_APPROX_SIMPLE );
-
35
Setelah kontur dapat dicari sesuai yang telah dibahas di dalam subbab 5.2.7,
langkah selanjutnya adalah penandaan mobil yang terdeteksi dengan pengkotakan
pada bagian luar dari mobil tersebut serta penghitungan jumlah mobil yang ada.
Gambar 5.12 Kode fungsi pengkotakan dan penghitungan mobil
Langkah pertama dari penghitungan ini adalah dengan pemilahan mana
kontur yang dapat dianggap sebagai mobil dan yang bukan. Hal ini dilakukan
dengan pembatasan minimal luas area agar dapat dikategorikan sebagai mobil.
Seperti yang diperlihatkan pada gambar 5.12, luas area minimal agar mobil dapat
dikategorikan pada program ini adalah 115. Untuk itu, dilakukan suatu perulangan
dari 0 hingga jumlah keseluruhan kontur yang terdeteksi dan dilakukan pengecekan
satu persatu apakah luas minimal dari kontur tersebut terpenuhi atau tidak. Apabila
terpenuhi, dilakukan pengkotakan pada kontur mobil tersebut dengan fungsi
boundingRect yang disimpan ke dalam variabel bounding_rect. Setelah itu, variabel
ini diaplikasikan ke dalam fungsi rectangle agar kotak tersebut dapat terlihat di
frame video 1. Untuk setiap kontur yang terdeteksi ini, nilai kontur yang merupakan
representasi dari jumlah mobil ini akan ditambah 1, sehingga akan didapatkan hasil
akhir berupa jumlah total mobil yang terdeteksi.
5.3 Display Window
Bagian yang ingin diperlihatkan pada jendela ditampilkan pada display
window. Pada bagian ini dilakukan pemberian tulisan pada video berupa jumlah
for( int i = 0; i< contours.size(); i++){
double a=contourArea( contours[i]);
if(a>115){
double kontur;
bounding_rect=boundingRect(contours[i]);
rectangle(video1, bounding_rect, Scalar(0,255,0),2, 8,0);
kontur++;
cout
-
36
mobil yang terhitung beserta pengaturan yang dilakukan. Adapun kode yang
digunakan untuk menampilkan jendela penampil ditunjukkan pada gambar 5.13.
Gambar 5.13 Kode penampil video
Seperti yang diperlihatkan pada gambar 5.13, pada kode tersebut
dilakukan pengaturan jenis, ukuran, ketebalan, letak font beserta isi tulisan
kemudian ditaruh ke dalam video dengan warna putih (255,255,255). Setelah itu
dilakukan penampilan video sehingga didapatkan hasil video yang diinginkan.
5.4 Hasil Pemrosesan Citra
Setelah dilakukan implementasi kode dengan OpenCV seperti yang
diperlihatkan pada subbab 5.1-5.3, dapat dilihat hasil dari pemrosesan citra yang
dilakukan. Adapun urutan pemrosesan citra yang dilakukan ini dimulai dari
pengambilan gambar asli yang kemudian dikenakan algoritma Gaussian Mixture
sehingga didapat hasil background dan foreground seperti yang diperlihatkan pada
gambar 5.14.
string text = format("%f",kontur);
int fontFace = FONT_HERSHEY_SCRIPT_SIMPLEX;
double fontScale = 0.5;
int thickness = 3;
Point textOrg(10,20);
putText(video,text, textOrg, fontFace, fontScale,Scalar::all(255), thickness, 8);
Scalar color( 255,255,255);
imshow(Display Window, video );
-
37
Gambar 5.14. Hasil algoritma Gaussian Mixture (a) Video asli (b) Hasil
segmentasi Background (c) Hasil segmentasi Foreground
Seperti yang diperlihatkan pada gambar 5.14(a), terdapat garis horizontal
di tengah video yang digunakan sebagai penanda bahwa setiap kali garis tersebut
dilewati mobil, maka mobil tersebut akan dihitung satu buah mobil. Adapun
fungsi dari segmentasi background dan foreground tersebut adalah digunakan
untuk pembentukan kontur yang diperbaiki agar kemudian dapat dihitung jumlah
kendaraan (mobil) yang ada. Setelah didapat segmentasi dari frame video tersebut,
dilakukan proses perbaikan dari foreground ke dalam suatu frame yang sudah
diperbaiki dan dapat digunakan untuk penghitungan jumlah mobil seperti yang
diperlihatkan pada gambar 5.15.
Gambar 5.15. Hasil perbaikan foreground (a) Foreground (b) Hasil
perbaikan
Proses perbaikan seperti yang ditunjukkan pada gambar 5.15 dilakukan
dengan cara pengisian lubang-lubang pada daerah foreground dengan suatu
bentuk lingkaran warna putih sehingga didapat frame yang telah diperbaiki.
Setelah dilakukan perbaikan seperti yang diperlihatkan pada gambar 5.15,
dilakukan pendeteksian mobil dengan pencarian kontur pada frame yang telah
diperbaiki seperti yang diperlihatkan pada gambar 5.16.
-
38
Gambar 5.16 Pendeteksian mobil
Seperti yang diperlihatkan pada gambar 5.16 tersebut, setiap kontur yang
ditemukan atau mobil yang terdeteksi diberi tanda dengan kotak di sekitar mobil
tersebut.
Gambar 5.17 Penghitungan mobil
Seperti yang diperlihatkan pada gambar 5.17, untuk setiap mobil yang terdeteksi
tersebut, apabila garis horizontal yang berada di tengah video dilewati oleh salah
satu mobil maka mobil tersebut akan dihitung sebagai satu buah mobil.
-
39
BAB VI
PENGUJIAN DAN PEMBAHASAN
6.1 Uji Variasi Parameter Gaussian Mixture
Pengubahan dari frame video asli ke segmen background dan foreground
yang didapat ini dipengaruhi oleh beberapa parameter. Pada bab IV dan V telah
disebutkan bahwa proses implementasi pencarian background dan foreground
dipengaruhi oleh variabel-variabel yang terdapat pada Gaussian Mixture di
OpenCV. Oleh karena itu dilakukan variasi parameter yang terdapat pada
CvGaussBGStatModelParams dengan variasi parameter sebagai berikut :
a. Threshold background yang digunakan sebagai nilai batas untuk pembeda
antara background dan foreground adalah : 0, 0,1, 0,5, 0,9, dan 1.
b. Inisiasi variansi sebagai variansi untuk variansi objek diam dengan yang
tidak antara lain adalah : 0, 10, 20, 25, dan 50.
6.1.1 Hasil Pengujian dan Pembahasan Variasi Nilai Gaussian Mixture
Nilai threshold yang digunakan sebagai pembeda antara background dan
foreground akan divariasikan dengan nilai 0, 0,1, 0,5, 0,9, dan 1. Tujuan dari
percobaan variasi pada nilai tersebut adalah untuk didapat korelasi/hubungan
antara tingkat kejelasan foreground dengan besar nilai minimal threshold yang
digunakan. Dari variasi ini, diharapkan tingkat eror yang dihasilkan pada
foreground dapat dikurangi.
Adapun hasil percobaan dengan variasi nilai threshold tersebut
diperlihatkan pada gambar 6.1.
-
40
Gambar 6.1 Ekstraksi foreground dengan threshold background = 0
Pada gambar 6.1 diperlihatkan hasil ekstraksi foreground dengan threshold
sebesar 0. Adapun parameter yang digunakan untuk pengukuran tingkat
keakuratan adalah parameter yang kualitatif. Dari gambar 6.1 dapat dilihat bahwa
foreground yang dihasilkan dari threshold 0 sangat buruk dan tidak jelas. Hal ini
dikarenakan banyak daerah bergerak pada frame yang dianggap sebagai
background.
Gambar 6.2 Ekstraksi foreground dengan threshold background = 0,1
Dari gambar 6.2, diperlihatkan hasil ekstraksi foreground dengan tingkat
threshold yang lebih tinggi dari tingkat threshold yang digunakan pada gambar
6.1. Adapun hasil yang didapat adalah foreground terlihat lebih jelas tapi masih
-
41
kurang jelas untuk dapat diperbaiki agar kemudian dapat digunakan dalam
pendeteksian mobil.
Gambar 6.3 Ekstraksi foreground dengan threshold background = 0,5
Pada gambar 6.3 dapat dilihat bahwa foreground yang dihasilkan cukup
jelas di mana bagian yang bergerak dapat dideteksi tanpa pendeteksian bagian
bergerak lain yang tidak cukup signifikan seperti pohon bergerak dan lain-lain.
Gambar 6.4 Ekstraksi foreground dengan threshold background = 0,9
Pada gambar 6.4, ekstraksi foreground yang dihasilkan sangat jelas akan
tetapi beberapa bagian lain yang bergerak seperti pohon dan lain-lain juga
terdeteksi. Untuk pengukuran mobil, hal ini dapat berpengaruh pada tingkat
akurasi pengukuran. Akan tetapi, seperti yang diperlihatkan pada gambar 6.4,
-
42
bagian bergerak selain mobil tersebut ada di tempat yang bukan di sekitar garis.
Oleh karena itu, bagian bergerak selain mobil tersebut tidak akan terdeteksi
sebagai satu buah mobil.
Gambar 6.5 Ekstraksi foreground dengan threshold background = 1
Pada pengujian dengan tingkat threshold background = 1 seperti yang
diperlihatkan pada gambar 6.5, seluruh bagian background pada frame dideteksi
sebagai foreground sedangkan bagian yang bergerak tidak dideteksi sebagai
foreground. Oleh karena itu, threshold ini tidak akan digunakan karena jumlah
mobil yang dihitung akan berkebalikan dengan jumlah yang sebenarnya.
Dari beberapa pengujian variasi nilai threshold yang telah dilakukan,
threshold yang akan digunakan untuk penghitungan jumlah mobil ini adalah
threshold =0,9. Hal ini dikarenakan pada pengujian tersebut, foreground yang
dihasilkan sangat jelas. Meskipun pada foreground tersebut bagian yang bergerak
seperti pohon juga terdeteksi, foreground tersebut tetap dapat digunakan karena
bagian tersebut berada di luar area penghitungan kontur yang dilakukan.
6.1.2 Hasil Pengujian dan Pembahasan Variasi Nilai Variansi
-
43
Gambar 6.6 Ekstraksi foreground dengan nilai variansi = 0
Pada pengujian dengan nilai variansi = 0, didapatkan ekstraksi foreground
di mana bagian yang tidak bergerak terlihat sangat jelas seperti yang diperlihatkan
pada gambar 6.6. Hal ini akan berpengaruh ketika foreground diperbaiki di mana
bagian yang saling dekat satu sama lain akan diberi bentuk lingkaran untuk
pengisian bagian yang kurang sempurna yaitu lubang atau jarak yang terdapat
antara satu titik putih dengan yang lain. Apabila variansi ini digunakan, bagian
yang tidak diinginkan seperti pohon atau goyangan pada kamera dapat dihitung
sebagai satu buah mobil. Oleh karena itu, dilakukan pengujian variansi yang lain
untuk dapat diperbaiki agar kemudian dapat dilakukan penghitungan pada frame
yang sudah diperbaiki tersebut.
-
44
Gambar 6.7 Ekstraksi foreground dengan nilai variansi = 10
Pada pendeteksian dengan nilai variansi = 10 ini, bagian bergerak yang
lain seperti pohon dan benda di jalan sudah tidak terlalu jelas lagi. Akan tetapi,
bagian tersebut berpotensi untuk diperbaiki oleh fungsi perbaikan sehingga
dihasilkan suatu kontur. Oleh karena itu, nilai variansi yang lain akan
diujicobakan.
Gambar 6.8 Ekstraksi foreground dengan nilai variansi = 20
Dengan penggunaan nilai variansi sebesar 20, dari gambar 6.8 dapat dilihat
bahwa foreground yang dihasilkan cukup jelas di mana bagian yang tidak
diinginkan semakin terlihat pudar.
Gambar 6.9 Ekstraksi foreground dengan nilai variansi = 25
-
45
Dari gambar 6.9 dapat dilihat bahwa pada hasil ekstraksi foreground
dengan nilai variansi = 25 ini bagian yang tidak diinginkan semakin kecil dan
dengan ukuran tersebut, tidak ada potensi bagi kontur tersebut untuk dapat
dihitung sebagai mobil.
Gambar 6.10 Ekstraksi foreground dengan nilai variansi = 50
Pada ekstraksi foreground dengan nilai variansi sebesar 50 ini dihasilkan
kontur tanpa adanya objek yang tidak diinginkan akan tetapi objek target atau
mobil pada kasus ini terlihat kurang jelas. Meskipun kontur seperti yang
diperlihatkan pada gambar 6.10 dapat terlihat, akan tetapi beberapa bagian pada
satu mobil dapat diperbaiki menjadi dua buah kontur. Hal ini akan sangat
berpengaruh pada jumlah mobil yang dihitung dan tingkat keakuratan pengukuran
mobil.
Dari variasi pengujian variansi yang telah dilakukan dapat dilihat bahwa
pada beberapa bagian, foreground yang dihasilkan lebih baik dibandingkan
dengan yang lain. Adapun pada kasus ini, variansi yang akan digunakan adalah
25. Hal ini dikarenakan pada tingkat variansi 25, objek yang tidak diinginkan
sudah cukup kecil untuk dihitung sedangkan objek yang diinginkan masih cukup
jelas untuk kemudian diperbaiki agar selanjutnya dapat dihitung.
-
46
6.2 Uji Fungsi Perbaiki
Setelah foreground yang diinginkan dapat diekstraksi, dilakukan perbaikan
pada frame foreground tersebut dengan dilakukan pengisian bagian yang hitam
yang berada di antara bagian yang putih. Hal ini dilakukan agar kontur pada
bagian tersebut tidak dihitung sebagai dua atau lebih kontur, tetapi dihitung
sebagai satu buah kontur, yaitu mobil. Adapun uji variasi yang dilakukan pada
subbab ini adalah variasi ukuran lingkaran yang digunakan untuk perbaikan
kontur. Ukuran dari lingkaran yang akan diujikan tersebut adalah 5, 10, dan 15.
Gambar 6.11 Proses perbaikan dengan ukuran lingkaran 5
Seperti yang diperlihatkan pada gambar 6.11, terdapat lubang pada salah
satu mobil di hasil perbaikan yang dihasilkan dengan ukuran lingkaran sebesar 5
ini. Selain itu pada mobil yang ada di sebelah kanan bawah dari mobil tersebut,
terdapat suatu cekungan yang diakibatkan tidak diisinya bagian tersebut dengan
lingkaran putih.
-
47
Gambar 6.12 Proses perbaikan dengan ukuran lingkaran 10
Seperti yang diperlihatkan pada gambar 6.12, seluruh mobil yang ada di
hasil perbaikan dapat diperbaiki tanpa adanya cekungan ataupun lubang di tengah
mobil. Selain itu, bagian yang ada di antara dua buah mobil tidak diberi lingkaran
sehingga dua buah mobil dapat dihitung sebagai dua buah mobil yang berbeda.
Gambar 6.13 Proses perbaikan dengan ukuran lingkaran 15
Pada gambar 6.13 di bagian kiri atas terdapat dua buah mobil yang saling
terpisah tetapi diperbaiki oleh lingkaran yang terlalu besar sehingga mobil-mobil
tersebut terlihat sebagai satu buah objek mobil. Pada kasus ini, mobil yang berada
di sebelah kiri atas memang tidak dihitung karena garis tidak dilewati oleh mobil
tersebut. Akan tetapi, apabila hal tersebut terjadi mobil yang berada di tengah di
-
48
mana garis berada, maka terdapat potensi di mana dua buah mobil tersebut akan
dihitung sebagai satu buah mobil.
Dari pengujian yang telah dilakukan, dapat ditentukan ukuran lingkaran
dengan tingkat kejelasan kualitatif yang paling baik. Oleh karena itu, lingkaran
dengan ukuran yang ada di tengah atau 10 digunakan karena pada hasil perbaikan
dengan lingkaran ukuran tersebut, tidak terdapat lubang maupun salah satu bagian
mobil yang terhubung dengan bagian mobil lain yang ada di sebelah mobil
tersebut.
6.3 Uji Akurasi
6.3.1 Tingkat Akurasi Penghitungan Mobil
Setelah didapat parameter yang paling baik pada masing-masing fungsi,
penghitungan mobil dapat dilakukan. Penghitungan tingkat akurasi ini dilakukan
dengan penghitungan jumlah mobil yang sebenarnya ada pada video dan
penghitungan jumlah mobil yang dilakukan oleh program. Dari penjalanan
program, hasil yang didapat untuk penghitungan mobil yang sebenarnya adalah
sebanyak 48 mobil sedangkan pada penghitungan mobil pada program adalah
sebanyak 46 mobil. Dari hasil yang didapat tersebut, tingkat akurasi pengukuran
dapat ditentukan. Adapun rumus yang digunakan untuk pengukuran tingkat
akurasi dalam penghitungan mobil ini diperlihatkan pada gambar 6.14.
= 100%
100%
Gambar 6.14 Rumus pengukuran akurasi penghitungan mobil
Dari rumus pada gambar 6.14, dapat dilihat bahwa parameter yang
digunakan untuk pengukuran tingkat akurasi ini adalah beda hitung sebenarnya
dengan hasil hitung dari program dan hasil hitung yang sebenarnya. Untuk beda
hitung antara pengukuran sebenarnya dengan hasil hitung dari program adalah
-
49
sebesar 48-46 = 2, sedangkan jumlah pengukuran sebenarnya dari mobil adalah
46. Oleh karena itu, tingkat akurasi dari penghitungan mobil ini adalah seperti
yang diperlihatkan pada gambar 6.15.
= 100% 2
46 100% = 100% 4,35% = 95,65%
Gambar 6.15 Aplikasi rumus pada penghitungan mobil yang dilakukan
Seperti yang diperlihatkan pada gambar 6.15, tingkat akurasi yang didapat
adalah sebesar 95,65%.
6.3.2 Pembahasan Akurasi Penghitungan Mobil
Tingkat akurasi yang didapatkan dari penghitungan mobil ini adalah
sebesar 95,65%. Adapun penyebab utama dari ketidakakuratan penghitungan
mobil ini adalah pada bagian awal penghitungan mobil yaitu di bagian frame awal
di mana video baru saja di-capture sehingga terdapat banyak bagian yang berbeda
pada frame apabila dibandingkan