Perhitungan Jumlah Manusia Pada Suatu Citra Berdasarkan Pendeteksian Warna Kulit.

(1)

i

PERHITUNGAN JUMLAH MANUSIA PADA SUATU CITRA BERDASARKAN PENDETEKSIAN WARNA KULIT

Gandhi Inda Punna / 0622037 E-mail : wolfowitz_mugen@yahoo.co.uk

Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha Jalan Prof. Drg. Suria Sumantri 65

Bandung 40164, Indonesia

ABSTRAK

Perhitungan jumlah manusia pada suatu area tertentu dibutuhkan untuk mengetahui parameter keberhasilan suatu tempat keramaian. Perhitungan secara manual sudah mulai banyak ditinggalkan karena sangat rentan terjadinya kesalahan, terutama kesalahan perhitungan yang diakibatkan oleh human error. Untuk menanggulanginya, maka dibuat suatu sistem yang dapat melakukan perhitungan jumlah manusia pada suatu area tertentu.

Pada tugas akhir ini dibuat sebuah perangkat lunak untuk menghitung jumlah manusia pada suatu citra berdasarkan pendeteksian warna kulit. Proses ini diawali dengan pengambilan dua citra melalui kamera web, citra pertama adalah citra latar belakang tanpa objek dan citra kedua adalah citra hasil capture yang sudah ada objek. Setelah itu, dilakukan pemisahan latar belakang dengan objek, kemudian citra objek dipisahkan antara objek manusia dan objek yang bukan manusia berdasarkan pendeteksian warna kulit pada distribusi warna YCbCr. Setelah objek manusia terdeteksi dilakukan perhitungan jumlah objek manusia tersebut. Keluaran dari program adalah angka yang menandakan jumlah objek manusia yang terdeteksi.

Dalam pengujian dengan menggunakan empat buah latar belakang yang berbeda dan pada jumlah objek manusia yang berbeda-beda, program berhasil melakukan proses pemisahan latar belakang dengan objek, dan proses perhitungan jumlah manusia sangat dipengaruhi oleh warna pakaian yang dikenakan oleh objek manusia, sedangkan latar belakang tidak mempengaruhi perhitungan.


(2)

ii

CALCULATION THE NUMBER OF PEOPLE IN AN IMAGE

BASED ON SKIN COLOR DETECTION

Gandhi Inda Punna / 0622037 E-mail : wolfowitz_mugen@yahoo.co.uk

Electrical Engineering, Faculty of Engineering , Maranatha Christian University

Prof. Drg. Suria Sumantri 65 Street Bandung 40164, Indonesia

ABSTRACT

The calculation of the number of people in a particular area is needed to determine the parameters of success of a crowded place. Manual calculations were already widely abandoned because it is very susceptible of errors, mainly due to miscalculations by human error. To fix this problem, then was made a system that can perform calculations on a number of people in specific area.

In this Final project is made a software to count the number of people in an image based on skin color detection. This process begins with the capture of two images through a web camera, the first image is the background image without the object and the second image is the image capture of existing objects. After that, the separation of the background done with the object, then the image of the object is separated between humans and objects rather than human object detection based on skin color in YCbCr color distribution. After the human object is detected object is the calculation of the amount of people. The output of the program is a number that indicates the number of human objects detected.

This test using four different backgrounds and the number of human objects different, the program succeeded in doing background separation process with the object, and the process of calculating the number of people are influenced by the color of the clothes used by the human object, while the background is not affect the calculation.


(3)

v

DAFTAR ISI

ABSTRAK ... i

ABSTRACT ... ii

KATA PENGANTAR ... iii

DAFTAR ISI ... v

DAFTAR TABEL ... vii

DAFTAR GAMBAR ... viii

BAB 1 PENDAHULUAN 1.1 Latar Belakang ... 1

1.2 Perumusan Masalah ... 1

1.3 Tujuan ... 1

1.4 Pembatasan Masalah ... 2

1.5 Sistematika Penulisan ... 2

BAB 2 LANDASAN TEORI 2.1 Pengolahan Citra Digital ... 4

2.2 Piksel ... 5

2.3 Piksel Tetangga ... 6

2.4 Komponen Warna Citra ... 7

2.5 Deteksi Warna Kulit ... 11

2.6 Pelabelan Komponen ... 12

2.7 Kamera Web... 14

BAB 3 PERANCANGAN DAN REALISASI 3.1 Kamera Web... 18

3.2 Pengambilan Citra (Capture Image) ... 19

3.3 Pemisahan Latar Belakang Dan Objek ... 20


(4)

vi

3.5 Pendeteksian Objek Manusia. ... 23

3.6 Perhitungan Jumlah Manusia Yang Terdeteksi... 24

3.7 Perancangan Antar Muka Pemakai (User Interface) ... 25

BAB 4 PENGUJIAN PERANGKAT LUNAK 4.1 Data Pengamatan ... 40

4.1.1 Latar Belakang Berwarna Putih ... 40

4.1.2 Latar Belakang Berwarna Biru... 52

4.1.3 Latar Belakang Sembarang ... 63

