4.2 Potongan Program
Dalam sub bab ini akan dijelaskan mengenai beberapa potongan program Visual basic
sebagai implementasi dari algoritma yang sudah dijelaskan pada bab sebelumnya.
a. Proses inisialisasi webcam Public Declare Function SendMessage Lib user32 Alias SendMessageA
ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any As Long
Public Declare Function capCreateCaptureWindowA Lib avicap32.dll ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long,
ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long As Long
Public Const WM_CAP_CONNECT As Long = 1034 Public Const WM_CAP_DISCONNECT As Long = 1035
Public Const WM_CAP_GET_FRAME As Long = 1084 Public Const WM_CAP_COPY As Long = 1054
Public Const WM_CAP_START As Long = WM_USER
Inisialisasi webcam menggunakan fungsi API pada visual basic, dimana digunakan untuk mengambil data video secara langsung dan untuk pengambilan
input berupa background image dan frame.
b. Proses menjalankan kamera If mCapHwnd 0 Then Exit Sub
FrameNum = 0 Timer1.Interval = m_TimeToCapture_milliseconds
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Me.Timer1.Enabled = False capture video
mCapHwnd = capCreateCaptureWindowAWebCap, 0, 0, 0, m_Width, m_Height, Me.hwnd, 0
DoEvents koneksi ke webcam
Call SendMessagemCapHwnd, WM_CAP_CONNECT, 0, 0 DoEvents
Call SendMessagemCapHwnd, WM_CAP_SET_PREVIEW, 0, 0 informasi timer1
bStopped = False Me.Timer1.Enabled = True
Proses menjalankan kamera dilakukan oleh user dengan menekan button capture video
, dan data video yang diambil secara langsung nantinya digunakan sebagai input yang berupa pengambilan background image dan frame
c. Proses pengambilan background image Ambil background
Picture3.Picture = Picture2.Picture
Proses pengambilan background image diambil pada saat keadaan jalan masih kosong belum ada orang lewat, dimana pengambilan background image disini
berfungsi untuk perhitungan mendapatkan nilai selisih antara nilai piksel frame dan background
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
d. Proses mendapatkan nilai RGB pada piksel dalam ROI For k = 1 To Shape2.Width Step 15
For l = 1 To Shape2.Height Step 15 pixelmasuk = Picture3.Pointk + Shape4.Left, l + Shape4.Top
pengambilan pixel pada ROI background RGB Background
red = pixelmasuk And RGB255, 0, 0 green = Intpixelmasuk And RGB0, 255, 0 256
blue = IntIntpixelmasuk And RGB0, 0, 255 256 256
Proses mendapatkan nilai RGB pada ROI dilakukan secara berurutan menggunakan proses looping hingga semua piksel pada ROI terpenuhi, nantinya
nilai RGB ini dirubah menjadi citra grayscale agar nilai piksel hanya satu.
e. Proses perubahan model warna RGB menjadi cira grayscale For k = 1 To Shape2.Width Step 15
For l = 1 To Shape2.Height Step 15 pixelmasuk = Picture3.Pointk + Shape4.Left, l + Shape4.Top
pengambilan pixel pada ROI background RGB Background
red = pixelmasuk And RGB255, 0, 0 green = Intpixelmasuk And RGB0, 255, 0 256
blue = IntIntpixelmasuk And RGB0, 0, 255 256 256 lbmasuk = red + green + blue 3
proses grayscale Picture7.PSet k, l, RGBlbmasuk, lbmasuk, lbmasuk perubahan warna setiap
pixel di ROI background pada picture Next l
Next k
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Proses perubahan model warna RGB menjadi cira grayscale seperti pada persamaan 2.1, dimana memiliki perhitungan penjumlahan nilai red, green, blue
kemudian dibagi 3, nantinya nilai piksel hanya menjadi satu dan proses perhitungan menjadi lebih mudah karena yang diolah berupa nilai piksel dari
proses grayscale
f. Proses perhitungan NSSD Penerapan NSSD
For k = 1 To Shape2.Width Step 15 For l = 1 To Shape2.Height Step 15
pixelmasuk = Picture3.Pointk + Shape4.Left, l + Shape4.Top
pengambilan pixel pada ROI background RGB Background
red = pixelmasuk And RGB255, 0, 0 green = Intpixelmasuk And RGB0, 255, 0 256
blue = IntIntpixelmasuk And RGB0, 0, 255 256 256 lbmasuk = red + green + blue 3 proses grayscale
Picture7.PSet k, l, RGBlbmasuk, lbmasuk, lbmasuk perubahan warna setiap pixel di ROI background pada picture
warnamasuk = Picture2.Pointk + Shape2.Left, l + Shape2.Top pengambilan pixel pada ROI Frame
RGB Frame
red = warnamasuk And RGB255, 0, 0 green = Intwarnamasuk And RGB0, 255, 0 256
blue = IntIntwarnamasuk And RGB0, 0, 255 256 256 lfrmasuk = red + green + blue 3 proses grayscale
Picture6.PSet k, l, RGBlfrmasuk, lfrmasuk, lfrmasuk
perubahan warna setiap pixel di ROI Frame pada picture nmasuk = nmasuk + 1
proses perhitungan jumlah pixel pada ROI frame proses pengambilan selisih frame dan background
proses pemangkatan selisih agar tidak ada nilai minus proses penjumlahan seluruh nilai selisih
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
JumSelisihNilaiPixelMasuk = JumSelisihNilaiPixelMasuk + lfrmasuk - lbmasuk 2
Next l Next k
penjumlahanpixelmasuk.Text = JumSelisihNilaiPixelMasuk txtjmlpixelmasuk.Text = nmasuk
proses mendapatkan nilai NSSDkeluar pada setiap frame NSSDmasuk = JumSelisihNilaiPixelMasuk nmasuk txtNSSDmasuk.Text =
NSSDmasuk
Proses perhitungan NSSD diawali dengan pengambilan background, mengubahnya menjadi grayscale dan menentukan detection window pada jalur
orang lewat yang akan diamati. Hal yang sama dilakukan juga untuk setiap frame video
yang ditampilkan. Detection window atau ROI Region of Interest
pada background dan frame harus pada posisi yang sama sehingga luasan area yang diamati sama persis. Jumlah nilai pixel pada frame dan
background diambil selisihnya dan dikuadratkan. Hasil tersebut dibagi dengan
luasan detection window untuk dinormalisasi, seperti pada persamaan 2.4
g. Proses perhitungan filtering
proses filtering JumFramemasuk = JumFramemasuk + 1
perhitungan jumlah frame txtjmlframemasuk.Text = JumFramemasuk
JumNSSDmasuk = JumNSSDmasuk + NSSDmasuk penjumlahan nilai
NSSDkeluar setiap frame txtjmlNSSDmasuk = JumNSSDmasuk
Filtermasuk = JumNSSDmasuk JumFramemasuk proses pencarian nilai Rata2
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
txtfiltermasuk.Text = Filtermasuk
Proses filtering disini menggunakan LowPass Filter
ini menggunakan cara merata-rata setiap data yang diperoleh. Proses filtering membutuhkan input
jumlah frame dan jumlah nilai NSSD, dimna nanti proses perhitungannya adalah jumlah nilai NSSD jumlah frame. Perhitungan ini sesui dengan persamaan 2.2.
h. Proses perhitungan thresholding proses thresholding
threshold = Filter Valcmbxnilaipengali.Text proses perhitungan nilai filter
dengan nilai pengali yang ditentukan oleh user txthasiltresholdmasuk.Text = thresholdmasuk
Perhitungan proses thresholding mempunyai input berupa nilai rata-rata NSSD nilai hasil dari proses filtering yang dikalikan oleh nilai pengali yang diberikan
oleh user, fungsi proses thresholding disini adalah mengubah citra greyscale menjadi citra biner, seperti pada persamaan 2.3.
i. Proses perhitungan orang lewat
proses perhitungan orang lewat If NSSDmasuk thresholdmasuk Then
txtstatusmasuk.Text = 1 If Valtxttempmasuk.Text Valtxtstatusmasuk.Text Then
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Jummasuk = Jummasuk + 1 txtJummasuk.Text = Jummasuk
End If Else
NSSDmasuk thresholdmasuk txtstatusmasuk.Text = 2
End If txttempmasuk.Text = txtstatusmasuk.Text
Proses perhitungan orang lewat memiliki data masukan berupa nilai NSSD, nilai threshold. Melakukan perhitungan jumlah orang yang lewat, Apabila nilai
NSSD lebih besar dari nilai threshold maka satus = 1 Lewat dan apabila nilai NSSD lebih kecil dari nilai threshold maka status = 2 Kosong. Jumlah
orang bertambah apabila Apabila nilai NSSD lebih besar dari nilai threshold
dan status pada frame tersebut tidak sama dengan status pada frame sebelumnya Temp.
4.3 Implementasi Antarmuka