aplikasi edge detection untuk sistem informasi parkir mobil
TRANSCRIPT
Aplikasi Edge Detection untuk Sistem Informasi Parkir Mobil
Rizky Andyno Ramadhan1
1 Teknik Informatika, Institut Teknologi Bandung E-mail: [email protected]
Abstrak. CV atau Computer Vision telah menjadi sesuatu yang sangat penting di zaman ini.
Computer Vision digunakan di banyak tempat untuk berbagai kebutuhan. Salah satu konsep yang
sering digunakan adalah edge detection untuk mendeteksi objek dan bentuknya. Konsep ini dapat
digunakan untuk membuat sebuah sistem informasi parkir mobil yang memiliki fitur penghitung
jumlah kendaraan dan menyediakan angka jumlah lahan parkir yang tersedia secara otomatis
sehingga tidak perlu ada campur tangan dari petugas karena seluruhnya telah terautomasi
menggunakan sistem. Sistem cukup menghitung jumlah mobil yang telah menempati lahan
parkir dengan menggunakan gambar yang diambil oleh CCTV yang terpasang di berbagai sudut
tempat parkir, dan melakukan kalkulasi lahan parkir yang tersedia.
1. Pendahuluan
Dewasa ini, pengguna kendaraan bermotor (khususnya mobil) terus meningkat. Oleh karena itu,
ketersediaan lahan parkir semakin dibutuhkan. Hal ini membuka sebuah peluang bagi penyedia jasa
lahan parkir untuk saling berlomba-lomba memberikan layanan terbaik kepada pengguna jasanya. Sebagian besar penyedia jasa layanan parkir menyediakan kenyamanan tambahan bagi penggunanya,
yaitu dengan memberikan informasi kuantitas lahan parkir yang tersedia di suatu area, sehingga
penggunanya dapat dengan nyaman mencari parkir di area dengan kuantitas lahan parkir kosong yang tersedia.
Gambar 1. Ilustrasi Sensor Parkir Mobil (sumber: shutterstock.com)
Untuk mengimplementasikan ini, biasanya penyedia parkir mobil memasang sensor di berbagai macam
spot parkir. Permasalahannya adalah, pemasangan alat tersebut memakan biaya yang tidak sedikit.
Selain itu, alat juga perlu dirawat dengan baik agar dapat tetap terus berfungsi sebagaimana mustinya, sehingga menambah biaya perawatan. Oleh karenanya, diajukan sebuah solusi yang murah, karena
hanya dengan sebuah citra dari tempat parkir yang dapat dengan mudah diambil dari citra CCTV
pengawas tempat parkir. Dengan konsep ini, penyedia layanan tempat parkir tidak perlu mengeluarkan
biaya tambahan untuk menyediakan kenyamanan bagi pengguna jasa layanan parkirnya.
Secara garis besarnya, solusi yang akan diterapkan berupa implementasi konsep edge detection yang
akan menerka bentuk mobil lalu menghitung jumlah mobil yang terdapat di citra CCTV. Setelah itu, seluruh data dari CCTV di satu area akan dikumpulkan, lalu ditampilkan di papan informasi yang
berfungsi untuk menampilkan seluruh informasi kuantitas lahan parkir yang tersedia di seluruh area di
tempat parkir tersebut.
2. Landasan Teori
Berikut adalah landasan teori-teori yang mendasari implementasi makalah ini.
2.1. Edge Detection
Sebuah edge menandakan pinggiran dari sebuah objek. Dalam pengolahan citra, teknik ini sangatlah penting, terutama dalam ekstraksi fitur karena sebuah pinggiran menandakan isi dari citra itu. Edge
detection adalah sebuah proses mengidentifikasi piksel di mana perubahan intensitas terjadi di
perpotongan region yang menandakan perubahan objek. Metode Edge detection yang sering digunakan
adalah:
• Operator Canny
• Operator Prewitt
• Operator Sobel
• LoG (atau Laplace of Gaussian)
• Operator Robert
Dari sekian banyak metode edge detection, salah satu yang paling terkenal, efisien, dan yang paling
sering digunakan adalah edge detection dengan menggunakan Operator Canny. Salah satu karakteristik operator Canny yang menjadi incaran banyak orang adalah bagaimana operator ini dapat menghasilkan
hasil dari deteksi tepi hanya dengan ketebalan 1 piksel saja.
2.2. Operator Canny Operator Canny akan memilih suatu piksel sebagai tepi apabila besar gradien dari piksel tersebut lebih
dari besar gradien dari piksel lain yang ada di sebelah piksel tersebut. Implementasinya berupa:
1. Pertama-tama, citra masukan akan diperbaiki menggunakan penapis Gaussian untuk
mengurangi derau. 2. Pada tiap titik, arah dan besar dari gradien akan dihitung.
3. Tepi yang telah dipilih lalu dianalisis menggunakan algoritma non-maximal covering untuk
menghasilkan suatu tepi yang memiliki tebal satu piksel.
Gambar 2. Hasil operator Canny (sumber: docs.opencv.org)
3. Implementasi
Untuk implementasinya, penulis menggunakan OpenCV untuk Python sebagai kakas pengolahan citra
yang akan dilakukan dalam makalah ini. Berikut adalah arsitektur sistem informasi yang akan
diterapkan.
Gambar 3. Arsitektur Sistem Informasi
Sebagai batasan, yang akan dikembangkan di dalam makalah ini hanyalah aplikasi deteksi kendaraannya
saja. Untuk sistem informasi terpusat akan dilakukan simulasi berdasarkan hasil dari aplikasi deteksi
kendaraan.
3.1. Sistem Informasi Terpusat Sistem informasi terpusat akan mengambil sejumlah gambar yang diperoleh dari CCTV yang telah
terpasang di berbagai macam area. Gambar yang telah diperoleh akan dijadikan sebuah parameter dari
pemanggilan fungsi yang terdapat di aplikasi deteksi kendaraan.
Gambar 4. Ilustrasi Pemanggilan Fungsi
Hasil yang telah diperoleh dari pemanggilan fungsi lalu akan diolah oleh sistem informasi mengenai
total lahan parkir yang terdapat di satu area yang terpantau dan menghitung sisa lahan parkir yang bisa ditempati oleh pengguna layanan parkir.
Tabel 1. Contoh Sistem Informasi
Lokasi Jumlah Kendaraan
Terdeteksi
Total Lahan Parkir Jumlah Lahan
Parkir yang Tersedia
Lot 1 85 100 15
Lot 2 76 80 4
Lokasi Jumlah Kendaraan
Terdeteksi
Total Lahan Parkir Jumlah Lahan
Parkir yang Tersedia
Lot 3 64 80 16
Untuk total lahan parkir yang tersedia, penyedia perlu melakukan perhitungan secara manual pada tiap
area lahan parkir lalu hasil perhitungan tersebut di-input ke dalam sistem informasi. Untuk jumlah kendaraan yang terdeteksi, aplikasi akan melakukan perhitungan mobil yang terdapat di area lahan
parkir secara otomatis menggunakan edge detection. Sesuai yang telah tertulis di Tabel 1, maka angka
yang ditampilkan adalah angka jumlah lahan parkir yang tersedia, hasil pengurangan total lahan parkir
dengan jumlah kendaraan yang terdeteksi.
3.2. Aplikasi Deteksi Kendaraan
Pendeteksian kendaraan dilakukan dalam beberapa tahap. Berikut adalah tahap-tahapnya.
3.2.1. Menerapkan Operator Canny ke Gambar Masukan
Gambar yang telah diperoleh akan diterapkan operator Canny sehingga menghasilkan tepi objek yang
memiliki ketebalan satu piksel.
Gambar 5. Perbandingan citra asli (kiri) dengan citra hasil terapan operator Canny (kanan)
Menggunakan OpenCV di Python, operator Canny diterapkan dengan memanggil fungsi berikut:
cv.Canny(img, low_threshold, high_threshold) dengan img adalah citra masukan, low_threshold adalah batas bawah deteksi tepi, dan high_threshold
adalah batas atas deteksi tepi. Parameter yang dimasukkan dalam implemetasi makalah ini adalah low_threshold = 180, high_threshold = 225. Threshold yang diatur cukup tinggi untuk menghilangkan
derau-derau dari lahan parkir.
3.2.2. Melakukan Dilasi Terhadap Gambar Deteksi Tepi
Dari gambar yang telah diterapkan operator Canny, dilakukan dilasi agar tepi citra menjadi lebih tebal.
Ini dilakukan dalam upaya menghubungkan kontur tepi yang putus di satu objek, sehingga objek
menjadi satu.
Gambar 6. Hasil dilasi dari citra tepi
Dilasi dilakukan dengan cara memanggil fungsi:
cv.dilate(edges, kernel, iterations=1)
dengan edges adalah citra tepi, kernel adalah kernel konvolusi berupa matriks, dan iterations adalah
jumlah iterasi fungsi yang dilakukan. Pada implementasi ini, kernel diatur ke matriks 2x2 dengan isi 1,
dan iterasi diatur ke satu kali agar penebalan tidak terlalu intens.
3.2.3. Melakukan Perhitungan Kontur Gambar
Setelah dilakukan dilasi, dilakukan operasi pencarian kontur pada gambar untuk dapat menemukan tepi
dari sebuah objek mobil. Operasi ini sebenarnya sama dengan blob detection, bedanya hanya karena fungsi yang disediakan oleh OpenCV adalah fungsi pencarian kontur.
Pemanggilan fungsi yang dilakukan adalah:
cv.findContours(edges, mode, method)
dengan edges adalah citra tepi (hasil dilasi), mode adalah mode pencarian kontur, dan method adalah
metode yang dilakukan untuk mendefinisikan sebuah kontur. Pada implementasi ini, mode yang dipilih
adalah RETR_EXTERNAL, yang menyebabkan hasil kontur yang dipilih hanyalah bagian luar dari
kontur saja (untuk menyamakan hasilnya dengan blob detection). Method yang dipilih adalah CHAIN_APPROX_SIMPLE untuk mensimplifikasi hasil penemuan kontur, dengan hanya mengambil
beberapa titik yang relevan dengan bentuk objek.
3.2.4. Menyaring Kontur Setelah mendapatkan kontur-kontur dari objek yang terdeteksi, saatnya menyaringnya dengan
menggunakan conditional dan menggambar segiempat untuk menandakan objek tersebut. Dalam
Python, kodenya adalah: for contour in contours:
x, y, w, h = cv.boundingRect(contour) if (w*h >= 2000 and h/w > 1.0):
cv.rectangle(orig_img, (x,y), (x+w, y+h), (255, 255, 0), 3)
Logikanya adalah, untuk setiap kontur, hanya pilih kontur yang memiliki luas 2000 piksel persegi
(didapatkan dari hasil perkalian panjang dan lebar dari bounding box kontur) dan memiliki aspek rasio
yang memanjang secara vertikal. Ini dipilih untuk menyesuaikan citra yang diperoleh dari tempat parkir,
dengan mobil yang terparkir dengan posisi vertikal.
Hasil penyaringan kontur adalah sebagai berikut:
Gambar 7. Sebelum (kiri) dan sesudah (kanan) hasil penyaringan kontur
4. Hasil Eksperimen
Berikut adalah tabel berisi hasil pengujian beberapa citra uji yang digunakan untuk mengukur ketepatan
dari aplikasi yang telah diimplementasi.
Tabel 2. Hasil Uji Implementasi Aplikasi Pendeteksian Mobil
No Citra Uji Hasil Deteksi Keterangan
1
Terdapat 1 dari 7 mobil
yang
terdeteksi
2
Terdapat 8 dari
3 mobil yang
terdeteksi. Semua hasil
deteksi salah
akibat medan
dari lahan parkir.
3
Terdapat 4
mobil yang terdeteksi. Ini
disebabkan
oleh kecilnya celah yang
terbentuk di
antara mobil
sehingga aplikasi
kesulitan
membedakan kedua mobil
tersebut.
No Citra Uji Hasil Deteksi Keterangan
4
Terdapat 2
mobil yang
terdeteksi. Ada satu kontur
yang terdeteksi
sebagai mobil akibat kontur
terhubung
melalui lampu jalan.
5
Terdapat 14
kontur yang
terdeteksi sebagai mobil,
dan 7 di
antaranya benar.
6
Ukuran citra
sangat besar dan sangat
berderau
sehingga banyak daerah
bukan mobil
yang terdeteksi sebagai mobil.
7
Terdapat 4
kontur yang
terdeteksi sebagai mobil,
3 di antaranya
benar. Sekali lagi, sisa
mobil tidak
terdeteksi
akibat medan yang begitu
kompleks
8
Tidak ada mobil yang
terdeteksi.
Peletakan
mobil sangat rapat dan
terdapat
bayangan yang menyatukan
seluruh kontur
menjadi satu
kontur yang sangat besar.
No Citra Uji Hasil Deteksi Keterangan
9
Terdapat 24
kontur yang
terdeteksi sebagai mobil,
dan 13 di
antaranya benar. Sisa
kontur
terbentuk akibat kontur
mobil yang
tidak menjadi
satu kesatuan melainkan
banyak kontur
yang berbeda.
10
16 mobil
terdeteksi. 14
di antaranya
terdeteksi dengan tepat,
dan dua
terdeteksi akibat
penyatuan
kontur.
5. Analisis
Berdasarkan hasil eksperimen, diperoleh hasil yang kurang begitu memuaskan. Mobil yang terdeteksi
sangatlah minim karena terdapat beberapa derau atau noise yang menyebabkan pendeteksian bentuk kendaraan menjadi tidak akurat, misalnya garis dari lahan parkir yang dapat berpotongan dengan bentuk
mobil sehingga kedua bentuk tersebut menjadi menyatu dan tidak terdeteksi sebagai mobil.
Diperoleh beberapa faktor yang dapat mempengaruhi akurasi dari deteksi bentuk kendaraan. Beberapa diantaranya adalah:
1. Waktu pengambilan gambar
2. Sudut pandang kamera 3. Kualitas gambar kamera
4. Warna mobil
5. Kerapatan mobil 6. Medan (terrain) lahan parkir
Beberapa faktor di atas tidak dapat diganggu karena penyedia lahan parkir tidak dapat mengatur faktor
tersebut (misalnya waktu pengambilan gambar dan warna mobil). Namun, terdapat beberapa workaround atau cara agar akurasi pendeteksian mobil meningkat. Setelah ditelaah, banyak masalah
yang muncul akibat terrain (medan) dari lahan parkir dan warna dari mobil yang parkir yang
menyebabkan deteksi tepi menjadi menyatu dan kacau. Salah satu caranya yaitu dengan menghapus citra latar belakang, yaitu tempat parkir itu sendiri.
Gambar 8. Citra sebelum dilakukan penghapusan latar belakang (kiri) dan sesudahnya (kanan)
Penghapusan latar belakang dilakukan guna mendeteksi mobil dengan lebih baik, karena dengan hilangnya medan yang muncul di citra tepi, akan lebih mudah untuk mendeteksi mobil yang terparkir,
karena pada citra itu, semua tepi yang terdeteksi pasti merupakan tepi dari mobil (dengan asumsi tidak
ada benda asing yang muncul di lahan parkir). Cara mengimplementasikan ini adalah dengan memotret
citra ketika lahan parkir sedang kosong, dan menyimpannya di memori. Ketika dilakukan pendeteksian tepi mobil, lakukan substraksi (atau pengurangan citra) dari citra hasil rekaman CCTV dengan citra
lahan kosong tadi. Akan diperoleh citra baru yang berisi mobil-mobil yang terparkir pada saat itu.
6. Referensi
Landasan Teori dan analisis pada makalah ini menggunakan referensi berikut ini:
[1] Bhaskar, P. K. & Yong, S. P. (2014), Image Processing Based Vehicle Detection and Tracking
Method. Diakses melalui https://www.researchgate.net/publication/271424684_Image_processing_based_vehicle_detecti
on_and_tracking_method
[2] Seth, S. (2015), An Image Processing Algorithm for Vehicle Detection and Tracking. National
Institute of Technology Rourkela.
Acknowledgement
Penulis mengucapkan terima kasih yang sebesar-besarnya kepada Tuhan YME karena berkat-Nya
penulis dapat menyelesaikan makalah ini dengan baik. Penulis juga berterima kasih kepada bapak
Rinaldi Munir selaku dosen pengajar mata kuliah IF4073 Pengolahan Citra yang telah memberikan
wawasan mengenai pengolahan citra. Penulis berterima kasih kepada kerabat dan keluarga yang telah mendukung keberjalanan studi penulis di ITB.