4.1.4 Latar Belakang Bergambar Wallpaper... 74

4.2 Analisis Data ... 77

4.2.1 Latar Belakang Berwarna Putih ... 77

4.2.2 Latar Belakang Berwarna Biru... 77

4.2.3 Latar Belakang Sembarang ... 78

4.2.4 Latar Belakang Bergambar Wallpaper... 79

BAB 5 KESIMPULAN DAN SARAN 5.1 Kesimpulan ... 80

5.2 Saran ... 80

DAFTAR PUSTAKA ... 81


(5)

vii

DAFTAR TABEL

Tabel 3.1 Komponen dan Properti Program... 26 Tabel 4.1 Data Pengamatan Dengan Menggunakan Latar Belakang Berwarna Putih ... 77 Tabel 4.2 Data Pengamatan Dengan Menggunakan Latar Belakang Berwarna Biru ... 77 Tabel 4.3 Data Pengamatan Dengan Menggunakan Latar Belakang Sembarang

... 78 Tabel 4.4 Data Pengamatan Dengan Menggunakan Latar Belakang Bergambar


(6)

viii

DAFTAR GAMBAR

Gambar 2.1 Contoh Gambar Pembagian Piksel ... 5

Gambar 2.2 Piksel – Piksel Tetangga ... 6

Gambar 2.3 Visualisasi Ruang Warna RGB ... 7

Gambar 2.4 Visualisasi Ruang Warna YCbCr... 8

Gambar 2.5 Contoh konversi citra RGB menjadi grayscale ... 10

Gambar 2.6 Contoh barcode yang mengandung citra hitam putih ... 10

Gambar 2.7 Citra hitam putih menurut pembagian piksel ... 10

Gambar 2.8 Sebuah citra biner dan urutan pembagian label pada objek-objeknya ... 13

Gambar 3.1 Blok Diagram Sistem ... 16

Gambar 3.2 Diagram Alir Secara Keseluruhan ... 17

Gamvar 3.3 Diagram Alir Pengambilan Citra ... 19

Gambar 3.4 Diagram Alir Pemisahan Latar Belakang Dan Objek ... 20

Gambar 3.5 Diagram Alir Pendeteksian Warna Kulit Dengan Cara Membandingkan Dengan Daerah Batas Warna Kulit ... 22

Gambar 3.6 Diagram Alir Sub Program Untuk Mengubah Nilai RGB Ke YCbCr ... 23

Gambar 3.7 Pendeteksian Objek Manusia ... 24

Gambar 3.8 Perhitungan Jumlah Manusia Yang Terdeteksi... 25

Gambar 3.9 Tampilan Antar Muka Pemakai ... 26

Gambar 4.1 Pengambilan gambar satu orang objek dengan latar belakang warna putih ... 41

Gambar 4.2 Hasil perhitungan satu orang objek dengan latar belakang warna putih ... 41

Gambar 4.3 Pengambilan gambar dua orang objek dengan latar belakang warna putih ... 42

Gambar 4.4 Hasil perhitungan dua orang objek dengan latar belakang warna putih ... 42


(7)

ix

Gambar 4.5 Pengambilan gambar tiga orang objek dengan latar belakang warna putih ... 43 Gambar 4.6 Hasil perhitungan tiga orang objek dengan latar belakang warna

putih ... 44 Gambar 4.7 Pengambilan gambar dua orang objek dengan pakaian berwarna gelap

bersentuhan dan latar belakang warna putih ... 45 Gambar 4.8 Hasil perhitungan dua orang objek dengan pakaian berwarna gelap bersentuhan dan latar belakang warna putih ... 45 Gambar 4.9 Pengambilan gambar dua orang objek dengan warna pakaian cerah

bersentuhan dan latar belakang warna putih ... 46 Gambar 4.10 Hasil perhitungan dua orang objek dengan warna pakaian cerah

bersentuhan dan latar belakang warna putih ... 46 Gambar 4.11 Pengambilan gambar tiga orang objek dengan pakaian berwarna gelap

bersentuhan dan latar belakang warna putih ... 47 Gambar 4.12 Hasil perhitungan tiga orang objek dengan pakaian berwarna gelap

bersentuhan dan latar belakang warna putih ... 48 Gambar 4.13 Pengambilan gambar tiga orang objek dengan warna pakaian cerah bersentuhan dan latar belakang warna putih ... 49 Gambar 4.14 Hasil perhitungan tiga orang objek dengan warna pakaian cerah

bersentuhan dan latar belakang warna putih ... 49 Gambar 4.15 Pengambilan gambar satu orang objek dan objek benda dengan latar

belakang warna putih ... 50 Gambar 4.16 Hasil perhitungan satu orang objek dan objek benda dengan latar

belakang warna putih ... 50 Gambar 4.17 Pengambilan gambar dua orang objek dan objek benda dengan latar

belakang warna putih ... 51 Gambar 4.18 Hasil perhitungan dua orang objek dan objek benda dengan latar

belakang warna putih ... 51 Gambar 4.19 Pengambilan gambar satu orang objek dengan latar belakang warna biru ... 52 Gambar 4.20 Hasil perhitungan satu orang objek dengan latar belakang warna biru


