Traffic Light Signal Detector using Average Light Intensity Method
Benediktus Anindito1, Slamet Winardi2, Moh Noor Al Azam3,*
1 Fakultas Ilmu Komputer, Program Studi Sistem Informasi, Universitas Narotama, Surabaya, Indonesia
2 Fakultas Ilmu Komputer, Program Studi Sistem Komputer, Universitas Narotama, Surabaya, Indonesia
3 Fakultas Ilmu Komputer, Program Studi Teknik Informatika, Universitas Narotama, Surabaya, Indonesia Email: 1[email protected], 2[email protected] 3,*[email protected]
Email Penulis Korespondensi: [email protected]
Abstrak−Electronic Traffic Law Enforcement (ETLE) atau Penegakan Hukum Lalu Lintas berbasis Elektronik adalah suatu cara penggunaan teknologi informasi untuk mencatat suatu pelanggaran dalam berlalu lintas. ETLE ini dikembangkan untuk mendukung keamanan, ketertiban, dan keselamatan dalam berlalu lintas. Beberapa kota atau kabupaten di Indonesia sudah mulai memberlakukan ETLE ini pada beberapa lokasi, yang biasanya terdapat lampu pengatur lalu lintas dan sering terjadi pelanggaran pada lokasi tersebut. Dalam tulisan ini diujicoba salah satu elemen dalam ETLE, yaitu detektor isyarat lampu lalu lintas yang nantinya akan dijadikan sebagai dasar apakah sebuah kendaraan melanggar lampu lalu lintas atau tidak. Detektor ini menggunakan kamera CCTV yang terpasang di lokasi dan dilakukan analisa intensitas suatu area tepat pada lampu lalu lintas warna merah, kuning, dan hijau. Hasil pengujian, metode ini dapat menentukan kondisi lampu lalu lintas dengan ketepatan 100%.
Kata Kunci: Computer Vision, Python, OpenCV, ETLE, eTilang
Abstract−Electronic Traffic Law Enforcement (ETLE) is a way of using information technology to record a violation of traffic.
This ETLE was developed to support security, order, and safety in traffic. Some cities or districts in Indonesia have started to apply this ETLE in several locations, which usually have traffic lights and frequent violations at these locations. In this paper, one of the elements in ETLE is tested, which is a traffic light signal detector, which will be used as a basis for whether a vehicle violates a traffic light or not. This detector uses a CCTV camera mounted on the location. It then analyzed the intensity of several image areas on the traffic lights in red, yellow, and green. From the test results, this method can determine the conditions of the traffic lights with 100% accuracy.
Keywords: Computer Vision, Python, OpenCV, ETLE, eTilang
1. PENDAHULUAN
Menurut UU no. 22/2009 tentang lalu lintas dan angkutan jalan, bahwa kecelakaan lalu lintas adalah suatu peristiwa di jalan yang tidak diduga dan tidak disengaja melibatkan kendaraan dengan atau tanpa pengguna jalan lain yang mengakibatkan korban manusia dan/atau kerugian harta benda[1]. Oleh karenanya, jumlah kecelakaan lalu lintas adalah indikator utama tingkat keselamatan di jalan pada suatu wilayah.
Berdasarkan rilis resmi dari Kepolisian Republik Indonesia (Polri) dalam berita di kompas tanggal 28 Desember 2019, angka kecelakaan lalu lintas di Indonesia pada tahun 2019 meningkat sebesar 3% bila dibandingkan dengan tahun sebelumnya. Total kecelakaan lalu lintas pada tahun 2019 sebesar 107.500 kejadian, sementara pada tahun 2018 terjadi 103.672 kecelakaan[2].
Menurut Hobbs dalam penyebab kecelakaan lalu lintas dapat dikelompokkan menjadi tiga faktor utama penyebab, yaitu faktor manusia -faktor terjadinya kecelakaan disebabkan dari pengguna kendaraan, misalkan mengendarai dengan kecepatan tinggi, tidak tertib, melanggar rambu lalu lintas dan lain sebagainya. Faktor berikutnya adalah faktor kendaraan, yaitu faktor yang dapat dilihat dari kendaraan, misalkan ban meletus, rem blong, dan lain sebagainya. Dan faktor terakhir adalah faktor lingkungan fisik jalan, faktor ini berhubungan dengan kondisi fisik jalan tempat terjadinya kecelakaan, misalkan jalan rusak, berlubang, tergenang air, gelap, tanpa marka/rambu jalan, tikungan tajam, dan sebagainya[3].
Sementara dalam rilis resmi Polri di atas disebutkan, faktor penyebab meningkatnya kecelakaan pada tahun 2019, terbesar adalah karena kesalahan manusia[2], dan pelanggaran peraturan atau rambu-rambu lalu lintas adalah awal dari terjadinya kecelakaan dengan faktor manusia ini.
Ketidak disiplinan pengguna jalan ini sudah biasa terlihat dalam keseharian. Tidak disiplin ini berkaitan erat dengan pengawasan para penegak hukum atau dalam hal ini adalah polisi lalu lintas. Sudah menjadi rahasia umum bahwa saat ada polisi di jalanan atau saat ada operasi lalu lintas, pengguna jalan akan tertib mematuhi peraturan. Namun saat tidak ada polisi yang mengawasi, pengguna jalan cenderung akan kembali ke pada kebiasaan semula, yaitu melanggar peraturan[4].
Karena polisi tidak mungkin setiap saat mengawasi jalanan, maka peran Teknologi Informasi (TI) kemudian membantu pengawasan. Oleh karenanya kemudian dikenalkan Electronic Traffic Law Enforcement (ETLE) atau Penegakan Hukum Lalu Lintas berbasis Elektronik. ETLE ini dapat menggantikan peran polisi dalam melakukan pengawasan di jalanan. Jika ada pelanggaran, sistem ETLE akan memberikan informasi pada yang berwenang lengkap dengan bukti-bukti berupa foto dan/atau video saat pelanggaran terjadi.
Penelitian ini adalah satu bagian dari sistem ETLE. Penelitian ini berkonsentrasi pada pencarian bukti di lapangan, apakah lampu pengatur lalu lintas pada posisi isyarat lampu merah, lampu kuning, atau lampu hijau.
Dari kondisi lampu lalu lintas yang sedang terjadi ini, nantinya sistem akan menentukan apakah kendaraan yang tertangkap kamera melanggar isyarat lampu pengatur lalu lintas atau tidak.
2. METODE PENELITIAN
Agar penelitian ini bisa terarah dengan baik, peneliti menggunakan metode penelitian pengembangan aplikasi seperti pada gambar 1.
Penelitian akan diawali dengan studi literatur. Kegiatan ini untuk mengetahui beberapa hal yang diperlukan dalam penelitian ini, diantaranya bagaimana aplikasi bisa mengambil data gambar dari kamera, bagaimana memproses data tersebut sehingga dapat diketahui kondisi sinyal lampu lalu lintas, dan beberapa hal yang lain.
Setelah beberapa hal diketahui dari studi pustaka, maka akan dibuat sebuah purwarupa aplikasi untuk menguji informasi yang didapat apakah benar-benar dapat digunakan atau tidak. Pengujian purwarupa ini akan menggunakan data sekunder, yaitu gambar atau still image lampu pengatur lalulintas dalam berbagai kondisi, yang diambil dari kamera HP atau gambar yang didapat dari internet.
Jika pada purwarupa ini dapat menghasilkan informasi yang memadai, maka tahapan selanjutnya adalah mengembangkan sistem secara penuh. Sistem ini harus dapat mengambil gambar langsung dari kamera secara live dan saat itu juga dilakukan pemrosesan gambar hingga dapat diambil kesimpulan pada saat itu lampu pengatur lalu lintas dalam kondisi merah, kuning, atau hijau.
Pengembangan sistem ini dilanjutkan dengan pengujian di lapangan dengan menggunakan data live dari Closed Circuit Television (CCTV) yang didapatkan dari salah satu kabupaten di Jawa Timur.
Pada awal pengembangan, ditentukan terlebih dahulu kriteria yang diperlukan untuk sistem deteksi sinyal lampu pengatur lalu lintas, yaitu:
1. Data yang didapatkan dari CCTV harus berupa data live dan realtime, oleh karenanya diperlukan pengambilan data secara langsung dari CCTV.
2. Pengambilan video menggunakan protokol Real Time Streaming Protocol (RTSP)[5] dengan data dalam format H.264 sesuai dengan rekomendasi ITU[6].
3. Data yang didapat dari CCTV akan diproses di dalam server dengan lama proses secepat-cepatnya dan diusahakan tidak lebih dari 1 detik untuk mendapatkan kesimpulan data yang mendekati realtime di lapangan.
4. Hasil kesimpulan pemrosesan data adalah kondisi lampu yang menyala saat gambar diterima oleh sistem dan dilengkapi dengan timestamp saat gambar diterima oleh sistem.
5. Semua hasil akan disimpan di dalam server. Data kesimpulan disimpan dalam database agar mudah diakses oleh sub-sistem ETLE yang lain dan data gambar disimpan dalam bentuk file.
Hasil pengujian di lapangan akan memberikan gambaran apakah sistem deteksi sinyal lampu pengatur lalu lintas ini sudah memberikan informasi yang valid atau tidak. Jika dirasakan sistem belum memberikan hasil yang valid dengan data live di lapangan, maka pengembangan sistem akan terus dilanjutkan hingga sistem ini dinyatakan dapat diandalkan untuk mengetahui kondisi sinyal lampu pengatur lalu lintas di lapangan.
Era Internet of Things (IoT) saat ini telah merevolusi cara perangkat/benda berinteraksi antara satu dengan yang lainnya. Yang dahulu sebuah perangkat lebih banyak berinteraksi dengan manusia sebelum ke perangkat yang lain, maka dalam era IoT ini perangkat bisa berinteraksi dengan banyak perangkat lain tanpa melibatkan manusia sama sekali[7]. Pengembangan perangkat IoT dapat menggunakan banyak macam bahasa pemrograman.
Namun dengan menggunakan bahasa pemrograman Python, pengembang sistem IoT akan dapat lebih interaktif dan disain peralatan Machine-to-Machine (M2M) dengan lebih komprehensif. Melalui Python -dan modul-modul pendukungnya, aplikasi dapat berinteraksi dengan dunia, melalui sensor, kamera, media komunikasi, dan perangkat keras lainnya[8].
Gambar 1. Flowchart Penelitian
Salah satu bidang yang berkembang dalam IoT dewasa ini adalah computer vision. Tujuan utama dari computer vision adalah untuk memahami sesuatu yang terjadi dalam sebuah gambar atau image[9]. Sebagai manusia, hal ini sebenarnya cukup sederhana. Tetapi untuk komputer, tugasnya menjadi sangat sulit. Jadi mengapa repot-repot menggunakan computer vision? Karena, image ada di mana-mana! Dan secara alamiah, sebenarnya kita mengenal sesuatu juga berdasarkan pada image yang diterima oleh mata dan disimpulkan oleh otak kita.
Dalam penelitian pengenalan sinyal lampu pengatur lalu lintas ini, juga akan diterapkan sebuah computer vision dalam dalam aplikasi yang mengambil image dari kamera pengawasan atau surveilance. Kamera pengawasan ini sudah tersedia, dan aplikasi penelitian ini akan mengenali kondisi sinyal lampu pengatur lalu lintas, apakah sedang dalam berwarna merah, kuning, atau hijau. Dan seperti telah dijelaskan sebelumnya, aplikasi ini akan menggunakan bahasa pemrograman Python 3 dan modul OpenCV.
2.1 Real Time Streaming Protocol (RTSP)
RTSP adalah protokol komunikasi yang mengendalikan aliran media kontinu yang disinkronkan (synchronized streaming media) seperti audio dan video atau yang lebih dikenal dengan konten multimedia, pada seluruh jaringan berbasis IP.
Session RTSP sama sekali tidak terikat dengan koneksi level transportasi seperti Transmission Control Protocol (TCP) atau User Data Protocol (UDP). Selama session RTSP dengan TCP, klien RTSP dapat membuka dan menutup banyak koneksi transportasi ke server untuk mengeluarkan permintaan RTSP. Namun RTSP juga memungkinkan penggunaan protokol transport tanpa koneksi seperti UDP.
Streaming yang dikendalikan oleh RTSP dapat menggunakan Real Time Protocol (RTP)[10], tetapi pengoperasian RTSP tidak tergantung pada mekanisme transportasi yang digunakan untuk membawa streaming media. Protokol RTSP sengaja dibuat mirip dalam sintaks dan operasi dengan Hypertext Transfer Protocol (HTTP), oleh karenanya mekanisme ekstensi ke HTTP dapat ditambahkan ke RTSP dalam banyak kasus[5].
Namun tetap saja RTSP berbeda dalam sejumlah aspek penting dari HTTP[5]:
a. RTSP memiliki sejumlah method baru dan menggunakan identifikasi protokol yang berbeda.
b. Server RTSP perlu mempertahankan status secara default pada beberapa kasus, berbeda dengan HTTP yang selalu bersifat stateless.
c. Baik server maupun klien dalam protokol RTSP dapat mengeluarkan permintaan.
d. RTSP didefinisikan dalam ISO 10646 (UTF-8).
2.2 Real Time Protocol (RTP)
RTP adalah protokol yang digunakan untuk transportasi dan pengiriman data audio/video secara realtime[11].
Karena pengiriman data secara realtime untuk audio dan video biasanya sensitif terhadap delay, maka penggunaan protokol UDP -yang lebih ringan digunakan, lebih banyak dipakai dalam pengiriman pada Layer 4. Alur RTP pada saat mengirimkan konten adalah searah dari server ke klien.
Salah satu bagian yang menarik dari operasi RTP adalah bahwa port sumber yang digunakan oleh server saat mengirim data UDP selalu genap -walaupun ditetapkan secara dinamis. Port tujuan (mis., Port UDP tempat klien mendengarkan) dipilih oleh klien dan dikomunikasikan melalui koneksi kontrol RTSP.
2.3 Real Time Control Protocol (RTCP)
RTCP adalah protokol pelengkap untuk RTP dan merupakan mekanisme berbasis UDP dua arah yang memungkinkan klien melakukan komunikasi informasi kualitas aliran ke server yang melayaninya[12].
Komunikasi RTCP UDP selalu menggunakan port sumber UDP satu angka lebih tinggi dari yang digunakan oleh aliran RTP yang berkorelasi dengannya. Gambar 2 menunjukkan bagaimana protokol-protokol RTSP, RTP, dan RTCP bekerja bersama.
Gambar 2. hubungan RTSP, RTP, dan RTCP
2.4 ITU-T H.264 dan Gambar Digital
H.264 adalah standar kompresi video untuk video digital definisi tinggi. H.264 juga dikenal sebagai MPEG-4 part 10 Advanced Video Coding (MPEG-4 AVC). Standar kompresi video H.264 menggunakan basis-blok, sehingga kompensasi yang mendefinisikan berupa beberapa profil (alat) dan level (bitrate dan resolusi maksimal)[6]. Format ini dapat mendukung 4K dan hingga 8K Ultra High-Definition (UHD).
Codec yang didasarkan pada standar H.264 memampatkan data video digital (atau streaming) sehingga hanya membutuhkan setengah dari ruang penyimpanan -atau kalau dikirimkan melalui jaringan dapat berupa bandwidth jaringan, dari standar MPEG-2. Melalui pemampatan ini, codec mampu mempertahankan kualitas video yang sama meskipun hanya menggunakan setengah dari ruang penyimpanan.
H.264 juga cukup fleksibel untuk diterapkan pada berbagai aplikasi, jaringan, dan sistem, termasuk yang dengan bit rate rendah dan tinggi, video resolusi rendah, broadcast, penyimpanan, jaringan berbasis IP, jaringan dengan banyak jenis media, seperti internet, MPLS, satelit, kabel, dan juga sistem telepon multimedia[10].
Protokol ini sudah diadopsi secara luas dalam berbagai macam perangkat -mulai dari decoder profesional, hingga browser dan perangkat mobile.
Metode pengiriman dan pemampatan gambar di atas, pada akhirnya akan diterima oleh aplikasi sebagai sebuah rentetan kode-kode warna dasar sebuah gambar -biru (B), merah (R), dan hijau (G). kode-kode ini memiliki nilai 0 -untuk menandakan tidak ada warna tersebut sama sekali, sampai dengan 255 -yang menandakan intensitas maksimal pada warna tersebut[13]. Semakin terang warna dasar itu, maka semakin besar intensitas warna cahayanya[14]. Warna-warna itulah yang kemudian direpresentasikan oleh sistem operasi dan ditampilkan sebagai gambar yang dapat kita lihat secara visual di layar komputer.
Oleh karenanya, analisa yang dilakukan dalam penelitian ini adalah mencari nilai intensitas cahaya pada sebuah lokasi, yaitu dengan membaca nilai pixel-nya. Semakin tinggi nilainya, maka bisa disimpulkan bahwa intensitas cahaya pada koordinat tersebut semakin terang dan nilai yang paling terang dari tiga koordinat yang dianalisa (lampu warna merah, kuning, dan hijau) menandakan lampu tersebut dalam kondisi yang menyala[15].
Dalam penelitian ini, yang dilakukan adalah akses ke kamera menggunakan protokol RTSP, memproses gambar, dan kemudian menyimpulkan kondisi gambar tersebut, dengan digunakan bahasa pemrograman Python 3 dan dengan bantuan modul OpenCV[16]. OpenCV adalah modul pemrosesan gambar dan video yang digunakan untuk semua jenis analisis gambar dan video[17]. Selain modul dalam pemrosesan gambar dan video, OpenCV juga dilengkapi kemampuan untuk mengambil dan mengirimkan gambar dan video, baik dari file maupun secara langsung berkoneksi jaringan melalui beberapa protokol -salah satunya dengan menggunakan protokol RTSP[18].
3. HASIL DAN PEMBAHASAN
Sistem deteksi sinyal lampu pengatur lalu lintas ini mengikuti urutan logis seperti pada gambar 3.
Pada gambar 3 dapat dilihat, saat pertamakali dijalankan aplikasi pendeteksi sinyal lampu pengatur lalu lintas akan membaca setting yang berisi koordinat lokasi lampu merah, kuning, dan hijau dalam gambar dan standar luasan area yang akan dilakukan analisa.
Koneksi dari aplikasi ke kamera digunakan protokol komunikasi RTSP. Pada saat koneksi RTSP berhasil dilakukan oleh aplikasi ke kamera, maka aplikasi akan request ke kamera satu buah frame gambar. Namun bila
Gambar 3. Flowchart Program
koneksi RTSP ke kamera tidak berhasil, maka aplikasi akan menulis error message -untuk mengetahui status ketidak-berhasilan tersebut, dan berhenti.
Jika aplikasi sudah mendapatkan satu frame gambar, aplikasi akan menganalisa dengan menggunakan metode pembandingan intensitas cahaya pada masing-masing lampu (merah, kuning, dan hijau) berdasarkan value pixel yang ada di dalam gambar. Seperti diketahui, warna pixel di dalam sebuah gambar dihasilkan dari perpaduan tiga warna dasar (BRG) . Oleh karenanya, semakin besar nilai pixel tersebut artinya semakin tinggi intensitas cahaya yang diterima oleh kamera pada titik pixel tersebut. Dan karena sebuah lampu lalu lintas di dalam gambar tidak berupa satu pixel, maka dilakukan proses rata-rata pada area yang sudah ditentukan.
Cara yang dilakukan untuk mendapatkan kesimpulan intensitas lampu mana yang lebih terang, adalah dengan membaca semua nilai pixel dalam luasan area koordinat yang sudah ditentukan. Nilai yang dibaca adalah semua warna dasar -BRG. Nilai semua pixel dan semua warna dasar itu, kemudian dihitung berdasarkan rumus 1.
𝑣𝑃 = 1
𝑛∑𝑛−1𝑖=0𝑣𝑅𝑖 + 𝑣𝐺𝑖 + 𝑣𝐵𝑖 (1) 𝑣𝑃 adalah hasil nilai pixel dalam luasan koordinat yang dianalisa. 𝑣𝑅𝑖 adalah nilai pixel warna merah, 𝑣𝐺𝑖 adalah nilai pixel warna hijau, dan 𝑣𝐵𝑖 adalah nilai pixel warna biru. Iterasi ini dilakukan mulai pixel ke-0 sampai dengan pixel ke 𝑛 − 1, sesuai dengan luasan yang dianalisa. Perhitungan ini, akan didapatkan nilai hasil sebesar 0 sampai dengan 255.
Setelah didapatkan ketiga nilai pixel masing-masing lampu lalu lintas tersebut, maka analisa terakhir adalah membandingkan ketiganya. Nilai terbesar adalah lampu yang menyala saat gambar itu diambil, dan hasil itu disimpan dalam sebuah table dalam database lengkap dengan timestamp-nya.
Aplikasi ini kemudian akan kembali ke awal untuk melakukan koneksi RTSP ke kamera dan mengulangi untuk kondisi lampu lalu lintas pada waktu yang berbeda.
4.1 Inisialisasi
Aplikasi ini diawali dengan definisi konstanta yang akan digunakan dalam analisa. Karena setiap kamera akan memiliki koordinat lokasi lampu pengatur lalu lintas di dalam gambar yang berbeda, maka kamera akan dikodekan dalam sebuah kode unik dan informasi koordinat yang akan dianalisa disimpan dalam table tersebut.
Pada penelitian ini digunakan MySQL sebagai database server sehingga koneksi dan query informasi yang diperlukan dalam pengambilan koordinat lampu lalu lintas yang akan dianalisa seperti pada gambar 4.
Return value dari fungsi initProgram ini adalah sebuah array yang diperlukan untuk melakukan akses RTSP ke kamera (IP Address, username, dan password) serta koordinat (y, x) pada still-image yang ditangkap dari kamera untuk masing-masing lampu merah, kuning, dan hijau.
4.2 Koneksi Kamera dan Pengambilan Image
Setelah mendapatkan data-data yang diperlukan untuk mengambil gambar dan lokasi tempat perhitungan intensitas (𝑣𝑃), maka bisa dimulai proses pengambilan gambar. Proses pertama kali adalah melakukan koneksi ke kamera dengan menggunakan IP Address yang sudah didapatkan dalam persiapan sebelumnya. Koneksi ini menggunakan
def initProgram(cameraCode):
mydb = mysql.connector.connect(
host="localhost", user="MySQL_user", passwd="MySQL_password", database="trafficlightStatus"
)
query = mydb.cursor()
sql = "SELECT * FROM camera WHERE status = 1 AND id LIKE '" + str(cameraCode) + "'"
query.execute(sql) row = query.fetchone() mydb.shutdown() if row:
return(row[1], row[2], row[3], row[7], row[8], row[9], row[10], row[11], row[12], row[13]) else:
return(None)
Gambar 4. Fungsi Pengambilan Koordinat Lampu Pengatur Lalu Lintas
protokol RTSP dengan menyertakan username dan password yang juga sudah didapatkan pada tahap persiapan (gambar 5).
Hasil dari fungsi ini adalah sebuah frame image yang nantinya akan diproses dengan fungsi pengecekan intensitas masing-masing warna lampu pengatur lalu lintas.
4.3 Pengecekan Intensitas (𝒗𝑷)
Fungsi terakhir yang kita perlukan adalah fungsi untuk menghitung rata-rata intensitas cahaya dalam gambar.
Perhitungan ini kita lakukan langsung dari frame image yang didapatkan dari fungsi getFrameImage dan berdasarkan koordinat-koordinat lampu lalu lintas yang sudah didefinisikan pada fungsi initProgram.
Cara mencari intensitas adalah dengan mengambil nilai dari pixel pada koordinat tertentu lampu merah, kuning, dan hijau. Nilai pixel tersebut disimpan dalam sebuah array yang nanti dengan class array tersebut kita gunakan rata-ratanya (gambar 6).
Return value dari fungsi ini adalah sebuah array yang berisi nilai rata-rata intensitas pada koordinat lampu merah, lampu kuning dan lampu hijau. Nilai rata-rata intensitas tertinggi dari ketiga koordinat tersebut adalah lampu yang sedang menyala pada saat itu.
Dengan penggunaan koordinat dan area untuk menghitung rata-rata nilai intensitas sebuah lampu, sangat bergantung dengan koordinat yang dipilih dan area yang ditentukan. Koordinat haruslah benar-benar tepat ada di dalam sebuah lampu lalu lintas dan area yang ditentukan juga harus tepat berada di dalam area lampu tersebut.
Pemilihan yang salah akan menyebabkan bias pada hasil perhitungannya, yang akan mempengaruhi hasil kesimpulan akhir (gambar 7).
Seperti pada contoh gambar 7, pemilihan koordinat dan area tepat pada masing-masing lampu lalu lintas.
Pemilihan ini sangat tergantung pada posisi dan arah kamera, serta posisi lampu lalu lintas itu sendiri. Koordinat dan area ini juga perlu dilakukan pengecekan secara rutin, karena tidak menutup kemungkinan terjadi pergeseran arah kamera sehingga terjadi pergeseran koordinat lampu lalu lintas pada arah yang baru.
def getFrameImage(ip, user, password):
ptzCamera = "rtsp://" + user + ":" + password + "@" + ip + "/sub";
vcap = cv2.VideoCapture(ptzCamera) ret, frame = vcap.read()
if ret:
return frame else:
return null
Gambar 5. Fungsi Pengambilan Image melalui Koneksi RTSP
def lightValue(redPosition,yellowPosition,greenPosition,area,image):
red = []
for x in range(redPosition[0],redPosition[0]+area):
for y in range(redPosition[1],redPosition[1]+area):
pix = image[y,x]
red.append(sum(image[y,x])) yellow = []
for x in range(yellowPosition[0],yellowPosition[0]+area):
for y in range(yellowPosition[1],yellowPosition[1]+area):
pix = image[y,x]
yellow.append(sum(image[y,x])) green = []
for x in range(greenPosition[0],greenPosition[0]+area):
for y in range(greenPosition[1],greenPosition[1]+area):
pix = image[y,x]
green.append(sum(image[y,x])) return (mean(red), mean(yellow), mean(green))
Gambar 6. Fungsi Perhitungan Rata-rata Intensitas Cahaya (𝒗𝑷)
Gambar 7. Pemilihan Koordinat dan Area harus tepat
4.4 Hasil
Hasil percobaan pada beberapa kondisi lampu lalu lintas, dapat dilihat pada gambar 8.
Pada gambar 8-A, perhitungan nilai rata-rata intensitas cahaya pada koordinat lampu merah adalah 493,4 yang merupakan nilai tertinggi dari koordinat lampu kuning (188,2) dan lampu hijau (180,81). Sedangkan pada gambar 8-C perhitungan nilai rata-rata intensitas cahaya pada koordinat lampu hijau adalah 443,5 yang merupakan nilai tertinggi dari koordinat lampu kuning (193,8) dan lampu merah (130,5). Dan terakhir pada saat lampu kuning dalam kondisi menyala atau pada gambar 8-B, perhitungan nilai rata-rata intensitas cahaya pada koordinat lampu kuning adalah 373,9 yang merupakan nilai tertinggi dari koordinat lampu merah (127,4) dan lampu hijau (163,6).
Selain membandingkan nilai intensitas (𝒗𝑷) lampu sebagai dasar untuk menentukan lampu mana yang sedang menyala, pada penelitian ini juga menemukan adanya Δ𝑃 atau selisih antara 𝒗𝑷 lampu yang sedang menyala dengan rata-rata 𝒗𝑷 dua lampu lainnya yang perhitungannya ditentukan mengikuti rumus (2)
Δ𝑃1 = 𝑣𝑃1− 1
2(𝑣𝑃2+ 𝑣𝑃3) (2)
𝑣𝑃1 adalah nilai intensitas lampu yang sedang dalam kondisi menyala, sedangkan 𝑣𝑃2 dan 𝑣𝑃3 adalah 2 lampu lainnya yang sedang dalam kondisi tidak menyala.
Dalam percobaan di atas, perhitungan 𝑣𝑃𝑖 dan Δ𝑃𝑖 masing-masing lampu lalu lintas dapat dilihat pada tabel 1 berikut ini:
Manfaat dari perhitungan Δ𝑃 ini adalah untuk mengecek kebenaran kesimpulan bahwa sebuah lampu lalu lintas sedang dalam kondisi menyala dan dua lampu lainnya tidak. Semakin kecil nilai Δ𝑃 maka semakin besar kemungkinan adanya false negative atau ada kemungkinan aplikasi kita membuat kesimpulan yang salah
Δ𝑃 ini akan sangat dipengaruhi oleh kondisi sinar sekitar lampu lalu lintas. Pada saat siang hari dan posisi lampu lalu lintas melawan arah matahari, maka mata manusia atau kamera akan terdistorsi sehingga perbedaan intensitas cahaya antara lampu yang sedang menyala dan yang sedang padam tidak terlalu signifikan. Begitu juga saat malam namun di sekitar lampu lalu lintas terdapat lampu penerangan jalan yang sangat terang dan mempengaruhi penangkapan sinar oleh kamera.
Berdasarkan dari pengamatan pada kondisi salah satu lampu lalu lintas dalam waktu yang lebih lama, kita mendapatkan kesimpulan bahwa Δ𝑃 selalu berada di atas 200 dan hasil kesimpulan sistem adalah benar (tabel 2).
Tabel 2. Perhitungan 𝒗𝑷𝒊 dan 𝚫𝑷𝒊 pada Pengamatan Lapangan Jam
Pengamatan
Merah Kuning Hijau
𝒗𝑷 𝚫𝑷 𝒗𝑷 𝚫𝑷 𝒗𝑷 𝚫𝑷
06:01 – 08:00 453,4 319,3 363,9 300,3 403,9 302,9 08:01 – 10:00 461,9 306,8 369,4 253,6 429,6 280.1
(A) (B) (C)
Gambar 8. Hasil Perhitungan dalam Berbagai Kondisi Lampu Lalu Lintas
Tabel 1. Nilai 𝒗𝑷𝒊 dan 𝚫𝑷𝒊 Masing-masing Lampu Lalu Lintas
Lampu Menyala
𝒗𝑷 𝚫𝑷
Merah 493,4 308,9
Kuning 373,9 228,3
Hijau 443,5 281,3
Dari pengamatan ini terlihat adanya perbedaan nilai 𝑣𝑃𝑖 dan Δ𝑃𝑖 pada waktu-waktu yang berbeda.
Perbedaan ini terjadi karena nilai intensitas cahaya tergantung pada lingkungan cahaya pada saat frame image diambil oleh kamera.
4. KESIMPULAN
Computer Vision sebagai salah satu cabang ilmu dalam komputasi, memungkinkan kita melakukan proses pada sebuah gambar dan mengambilan kesimpulan seperti penglihatan mata manusia. Pengaplikasian dalam penelitian ini adalah untuk mencari kondisi lampu lalu lintas sedang dalam posisi hijau, kuning, atau merah. Cara yang dilakukan pada penelitian ini adalah dengan mengukur nilai intensitas cahaya (𝑣𝑃) masing-masing lampu dan membandingkannya. Lampu yang memiliki nilai 𝑣𝑃 tertinggi adalah lampu yang sedang menyala. Pada penelitian ini juga diusulkan adanya perhitungan referensi lain untuk menunjang kesimpulan yang benar, yaitu dengan menghitung Δ𝑃atau selisih antara 𝑣𝑃 lampu yang sedang menyala dengan rata-rata 𝑣𝑃 lampu yang sedang tidak menyala. Semakin besar nilai Δ𝑃 berarti semakin besar perbedaan intensitas sebuah lampu yang sedang menyala dengan lampu-lampu lainnya. Pada percobaan yang dilakukan, lampu yang sedang menyala memiliki nilai Δ𝑃 lebih dari 200. Nilai Δ𝑃 ini belumlah nilai baku yang harus dicapai, dan untuk itu diperlukan penelitian lebih lanjut untuk mengetahui kondisi nyata di lapangan dan nilai Δ𝑃 terendah yang memungkinkan mata manusia dapat melihat perbedaan lampu lalu lintas yang sedang menyala dan tidak.
REFERENCES
[1] “Undang-Undang Republik Indonesia nomor 22 tahun 2009 tentang Lalu Lintas dan Angkutan Jalan.” Republik Indonesia, Jun. 22, 2009, Accessed: Mar. 10, 2020. [Online]. Available: https://pih.kemlu.go.id/files/uu_no_22_tahun_2009.pdf.
[2] Ardito Ramadhan, “Polri Sebut Jumlah Kecelakaan Lalu Lintas Meningkat pada 2019,” Kompas Cyber Media, Dec. 28, 2019.
[3] Muhammad Azizirrahman, Ellyn Normelani, and Deasy Arisanty, “Faktor Penyebab Terjadinya Kecelakaan Lalu Lintas pada Daerah Rawan Kecelakaan di Kecamatan Banjarmasin Tengah Kota Banjarmasin,” JPG, vol. 2, no. 3, pp. 20–37, May 2015, [Online]. Available:
https://ppjp.ulm.ac.id/journal/index.php/jpg/article/view/1421/1224.
[4] E. Purwaningsih, “Analisis Kecelakaan Berlalu Lintas di Kota Jakarta dengan Menggunakan Metode K-Means,” JITK (Jurnal Ilmu Pengetahuan dan Teknologi Komputer), vol. 5, no. 1, pp. 139–144, Aug. 2019, doi: 10.33480/jitk.v5i1.712.
[5] H. Schulzrinne, A. Rao, and R. Lanphier, “Real Time Streaming Protocol (RTSP),” RFC Editor, RFC2326, Apr. 1998. doi:
10.17487/rfc2326.
[6] ITU-T, “ITU-T Recommendation H.264: Advanced video coding for generic audiovisual services.” International Telecommunication Union (ITU), Nov. 22, 2007, Accessed: Mar. 11, 2020. [Online]. Available: http://handle.itu.int/11.1002/1000/9226.
[7] M. N. Al-Azam, D. Rizaludin, Y. S. Raharjo, and A. Nugroho, “Message Queuing Telemetry Transport dalam Internet of Things menggunakan ESP-32,” JURNAL MEDIA INFORMATIKA BUDIDARMA, vol. 3, no. 3, p. 159, Jul. 2019, doi: 10.30865/mib.v3i3.1160.
[8] G. C. Hillar, Internet of Things with Python: Interact with the world and rapidly prototype IoT applications using Python. Birmingham Mumbai: Packt Publishing Limited, 2016.
[9] Adrian Rosebrock, Practical Python and OpenCV: An Introductory, Example Driven Guide to Image Processing and Computer Vision, 4th ed. Baltimore, MD: PyImageSearch.com, 2019.
[10] G. Cattaneo, A. Bruno, and F. Petagna, “H-264/RTSP Multicast Stream Integrity,” in Image Analysis and Processing - ICIAP 2017, vol.
10485, S. Battiato, G. Gallo, R. Schettini, and F. Stanco, Eds. Cham: Springer International Publishing, 2017, pp. 558–568.
[11] Audio-Video Transport Working Group, H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson, “RTP: A Transport Protocol for Real- Time Applications,” RFC Editor, RFC1889, Jan. 1996. doi: 10.17487/rfc1889.
[12] S. Casner, “Session Description Protocol (SDP) Bandwidth Modifiers for RTP Control Protocol (RTCP) Bandwidth,” RFC Editor, RFC3556, Jul. 2003. doi: 10.17487/rfc3556.
[13] A. G. Sooai, A. Nugroho, M. N. A. Azam, S. Sumpeno, and M. H. Purnomo, “Virtual artifact: Enhancing muse um exhibit using 3D virtual reality,” Dec. 2017, pp. 1–5, doi: 10.23919/TRONSHOW.2017.8275078.
[14] B. Anindito, A. G. Sooai, M. M. Achlaq, M. N. Al-Azam, A. Winaya, and M. Maftuchah, “Indoor Agriculture: Measurement of The Intensity of LED for Optimum Photosynthetic Recovery,” in 2018 5th International Conference on Electrical Engineering, Computer Science and Informatics (EECSI), Malang, Indonesia, Oct. 2018, pp. 356–361, doi: 10.1109/EECSI.2018.8752827.
[15] Adrian Rosebrock, PhD, Dave Hoffman, MSc, David McDuffee, Abhishek Thanki, and Sayak Paul, Raspberry Pi for Computer Vision:
Hacker Bundle - v1.0.1. Baltimore, MD: PyImageSearch.com, 2019.
[16] Adrian Rosebrock, PhD, Dave Hoffman, MSc, David McDuffee, Abhishek Thanki, and Sayak Paul, Raspberry Pi for Computer Vision:
Hobbyist Bundle - v1.0.1. Baltimore, MD: PyImageSearch.com, 2019.
[17] R. Laganière, OpenCV computer vision application programming cookbook: over 50 recipes to help build computer vision applications in C++ using the OpenCV library, 2. ed. Birmingham: Packt Publ, 2014.
[18] G. R. Bradski and A. Kaehler, Learning OpenCV: computer vision with the OpenCV library, 1. ed., [Nachdr.]. Beijing: O’Reilly, 2011.
10:01 – 12:00 493,4 308,9 373,9 228,3 443,5 281,3 12:01 – 14:00 499,1 289.4 389,1 210,7 452,7 260,1 14:01 – 16:00 480,5 310,4 380,4 289,7 450,5 290,7 16:01 – 18:00 465,0 324,5 371,8 301,2 448,1 300,1 18:01 – 20:00 455,8 388,6 361,7 359,5 450,9 375,7 20:01 – 22:00 460,1 385,1 369,3 350,8 455,8 370,2