RANCANG BANGUN PENDETEKSI TEMPAT
PARKIR KOSONG BERBASIS CITRA DIGITAL
TUGAS AKHIR
Nama : Achmad Yusuf Zunaidi
NIM : 08.41020.0084
Program : S1 (Strata Satu)
Jurusan : Sistem Komputer
SEKOLAH TINGGI
MANAJEMEN INFORMATIKA & TEKNIK KOMPUTER
SURABAYA
xvi
Luas lahan parkir dan banyaknya mobil di tempat parkir dapat menjadi
kendala bagi orang yang hendak parkir untuk mengetahui tempat parkir di bagian
mana yang masih kosong, sehingga mengharuskan orang untuk mengelilingi lahan
parkir untuk mencari tempat yang kosong.
Pada saat ini tempat parkir dilengkapi dengan kamera CCTV yang berguna
hanya untuk memantau keadaan parkir. Citra yang dihasilkan CCTV sebenarnya
dapat dimanfaatkan dengan mengolahnya untuk dapat mendeteksi tempat parkir
yang kosong dan hasilnya diinformasikan ke orang yang hendak parkir.
Pada Tugas Akhir ini akan dirancang sebuah sistem yang dapat mendeteksi
serta menginformasikan tempat parkir kosong menggunakan sistem yang terdiri
dari 3 bagian utama yaitu kamera, komputer, dan display.
Dengan adanya sistem pendeteksi tempat parkir yang kosong tersebut maka
orang yang hendak parkir ( mobil ) tidak perlu lagi berkeliling lahan parkir untuk
mendapatkan tempat parkir melainkan dapat langsung menuju ke salah satu
tempat parkir yang kosong sesuai pada list tempat parkir kosong pada display.
Pada sistem ini menggunakan metode Background Subtraction dan
menghasilkan 150 data yang benar dari 150 kali percobaan dengan batas minimal
presentase pixel putih sebesar 35% yang didapatkan dari beberapa pengujian
(pengujian untuk mendapatkan hasil yang akurat).
viii
DAFTAR ISI
HALAMAN JUDUL ... i
HALAMAN MOTTO ... iii
HALAMAN PERSEMBAHAN ... iv
HALAMAN PENGESAHAN ... v
HALAMAN PERNYATAAN ... vi
KATA PENGANTAR ... vii
DAFTAR ISI ... viii
DAFTAR TABEL ... xiii
DAFTAR GAMBAR ... xiv
ABSTRAK ... xvi
BAB I PENDAHULUAN ... 1
1.1. Latar Belakang Masalah ... 1
1.2. Perumusan Masalah ... 2
1.3. Pembatasan Masalah ... 2
1.4. Tujuan ... 2
1.5. Kontribusi ... 3
1.6. Sistematika Penulisan ... 3
BAB II LANDASAN TEORI ... 5
2.1. Webcam ... 5
2.2. Citra Digital ... 6
2.3. Pengolahan Citra Digital ... 7
2.3.2. Thresholding ... 11
2.3.3. Background Subtraction... 12
2.4. Color Space ... 13
2.4.1. RGB ... 13
2.5. Computer Vision ... 15
2.6. OpenCV ... 16
BAB III METODE PENELITIAN ... 18
3.1. Perancangan Sistem dan Blok Diagram Sistem ... 18
3.2. Perancangan perangkat keras ... 20
3.3. Perancangan perangkat lunak ... 22
3.4. Pengambilan Citra Sampel ... 24
3.5. Penerimaan Data Citra ... 25
3.6. Streaming Citra ... 25
3.7. Proses Update Citra Kondisi Parkir ... 26
3.8. Pengolahan Citra... 27
3.8.1. Menentukan Koordinat Area ... 29
3.8.2. Akses Pixel ... 29
3.8.3. Background Subtraction ... 31
3.8.4. Grayscaling ... 35
3.8.5. Thresholding ... 36
3.9. Penghitungan Pixel Putih (Counting White Pixel) ... 37
3.10. Identifikasi Benda ... 40
x
BAB IV PENGUJIAN DAN EVALUASI SISTEM ... 43
4.1. Pengujian Streaming Citra Melalui Webcam ... 46
4.1.1. Tujuan ... 46
4.1.2. Alat yang Digunakan ... 47
4.1.3. Prosedur Pengujian ... 47
4.1.4. Hasil Pengujian ... 47
4.2. Pengujian Update Citra Kondisi Parkir ... 48
4.2.1. Tujuan ... 48
4.2.2. Alat yang digunakan ... 48
4.2.3. Prosedur Pengujian ... 48
4.2.4. Hasil Pengujian ... 49
4.3. Pengujian Penentuan Koordinat Pada Tiap Area ... 50
4.3.1. Tujuan ... 50
4.3.2. Alat yang Digunakan ... 51
4.3.3. Prosedur Pengujian ... 51
4.3.4. Hasil Pengujian ... 51
4.4. Pengujian Akses Pixel ... 52
4.4.1. Tujuan ... 53
4.4.2. Alat yang Digunakan ... 53
4.4.3. Prosedur Pengujian ... 53
4.4.4. Hasil Pengujian ... 54
4.5. Pengujian Background Subtraction ... 55
4.5.1. Tujuan ... 55
4.5.3. Prosedur Pengujian ... 56
4.5.4. Hasil Pengujian ... 56
4.6. Pengujian Thresholding ... 59
4.6.1. Tujuan ... 59
4.6.2. Alat yang Digunakan... 59
4.6.3. Prosedur Pengujian ... 59
4.6.4. Hasil Pengujian ... 60
4.7. Pengujian Penghitungan Pixel... 61
4.7.1. Tujuan ... 61
4.7.2. Alat yang Digunakan... 61
4.7.3. Prosedur Pengujian ... 62
4.7.4. Hasil Pengujian ... 62
4.8. Pengujian Identifikasi Benda ... 63
4.8.1. Tujuan ... 63
4.8.2. Alat yang Digunakan... 64
4.8.3. Prosedur Pengujian ... 64
4.8.4. Hasil Pengujian ... 64
4.9. Evaluasi Sistem Secara Keseluruhan ... 70
4.9.1. Tujuan ... 71
4.9.2. Alat yang Digunakan... 71
4.9.3. Prosedur Pengujian ... 71
xii
BAB V PENUTUP ... 82
5.1. Kesimpulan ... 82
5.2. Saran ... 83
DAFTAR PUSTAKA ... 84
LAMPIRAN ... 86
1 BAB I PENDAHULUAN
1.1. Latar Belakang Masalah
Tempat parkir merupakan salah satu sarana penting pada suatu pusat
perbelanjaan, perkantoran, dan lain-lain. Luasnya lahan parkir dan banyaknya
mobil di tempat parkir tersebut dapat menjadi kendala bagi pengendara mobil
untuk mengetahui lahan parkir di bagian mana yang masih kosong, sehingga
mengharuskan para pengendara mengelilingi lahan parkir untuk mencari tempat
yang kosong.
Pada saat ini tempat parkir dilengkapi dengan kamera CCTV yang berguna
hanya untuk memantau keadaan parkir tersebut. Dari citra yang dihasilkan oleh
CCTV dapat diproses lebih lanjut menjadi sistem yang dapat mendeteksi serta
menginformasikan tempat parkir yang kosong kepada para pengendara dengan
metode pengolahan citra.
Pada Tugas Akhir ini akan dirancang sebuah sistem yang dapat mendeteksi
serta menginformasikan tempat parkir kosong menggunakan sistem yang terdiri
dari 3 bagian utama yaitu kamera, komputer, dan display. Kamera diletakkan pada
posisi dan sudut tertentu untuk proses pengambilan gambar situasi blok parkir.
Komputer digunakan untuk mengolah citra yang diterima dari kamera menjadi
informasi tempat kosong. Hasil proses pendeteksian akan
ditampilkan/diinformasikan kepada pengendara melalui display dalam bentuk
2
1.2. Perumusan Masalah
Dari latar belakang yang telah diuraikan, dapat dirumuskan permasalahan
sebagai berikut:
1. Bagaimana membuat sistem untuk mendeteksi lokasi parkir yang kosong dari
citra lokasi parkir yang diambil menggunakan kamera.
2. Bagaimana mengaplikasikan metode Background Subtraction untuk
menentukan lokasi parkir yang kosong.
1.3. Pembatasan Masalah
Dalam perancangan dan pembuatan perangkat terdapat beberapa
pembatasan masalah sebagai berikut:
1. Uji coba sistem ini dilakukan pada miniatur.
2. Kamera yang digunakan adalah webcam.
3. Miniatur didesain seperti salah satu lantai tempat parkir mobil di Tunjungan
Plaza Surabaya.
4. Lokasi parkir yang dideteksi mencakup untuk 3 mobil tiap gambar.
5. Informasi lahan parkir akan diperbarui secara berkala.
1.4. Tujuan
Tujuan dari perancangan dan pembuatan sistem ini adalah sebagai berikut:
1. Membuat sistem yang mampu mendeteksi lokasi parkir yang kosong dari citra
lokasi parkir menggunakan kamera.
2. Mengaplikasikan metode Background Subtraction untuk mengetahui suatu
1.5. Kontribusi
Kontribusi tugas akhir ini adalah apabila sistem ini diterapkan maka dapat
mempermudah orang yang hendak parkir dalam mencari tempat parkir mobil yang
kosong.
1.6. Sistematika Penulisan
Sistematika penulisan buku tugas akhir ini terdiri dari lima bab, yang secara
ringkas dapat diuraikan sebagai berikut :
BAB I : Pendahuluan
Pada BAB I dijelaskan tentang latar belakang masalah, perumusan
masalah, pembatasan masalah, tujuan, kontribusi dan sistematika
penulisan buku tugas akhir.
BAB II : Landasan Teori
Pada BAB II menjelaskan tentang kamera, citra digital, pengolahan
citra yang meliputi grayscaling, thresholding, metode background
subtraction (subtraksi background), color space yang meliputi RGB,
computer vision dan opencv.
BAB III : Metode Penelitian
Pada BAB III dibahas tentang perangkat-perangkat yang digunakan
dalam membuat tugas akhir ini, baik perangkat keras (hardware)
yang berupa miniatur maupun perangkat lunak (software)
diantaranya flowchart sistem secara keseluruhan, proses streaming,
proses update citra kondisi parkir, proses subtraksi, proses
4
penghitungan pixel warna putih dan proses menentukan koordinat
area yang menjadi titik acuan.
BAB IV : Pengujian dan Evaluasi Sistem
Pada BAB IV membahas tentang pengujian sistem meliputi,
pengujian pengambilan gambar secara otomatis setiap lima menit
sekali, proses subtraksi, proses grayscale, proses thresholding,
proses menentukan koordinat tertentu, proses mengenali benda dari
citra biner.
BAB V : Penutup
Pada BAB V merupakan bagian akhir dari laporan penelitian tugas
akhir ini yang menguraikan kesimpulan-kesimpulan yang diperoleh
dari proses penelitian serta saran-saran untuk pengembangan
5
BAB II
LANDASAN TEORI
2.1. Webcam
Web camera atau yang biasa dikenal dengan webcam, adalah kamera yang
gambarnya bisa di akses menggunakan world wide web (www), program instant
messaging, atau aplikasi komunikasi dengan tampilan video pada PC. Webcam
juga digambarkan sebagai kamera video digital yang sengaja didesain sebagai
kamera dengan resolusi rendah. webcam dapat digunakan untuk sistem keamanan.
Pada beberapa webcam, ada yang di lengkapi dengan software yang mampu
mendeteksi pergerakan dan suara. Dengan software tersebut, memungkinkan PC
yang terhubung ke kamera untuk mengamati pergerakan dan suara, serta
merekamnya ketika terdeteksi. Hasil rekaman ini bisa disimpan pada komputer,
e-mail atau di upload ke internet (Wibowo, 2010).
Webcam sangat bermanfaat dalam bidang telekomunikasi, bidang keamanan
dan bidang industri. Sebagai contoh webcam digunakan untuk videocall chatting,
surveillience camera, dan sebagai video conference oleh beberapa user.
6
2.2. Citra Digital
Citra digital adalah citra dua dimensi yang dapat ditampilkan pada layar
monitor komputer sebagai himpunan berhingga (diskrit) nilai digital yang disebut
pixel (picture elements). Pixel adalah elemen citra yang memiliki nilai yang
menunjukkan intensitas warna. Berdasarkan cara penyimpanan atau
pembentukannya, citra digital dapatdibagi menjadi dua jenis. Jenis pertama adalah
citra digital yang dibentuk olehkumpulan pixel dalam array dua dimensi.Citra
jenis ini disebut citra bitmap atau citra raster.Jenis citra yang kedua adalah
citrayang dibentuk oleh fungsi-fungsi geometri dan matematika.Jenis citra ini
disebutgrafik vektor.Citra digital (diskrit) dihasilkan dari citra analog (kontinu)
melalui digitalisasi.Digitalisasi citra analog terdiri sampling danquantitazion
Sampling adalah pembagian citra ke dalam elemen-elemen diskrit (pixel),
sedangkan quantitazion adalah pemberian nilai intensitaswarna pada setiap pixel
dengan nilai yang berupa bilangan bulat (G.W. Awcock,1996).
Citra digital dapat didefinisikan sebagai fungsi dua variabel, f(x,y), dimana x
dan y adalah koordinat spasial dan nilai f(x,y) adalah brightness level dari citra
Gambar 2.2 Citra Digital (Nixon dan Aguado, 2002)
Teknologi dasar untuk menciptakan dan menampilkan warna pada citra
digital berdasarkan pada penelitian bahwa sebuah warna merupakan kombinasi
dari tiga warna dasar, yaitu merah, hijau dan biru (Red, Green, Blue - RGB).
2.3. Pengolahan Citra Digital
Pengolahan citra merupakan teknik manipulasi citra secara digital yang
khususnya menggunakan komputer, menjadi citra lain yang sesuai untuk
digunakan dalam aplikasi tertentu. Agar mudah diinterpretasi oleh manusia atau
komputer, pengolahan citra harus dilakukan dengan berbagai macam metode
untuk mencapai citra sesuai yang diinginkan.
Operasi pengolahan citra digital umumnya dilakukan dengan tujuan
memperbaiki kualitas suatu gambar sehingga dapat dengan mudah
diinterpretasikan oleh mata manusia dan untuk mengolah informasi yang ada pada
suatu gambar untuk kebutuhan identifikasi objek secara otomatis.
y
x
x1
y1
8
Operasi-operasi yang dilakukan di dalam pengolahan citra banyak jenisnya.
Secara umum, operasi pengolahan citra dapat diklasifikasikan dalam beberapa
jenis sebagai berikut:
1. Image enhancement.
Jenis operasi ini bertujuan untuk memperbaiki kualitas citra dengan cara
memanipulasi parameter-parameter citra.
Dengan operasi ini, ciri-ciri khusus yang terdapat di dalam citra lebih
ditonjolkan.Contoh-contoh operasi perbaikan citra:
a. perbaikan kontras gelap/terang
b. perbaikan tepian objek (edge enhancement)
c. penajaman (sharpening)
d. grayscaling
e. noise filtering
2. Image restoration.
Operasi ini bertujuan menghilangkan/ meminimumkan cacat pada citra.
Tujuan pemugaran citra hampir sama dengan operasi perbaikan citra. Bedanya,
pada pemugaran citra penyebab degradasi gambar diketahui. Contoh-contoh
operasi pemugaran citra:
a. penghilangan kesamaran (deblurring)
b. penghilangan noise
3. Image compression.
Jenis operasi ini dilakukan agar citra dapat direpresentasikan dalam bentuk
yang lebih kompak sehingga memerlukan memori yang lebih sedikit. Hal penting
harus tetap mempunyai kualitas gambar yang bagus. Contoh metode pemampatan
citra adalah metode JPEG.
4. Image segmentation.
Jenis operasi ini bertujuan untuk memecah suatu citra ke dalam beberapa
segmen dengan suatu kriteria tertentu. Jenis operasi ini berkaitan erat dengan
pengenalan pola.
5. Image analysis.
Jenis operasi ini bertujuan menghitung besaran kuantitif dari citra untuk
menghasilkan deskripsinya. Teknik pengorakan citra mengekstraksi ciri- ciri
tertentu yang membantu dalam identifikasi objek. Proses segmentasi kadangkala
diperlukan untuk melokalisasi objek yang diinginkan dari sekelilingnya.
Contoh-contoh operasi pengorakan citra:
a. Pendeteksian tepi objek (edge detection)
b. Ekstraksi batas (boundary)
c. Representasi daerah (region)
6. Image reconstruction
Jenis operasi ini bertujuan untuk membentuk ulang objek dari beberapa citra
hasil proyeksi. Operasi rekonstruksi citra banyak digunakan dalam bidang medis.
Misalnya beberapa foto rontgen dengan sinar X digunakan untuk membentuk
ulang gambar organ tubuh. (Nixon dan Aguado, 2002)
2.3.1. Gray-Scaling
Proses awal yang banyak dilakukan dalam image processing adalah
10
menyederhanakan model citra. Seperti telah dijelaskan di depan, citra berwarna
terdiri dari 3 layer matrik yaitu R- layer, G-layer dan B-layer. Sehingga untuk
melakukan proses-proses selanjutnya tetap diperhatikan tiga layer di atas. Bila
setiap proses perhitungan dilakukan menggunakan tiga layer, berarti dilakukan
tiga perhitungan yang sama. Sehingga konsep itu diubah dengan mengubah 3
layer di atas menjadi 1 layer matrik scale dan hasilnya adalah citra
gray-scale. Dalam citra ini tidak ada lagi warna, yang ada adalah derajat keabuan.
Untuk mengubah citra berwarna yang mempunyai nilai matrik
masing-masing r, g dan b menjadi citra gray-scale dengan nilai s, maka konversi dapat
dilakukan dengan mengambil rata-rata dari nilai r, g dan b sehingga dapat
dituliskan menjadi:
I (x,y) = � , +�( , )+�( , )
3 ……….….(2.1)
Keterangan:
I (x,y) = nilai intensitas citra grayscale
R (x,y) = nilai intensitas warna merah dari citra asal
G (x,y) = nilai intensitas warna hijau dari citra asal
B (x,y) = nilai intensitas warna biru dari citra asal
Atau dapat menggunakan persamaan:
I = ( 0,299 x R(x,y)) + ( 0,587 x G(x,y)) + (0,144 x B(x,y)) ……… (2.2)
Berikut adalah contoh gambar hasil grayscaling
Gambar 2.3 Hasil Grayscaling( Nata S, 2010 )
2.3.2. Thresholding
Thresholding merupakan konversi citra berwarna ke citra biner yang
dilakukan dengan cara mengelompokkan nilai derajat keabuan setiap pixel
kedalam 2 kelas, hitam dan putih. Pada citra hitam putih terdapat 256 level,
artinya mempunyai skala “0” sampai “255” atau [0,255], dalam hal ini nilai
intensitas 0 menyatakan hitam, dan nilai intensitas 255 menyatakan putih, dan
nilai antara 0 sampai 255 menyatakan warna keabuan yang terletak antara hitam
dan putih (Munir, 2004).
Pada operasi pengambangan, nilai intensitas pixel dipetakan ke salah satu
dari dua nilai, α atau α , berdasarkan nilai ambang (threshold) T dapat
ditunjukkan seperti pada persamaan 2.1.
� , ′ = α , f x, y <�
α , f x, y ≥T……….………....(2.3)
Jika α = 0 dan α = 1, maka operasi pengambangan mentransformasikan citra
hitam-putih ke citra biner. Dengan kata lain, nilai intensitas pixel semula
12
berlaku untuk keseluruhan pixel atau untuk wilayah tertentu saja (berdasarkan
penyebaran nilai intensitas pada wilayah tersebut) (Munir, 2004).
Thresholding merupakan salah satu teknik segmentasi yang baik digunakan
untuk citra dengan perbedaan nilai intensitas yang signifikan antara latar belakang
dan objek utama.Dalam pelaksanaannya thresholding membutuhkan suatu nilai
yang digunakan sebagai nilai pembatas antara objek utama dengan latar belakang,
dan nilai tersebut dinamakan dengan threshold. Sementara pada kasus segmentasi
objek yang membutuh dua nilai T atau lebih, maka disebut dengan Multiple
Threshold (Gonzales dan Woods, 2002).
2.3.3. Background Subtraction
Subtraksi latar mempunyai peranan penting dalam visi komputer yaitu
dalam hal sistem pemantauan. Peranan yang dilakukan dalam subtraksi latar
adalah mengetahui atau membedakan bagian latar dan objek yang ada pada
sebuah citra. Untuk mengetahui adanya objek di dalam citra maka hal yang harus
dilakukan adalah dengan mempelajari atau mengetahui model dari latar. Ide dasar
dari subtraksi latar adalah
│background(r)-image(r)│= frame(r)………..(2.4)
│background(g)-image(g)│= frame(g)……….(2.5)
│background(b)-image(b)│= frame(b)……….(2.6)
frame(r) > threshold……….……….(2.7)
frame(g) > threshold ………(2.8)
Bila pixel ke-i memenuhi persamaan tersebut, maka pixel tersebut digolongkan ke
dalam kelompok pixel objek dan selain itu adalah latar. Berikut adalah contoh
hasil subtraksi latar.
Gambar 2.4 Subtraksi Latar (Picardi dan Jan, 2003)
2.4. Color Space
2.4.1. RGB
Model warna RGB adalah model warna berdasarkan konsep penambahan
kuat cahaya primer yaitu Red, Green dan Blue. Dalam suatu ruang yang sama
sekali tidak ada cahaya, maka ruangan tersebut adalah gelap total. Tidak ada
signal gelombang cahaya yang diserap oleh mata kita atau RGB (0,0,0). Ruang
14
Gambar 2.5 RGB Colorwheels (Syuhadi,2010)
Apabila kita menambahkan cahaya merah pada ruangan tersebut, maka
ruangan akan berubah warna menjadi merah misalnya RGB (255,0,0), semua
benda dalam ruangan tersebut hanya dapat terlihat berwarna merah. Demikian
apabila cahaya kita ganti dengan hijau atau biru (Permana,2010). Pencerahan serta
pengaruh intensitas cahaya dalam ruang warna RGB dapat dilihat pada Gambar
2.6.
2.5. Computer Vision
Computer Vision adalah pencitraan komputer dimana aplikasi tidak
melibatkan manusia dalam proses pengulangan visual. Dengan kata lain, gambar
yang diperiksa dan di olah oleh komputer. Meskipun orang yang terlibat dalam
pengembangan sistem aplikasi, akhirnya membutuhkan komputer untuk
mengambil informasi visual secara langsung (Umbaugh, 1998).
Computer vision merupakan sebuah proses otomatis yang mengintegrasikan
sejumlah besar proses persepsi visual, seperti pengolahan citra, klasifikasi citra,
pengenalan citra dan akusisi citra. Computer vision didefinisikan sebagai salah
satu cabang ilmu pengetahuan yang mempelajari bagaimana komputer dapat
mengenali obyek yang diamati atau diobservasi. Cabang ilmu ini bersama
kecerdasan buatan (Artificial Intelligence) akan mampu menghasilkan sistem
kecerdasan visual (Visual Intelligence System) (Munir, 2004).
Vision = Geometri + Measurement + Interpretatio………(2.10)
Proses-proses dalam computer vision dapat dibagi menjadi tiga aktivitas:
a. Memperoleh atau mengakuisisi citra digital.
b. Melakukan teknik komputasi untuk memperoses atau memodifikasi data citra.
c. Menganalisis dan menginterpretasi citra dan menggunakan hasil pemrosesan
untuk tujuan tertentu, misalnya memandu robot, mengontrol peralatan,
16
2.6. OpenCV
OpenCV (Open Computer Vision) adalah sebuah API (Application
Programming Interface) library yang sudah sangat familiar pada pengolahan citra
computer vision.Computer vision itu sendiri adalah salah satu cabang dari bidang
ilmu pengolahan citra (Image Processing) yang memungkinkan komputer dapat
melihat seperti manusia.Dengan computer vision tersebut komputer dapat
mengambil keputusan, melakukan aksi, dan mengenali terhadap suatu objek.
Beberapa pengimplementasian dari computer vision adalah face recognition, face
detection, face/pbject tracking, road tracking, dll.
OpenCV adalah library open source untuk computer vision untuk C/C++,
OpenCV didesain untuk aplikasi real-time, memiliki fungsi-fungsi akuisisi yang
baik untuk image/video. OpenCV juga menyediakan interface ke Integrated
Performance Primitives (IPP) Intel sehingga jika anda bisa mengoptimasi aplikasi
computer vision anda jika menggunakan prosesor Intel (Syafi’i,2011).
Fitur yang dimiliki OpenCV antara lain :
1. Manipulasi data citra (alocation, copying, setting, convert).
2. Citra dan video I/O (file dan kamera based input, image/video file output).
3. Manipulasi Matriks dan Vektor beserta rutin-rutin aljabar linear (products,
solvers, eigenvalues, SVD).
4. Data struktur dinamis (lists, queues, sets, trees, graphs).
5. Pemroses citra fundamental (filtering, edge detection, corner detection,
sampling and interpolation, color conversion, morphological operations,
6. Analisis struktur(connected components, contour processing, distance
Transform, various moments, template matching, Hough Transform,
polygonal approximation, line fitting, ellipse fitting, Delaunay
triangulation).
7. Kalibrasi kamera (calibration patterns, estimasi fundamental matrix,
estimasi homography, stereo correspondence).
8. Analisis gerakan (optical flow, segmentation, tracking).
9. Pengenalan obyek (eigen-methods, HMM).
10. Graphical User Interface (display image/video, penanganan keyboard dan
mouse handling, scroll-bars).
OpenCV terdiri dari 3 library, yaitu:
1. CV : Untuk algoritma Image Processing dan Vision
2. Highgui : Untuk GUI, Image dan Video I/O
18
BAB III
METODE PENELITIAN
Untuk pengumpulan data yang diperlukan dalam melaksanakan tugas akhir,
ada beberapa cara yang telah dilakukan, antara lain:
1. Studi kepustakaan
Studi kepustakaan berupa pencarian data-data literatur dari fungsi pada
library OpenCV, melalui pencarian dari internet, dan konsep-konsep teoritis dari
buku-buku penunjang serta metode yang akan digunakan untuk melakukan
pengolahan citra.
2. Penelitian laboratorium
Penelitian laboratorium dilakukan dengan perancangan perangkat
lunak,implementasi perangkat lunak, pengambilan data pengujian aplikasi,
kemudian melakukan evaluasi dari data hasil pengujian.
3.1. Perancangan Sistem dan Blok Diagram Sistem
Model penelitian yang akan dilakukan adalah model penelitian
pengembangan. Untuk mempermudah dalam memahami sistem yang akan dibuat
Gambar 3.1 Blok Diagram Sistem Secara Umum
Sebagai input, citra didapatkan dari kamera yang terpasang pada miniatur.
Kemudian diproses menggunakan console application Visual C++ 2008 dengan
memanfaatkan library OpenCV. Citra yang diperoleh adalah citra keadaan blok
parkir mobil. Setelah mendapatkan citra tersebut, maka selanjutnya citra akan
diproses untuk kemudian disubtraksi/dikurangkan (subtraction) dengan citra
sampel (citra blok tanpa mobil). Dari hasil subtraksi tersebut dilakukan klasifikasi
benda yang teridentifikasi merupakan mobil atau tidak. Pada akhirnya akan
Display
Personal Computer
20
ditampilkan informasi pada PC berupa output nomor tempat yang kosong
(diasumsikan bahwa setiap tempat parkir terdapat nomor urut), selain itu juga citra
yang diambil secara streaming akan ditampilkan pada layar PC.
3.2. Perancangan Perangkat Keras
Flowchart perancangan dan pembuatan miniatur sebagai berikut :
Gambar 3.2 Flowchart Pembuatan Miniatur
Perangkat keras pada Tugas Akhir ini berupa miniatur lantai 2 tempat parkir
mobil di salah satu pusat perbelanjaan di Surabaya. Sebelum proses pembuatan
miniatur telah dilakukan riset untuk mengetahui desain dan ukuran tempat parkir
tersebut, selanjutnya dicari ukuran yang tepat untuk diterapkan dalam bentuk
miniatur menggunakan skala perbandingan sehingga hasil program bisa
mendekati hasil sesungguhnya apabila diterapkan secara real.
Riset tempat
Perancangan miniatur
Pembuatan miniatur
Uji coba miniatur
start
Dari hasil riset diperoleh data yaitu panjang lokasi parkir 50 m dengan tinggi 2,1
m dan lebar 9 m. Dari hasil tersebut ditentukan dimensi miniatur dan didapatkan
skala perbandingan 1:25, sehingga panjang miniatur menjadi 2 m, tinggi 8,4 cm,
dan lebar 36 cm. Hasil dimensi miniatur tersebut diperoleh dari penghitungan
sebagai berikut:
Diketahui:
Panjang sesungguhnya (PS) : 50 m = 5000 cm
Tinggi sesungguhnya (TS) : 2,1 m = 210 cm
Lebar sesungguhnya (LS) : 9 m = 900 cm
Ketinggian Kamera sesungguhnya (KS) : 2,1 m = 210 cm
Jarak Kamera dari mobil sesungguhnya (JK) : 6 m = 600 cm
Skala 1:25
Dicari : Pm, Tm, Lm
Penyelesaian:
Panjang miniatur (Pm) = 5000/25 = 200 cm = 2 m
Tinggi miniatur (Tm) = 210/25 = 8,4 cm
Lebar miniatur (Lm) = 900/25 = 36 cm
Ketinggian kamera miniatur (Km) = 210/24 = 8,4 cm
Jarak Kamera miniatur (Jm) = 600/25 = 24 cm
Karena webcam yang digunakan secara default sudah dalam kondisi diperbesar
maka pada miniatur ditentukan jarak kamera menjadi 36 cm sehingga
22
3.3. Perancangan Perangkat Lunak
Dalam perancangan perangkat lunak, compiler yang digunakan adalah
Microsoft Visual C++ 2008. Untuk library yang digunakan pada pengolahan citra
yaitu library OpenCV v2.3.
Kemudian dalam penulisannya atau dalam pembuatan program, akan
meliputi bagian-bagian penting dalam setiap langkah-langkah per bagian sesuai
dengan algoritma atau logika sekuensial dari awal sampai output. Berikut adalah
algoritma program secara global.
Gambar3.3 Flowchart sistem secara global
Menit = = 5
Ya Tidak
Pengambilan citra parkir kosong
Streaming Kamera
Subtraksi region 1
Subtraksi region 2
Subtraksi region 3
Greyscale region 1
Grayscale region 2
Grayscale region 3
A
Gambar3.4 Flowchart sistem secara global (lanjutan)
Thresholding region 1 Thresholding region 2 Thresholding region 3
menghitung white pixel region 1 menghitung white pixel region 2 menghitung white pixel region 3
Tidak
Ya
Region 1 kosong
B Region 1 terdapat mobil
hasil < 0,35
Region 2 kosong Region 2
terdapat mobil
hasil1< 0,35
Region 3 kosong Region 3
List parkir kosong
Key == esc A
Ya Tidak
24
Gambar 3.3 dan Gambar 3.4 adalah Flowchart sistem secara global atau
keseluruhan. Dimulai dari pengambilan citra sampel berupa kondisi parkir yang
masih kosong. Proses berikutnya adalah kamera melakukan streaming dan
mengambil/menyimpan citra kondisi parkir setiap 5 menit sekali (update data).
Kemudian menentukan titik koordinat area yang menjadi acuan dalam proses
pengolahan citra selanjutnya. Setelah itu mengambil dan mengakses nilai RGB
per pixel dari citra sampel dan citra update (citra hasil capture setiap 5 menit
sekali). Setelah didapatkan nilai RGB per pixel dari masing-masing citra dan
selanjutnya nilai RGB dari citra sampel akan dikurangkan (subtraction) dengan
nilai RGB dari citra update. Setelah didapatkan hasil pengurangan nilai RGB
maka citra hasil pengurangan/subtraksi diubah dalam bentuk citra abu-abu atau
biasa disebut Grayscale. Proses selanjutnya adalah citra yang sudah dalam bentuk
Grayscale diubah menjadi bentuk citra binary melalui proses thresholding agar
dapat dihitung jumlah pixel putih pada area tempat mobil diparkir, dari hasil
penghitungan tersebut didapatkan nilai yang akan dianalisis dan dikategorikan ada
atau tidaknya mobil di area tersebut dan proses yang terakhir adalah hasil analisis
akan ditampilkan di output berupa list nomor parkir yang kosong.
3.4. Pengambilan Citra Sampel
Citra sampel yang dimaksud adalah citra kondisi parkir saat dalam keadaan
tanpa adanya mobil. Citra sampel tersebut digunakan untuk data yang akan
disubtraksi dengan citra update. Pengambilan citra sampel dilakukan secara
nama background.jpg. Ketika program berjalan program akan memuat citra
sampel menggunakan fungsi cvLoadImage dan disimpan dalam variabel img,
format variabel img adalah Iplimage. Berikut potongan program untuk memuat
citra sampel .
IplImage* img = cvLoadImage( "D:\\pict_TA\\background.jpg" );
3.5. Penerimaan Data Citra
Setiap data citra yang dikirimkan dari kamera diakses dengan pointer
CvCapture dan menggunakan fungsi cvCaptureFromCAM(1). Angka 0 pada
fungsi cvCaptureFromCAM(0) merupakan indeks dari kamera yang digunakan.
Berikut adalah potongan program untuk proses penerimaan data citra dari Kamera
menggunakan.
CvCapture* capture = cvCaptureFromCAM(0);
Data citra yang ditangkap adalah data citra dengan ruang warna RGB dan
disimpan langsung pada variabel Iplimage (Intel Image Processing Library) yaitu
stuktur data untuk penyimpanan data citra pada OpenCV. Urutan channel data
dalam Iplimage adalah BGR sehingga untuk menampilkan warna sesungguhnya.
3.6. Streaming Citra
Untuk menampilkan data citra yang sudah tersimpan pada Iplimage ke
dalam window baru digunakan prototipe fungsi pada library OpenCV yaitu
cvShowImage (const char *name, const CvArr *image). Dengan ketentuan
parameter const char *name adalah nama window dan const CvArr *image adalah
Iplimage yang ditampilkan. Berikut program yang digunakan untuk menampilkan
26
while (1) {
IplImage*BG;
CvCapture* capture = cvCaptureFromCAM(0); cvNamedWindow("original1”);
cvShowImage("original1",BG); z = cvWaitKey(10);
if(z == 27)
break; }
Untuk refresh citra yang ditampilkan pada window dibutuhkan fungsi
cvWaitKey. Ini dikarenakan OS memiliki waktu minimum dalam menjalankan
threads secara bergantian. Fungsi ini tidak memberikan delay persis seperti
parameter yang telah set, namun delay tergantung threads yang sedang berjalan
pada komputer saat itu. Nilai yang dikeluarkan dari fungsi ini adalah kode untuk
penekanan tombol atau -1 apabila tidak ada tombol yang ditekan selama waktu
yang ditentukan.
3.7. Proses Update Citra Kondisi Parkir
Flowchart proses update data setiap 5 menit sekali adalah sebagai berikut.
Gambar3.5 Flowchart Update Citra Kondisi Parkir
Gambar3.6 Flowchart Update Citra Kondisi Parkir (lanjutan)
Pada Gambar 3.5 dan Gambar 3.6 di atas, proses streaming dijalankan dan
program juga mengakses menit yang terdapat pada time system, selain itu pada
inisialisasi fc yang merupakan flag diberi nilai awal false. Ketika berada pada
kondisi !fc dan menit mencapai 5 menit atau kelipatannya (nilai didapat dari menit
dimodulus 5) maka program akan menyimpan hasil capture di variabel BG.
Variabel BG adalah variabel dengan format Iplimage yang digunakan untuk
menampung data citra hasil update. Proses selanjutnya variabel BG akan diolah
sampai mendapatkan hasil yang diinginkan setelah itu nilai fc diberi nilai true.
Tetapi jika waktu belum mencapai 5 menit maka program tidak akan
mengeksekusi proses selanjutnya hanya menjalankan streaming.
3.8. Pengolahan Citra
Proses pengolahan citra adalah proses yang paling utama dalam pengerjaan
program untuk sistem pada Tugas Akhir ini karena menggunakan Kamera sebagai
sensor pendeteksinya. Berikut adalah Flowchart pengolahan citra secara garis
besar :
BG = citra
fc = true A
28
Gambar3.7 Flowchart Pengolahan Citra
Metode utama yang digunakan pada proses pengolahan citra adalah metode
Background Subtraction image. Untuk mendukung metode utama dilakukan juga
proses pengolahan citra pendukung seperti konversi warna RGB menjadi bentuk
abu-abu (grayscaling) dan konversi warna RGB menjadi hitam putih/biner
(thresholding). Proses akses pixel juga merupakan proses yang penting untuk
menunjang metode Background Subtraction. Untuk mempermudah proses
mendeteksi mobil maka pada image sampel maupun image update dibagi menjadi
tiga area/region mobil ( 1 blok berisi 3 mobil) dengan koordinat pixel yang telah
ditentukan. Untuk proses pengolahan citra lebih detail lagi akan dijelaskan pada
tiap-tiap sub bab.
Tresholding
grayscaling Subtraction Image
Citra
List tempat
parkir start
3.8.1. Menentukan Koordinat Area
Proses menentukan koordinat masing-masing area dilakukan secara manual.
Untuk mempermudah mencari koordinat yang tepat maka perlu menampilkan
hasil koordinat yang dicoba dengan memberi tanda agar dapat terlihat posisi
koordinatnya. Persegi adalah tanda yang akan digunakan untuk menandai
masing-masing area pada program Tugas Akhir ini. Pada proses memberi tanda (masking)
digunakan function bawaan library OpenCV yaitu.
cvRectangle(CvArr*img,cvPoint(x,y),cvPoint(x1,y1),cvScalar(255,255,255),t,l).
Variabel CvArr*img merupakan citra yang akan diberi gambar persegi, sedangkan
untuk variabel cvPoint(x,y) berfungsi menentukan posisi titik sebelah kiri atas
pada persegi yang akan dibuat dan fungsi cvPoint(x1,y1) adalah menentukan
posisi titik sebelah kanan bawah pada persegi yang akan dibuat. cvScalar(RGB)
berfungsi untuk menentukan warna persegi. Variabel t adalah variabel untuk
mewakili nilai ketebalan garis yang diinginkan sedangkan variable l adalah untuk
menentukan jenis garisnya.
Menentukan koordinat masing-masing area dilakukan agar dapat mengenali
objek pada lokasi yang berbeda-beda dan dapat mengetahui area yang telah terisi
mobil dan yang masih kosong.
3.8.2. Akses Pixel
Library OpenCV telah menyediakan function untuk Background Subtraction
yaitu cvSub(source1, source2, dest, NULL) tetapi hasil subtraksi yang
30
manual. Dalam proses Background Subtraction secara manual langkah yang
pertama adalah mengakses RGB per pixel pada citra sampel dan citra update.
Berikut adalah potongan program untuk mengakses RGB per pixel dari citra
sampel dan citra update :
int blue = ((uchar*)(img->imageData + img->widthStep*y))[x*3];
int green= ((uchar*)(img->imageData + img->widthStep*y))[x*3+1];
int red = ((uchar*)(img->imageData + img->widthStep*y))[x*3+2];
int b= ((uchar*)(BG->imageData + BG->widthStep*y))[x*3];
int g= ((uchar*)(BG->imageData + BG->widthStep*y))[x*3+1];
int r = ((uchar*)(BG->imageData + BG->widthStep*y))[x*3+2];
Variabel blue, green, dan red merupakan variabel untuk menampung nilai dari
RGB per pixel pada citra sampel, sedangkan variabel b,g, dan r digunakan pada
citra update. Variabel lainnya adalah img dan BG, img yaitu variabel yang
menampung data citra sampel sedangkan variabel BG untuk citra update.
Function ->imageData berguna untuk mendapatkan data gambar, sedangkan
function ->widthStep berguna untuk memeriksa per pixel. Variabel x dan y
adalah variabel yang digunakan untuk proses perulangan. Sedangkan untuk
mengakses komposisi warna RGB pada pixel digunakan ketetapan [x*3] untuk
warna biru, [x*3+1] untuk warna hijau, dan [x*3+2] untuk warna merah.
Pada saat sudah mendapatkan nilai RGB dari tiap-tiap pixel maka dilakukan
proses subtraksi. Setelah proses subtraksi maka pixel-pixel hasil subtraksi tersebut
harus dikembalikan ke bentuk semula yaitu dalam format image untuk diproses ke
tahap selanjutnya. Berikut adalah potongan program untuk memasukkan pixel ke
dalam bentuk image:
region adalah variabel berformat image yang digunakan untuk menampung hasil
subtraksi. Sedangkan variabel sg,sr, dan sb adalah hasil subtraksi hijau, merah dan
biru.
3.8.3. Background Subtraction
Gambar 3.8 Flowchart Background Subtraction
x = x++ Akses Green pixel
Akses Blue pixel Akses Red pixel
N
Akses Green pixel Akses Blue pixel
Akses Red pixel
32
Gambar 3.9 Flowchart Background Subtraction (lanjutan)
939 < x < 1239
Green(x,y)-g(x,y)
Blue (x,y)-b(x,y)
Red(x,y)-r(x,y)
Hasil subtraksi
region 3
x = x++
y = y++ Akses Green pixel
Akses Blue pixel
Akses Red pixel A
Y
N
Akses g pixel
Akses b pixel
Akses r pixel
Pada Gambar 3.8 dan Gambar 3.9 merupakan Flowchart Background
Subtraction. Dalam Flowchart tersebut telah ditentukan koordinat pixel untuk
masing-masing area/region dengan rincian berikut.
a. Area/region 1, berada diantara koordinat x,y(10<=x<=330
,50<=y<=450)
b. Area/region 2, berada diantara koordinat x,y(480<=x<=800,
50<=y<=450)
c. Area/region 3, berada diantara koordinat x,y(940<=x<=1240,
50<=y<=450)
Pada awalnya image akan koordinat pixel gambar diperiksa satu persatu,
apabila mendapatkan koordinat yang sama dengan koordinat area 1 maka proses
selanjutnya adalah mengakses pixel RGB pada gambar sampel dan gambar
update.
Pada Flowchart pixel RGB pada gambar sampel dinyatakan dengan Green
pixel, Blue pixel dan Red pixel. Sedangkan pada gambar update dinyatakan
dengan g pixel, b pixel dan r pixel. Setelah proses akses pixel maka pixel-pixel
tersebut akan di subtraksi sesuai dengan koordinat dan jenis warnanya. Setelah
didapatkan pixel-pixel hasil subtraksi maka langkah berikutnya adalah
mengelompokkan kembali pixel-pixel hasil subtraksi dalam format image ke
dalam variabel region1. Tetapi apabila koordinat pixel tidak sama dengan
koordinat area 1 maka akan dilanjutkan dengan memeriksa apakah berada di
koordinat area 2 atau area 3. Proses yang dijalankan apabila berada di koordinat
area 2 atau area 3 sama dengan urutan proses yang berada di area 1. Region 2
34
sedangkan region 3 adalah untuk menyimpan hasil subtraksi area 3.Jika koordinat
yang di periksa tidak berada di koordinat area 1, area 2 dan area 3 maka program
tidak memproses pixel tersebut.
Untuk melakukan proses Background Subtraction, maka harus didapatkan
terlebih dahulu citra sampel untuk kemudian dijadikan acuan perbandingan dan
pengurangan dengan citra baru yang ingin subtraksi. Dan background subtraction
akan menemukan bagian citra baru berupa objek yang berbeda antara citra sampel
dengan citra update. Berikut pada Gambar 3.10 adalah contoh background
subtraction.
Gambar 3.10 Contoh Background Subtraction
Pada Gambar 3.10 terdapat citra dengan nama figure d yang merupakan citra
sampel yang akan disubtraksi dengan citra update (figure a), pada figure a
terdapat objek yang berbeda dari figure d yaitu terdapat mobil yang berada pada
area tersebut sehingga ketika disubtraksi maka menghasilkan citra seperti pada
3.8.4. Grayscaling
Grayscale adalah suatu format citra atau gambar yang tiap-tiap pixel
gambar hanya terdiri dari 1 channel warna. Proses perubahan warna dari RGB
menjadi Grayscale bertujuan untuk mempermudah proses selanjutnya yaitu proses
perubahan Grayscale menjadi biner. Sehingga setelah proses subtraksi berhasil
dilakukan maka langkah selanjutnya ialah melakukan konversi format gambar
dari RGB menjadi Grayscale. Untuk mengubah RGB menjadi Grayscale dapat
digunakan rumus.
Grayscale = 0.299R + 0.587G + 0.114B
atau dapat menggunakan algoritma dengan merata-rata nilai ketiga buah channel
RGB.
Grayscale = ( R + G + B ) / 3
Perubahan gambar RGB menjadi Grayscale menggunakan library openCV pada
visual C++ menggunakan perintah sebagai berikut.
cvCvtColor(region1,gimask1,CV_RGB2GRAY);
Pada perintah tersebut sudah terdapat dua frame yaitu region1 dan
gimask1. region1 adalah frame RGB hasil subtraksi sedangkan gimask1 adalah
frame yang disediakan untuk Grayscale yang akan dibuat. Sehingga maksud dari
potongan perintah tersebut adalah mengubah gambar region1 menjadi Grayscale
dengan fungsi CV_RGB2GRAY lalu disimpan pada frame bernama
gimask1.Tetapi terlebih dahulu dibuat deklarasi pointer untuk image graycale,
yaitu dengan cara seperti berikut.
36
Pada potongan program tersebut terdapat IPL_DEPTH_8U yang artinya
adalah tiap-tiap pixel bernilai 8 bit. Sedangkan angka 1 setelah koma dibelakang
IPL_DEPTH_8U bermakna tiap-tiap pixel hanya terdiri dari sebuah channel.
3.8.5. Thresholding
Untuk melakukan penghitungan pixel putih pada masing-masing region,
maka data citra dikonversikan ke dalam citra biner dengan memanfaatkan
thresholding. Thresholding adalah proses mengubah suatu citra berwarna atau
berderajat keabuan (Grayscale) menjadi citra biner atau hitam putih, sehingga
dapat diketahui daerah mana yang termasuk objek dan background dari citra
secara jelas (Gonzales dan Woods, 2002). Citra hasil thresholding biasanya
digunakan lebih lanjut untuk proses pengenalan obyek serta ekstraksi fitur. Tipe
data dari hasil proses thresholding adalah tipe data float, yaitu antara 0 sampai
dengan 1. Dengan parameter yang di set sebelumnya maka data citra yang jika
melebihi batas yang ditentukan akan dibuat menjadi 1 atau putih dan jika dibawah
batas yang ditentukan maka akan dibuat menjadi 0 atau hitam.
Namun pada library OpenCV telah disediakan function untuk memproses
thresholding, yaitu dengan menggunakan cvThreshold. Berikut merupakan baris
perintah thresholding.
cvThreshold(gimask1, im_bw, 30, 255, CV_THRESH_BINARY);
Pada perintah tersebut gambar Grayscale dari frame gimask1 dirubah menjadi
biner (CV_THRESH_BINARY) dengan threshold 40 dan disimpan pada frame
im_bw. Threshold bertujuan mengubah pixel diatas threshold untuk menjadi pixel
bernilai 255 sedangkan dibawah threshold dirubah menjadi 0, dengan demikian
3.9. Penghitungan Piksel Putih (Counting White Pixel)
Gambar 3.11 Flowchart Accounting White Pixel
subtraksi start
grayscaling
thresholding
49 < y < 451
Akses ptr pixel
38
Gambar 3.12 Flowchart Accounting White Pixel (lanjutan)
Pada Gambar 3.11 dan Gambar 3.12 merupakan Flowchart proses untuk
menghitung pixel warna putih pada 3 area/region dari gambar hasil subtraksi yang
telah dibinerkan. Pada awalnya variabel counter (white1,white2,
white3,pixel1,pixel2 dan pixel3) diberi nilai 0. Setelah melakukan proses
subtraksi citra sampel dengan citra update dan telah dilakukan proses Grayscale
A
49 < y < 451
Akses ptr1 pixel
479 < x < 801
Akses ptr2 pixel
939 <x <1239
serta thresholding, selanjutnya memeriksa koordinat pixel. Jika koordinat y tepat
pada range koordinat y area 1 maka proses akan mengakses pixel dan nilainya
dimasukkan pada variabel ptr. Selanjutnya jika koordinat x berada pada koordinat
x area 1 maka nilai variabel ptr dimasukkan ke dalam variabel value untuk
diperiksa apakah bernilai 255 (warna putih). Apabila value bernilai 255 maka nilai
variabel counter white1 dan pixel1 ditambahkan 1. Tetapi apabila koordinat x
tidak berada pada koordinat x area 1 maka koordinat akan diperiksa kembali
untuk mengetahui apakah berada di area 2 atau area 3 atau tidak berada di
koordinat 3 area tersebut. Untuk proses penghitungan pixel di area 2 maupun 3
sama seperti halnya di area 1. Sedangkan jika diluar koordinat 3 area tersebut
maka tidak akan diproses lebih lanjut. Berikut adalah potongan program untuk
menghitung pixel pada salah satu area.
for ( y = 50 ; y <= 450 ; y++) {
uchar* ptr = (uchar*)(im_bw->imageData+im_bw->widthStep*y );
for ( x = 10 ; x <= 330 ; x++) {
value = ptr[x];
if (value == 255) white1++; pixel1++; }
}
Pada potongan program tersebut terdapat variabel im_bw yaitu variabel
yang menampung frame biner hasil subtraksi area 1.
Penghitungan pixel sangat penting dilakukan untuk proses selanjutnya yaitu
identifikasi benda. Karena identifikasi benda dilakukan dengan menghitung
prosentasi pixel putih pada masing-masing area.
40
3.10.Identifikasi Benda
Gambar3.13 Flowchart Identifikasi benda
start
Hasil1 = white1/pixel1 Hasil2 = white2/pixel2 Hasil3 = white3/pixel3
Hasil1 < 0,35
Nomor 1
Hasil2 < 0,35
Nomor 2
Nomor 3 Hasil3 <0,35 Parkir penuh
stop Pixel 1
Pixel 2 Pixel 3 White1 White2 White3
Y Y
Y
N N
Pada Flowchart Gambar 3.13 untuk menentukan benda yang teridentifikasi
merupakan mobil atau tidak maka terlebih dahulu total pixel putih (white1 untuk
area 1, dst) dibagi dengan total keseluruhan pixel (pixel1 untuk area 1, dst) dari
masing-masing area sehingga didapatkan prosentasi pixel putih pada tiap-tiap
area. Kemudian nilai dari hasil bagi masing-masing area tersebut akan ditampung
di variabel Hasil1 (untuk area 1), Hasil2 (untuk area 2) dan Hasil3 (untuk area 3).
Setelah ditampung ke dalam variabel maka hasil akan dibandingkan dengan batas
minimum prosentasi yang telah ditentukan yaitu 35% atau 0,35.
Jika prosentasi pixel putih pada area 1 kurang dari 0,35 maka area tersebut
dianggap tidak ada mobil dan pada list nomor parkir akan ditampilkan nomor 1
untuk menginformasikan kepada pengguna parkir bahwa tempat parkir nomor 1
dapat ditempati. Jika prosentasi pixel putih lebih dari 0,35 maka area tersebut
dianggap terdapat mobil dan akan dilanjutkan untuk mengeksekusi proses
selanjutnya yaitu mengidentifikasi pada area yang lain. List parkir akan
menginformasikan bahwa parkir telah penuh apabila prosentasi pixel putih pada
semua area parkir melebihi 0,35. Berikut adalah potongan program untuk
identifikasi benda.
if ( hasil1 < 0.35)
cout << " 1 " << endl;
if ( hasil2 < 0.35)
cout << " 2 " << endl;
if ( hasil3 < 0.35)
cout << " 3 " << endl;
42
3.11.Metode Pengujian dan Evaluasi Sistem
Untuk mengetahui apakah aplikasi yang dibuat dapat berjalan sesuai yang
diharapkan, maka akan dilakukan pengujian dan evaluasi sistem untuk setiap
tahapan-tahapan dalam pembuatan aplikasi. Dimulai dari streaming citra, update
citra kondisi parkir, menentukan koordinat pada tiap-tiap area, akses pixel,
Backgorund Subtraction, thresholding, penghitungan pixel putih dan identifikasi
benda.
3.11.1.Pengujian Streaming Citra
Untuk mengetahui apakah data citra sudah dapat diakses langsung melalui
Kamera, maka dilakukan pengujian dengan cara menjalankan (running) program
pemanggilan kamera dari Visual C++ 2008, yaitu untuk mengakses console
Kamera secara langsung dari program. Kemudian citra yang tampil akan diuji
apakah dapat menampilkan data citra secara streaming.
3.11.2.Pengujian Update Citra Kondisi Parkir
Untuk pengujian apakah program dapat melakukan update data berupa
citra kondisi parkir secara otomatis maka akan ditampilkan waktu sistem. Hal ini
dilakukan untuk mengetahui waktunya. Selain menampilkan waktu sistem, juga
dilakukan cara lain yaitu membuka direktori lokasi tempat hasil update akan
disimpan ( D:\\Pict_TA\\update.jpg) yang bertujuan untuk mengetahui apakah
gambar yang dimaksud akan berubah dan disimpan setiap 5 menit pada direktori
3.11.3.Pengujian Penentuan Koordinat Pada Tiap Area
Untuk mengetahui posisi koordinat acuan pada masing-masing area maka
program akan menampilkan window image berisi citra yang terdapat tanda
persegi pada masing-masing area yang berfungsi untuk memberi batas area yang
akan diproses datanya.
3.11.4.Pengujian Akses Pixel
Untuk mengetahui apakah program berhasil mengakses RGB dari tiap-tiap
pixel maka akan ditampilkan window image yang menyimpan hasil akses pixel
merah, hijau dan biru. Selain itu untuk mendukung pengujian maka output nilai
pixel RGB juga ditampilkan.
.
3.11.5.Pengujian Background Subtraction
Untuk pengujian metode Background Subtraction, dilakukan dengan
mengurangkan data citra sampel dengan citra update. Hasil subtraksi akan
disimpan pada frame. Untuk mengetahui apakah program berhasil melakukan
subtraksi maka akan ditampilkan 3 window image hasil subtraksi (hasil subtraksi
area 1, area 2 dan area 3).
3.11.6.Pengujian Thresholding
Untuk pengujian proses thresholding maka ditampilkan 3 window image
44
biner. 3 window image tersebut meliputi window image untuk area 1, area 2 dan
area 3.
3.11.7.Pengujian Penghitungan Pixel
Untuk pengujian proses penghitungan pixel maka ditampilkan output hasil
perhitungan sehingga dapat diketahui total pixel putih pada masing-masing area.
3.11.8.Pengujian Identifikasi Benda
Untuk pengujian proses identifikasi benda pada masing-masing area maka
ditampilkan output berupa hasil bagi pixel putih dengan total pixel keseluruhan
pada area. Selain itu juga ditampilkan output berupa list nomor tempat parkir yang
masih kosong.
3.11.9.Evaluasi Sistem Keseluruhan
Setelah melalui seluruh proses pengujian di atas maka perlu dilakukan
pengujian sistem secara keseluruhan. Dimulai dari melihat data citra yang
ditangkap oleh Kamera, dan melihat tampilan data citra yang ditampilkan window
image. Setelah itu, melalui tahap update citra, yaitu ketika waktu sistem
menunjukkan menit ke-5 atau kelipatannya maka gambar yang tersimpan pada
direktori D://Pict_TA//update.jpg akan berubah sesuai kondisi citra pada saat
menit ke-5 atau kelipatannya dan apabila waktu belum mencapai 5 menit atau
kelipatannya maka gambar yang tersimpan tidak akan berubah. Kemudian
dilanjutkan dengan melihat hasil tahap pengolahan citra, yaitu ketika tiap 5 menit
tambahan, kamera pada miniatur juga mengirimkan citra yang disorot untuk
ditampilkan pada PC secara streaming. Jika keseluruhan sistem telah berjalan
sesuai dengan langkah-langkah tersebut, maka secara keseluruhan sistem ini
46
BAB IV
PENGUJIAN SISTEM
Pengujian sistem yang dilakukan merupakan pengujian terhadap program
mendeteksi tempat parkir yang telah selesai dibuat. Dimulai dari pengambilan
citra dari webcam, pengolahan citra yang dimulai dengan streaming Citra, update
citra kondisi parkir, menentukan koordinat pada tiap-tiap area, akses pixel,
Backgorund Subtraction, thresholding, penghitungan pixel putih dan identifikasi
benda. kemudian yang terakhir adalah pengujian sistem secara keseluruhan yaitu
Program akan mengeluarkan output list nomor parkir yang kosong sesuai kondisi
setiap 5 menit sekali.
4.1 Pengujian Streaming Citra Melalui webcam
Pengujian streaming ini dilakukan dengan mengintegrasikan Microsoft
Visual C++ melalui library OpenCV. Yaitu untuk memanggil serta menjalankan
console Webcam tersebut.
4.1.1 Tujuan
Tujuan pengujian ini yaitu untuk mengetahui apakah aplikasi sudah mampu
menampilkan data citra dari webcam ke aplikasi pada Visual C++ dan apakah
4.1.2 Alat yang Digunakan
1. Microsoft Visual C++ 2008
2. Webcam
3. Personal Computer (PC)
4.1.3 Prosedur Pengujian
1. Menjalankan program console pada Microsoft Visual C++ 2008
2. Menjalankan program untuk mengakses data citra pada kamera PC tersebut
3. Melihat hasil data citra pada window
4.1.4 Hasil Pengujian
Setelah melakukan pengujian sesuai dengan prosedur diatas berikut adalah
gambar yang didapatkan dari Webcam pada Gambar 4.1.
48
4.2 Pengujian Update Citra Kondisi Parkir
Pengujian update citra kondisi parkir dilakukan dengan melihat perubahan
gambar yang tersimpan pada direktori D:\\Pict_TA\\update.jpg dan melihat time
sistem sebagai waktu acuan.
4.2.1 Tujuan
Tujuan pengujian ini yaitu untuk mengetahui apakah aplikasi sudah mampu
mengambil gambar secara otomatis setiap 5 menit sekali.
4.2.2 Alat yang Digunakan
1. Microsoft Visual C++ 2008
2. Personal Computer (PC)
3. Webcam
4. Miniatur parkir mobil
4.2.3 Prosedur Pengujian
1. Menjalankan program console pada Microsoft Visual C++ 2008
2. Menjalankan program untuk mengakses data citra pada Webcam
3. Menjalankan program untuk streaming citra
4. Menjalankan program untuk mengakses time system
5. Membuka direktori D:\\Pict_TA, melihat file bernama update.jpg
4.2.4 Hasil Pengujian
Hasil dari pengujian ini adalah mengetahui perubahan nilai pada file
update.jpg yaitu berupa perubahan gambar yang tersimpan. Karena file tersebut
akan dikurangkan dengan citra sampel. Setelah melakukan pengujian sesuai
dengan prosedur diatas berikut adalah gambar hasil proses update citra kondisi
parkir .
50
Gambar 4.3 Gambar Citra Kondisi Parkir Setelah Beberapa Menit
Pada Gambar 4.3 menunjukkan bahwa data telah di update yaitu kondisi awal
pada blok tersebut terdapat 2 mobil pada pukul 15:35 (Gambar 4.2). Kemudian
terdapat 1 mobil lagi parkir pada blok tersebut sehingga pada saat update data
maka file image “update.jpg” pada direktori D:\\Pict_TA juga akan berubah
mengikuti kondisi saat proses update terakhir.
4.3 Pengujian Penentuan Koordinat Pada Tiap Area
Pengujian penentuan koordinat pada tiap area dilakukan dengan melihat
posisi tanda persegi pada gambar yang telah ditampilkan.
4.3.1 Tujuan
Tujuan pengujian ini yaitu untuk mengetahui apakah koordinat pixel yang
menjadi acuan dari 3 area sudah tepat.
4.3.2 Alat yang Digunakan
1 Microsoft Visual C++ 2008
2 Personal Computer (PC)
3 Citra sampel
4 Citra update
4.3.3 Prosedur Pengujian
1. Menjalankan program console pada Microsoft Visual C++ 2008
2. Menjalankan program untuk mengakses data citra pada Webcam
3. Menjalankan program untuk memuat gambar
4. Menjalankan program untuk membuat tanda persegi
5. Menjalankan program untuk menampilkan window image citra sampel dan
update
4.3.4 Hasil Pengujian
Hasil dari pengujian ini adalah mengetahui apakah posisi koordinat yang
menjadi acuan proses dari masing-masing area yang telah ditentukan sudah berada
52
Gambar 4.4 Background Awal
Gambar 4.5 Background Setelah Diberi Tanda
Pada Gambar 4.5 menunjukkan bahwa proses menentukan koordinat dari
masing area berhasil dilakukan dengan member tanda persegi pada
masing-masing area. Persegi biru merupakan koordinat area 1, persegi ungu merupakan
koordinat area 2 dan persegi kuning merupakan koordinat area 3.
4.4 Pengujian Akses Pixel
Pengujian akses pixel dilakukan dengan menampilkan window image yang
bernilai biru. Selain itu ditampilkan juga output nilai dari masing-masing image
tersebut.
4.4.1 Tujuan
Tujuan pengujian ini yaitu untuk mengetahui apakah aplikasi dapat
mengakses pixel merah,hijau dan biru pada sebuah gambar.
4.4.2 Alat yang Digunakan
1. Microsoft Visual C++ 2008
2. Personal Computer (PC)
3. Citra sampel
4.4.3 Prosedur Pengujian
4. Menjalankan program console pada Microsoft Visual C++ 2008
5. Menjalankan program untuk mengakses data citra pada Webcam
6. Menjalankan program untuk memuat citra sampel
7. Menjalankan program untuk mengakses pixel
8. Menjalankan program untuk mengubah kumpulan pixel menjadi file berformat
image
9. Menjalankan program untuk menampilkan window image pixel merah, hijau
54
4.4.4 Hasil Pengujian
Hasil dari pengujian ini adalah mengetahui apakah program berhasil akses
tiap-tiap pixel sesuai dengan jenis warnanya yaitu merah,hijau dan biru. Indikasi
ketika program berhasil mengakses tiap-tiap pixel sesuai jenis warnanya adalah
hasil tampilan program berupa image kumpulan warna merah, hijau dan biru.
Berikut adalah gambar hasil pengujian akses pixel.
Gambar 4.6 Gambar Sampel
Gambar 4.8 Gambar Hasil Akses Pixel Hijau
Gambar 4.9 Gambar Hasil Akses Pixel Biru
4.5 Pengujian Background Subtraction
Pengujian Background Subraction dilakukan dengan menampilkan window
image yang berisi hasil subtraksi dari masing-masing area.
4.5.1 Tujuan
Tujuan pengujian ini yaitu untuk mengetahui apakah aplikasi dapat
56
4.5.2 Alat yang Digunakan
1. Microsoft Visual C++ 2008
2. Personal Computer (PC)
3. Citra sampel
4. Citra update
4.5.3 Prosedur Pengujian
1. Menjalankan program console pada Microsoft Visual C++ 2008
2. Menjalankan program untuk mengakses data citra pada Webcam
3. Menjalankan program untuk memuat citra sampel dan citra update
4. Menjalankan program untuk subtraksi
5. Menjalankan program untuk menampilkan window image hasil subtraksi
4.5.4 Hasil Pengujian
Hasil dari pengujian ini adalah mengetahui apakah program dapat
mengurangkan antara pixel RGB dari citra sampel dengan pixel RGB citra update.
Berikut merupakan tabel hasil proses Background Subtraction.
Tabel 4.1 Hasil Subtraction Background
Kondisi Citra update
Area 1 Setelah subtraksi
Area 2 Setelah subtraksi
Area 3 Setelah subtraksi
Kondisi kosong
Area 1 terisi
Area 1 & 2 terisi
Area 1 & 3 terisi
58
Kondisi Citra update
Area 1 Setelah subtraksi
Area 2 Setelah subtraksi
Area 3 Setelah subtraksi
Area 2 & 3 terisi
Area 3 terisi
Parkir terisi semua
Pada Tabel 4.1 merupakan hasil subtraksi dalam beberapa kondisi. Area 1,area 2
dan area 3 merupakan keterangan untuk mewakili nomor dari masing-masing slot
parkir. Seperti area 1 untuk slot parkir nomor 1, area 2 untuk slot parkir nomor 2,
dsb. Dari hasil subtraksi masing-masing area akan di thresholding agar dapat
melakukan penghitungan pixel sehingga dapat melakukan proses identifikasi