(8)

x

Gambar 4.21 Pengambilan gambar dua orang objek dengan latar belakang warna biru ... 54 Gambar 4.22 Hasil perhitungan dua orang objek dengan latar belakang warna biru

... 54 Gambar 4.23 Pengambilan gambar tiga orang objek dengan latar belakang warna biru ... 55 Gambar 4.24 Hasil perhitungan tiga orang objek dengan latar belakang warna

biru ... 55 Gambar 4.25 Pengambilan gambar dua orang objek dengan pakaian berwarna

gelap bersentuhan dan latar belakang warna biru ... 56 Gambar 4.26 Hasil perhitungan dua orang objek dengan pakaian berwarna gelap

bersentuhan dan latar belakang warna biru ... 56 Gambar 4.27 Pengambilan gambar dua orang objek dengan pakaian berwarna cerah

bersentuhan dan latar belakang warna biru ... 57 Gambar 4.28 Hasil perhitungan dua orang objek dengan pakaian berwarna cerah

bersentuhan dan latar belakang warna biru ... 58 Gambar 4.29 Pengambilan gambar tiga orang objek dengan pakaian berwarna

gelap bersentuhan dan latar belakang warna biru ... 59 Gambar 4.30 Hasil perhitungan tiga orang objek dengan pakaian berwarna gelap

bersentuhan dan latar belakang warna biru ... 59 Gambar 4.31 Pengambilan gambar tiga orang objek dengan pakaian berwarna cerah

bersentuhan dan latar belakang warna biru ... 60 Gambar 4.32 Hasil perhitungan tiga orang objek dengan pakaian berwarna cerah

bersentuhan dan latar belakang warna biru ... 60 Gambar 4.33 Pengambilan gambar satu orang objek dan objek benda dengan latar

belakang warna biru ... 61 Gambar 4.34 Hasil perhitungan satu orang objek dan objek benda dengan latar

belakang warna biru ... 62 Gambar 4.35 Pengambilan gambar dua orang objek dan objek benda dengan latar

belakang warna biru ... 63 Gambar 4.36 Hasil perhitungan dua orang objek dan objek benda dengan latar


(9)

xi

Gambar 4.37 Pengambilan gambar satu orang objek dengan latar belakang sembarang ... 64 Gambar 4.38 Hasil perhitungan satu orang objek dengan latar belakang

sembarang ... 64 Gambar 4.39 Pengambilan gambar dua orang objek dengan latar belakang

sembarang ... 65 Gambar 4.40 Hasil perhitungan dua orang objek dengan latar belakang

sembarang ... 66 Gambar 4.41 Pengambilan gambar tiga orang objek dengan latar belakang

sembarang ... 67 Gambar 4.42 Hasil perhitungan tiga orang objek dengan latar belakang

sembarang ... 67 Gambar 4.43 Pengambilan gambar satu orang objek dan objek benda dengan latar

belakang sembarang ... 68 Gambar 4.44 Perhitungan satu orang objek dan objek benda dengan latar belakang

sembarang ... 68 Gambar 4.45 Pengambilan gambar dua orang objek bersentuhan dengan latar

belakang sembarang ... 69 Gambar 4.46 Hasil perhitungan dua orang objek bersentuhan dengan latar belakang

sembarang ... 70 Gambar 4.47 Pengambilan gambar tiga orang objek bersentuhan dengan latar

belakang sembarang ... 71 Gambar 4.48 Hasil perhitungan tiga orang objekbersentuhan dengan latar belakang

sembarang ... 71 Gambar 4.49 Pengambilan gambar dua orang objek dan objek benda dengan latar

belakang sembarang ... 72 Gambar 4.50 Hasil perhitungan dua orang objek dan objek benda dengan latar

belakang sembarang ... 72 Gambar 4.51 Pengambilan gambar dua orang objek yang sedang memegang objek

benda bersamaan dengan latar belakang sembarang ... 73 Gambar 4.52 Hasil perhitungan dua orang objek yang sedang memegang objek


(10)

xii

Gambar 4.53 Pengambilan gambar satu orang objek dengan latar belakang bergambar wallpaper ... 74 Gambar 4.54 Hasil perhitungan satu orang objekdengan latar belakang bergambar

wallpaper ... 75

Gambar 4.54 Pengambilan gambar satu orang objek dengan latar belakang bergambar wallpaper ... 76 Gambar 4.55 Hasil perhitungan satu orang objek dengan latar belakang bergambar


(11)

A-1

Universitas Kristen Maranatha LISTING PROGRAM PADA MICROSOFT VISUAL BASIC 6.0

1. Program pada Form 1 (Program Utama) Dim imageArray() As Byte

Dim oldX As Long, oldY As Long Dim pNum As Long, pTot As Long

Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA"

