laporan tugas khusus 13699

Upload: jake-dillon

Post on 10-Jan-2016

68 views

Category:

Documents


4 download

DESCRIPTION

Laporan TK Program Studi Ilmu Komputer UGM 11/313564/PA/13699

TRANSCRIPT

  • 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