Potongan Program Aplikasi Penghitung Jumlah Orang Lewat Menggunakan Metode Normalized Sum-Squared Differences (NSSD).

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