(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

Private Sub Command1_Click()

Picture2.Picture = Picture1.Picture End Sub

Private Sub Command2_Click() STARTCAM

Load Progress Progress.Show Progress.start Unload Progress

Command2.Enabled = False Command3.Enabled = True

Picture1.AutoRedraw = True Picture2.AutoRedraw = True


(12)

A-2

Universitas Kristen Maranatha Timer1.Enabled = True

End Sub

Private Sub Command3_Click() STOPCAM

Command3.Enabled = False Command2.Enabled = True

Picture1.Picture = LoadPicture("nosignal.bmp") Picture2.Picture = LoadPicture("nosignal.bmp")

End Sub

Private Sub Command5_Click()

SavePicture Picture1.Picture, App.Path +

"\Detected\" + Format(Date, "ddmmyyyy") + "__" + Format(Time, "hhmmss") + ".bmp"

Picture3.Picture = Picture1.Picture For o = 1 To Picture2.ScaleWidth For p = 1 To Picture2.ScaleHeight warna = Picture2.Point(o, p)

r = warna And RGB(255, 0, 0)

g = Int((warna And RGB(0, 255, 0)) / 256) B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

xr = 1.6 * r xg = 1.6 * g xb = 1.6 * B


(13)

A-3

Universitas Kristen Maranatha Next p

Next o End Sub

Private Sub Command6_Click()

For i = 1 To Picture2.ScaleWidth - 1

For j = 1 To Picture2.ScaleHeight - 1 warna = Picture2.Point(i, j)

r1 = warna And RGB(255, 0, 0)

g1 = Int((warna And RGB(0, 255, 0)) / 256) b1 = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

warna = Picture3.Point(i, j) r2 = warna And RGB(255, 0, 0)

g2 = Int((warna And RGB(0, 255, 0)) / 256) b2 = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

r = r1 - r2

If r > 255 Then r = 255 If r < 0 Then r = 0

g = g1 - g2

If g > 255 Then g = 255 If g < 0 Then g = 0

B = b1 - b2

If B > 255 Then B = 255 If B < 0 Then B = 0


(14)

A-4

Universitas Kristen Maranatha

Next j Next i

For kl = 1 To Picture5.ScaleWidth - 1 For mn = 1 To Picture5.ScaleHeight - 1 warna = Picture5.Point(kl, mn)

r = warna And RGB(255, 0, 0)

g = Int((warna And RGB(0, 255, 0)) / 256)

B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

x = (r + g + B) / 3

If x < 102 Then x = 0 Else x = 255

Picture5.PSet (kl, mn), RGB(x, x, x) Next mn

Next kl End Sub

Private Sub Command7_Click() For i = 1 To Picture3.ScaleWidth For j = 1 To Picture3.ScaleHeight warna = Picture3.Point(i, j)

r = warna And RGB(255, 0, 0)

g = Int((warna And RGB(0, 255, 0)) / 256)

B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

xr = 2 * r xg = 2 * g xb = 2 * B


(15)

A-5

Universitas Kristen Maranatha Next j

Next i

n = 0

x = Picture5.ScaleWidth y = Picture5.ScaleHeight For brs = 1 To y

For klm = 1 To x

wrn = Picture5.Point(klm, brs) k = wrn And RGB(255, 0, 0)

l = Int((wrn And RGB(0, 255, 0)) / 256)

m = Int(Int((wrn And RGB(0, 0, 255)) / 256) / 256) If (k > 200) And (l > 200) And (m > 200) Then

gwrn = Picture3.Point(klm, brs) gk = gwrn And RGB(255, 0, 0)

gl = Int((gwrn And RGB(0, 255, 0)) / 256)

gm = Int(Int((gwrn And RGB(0, 0, 255)) / 256) / 256)

y = 0.257 * gk + 0.504 * gl + 0.098 * gm + 16 cb = 0.148 * gk - 0.291 * gl + 0.439 * gm + 128 cr = 0.439 * gk - 0.368 * gl - 0.071 * gm + 128 If y > 53.697 And y < 234.261 And cb > 131.428 And cb < 203.42 And cr > 126.095 And cr < 183.67 Then k = 255

l = 255 m = 255 n = n + 1

Else

k = 0 l = 0


(16)

A-6

Universitas Kristen Maranatha m = 0

End IfPicture4.PSet (klm, brs), RGB(k, l, m)

Next klm Next brs End Sub

Private Sub Command8_Click() For i = 1 To Picture4.ScaleWidth

For j = 1 To Picture4.ScaleHeight warna = Picture4.Point(i, j) r1 = warna And RGB(255, 0, 0)

g1 = Int((warna And RGB(0, 255, 0)) / 256) b1 = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

warna = Picture5.Point(i, j) r2 = warna And RGB(255, 0, 0)

g2 = Int((warna And RGB(0, 255, 0)) / 256) b2 = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

r = r1 Or r2

If r > 255 Then r = 255 If r < 0 Then r = 0

g = g1 Or g2

If g > 255 Then g = 255 If g < 0 Then g = 0

B = b1 Or b2

If B > 255 Then B = 255 If B < 0 Then B = 0


(17)

A-7

Universitas Kristen Maranatha Picture6.Refresh

Next j

Picture6.Refresh Next i

End Sub

Private Sub Command9_Click() Dim dib As New cDIB

dib.GetImageData Picture6, imageArray '---

Dim tmpheight As Long, tmpwidth As Long tmpheight = Picture6.ScaleHeight

tmpwidth = Picture6.ScaleWidth

'---

Dim x As Long, y As Long Dim xy() As Long

ReDim xy(0 To tmpwidth * 3) For x = 0 To tmpwidth * 3 xy(x) = x * 3

Next

'---

Dim temp As Long

ReDim imBW(tmpwidth - 1, tmpheight - 1) 'mendapatkan gambar hitam dan putih For x = 0 To tmpwidth - 1

For y = 0 To tmpheight - 1


(18)

A-8

Universitas Kristen Maranatha If temp = 255 Then temp = 1

imBW(x, y) = temp Next

Next

'==[Algoritma Pelabelan Pada Komponen Terkoneksi]===

Dim n As Long, min As Long, i As Long, j As Long, rep As Long

Dim label() As Long, mask(4) As Long, bscan As Long ReDim label(tmpwidth - 1, tmpheight - 1)

If IsNumeric(Text1.Text) = False Then Exit Sub rep = Text1.Text - 1

Dim amount As Long amount = 1000

For j = 0 To rep n = 1

fwdscan:

For x = 1 To tmpwidth - 2 For y = 1 To tmpheight - 2

mask(0) = label(x - 1, y - 1) mask(1) = label(x, y - 1) mask(2) = label(x + 1, y - 1) mask(3) = label(x - 1, y) mask(4) = label(x, y) If imBW(x, y) = 1 Then

temp = mask(0) Or mask(1) Or mask(2) Or mask(3)


(19)

A-9

Universitas Kristen Maranatha label(x, y) = n: bscan = 1

n = n + 1 Else

min = mask(0) For i = 1 To 4

If min = 0 Then min = mask(i): GoTo cont

If mask(i) < min And mask(i) <> 0 Then min = mask(i)

cont:

Next

label(x, y) = min: bscan = 1 End If

End If Next

Next

backscan:

For x = 1 To tmpwidth - 2 For y = 1 To tmpheight - 2

If label((tmpwidth - 1) - x, (tmpheight - 1) - y) <> 0 Then

mask(0) = label((tmpwidth - 1) - (x - 1), (tmpheight - 1) - (y - 1))

mask(1) = label((tmpwidth - 1) - x, (tmpheight - 1) - (y - 1))

mask(2) = label((tmpwidth - 1) - (x + 1), (tmpheight - 1) - (y - 1))

mask(3) = label((tmpwidth - 1) - (x - 1), (tmpheight - 1) - y)

mask(4) = label((tmpwidth - 1) - x, (tmpheight - 1) - y)


(20)

A-10

Universitas Kristen Maranatha min = mask(0)

For i = 1 To 4

If min = 0 Then min = mask(i): GoTo cont2 If mask(i) < min And mask(i) <> 0 Then min = mask(i)

cont2: Next

label((tmpwidth - 1) - x, (tmpheight - 1) - y) = min

End If Next

Next

Next

finish:

Dim count() As Long ReDim count(amount, 4) Dim m As Long

For y = 0 To tmpheight - 1 For x = 0 To tmpwidth - 1

count(label(x, y), 0) = count(label(x, y), 0) + 1 'mengatur berapa banyak dari jumlah label 'no' yang telah didapat

If count(label(x, y), 1) = 0 Then

count(label(x, y), 1) = x: count(label(x, y), 2) = x: _

count(label(x, y), 3) = y: count(label(x, y), 4) = y 'mengatur semua min & max koordinat x dan y untuk min 1 ..


(21)

A-11

Universitas Kristen Maranatha

'update setiap koordinat

If x < count(label(x, y), 1) And count(label(x, y), 1) <> 0 Then count(label(x, y), 1) = x 'update coordinate x min (if x < than the prev value)

If x > count(label(x, y), 2) And count(label(x, y), 2) <> 0 Then count(label(x, y), 2) = x '

If y < count(label(x, y), 3) And count(label(x, y), 3) <> 0 Then count(label(x, y), 3) = y '

If y > count(label(x, y), 4) And count(label(x, y), 4) <> 0 Then count(label(x, y), 4) = y '

Next Next

'===[ BOUNDING BOX ]===

'MEMBEDAKAN KOTAK yang terdeteksi dan yang berlabel OBJEK

For i = 0 To amount

If count(i, 0) <> 0 And count(i, 0) > 15 And i <> 0 Then 'jika label menemukan tidak nol,> 5 dan label tidak '0 '

m = m + 1

Picture6.Line (count(i, 1), (tmpheight - 1) - count(i, 3))-(count(i, 2), (tmpheight - 1) -

count(i, 4)), vbRed, B

End If Next


(22)

A-12

Universitas Kristen Maranatha Label1.Caption = "Human found : " & m

pTot = m

End Sub

Private Sub Form_Load()

Picture1.Picture = LoadPicture("nosignal.bmp") Picture2.Picture = LoadPicture("nosignal.bmp") End Sub

Private Sub Timer1_Timer()

'mendapatkan gambar dari kamera

SendMessage mCapHwnd, GET_FRAME, 0, 0 SendMessage mCapHwnd, COPY, 0, 0

Picture1.Picture = Clipboard.GetData: Clipboard.Clear

End Sub

Sub STOPCAM()

DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0 End Sub

Sub STARTCAM()

'Memulai kamera untuk mengambil gambar

mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0)

DoEvents

SendMessage mCapHwnd, CONNECT, 0, 0 'menghubungkan kamera


(23)

A-13

Universitas Kristen Maranatha 2. Program pada ClassModule

Option Explicit

Private Type BITMAPINFOHEADER '40 bytes biSize As Long

biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long End Type

Private Type RGBQUAD Red As Byte

Green As Byte Blue As Byte End Type

Private Type BITMAP bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long


(24)

A-14

Universitas Kristen Maranatha '---

' Tambahan (Deklarasi)

'--- Private Type BITMAPINFO

bmHeader As BITMAPINFOHEADER bmColors(0 To 255) As RGBQUAD End Type

Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, ByRef lpObject As Any) As Long 'pemanggilan fungsi API

Private Declare Function GetDIBits Lib "gdi32" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long

'--- ' Fungsi Tambahan

'---

Public Function GetImageData(ByRef SrcPictureBox As PictureBox, ByRef ImageData() As Byte)

'Deklarasi beberapa variabel yang diperlukan tipe bitmap

Dim bm As BITMAP

Dim bmi As BITMAPINFO Dim arraywidth As Long

'Mengisi BMI (Bitmap informasi variabel) dengan semua data yang sesuai


(25)

A-15

Universitas Kristen Maranatha bmi.bmHeader.biSize = 40 'Ukuran, dalam satuan byte, dari header (selalu 40)

bmi.bmHeader.biPlanes = 1 'Jumlah plane (selalu satu untuk contoh ini)

bmi.bmHeader.biBitCount = 24 'Bit per pixel (selalu 24 untuk contoh ini)

bmi.bmHeader.biCompression = 0 'Kompresi: standar / tidak ada

'Hitung ukuran tipe bitmap (dalam bytes) Dim bmLen As Long

bmLen = Len(bm)

'Mendapatkan informasi picturebox dari

SrcPictureBox dan memasukkannya ke dalam variabel 'bm'

GetObject SrcPictureBox.Image, bmLen, bm arraywidth = (bm.bmWidth * 3) - 1

arraywidth = arraywidth + (bm.bmWidth Mod 4) 'Membangun ukuran array dengan benar

ReDim ImageData(0 To arraywidth, 0 To bm.bmHeight - 1)

'Selesai membangun 'BMI' variabel kita ingin melakukan panggilan langsung ke GetDIBits (yang sama kami gunakan di atas)

bmi.bmHeader.biWidth = bm.bmWidth bmi.bmHeader.biHeight = bm.bmHeight

‘mengisi variabel 'BMI', dengan menggunakan

GetDIBits untuk mengambil data

'SrcPictureBox dan memasukkannya ke dalam ImageData () array menggunakan pengaturan dalam 'BMI'


(26)

A-16

Universitas Kristen Maranatha GetDIBits SrcPictureBox.hdc,

SrcPictureBox.Image, 0, bm.bmHeight, ImageData(0, 0), bmi, 0

End Function

3. Program pada Modul Camera

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 mCapHwnd As Long

Public Const CONNECT As Long = 1034 Public Const DISCONNECT As Long = 1035 Public Const GET_FRAME As Long = 1084 Public Const COPY As Long = 1054


(27)

1

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Di jaman yang serba berkembang seperti sekarang, data jumlah manusia pada suatu area tertentu sangat penting. Data jumlah manusia tersebut biasanya didapat secara manual, tetapi perhitungan secara manual mulai banyak ditinggalkan karena rentan terjadinya kesalahan, terutama kesalahan perhitungan yang diakibatkan oleh human error. Untuk menanggulanginya, maka dibuat suatu sistem yang dapat melakukan perhitungan jumlah manusia pada suatu area tertentu.

Salah satu aplikasinya adalah menggunakan kamera web dengan bantuan teknologi pengolahan citra digital (metode segmentasi citra dan pendeteksian warna kulit), sehingga dapat melakukan perhitungan secara otomatis. Dengan sistem tersebut, diharapkan perhitungan jumlah manusia pada suatu daerah tertentu dapat ditentukan lebih tepat, sehingga kesalahan perhitungan akibat

human error terhindari.

Pada tugas akhir ini akan dibuat suatu sistem yang dapat menghitung jumlah manusia berdasarkan pendeteksian warna kulit manusia melalui kamera web.

1.2 Perumusan Masalah

Bagaimana menghitung jumlah manusia pada area tertentu, dengan metode segmentasi citra dan pendeteksian warna kulit manusia?

1.3 Tujuan

Tujuan dari Tugas Akhir ini adalah membuat sebuah sistem untuk menghitung jumlah manusia pada area tertentu dengan metode segmentasi citra dan pendeteksian warna kulit melaui kamera web.


(28)

2

Universitas Kristen Maranatha 1.4 Pembatasan Masalah

Dalam tugas akhir ini, pembatasan dibatasi sampai hal-hal berikut yaitu : 1. Dalam pendeteksian citra warna kulit manusia berdasarkan hasil dari

Laporan Tugas Akhir Elrica Pranata (0422002) yang berjudul PENDETEKSIAN WARNA KULIT BERDASARKAN DISTRIBUSI WARNA YCbCr.

2. Penempatan kamera web pada posisi yang strategis.

3. Intensitas cahaya yang cukup untuk mendapatkan hasil yang maksimal dalam pengambilan gambar.

4. Objek manusia yang terdeteksi tidak semua bagian badannya, melainkan hanya bagian kepala hingga dada saja.

5. Warna latar yang dipakai kontras dengan warna pakaian dan kulit manusia. 6. Gambar yang diolah adalah gambar hasil capture dari kamera web.

7. Patung yang menyerupai manusia yang biasa digunakan untuk pajangan pakaian yang memiliki warna seperti warna kulit manusia (manekin) adalah pengecualian.

8. Jumlah manusia maksimum yang dideteksi adalah tiga orang.

1.5 Sistematika Penulisan.

Sistematika penulisan tugas akhir ini dibagi menjadi 5 bab, yaitu: Bab 1 : Pendahuluan.

Bab ini membahas tentang latar belakang, perumusan masalah, tujuan, pembatasan masalah, dan sistematika penulisan.

Bab 2 : Landasan Teori.

Bab ini membahas tentang landasan teori dari pengolahan citra digital, piksel, piksel tetangga, komponen warna citra, deteksi warna kulit, pelabelan komponen, dan kamera web.

Bab 3 : Perancangan Perangkat Lunak.

Bab ini membahas tentang perancangan dan realisasi perangkat lunak (software) untuk melakukan perhitungan jumlah manusia berdasarkan metode segmentasi citra dan pendeteksian warna kulit.


(29)

3

Universitas Kristen Maranatha Bab 4 : Pengujian Perangkat Lunak.

Bab ini membahas tentang pengujian perangkat lunak untuk melakukan perhitungan jumlah manusia berdasarkan metode segmentasi citra dan pendeteksian warna kulit.

Bab 5 : Kesimpulan dan Saran.

Bab ini membahas tentang kesimpulan dan saran untuk perbaikan serta pengembangan lebih lanjut.


(30)

80

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Perhitungan jumlah manusia dengan metode pendeteksian warna kulit sangat dipengaruhi oleh warna pakaian yang dikenakan oleh objek manusia.

2. Berdasarkan pada pengujian semua latar, proses pemisahan objek dan latar belakang berhasil dilakukan.

5.2 Saran

1. Algoritma pendeteksian warna kulit disempurnakan, sehingga dapat lebih akurat dalam mendeteksi warna kulit manusia dan dapat membedakan manusia atau bukan walaupun warna pakaian objek menyerupai warna kulit manusia.

2. Untuk selanjutnya diharapkan dapat dibuat suatu program perhitungan yang real time agar selalu memperbaharui data.


(31)

81

DAFTAR PUSTAKA

1. Ahmad, Usman, “Pengolahan Citra Digital dan Teknik Pemrogramannya,”, Graha Ilmu, Yogyakarta, 2005

2. Basuki, Achmad, Jozua F.Palandi, Fatchurrochman,”Pengolahan Citra Digital menggunakan Visual Basic”, Graha Ilmu, Yogyakarta, 2005. 3. Bovik, Al, “The Essential Guide To Image Processing,” Academic Press,

2009.

4. Pratt, William K., “Digital Image Processing Fourth Edition,” A Wiley-Interscience Publication, 2007.

5. Pranata, Elrica, “Pendeteksian Warna Kulit Berdasarkan Distribusi Warna YCbCr”, Universitas Kristen Maranatha, Bandung, 2009.

6. Sihar, Rubinhut, “Aplikasi Pengolahan Citra Digital Untuk Menghitung Jumlah Suatu Objek Pada Suatu Daerah Pengamatan,” Universitas Kristen maranatha Bandung, 2008.


(1)

A-16

Universitas Kristen Maranatha GetDIBits SrcPictureBox.hdc,

SrcPictureBox.Image, 0, bm.bmHeight, ImageData(0, 0), bmi, 0

End Function

3. Program pada Modul Camera

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 mCapHwnd As Long

Public Const CONNECT As Long = 1034 Public Const DISCONNECT As Long = 1035 Public Const GET_FRAME As Long = 1084 Public Const COPY As Long = 1054


(2)

1

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Di jaman yang serba berkembang seperti sekarang, data jumlah manusia pada suatu area tertentu sangat penting. Data jumlah manusia tersebut biasanya didapat secara manual, tetapi perhitungan secara manual mulai banyak ditinggalkan karena rentan terjadinya kesalahan, terutama kesalahan perhitungan yang diakibatkan oleh human error. Untuk menanggulanginya, maka dibuat suatu sistem yang dapat melakukan perhitungan jumlah manusia pada suatu area tertentu.

Salah satu aplikasinya adalah menggunakan kamera web dengan bantuan teknologi pengolahan citra digital (metode segmentasi citra dan pendeteksian warna kulit), sehingga dapat melakukan perhitungan secara otomatis. Dengan sistem tersebut, diharapkan perhitungan jumlah manusia pada suatu daerah tertentu dapat ditentukan lebih tepat, sehingga kesalahan perhitungan akibat human error terhindari.

Pada tugas akhir ini akan dibuat suatu sistem yang dapat menghitung jumlah manusia berdasarkan pendeteksian warna kulit manusia melalui kamera web.

1.2 Perumusan Masalah

Bagaimana menghitung jumlah manusia pada area tertentu, dengan metode segmentasi citra dan pendeteksian warna kulit manusia?

1.3 Tujuan

Tujuan dari Tugas Akhir ini adalah membuat sebuah sistem untuk menghitung jumlah manusia pada area tertentu dengan metode segmentasi citra dan pendeteksian warna kulit melaui kamera web.


(3)

2

Universitas Kristen Maranatha 1.4 Pembatasan Masalah

Dalam tugas akhir ini, pembatasan dibatasi sampai hal-hal berikut yaitu : 1. Dalam pendeteksian citra warna kulit manusia berdasarkan hasil dari

Laporan Tugas Akhir Elrica Pranata (0422002) yang berjudul PENDETEKSIAN WARNA KULIT BERDASARKAN DISTRIBUSI WARNA YCbCr.

2. Penempatan kamera web pada posisi yang strategis.

3. Intensitas cahaya yang cukup untuk mendapatkan hasil yang maksimal dalam pengambilan gambar.

4. Objek manusia yang terdeteksi tidak semua bagian badannya, melainkan hanya bagian kepala hingga dada saja.

5. Warna latar yang dipakai kontras dengan warna pakaian dan kulit manusia. 6. Gambar yang diolah adalah gambar hasil capture dari kamera web.

7. Patung yang menyerupai manusia yang biasa digunakan untuk pajangan pakaian yang memiliki warna seperti warna kulit manusia (manekin) adalah pengecualian.

8. Jumlah manusia maksimum yang dideteksi adalah tiga orang.

1.5 Sistematika Penulisan.

Sistematika penulisan tugas akhir ini dibagi menjadi 5 bab, yaitu: Bab 1 : Pendahuluan.

Bab ini membahas tentang latar belakang, perumusan masalah, tujuan, pembatasan masalah, dan sistematika penulisan.

Bab 2 : Landasan Teori.

Bab ini membahas tentang landasan teori dari pengolahan citra digital, piksel, piksel tetangga, komponen warna citra, deteksi warna kulit, pelabelan komponen, dan kamera web.

Bab 3 : Perancangan Perangkat Lunak.

Bab ini membahas tentang perancangan dan realisasi perangkat lunak (software) untuk melakukan perhitungan jumlah manusia berdasarkan metode segmentasi citra dan pendeteksian warna kulit.


(4)

3

Universitas Kristen Maranatha Bab 4 : Pengujian Perangkat Lunak.

Bab ini membahas tentang pengujian perangkat lunak untuk melakukan perhitungan jumlah manusia berdasarkan metode segmentasi citra dan pendeteksian warna kulit.

Bab 5 : Kesimpulan dan Saran.

Bab ini membahas tentang kesimpulan dan saran untuk perbaikan serta pengembangan lebih lanjut.


(5)

80

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Perhitungan jumlah manusia dengan metode pendeteksian warna kulit sangat dipengaruhi oleh warna pakaian yang dikenakan oleh objek manusia.

2. Berdasarkan pada pengujian semua latar, proses pemisahan objek dan latar belakang berhasil dilakukan.

5.2 Saran

1. Algoritma pendeteksian warna kulit disempurnakan, sehingga dapat lebih akurat dalam mendeteksi warna kulit manusia dan dapat membedakan manusia atau bukan walaupun warna pakaian objek menyerupai warna kulit manusia.

2. Untuk selanjutnya diharapkan dapat dibuat suatu program perhitungan yang real time agar selalu memperbaharui data.


(6)

81

DAFTAR PUSTAKA

1. Ahmad, Usman, “Pengolahan Citra Digital dan Teknik

Pemrogramannya,”, Graha Ilmu, Yogyakarta, 2005

2. Basuki, Achmad, Jozua F.Palandi, Fatchurrochman,”Pengolahan Citra

Digital menggunakan Visual Basic”, Graha Ilmu, Yogyakarta, 2005. 3. Bovik, Al, “The Essential Guide To Image Processing,” Academic Press,

2009.

4. Pratt, William K., “Digital Image Processing Fourth Edition,” A Wiley-Interscience Publication, 2007.

5. Pranata, Elrica, “Pendeteksian Warna Kulit Berdasarkan Distribusi Warna

YCbCr”, Universitas Kristen Maranatha, Bandung, 2009.

6. Sihar, Rubinhut, “Aplikasi Pengolahan Citra Digital Untuk Menghitung

Jumlah Suatu Objek Pada Suatu Daerah Pengamatan,” Universitas Kristen

maranatha Bandung, 2008. 7. http://www.wikipedia.org