Pengenalan Gerakan Tangan Manusia Untuk Interaksi Manusia-Komputer

99

DAFTAR PUSTAKA

Alex, D.S. & Wahi, A. 2014. BSFD : Background subtraction frame difference
algorithm for moving object detection and extraction. Journal of Theoretical &
Applied Information Technologh 60(3) : 623-628.
Annadurai, S. & Shanmugalakshmi, R. 2007. Fundamental of Digital Image
Processing. New Delhi : Pearson Education.
Bhatt, R., Fernandes, N. & Dhage, A. 2013. Vision based hand gesture recognition for
human computer interaction. International Journal of Engineering Science and
Innovative Technologh (IJESIT) 2(3) : 110-115.
Bradski, G. & Kaehler, A. 2008. Learning OpenCV. O’Relly Media, Inc : Sebastopol.
Chitra, S. & Balakrishnan, G. 2012. Comparative study for two color spaces HSCbCr
and YCbCr in skin color detection. Applied Mathematical Sciences 6(85) : 42294238.
Dhawan, A. & Honrao, V. 2013. Implementation of hand detection based techniques
for human computer interaction. International Journal of Computer
Applications 72(17) : 6-13.
Du, E.Y. & Chang, C.I. 2002. Thresholding video images for text detection.
Proceedings of 16th International Conference on Pattern Recognition, pp 919922.
Ennehar, B.C., Brahim, O. & Hicham, T. 2010. An appropriate color space to improve

human skin detection. INFOCOMP Journal of Computer Science, 9(4), 1-10.
Febriani, A. 2014. Identifikasi Diabetic Retinopathh melalui citra retina menggunakan
Modified K-Nearest Neighbor. Skripsi. Universitas Sumatera Utara.

100

Goswami, S., Goswami, J. & Kumar, N. 2015. Unusual event detection in low
resolution video for enhancing ATM security. IEEE 2nd International
Conference on Signal Processing and Integrated Networks (SPIN), pp 848 –
853.
Intachak, T. & Kaewapichai, W. 2011. Real-time illumination feedback system for
adaptive background subtraction working in traffic video monitoring. IEEE
International Shmposium on Intelligent Signal Processing and Communication
Shstems (ISPACS), pp 1-5.
Jalab, H. A. 2012. Static hand gesture recognition for human computer interaction.
Information Technologh Journal 11(9) : 1265-1271.
Kang, J. & Hayes, M. H. 2015. Face recognition for vehicle personalization with nearIR frame differencing and pose clustering. IEEE International Conference on
Consumer Electronics (ICCE), pp 455 – 456.
Kawulok, M., Kawulok, J., & Nalepa, J. 2014. Spatial-based skin detection using
discriminative skin-presence features. Pattern Recognition Letters 41 (2014): 313.

Kawulok, M., Kawulok, J., & Nalepa, J., Knyc, M.: Database for hand gesture
recognition. http://sun.aei.polsl.pl/~mkawulok/gestures/ (diakses 23 Agustus
2015).
Li, Q., Chen, X., Zhang, H., Yin, L., Chen, S., Wang, T., Lin, S., Liu, X., Zhang, X., &
Zhang, R. 2012. Automatic human spermatozoa detection in microscopic video
streams based on OpenCV. IEEE 5th International Conference on Biomedical
Engineering and Informatics (BMEI), pp 224-227.
Liao, P.S., Chen, T.S. & Chung, P.C. 2001. A fast algorithm for multilevel
thresholding. Journal of Information Science and Engineering 17(5): 713-727.
Ling, Y., Xue, Y., Xing, J., Jiang, T. & Guo, C. 2013. Experimental studies on static
postural balance using the body center of gravity test system. First International
Shmposium on Future Information and Communication Technologies for
Ubiquitous HealthCare (Ubi-HealthTech), pp 1-5.

101

Moeslund, T.B. 2012. Introduction to Video and Image Processing. New York :
Springer.
Mritunjayrai, VijendraBhootna & Yadav, R.K. 2015. Performance based algorithm for
the detection and extraction of human skin. First International Conference on

Futuristic Trend in Computational Analhsis and Knowledge Management
(ABLAZE), pp 127-131.
Nagarajan, S. & Subashini, T.S. 2013. Static hand gesture recognition for sign language
alphabets using Edge Oriented Histogram and Multi Class SVM. International
Journal of Computer Applications 82(4) : 28-35.
Nayakwadi, V. & Pokale, N. B. 2014. Dynamic hand gesture recognition system with
natural hand. International Journal of Advanced Research in Computer Science
and Software Engineering (IJARCSSE) 4(4) : 1239-1243.
Nayana, P.B. & Kubakaddi, S. 2014. Implementation of hand gesture recognition
technique for HCI using OpenCV. International Journal of Recent Development
in Engineering and Technologh 2(5) : 17-21.
OpenCV

Documentation

:

Introduction

to


Support

Vector

Machines.

http://docs.opencv.org/doc/tutorials/ml/introduction_to_svm/introduction_to_s
vm.html/. (diakses 18 Maret 2015).
Phung, S. L., Bouzerdoum, A., & Chai, D. 2005. Skin segmentation using color pixel
classification : analysis and comparison. IEEE Transactions on Pattern Analhsis
and Machine Intelligence 27(1) : 148-154.
Pratt, W.K. 2007. Digital Image Processing. New York : Wiley.
Premal, C.E. & Vinsley, S.S. 2014. Image processing based forest fire detection using
YCbCr colour model. IEEE International Conference on Circuit, Power and
Computing Technologies (ICCPCT), pp 1229-1237.
Ramjan, M. R., Sandip, R. M., Uttam, P. S. & Srimant, W. S. 2014. Dynamic hand
gesture recognition and detection for real time using human computer
interaction. International Journal of Advance Research in Computer Science
and Management Studies (IJARCSMS) 2(3) : 425-430.


102

Shapiro, L.G. & Stockman G.C. 2001. Computer Vision. Prentice-Hall : Upper Saddle
River.
Tan, W. R., Chan, C. S., Yogarajah, P., & Condell, J. 2012. A fusion approach for
efficient

human

skin

detection.

IEEE

Transactions

on


Industrial

Informatics 8(1) : 138-147.
Williamson, A. 2014. Vision based cursor control using hand gesture. Skripsi.
University of The West Indies.
Wu, Y. 2009. Research on bank intelligent video image processing and monitoring
control system based on OpenCV. IEEE 3rd International Conference on Anticounterfeiting, Securith, and Identification in Communication, pp 211-214.
Yesugade, K.D., Salunke, S., Shinde, K., Gaikwad, S. & Shingare, M. 2014. Hand
motion recognition. International Journal of Technologh and Exploring
Engineering (IJITEE) 3(11) : 55-61.
Yi, Z. & Liangzhong, F. 2010. Moving object detection based on running average
background and temporal difference. International Conference on Intelligent
Shstems and Knowledge Engineering (ISKE), pp 270-272.
Youssef, M.M., Asari, K.V., Tompkins, R.C. & Foytik, J. 2010. Hull convexity defects
features for human activity recognition. IEEE Applied Imagerh Pattern
Recognition Workshop (AIPR), pp.1-7.
Zarit, B. D., Super, B. J. & Quek, F. K. H. 1999. Comparison of five color models in
skin pixel classification. Proceedings of the International Workshop on
Recognition, Analhsis, and Tracking of Faces and Gestures in Real-Time
Shstems, pp. 58-63.

Zhaoxue, C., Shengdong, N., Lijun, Q., Zeng’ai, C. & Jianrong, X. 2008. Automatic
liver segmentation method based on a gaussian blurring technique for CT
images. IEEE The 2nd International Conference on Bioinformatics and
Biomedical Engineering (ICBBE), pp 2516-2518.

BAB 3
ANALISIS DAN PERANCANGAN SISTEM

Bab ini akan membahai tentang implementaii metode yang digunakan untuk mengenali
gerakan tangan manuiia untuk interakii manuiia-komputer. Adapun 2 (dua) tahap yang
akan dibahai pada bab ini, yaitu tahap analiiii dan tahap perancangan iiitem. Pada
tahap analiiii akan dilakukan analiiii terhadap data yang akan digunakan untuk
diproiei dan analiiii terhadap teknik yang digunakan pada ietiap langkah pemroieian
data. Pada tahap perancangan iiitem akan dibahai mengenai perancangan tampilan
antarmuka iiitem.
3.1 Data yang Digunakan

Data yang digunakan dalam penelitian ini berupa citra yang diambil iecara real-time
melalui kamera web. Adapun beberapa aipek yang berhubungan dengan data yang
digunakan yaitu kualitai kamera web, pencahayaan (lighting) dan jarak pengambilan

gambar.
Dalam penelitian ini, penulii menggunakan kamera web ekiternal yang memiliki
ipeiifikaii 8 megapixel dengan reioluii gambar 1280 x 720 pikiel. Pengambilan
gambar dilakukan di dalam ruangan dengan kuat pencahayaannya ±200 lux dan jarak ≤
0.5 meter dari tangan pengguna. Hal ini dilakukan agar iiitem dapat menangkap objek
yang akan dikenali dengan baik.
Adapun data benchmark yang digunakan untuk mengukur tingkat akuraii metode
yang digunakan peneliti untuk pendetekiian warna kulit, yaitu Hand Gesture
Recognition (HGR) Dataset (diambil dari http://iun.aei.polil.pl/~mkawulok/geiturei/).
Dataiet ini terdiri atai 3 macam data untuk pengenalan gerakan iiyarat tangan dengan
kondiii yang berbeda, yaitu :
1. Kondiii I
 Jumlah citra

: 61 citra

 Background

: Tidak tertentu


29
 Pencahayaan

: Tidak tertentu

 Ukuran citra

: max. 640 x480 pikiel

2. Kondiii II
 Jumlah citra

: 85 citra

 Jumlah individu

: 3 orang

 Jumlah gerakan


: 13 gerakan

 Background

: -. 44 citra berwarna abu-abu
-. 41 citra tidak tertentu

 Pencahayaan

: menggunakan efek flash

 Ukuran citra

: max. 512 x340 pikiel

3. Kondiii III
 Jumlah citra

: 574 citra


 Jumlah individu

: 18 orang

 Jumlah gerakan

: 32 gerakan

 Background

: green tone

 Pencahayaan

: menggunakan efek flash

 Ukuran citra

: max. 339 x512 pikiel

3.2 Analisis Sistem
Metode yang diajukan untuk mengenali gerakan tangan manuiia melalui kamera web
untuk interakii manuiia-komputer pada penelitian ini terdiri dari beberapa langkah.
Langkah-langkah yang dimakiud adalah iebagai berikut : pengambilan citra atau
gambar (image acquisition) melalui kamera web; resizing citra; konverii ruang warna
RGB ke HSV; konverii ruang warna RGB ke YCbCr; pendetekiian warna kulit
menggunakan metode Skin Color Bounding Rule; iegmentaii kulit; grayscaling;
akumulaii background; frame differencing; thresholding; inverii; memperbaiki citra
biner dengan eroii, dilaii dan Gaussian Blur; ekitrakii fitur dengan contour dan convexhull; menghitung confexity defects; menghitung jumlah jari tangan yang terdetekii dan
menentukan arah tangan. Setelah langkah-langkah teriebut dilakukan maka akan
didapat haiil pengenalan gerakan tangan manuiia berupa iuatu initrukii atau perintah
untuk mengendalikan beberapa aplikaii, ieperti aplikaii pengolah preientaii, pemutar
muiik, pemutar video, dan PDF reader. Setiap tahapan yang dilakukan akan dijelaikan

30
dengan lebih terperinci pada bagian-bagian ielanjutnya. Adapun ariitektur umum yang
menggambarkan metode pada penelitian ini ditunjukkan pada Gambar 3.1.

Gambar 3.1. Arsitektur umum
3.2.1 Skin Detection
Tahap awal dalam pengenalan gerakan tangan pada penelitian ini adalah pendetekiian
warna kulit. Tahap ini dilakukan untuk mempercepat proiei pendetekiian objek tangan
manuiia pada citra yang tertangkap oleh kamera web. Selain itu, dengan adanya
pendetekiian objek tangan berdaiarkan warna kulit manuiia, maka pengguna tidak
perlu menggunakan alat bantu lainnya ieperti Kinect ataupun data glove.
Pendetekiian warna kulit iangat berpengaruh pada inteniitai cahaya atau tingkat
kecerahan (brightness) pada citra. Citra yang tertangkap oleh kamera web iering
mengalami perubahan iluminaii (pada tingkat kecerahan dan chromacity). Oleh karena
itu, pada penelitian ini digunakan kombinaii ruang warna HSV dan YCbCr, yaitu
HSCbCr untuk mendetekii warna kulit. Pada penelitian iebelumnya telah diiimpulkan
bahwa kombinaii nilai channel teriebut dapat memberikan ioluii yang baik dalam
mengaitaii permaialahan kondiii pencahayaan pada citra yang tertangkap oleh kamera
(Chitra & Balakriihman, 2012). Berikut ini adalah pseudocode pendetekiian warna
kulit manuiia.

31
Langkah 1

: Resize ukuran citra yang tertangkap kamera web menjadi 400 x 300
(RGB(400,300))

Langkah 2

: Normaliiaii RGB dari citra warna yang telah diresize menggunakan
periamaan 2.2 iampai 2.4

Langkah 3

: Konverii nilai RGB yang telah melalui proiei normaliiaii ke HSV
dengan menggunakan periamaan 2.5 iampai 2.8.

Langkah 4

: Konverii citra RGB ke YCbCr dengan menggunakan periamaan 2.9
iampai 2.11.

Langkah 5

: Pengecekan nilai channel H (hue) dan S (saturation) pada ietiap pikiel
citra HSV dan channel Cb (chrominance-blue) dan Cr (chrominancered) citra YCrCb

FOR ietiap nilai pikiel RGB (x,y)
IF NOT ( (H >= 0) AND (H = 0.23) AND (S 77) AND (Cb < 127 ) ) AND
( (Cr > 133) AND (Cr < 173 ) )
THEN
SET RGB(x,y) = 0,0,0 (hitam)
END IF
END FOR
Langkah 6

: Tampilkan citra RGB

3.2.1.1 Resizing
Proiei resizing merupakan proiei normaliiaii ukuran citra digital iehingga ukuran
ieluruh data citra yang akan diproiei memiliki ukuran yang iama dan dapat
mempercepat pemroieian data citra digital. Pada penelitian ini, citra yang ditangkap
oleh kamera web memiliki ukuran 1280 x 720 pikiel dan akan diperkecil menjadi 400
x 300 pikiel.
3.2.1.2 Normalisasi RGB
Setelah melakukan proiei resizing, citra RGB akan dikonveriikan ke ruang warna
lainnya, ieperti HSV dan YCrCb. Namun iebelum melakukan proiei konverii, ketiga

32
channel RGB (red, green, dan blue) akan dinormaliiaii terlebih dahulu dengan
menggunakan periamaan 2.2 iampai 2.4 iehingga nilai RGB berada dalam range 0
iampai 1.
3.2.1.3 RGB to HSV Conversion
Citra yang telah di resize yang memiliki ruang warna RGB kemudian akan dikonverii
ke ruang warna HSV. Nilai layer hue dan iaturation pada ruang warna HSV tidak akan
mengalami perubahan iaat kondiii pencahayaan berubah-ubah, iehingga dapat
mendetekii warna kulit walaupun dalam kondiii pencahayaan yang berubah-ubah pada
citra yang tertangkap oleh kamera web (Chitra & Balakriihman, 2012). Proiei konverii
citra warna (RGB) menjadi HSV yaitu dilakukan dengan traniformaii matematii
menggunakan periamaan 2.5 hingga 2.8. Konverii citra warna (RGB) menjadi citra
HSV ditunjukkan pada Gambar 3.2.

Gambar 3.2 Konversi Ruang Warna RGB - HSV
3.2.1.4 RGB to YCbCr Conversion
Citra haiil resizing juga akan dikonverii ke ruang warna YCbCr, karena nilai layer Cr
(chrominance red) dan Cb (chrominance blue) memiliki peran yang penting dalam
mendetekii warna kulit. Komponen Y (luminance channel) pada ruang warna YCbCr
merepreientaiikan nilai inteniitai cahaya yang ielalu berubah-ubah pada citra yang
tertangkap oleh kamera, iedangan komponen chrominance merupakan ieliiih antara
nilai red atau blue channel dan inteniitai cahaya. Oleh karena itu ruang YCbCr yang
memiiahkan nilai chroma dan inteniitai cahaya dapat memberikan haiil yang baik
dalam iegmentaii kulit (MritunjayRai, et al., 2015).

33
Proiei konverii citra warna (RGB) menjadi YCbCr dapat dilakukan dengan
menggunakan periamaan 2.5 hingga 2.7. Konverii warna citra RGB ke YCbCr dapat
dilihat pada Gambar 3.3.

Gambar 3.3 Konversi Ruang Warna RGB – YCbCr
3.2.1.5 Skin Color Bounding Rules
Pada penelitian ini, digunakan kombinaii ruang warna HSV dan YCbCr untuk
mendetekii warna kulit, yaitu HSCbCr. Setelah citra dikonverii ke ruang warna yang
dibutuhkan, maka ietiap komponen ruang warna yaitu H, S, Cb dan Cr akan di filter
dengan nilai threshold yang didefiniiikan iebagai warna kulit. Range nilai yang
didefiniiikan iebagai warna kulit untuk ruang warna HSCbCr dapat dilihat pada
periamaan 3.1 hingga 3.8.
Aturan Hue & Saturation (Phung, et al., 2005).:
0≤

0.23 ≤

≤ 50

≤ 0.68

(3.1)
(3.2)

Aturan Chrominance Blue (Cb) & Chrominance Red (Cr) (Phung, et al., 2005).:
77 ≤

3.2.1.6 Skin Segmentation

133 ≤

≤ 127

≤ 173

(3.3)
(3.4)

Tahap ini merupakan tahap akhir pada perdetekiian warna kulit. Pada tahap ini, ieluruh
pikiel yang tidak terdefiniii iebagai warna kulit akan diubah nilainya menjadi 0 (hitam).
Sehingga yang terlihat pada citra hanya pikiel yang terdefiniii iebagai warna kulit. Citra

34
haiil proiei skin segmentation ini merupakan citra RGB. Haiil proiei skin segmentation
dapat dilihat pada Gambar 3.4.

Gambar 3.4 Skin Segmennanion
3.2.2 Average Background
Setelah pendetekiian warna kulit dilakukan, maka proiei ielanjutnya adalah
penghilangan background yang memiliki warna yang iama dengan warna kulit. Pada
penelitian ini akan digunakan metode average background. Adapun beberapa langkah
pada metode average background, yaitu grayscaling, frame differencing, akumulaii
background, thresholding, dan inversion. Berikut ini adalah penjelaian berierta
pseudocode ietiap langkah pada metode average background.
3.2.2.1 RGB to Grayscale Conversion
Setelah melakukan iegmentaii berdaiarkan warna kulit, diperlukan adanya iuatu
metode untuk menghilangkan background yang memiliki warna yang iama dengan
warna kulit. Untuk menghilangkan background teriebut pada citra yang tertangkap oleh
kamera web, diperlukan adanya proiei perbandingan antara frame awal dengan frame
ielanjutnya pada video. Sebelum melalui proiei teriebut, citra dikonverii menjadi citra
keabuan (grayscale) agar pengolahan lebih mudah dan cepat dengan citra 8 bit. Adapun
proiei konverii citra warna (RGB) menjadi citra keabuan yaitu dilakukan dengan
traniformaii matematii menggunakan periamaan 2.1.
Sebagai contoh, terdapat iebuah matriki citra warna berukuran 5 x 5 pikiel yang
memiliki nilai RGB ieperti ditunjukkan pada Tabel 3.1.

35
Tabel 3.1 Matriks Citra Warna (RGB) Ukuran 5x5 piksel
(i,j)
0

1

2

3

4

0
31
33
22
42
44
33
188
189
181
137
139
132
255
255
251

1
42
44
33
44
46
35
186
187
179
134
135
127
255
255
250

2
46
48
37
64
66
55
193
194
186
34
34
29
73
74
69

3
41
43
32
82
84
73
157
158
150
177
178
170
178
179
173

4
114
116
103
92
94
83
177
178
170
156
158
147
97
98
92

Maka proiei perhitungan konverii nilai matriki (0,0) citra warna menjadi citra keabuan
adalah ieperti berikut :
Y

= 0.299(R) + 0.588(G) + 0.114(B)
= 0.299(31) + 0.588(32) + 0.114(22)
= 9.269 + 19.371 + 2.508
= 31.148

Dengan melakukan cara perhitungan yang iama pada iemua pikiel citra warna, maka
didapatkan haiil ieperti Tabel 3.2.
Tabel 3.2 Hasil Konversi Citra Warna Menjadi Citra Keabuan
(i,j)
0
1
2
3
4

0
31
42
187
137
254

1
42
44
185
133
254

2
46
64
192
33
73

3
41
82
156
176
178

4
113
92
176
156
97

36
Proiei konverii citra haiil iegmentaii kulit pada citra yang tertangkap oleh kamera web,
yang memiliki ruang warna RGB, menjadi citra keabuan pada penelitian ini ditunjukkan
pada Gambar 3.5.

(a) Citra yang tertangkap oleh kamera web

(b) Citra haiil iegmentaii warna kulit

(c) Citra keabuan (grayscale)
Gambar 3.5 Proses Konversi Citra Hasil Segmentasi Kulit Menjadi
Citra Keabuan (Grayscale)
3.2.2.2 Frame Differencing
Citra haiil konverii warna grayscale ielanjutnya akan dibandingkan antara citra frame
awal dan frame ielanjutnya. Pada OpenCV terdapat fungii untuk melakukan frame
differencing yaitu absdiff(). Fungii ini menghitung perbedaan mutlak antara dua array
atau matriki ketika kedua matriki teriebut memiliki ukuran dan jenii yang iama.
Perhitungan yang dilakukan pada proiei frame differencing adalah periamaan 2.26.
Berikut ini adalah penjelaian tentang fungii absdiff().

37
(

Parameter :

1,

2,

)



src1

: input frame awal yang akan dibandingkan



src2

: input frame ielanjutnya yang akan dibandingkan



dit

: haiil keluaran perbandingan frame berupa matriki citra

Berikut ini adalah pseudocode proiei frame differencing pada penelitian ini.
Iniiialiiaii frame awal, frame ielanjutnya dan frame perbedaan
Iniiialiiaii jumlah frame = 0
IF (jumlah frame = 0)
THEN
SET Frame perbedaan = frame ielanjutnya
ELSE
SET Abidiff(frame awal, frame ielanjutnya, frame perbedaan)
Jumlah frame = jumlah frame + 1
ENDIF
Frame awal = frame ielanjutnya
Proiei frame differencing dapat dilihat pada Gambar 3.6.

(a) Frame awal

(b) Frame ielanjutnya

38

(c) Haiil frame differencing
Gambar 3.6. Proses Frame Differencing
3.2.2.3 Akumulasi Background
Setelah citra yang ditangkap dikonverii warna menjadi citra keabuan, maka ielanjutnya
frame-frame teriebut akan diakumulaiikan atau dikumpulkan lalu untuk menentukan
frame yang didefiniiikan iebagai background. Untuk mendefiniiikan citra teriebut
adalah

background

atau

tidak,

pada

penelitian

ini

digunakan

fungii

accumulateWeighted() yang teriedia pada OpenCV. Berikut ini adalah penjelaian
tentang fungii teriebut.


Parameter :

(

,

,

ℎ )



src

: citra maiukan



dst

: citra keluaran berupa background yang terdetekii. Parameter ini juga
berperan iebagai akumulator



alpha : bobot dari citra maiukan. Parameter ini mengatur kecepatan
pembaruan (ieberapa cepat akumulator memperbarui background
iebelumnya). Semakin kecil bobot yang dimaiukkan, iemakin cepat
proiei pembelajaran background

Proiei akumulaii background dapat dilihat pada Gambar 3.7.

39

Gambar 3.7. Hasil Akumulasi Background
3.2.2.4 Thresholding
Proiei thresholding yang mengubah citra keabuan menjadi citra biner pada tahap ini
juga digunakan untuk memiiahkan objek dari pikiel-pikiel noise haiil perbandingan
frame pada tahap iebelumnya. Adapun jenii dan nilai threshold yang digunakan pada
penelitian ini yaitu Threshold Binary Inverted dengan nilai 10 – 255 dan dimaiukkan
ke dalam periamaan 2.17. Berikut ini adalah pseudocode dari proiei thresholding pada
penelitian ini.
Iniiialiiaii nilai threihold = 10
Iniiialiiaii nilai maxVal = 255
Iniiialiiaii frame foreground : dit(x,y)
FOR ietiap nilai pikiel irc (x,y)
IF (irc(x,y) > threihold)
THEN
SET dit(x,y) = maxVal
ELSE
THEN
SET dit(x,y) = 0
ENDIF
END FOR

40
Proiei thresholding pada penelitian ini dapat dilihat pada Gambar 3.8

Gambar 3.8. Proses Thresholding
3.2.2.5 Pembentukan Citra Negatif (Inversion)
Tahap inversion ini merupakan tahap akhir dalam penghilangan background pada citra
yang tertangkap oleh kamera web. Tahap ini dilakukan untuk mendapatkan daerah
(region) yang didefiniiikan iebagai objek yang bergerak, yaitu tangan manuiia. Proiei
inversion dapat dilakukan dengan periamaan 2.21 yang termaiuk dalam fungii
bitwise_not() pada library OpenCV. Berikut ini adalah penjelaian tentang fungii
bitwise_not().
Parameter :

_

(

,

)



src

: citra maiukan berupa citra biner.



dst

: citra keluaran berupa citra biner yang telah diinverii

Gambaran proiei inversion dapat dilihat pada Gambar 3.9.

41

Gambar 3.9 Inversion
3.2.3 Perbaikan Citra (Image Enhancement)
Citra biner yang dihaiilkan ietelah proiei penghilangan background pada citra yang
tertangkap oleh kamera web maiih memiliki banyak noise. Untuk menghilangkan
noise-noise pada citra, maka akan dilakukan proiei perbaikan citra (image
enhancement). Proiei ini iangat berguna untuk pendetekiian objek yang diperlukan
iebelum diproiei pada tahap ielanjutnya. Tahap ini meliputi 3 (tiga) proiei, yaitu
erosion, dilation, dan Gaussian Blur. Berikut ini adalah penjelaian ketiga proiei
teriebut.
3.2.3.1 Erosion
Proiei erosion dilakukan untuk menipiikan atau menghilangkan objek yang tidak
diperlukan. Pada penelitian ini, proiei eroii dilakukan dengan periamaan 2.12 yang
iudah termaiuk dalam fungii erode() pada library OpenCV. Berikut ini adalah
penjelaian tentang penggunaan fungii teriebut pada penelitian ini.
Parameter :

(

,

,

,



,

)



src

: citra maiukan, yaitu citra haiil average background



dst

: citra keluaran, yaitu citra haiil proiei eroii

42


kernel

: structure element yang digunakan pada penelitian ini, yaitu
iebuah kernel berbentuk ellipse yang berukuran 3 x 3 pikiel



anchor

: poiiii titik acuan pada kernel. Pada penelitian ini digunakan
nilai (-1,-1) yaitu nilai default yang berarti menggunakan titik
tengah pada kernel

 iteration

: banyaknya perulangan proiei eroii yang dilakukan. Pada
penelitian ini, proiei eroii dilakukan berulang iebanyak 2 kali.

Proiei erosion pada penelitian ini dapat dilihat pada Gambar 3.10.

(a) Citra haiil average background

(b) Citra haiil erosion

Gambar 3.10 Erosion
3.2.3.2 Dilation
Setelah objek yang tidak diperlukan hilang dengan proiei erosion, maka ielanjutnya
objek akan ditebalkan dengan proiei dilation. Pada penelitian ini, proiei dilaii
dilakukan dengan periamaan 2.13 yang iudah termaiuk dalam fungii dilate() pada
library OpenCV. Berikut ini adalah penjelaian tentang penggunaan fungii teriebut pada
penelitian ini.
Parameter :

(

,

,

,



,

)



src

: citra maiukan, yaitu citra haiil proiei eroii



dst

: citra keluaran, yaitu citra haiil proiei dilaii



kernel

: structure element yang digunakan pada penelitian ini, yaitu
iebuah kernel berbentuk ellipse yang berukuran 3 x 3 pikiel

43


anchor

: poiiii titik acuan pada kernel. Pada penelitian ini digunakan
nilai (-1,-1) yaitu nilai default yang berarti menggunakan titik
tengah pada kernel



iteration

: banyaknya perulangan proiei eroii yang dilakukan. Pada
penelitian ini, proiei eroii dilakukan berulang iebanyak 4 kali.

Proiei erosion pada penelitian ini dapat dilihat pada Gambar 3.11.

Gambar 3.11 Dilanion
3.2.3.3 Gaussian Blur
Proiei Gaussian blur dilakukan untuk menghilangkan noise yang maiih terdapat pada
citra ietelah proiei dilaii, agar tidak terdefiniii iebagai titik objek. Gaussian Blur dapat
dilakukan dengan periamaan fungii Gauiiian untuk citra dua dimenii yaitu periamaan
2.15 yang iudah termaiuk dalam fungii GaussianBlur() pada library OpenCV. Berikut
ini adalah penjelaian tentang penggunaan fungii teriebut pada penelitian ini.
Parameter :

(

,

,

,

)



src

: citra maiukan, yaitu citra haiil proiei dilaii



dst

: citra keluaran, yaitu citra haiil Gaussian Blur



ksize

: ukuran structure element atau kernel Gauiiian yang digunakan
pada penelitian ini, yaitu berukuran 5 x 5 pikiel.

44


sigmaX

: nilai itandar deviaii kernel Gauiiian

Proiei Gaussian blur pada penelitian ini dapat dilihat pada Gambar 3.12.

Gambar 3.12 Gaussian Blur
3.2.4 Ekstraksi Fitur
Setelah melalui proiei perbaikan citra (image enhancement), ielanjutnya akan
dilakukan proiei ekitrakii fitur dengan cara mendetekii contour, convex-hull dan
convexity defects pada objek. Tahap ini dilakukan agar dapat mengambil informaii dari
objek untuk proiei pengklaiifikaiian ataupun analiiii data citra. Berikut ini adalah
penjelaian tentang pendetekiian ketiga fitur teriebut.
3.2.4.1 Contour
Dari citra haiil proiei enhancement akan didetekii titik-titik kontur iebagai fitur awal
dari pengklaiifikaiian objek yang terdetekii. Pada penelitian ini, digunakan fungii
findContours() yang teriedia pada library OpenCV untuk mendetekii titik-titik kontur
pada citra biner haiil perbaikan citra (image enhancement) pada tahap iebelumnya.
Berikut ini adalah penjelaian tentang fungii teriebut.
Parameter :


image

(

,

,ℎ

ℎ ,

,



)

: citra maiukan, yaitu citra haiil proiei perbaikan citra

45


contours

: titik kontur yang terdetekii. Setiap titik kontur yang terdetekii
akan diiimpan didalam liit titik vektor



hierarchy

: keluaran berupa titik vektor yang beriifat opiional. Dalam
parameter ini diiimpan berbagai informaii dari ietiap titik
kontur, miialnya titik kontur iebelumnya, titik kontur
ielanjutnya, titik kontur utama, dib.



mode

: cara pendetekiian titik kontur. Pada penelitian ini dilakukan
dengan cara CV_RETR_TREE, yang mengambil iemua titik
kontur dan merekontrukii penuh hirarki titik-titik kontur yang
terhubung



method

: metode pendekatan titik kontur. Pada penelitian ini dilakukan
dengan

cara

CV_CHAIN_APPROX_SIMPLE,

yang

menekankan pada iegmen horizontal, vertikal, dan diagonal
dan menentukan titik akhir pada kontur.
Gambaran proiei pendetekiian titik kontur dapat dilihat pada Gambar 3.13.

Gambar 3.13 Connour
3.2.4.2 Convex-Hull
Setelah titik-titik kontur terdetekii, maka ielanjutnya akan didetekii garii convex-hull
yang menghubungkan ieluruh titik kontur yang terdetekii. Pada penelitian ini, iebelum

46
melakukan pendetekiian convex-hull, maka akan dilakukan pencarian area kontur
terbeiar yang terdetekii. Hal ini dilakukan agar mempercepat proiei pada pendetekiian
convexity defects pada tahap ielanjutnya. Berikut ini adalah pseudocode pendetekiian
convex-hull pada citra yang tertangkap oleh kamera web.
Langkah 1

: Menemukan area kontur terbeiar

Iniiialiiaii area terbeiar = 0
Iniiialiiaii indeki_kontur_terbeiar = 0
Iniiialiiaii variabel iteraii i = 0
FOR (i > banyaknya titik kontur yang terdetekii)
Iniiialiiaii area = area kontur dengan indeki i
IF (area > area terbeiar)
THEN
SET area terbeiar = area
indeki kontur terbeiar = i
ENDIF
END FOR
Langkah 2

: Mengurangi titik kontur yang tidak diperlukan, agar tidak terdefiniii
iebagai objek, menggunakan fungii approPolyDP(). Berikut ini
adalah penjelaian tentang fungii teriebut.

Parameter :

(

,

,



curve



approxCurve : haiil keluaran dari pendekatan teriebut



epsilon

,

)

: maiukan vektor, yaitu titik-titik pada area kontur terbeiar
: jarak makiimum antara iatu titik kontur ke titik kontur
terdekatnya. Parameter ini menentukan akuraii perkiraan. Pada
penelitian ini, pada parameter ini dimaiukkan nilai iebeiar
0.001 x panjang kurva kontur.



closed

: pilihan untuk menghapui kurva pendekatan atau tidak. Jika
bernilai benar, maka kurva pendekatan akan tertutup, yaitu
iimpul pertama dan terakhir akan terhubung. Pada penelitian
ini, parameter ini diberi nilai ialah (false).

47
Langkah 3

: Mendetekii convex-hull dari ietiap titik kontur yang telah terdetekii
dan diiaring, menggunakan fungii convexHull(). Berikut ini adalah
penjelaian tentang fungii teriebut.
(

Parameter :

,ℎ

)



points

: titik kontur yang terdetekii dan telah diiaring



hull

: haiil keluaran convex-hull. Convex-hull ini juga mengandung
informaii titik kontur yang menghaiilkan garii hull.

Gambaran proiei pendetekiian convex-hull dapat dilihat pada Gambar 3.14.

Gambar 3.14 Convex-Hull
3.2.4.3 Convexity Defects
Setelah area kontur terbeiar dan garii convex-hull terdetekii, maka ielanjutnya akan
dilakukan pendetekiian convexity-defects yang merupakan titik temu antar titik kontur
dan garii convex-hull. Pada penelitian ini, digunakan fungii convexityDefects() untuk
mendetekii convexity-defects. Berikut ini adalah penjelaian tentang fungii teriebut.
Parameter :

(

,



,

)



contour

: titik-titik pada area kontur terbeiar dan telah diiaring



convexhull

: convex-hull yang telah terdetekii

48


convexityDefects

: haiil keluaran convexity-defects yang mengandung
informaii start index, end index, farthest index, dan fix
depth.

Gambaran proiei pendetekiian convexity defects dapat dilihat pada Gambar 3.15

Gambar 3.15 Convexiny Defecns
3.2.5 Klasifikasi
Setelah melakukan proiei ekitrakii fitur, diperlukan informaii jumlah jari yang
terdetekii dan arah tangan untuk mengklaiifikaiikan perintah yang akan dijalankan
pada aplikaii yang dipilih pengguna untuk dikendalikan menggunakan gerakan tangan.
Berikut ini adalah pseudocode untuk mengklaiifikaiikan perintah teriebut.
Langkah 1

: Mencari titik center of gravity (CoG) yang dapat diperoleh dari momen
ietiap titik-titik pada area kontur terbeiar yang telah diiaring
iebelumnya pada tahap ekitrakii fitur. Perhitungan yang dilakukan
adalah dengan periamaan 2.28. Momen dari ietiap kontur dapat
dilakukan dengan periamaan 2.27 yang iudah termaiuk dalam fungii
moments() yang iudah teriedia pada library OpenCV. Fungii ini dapat
menghitung momen dari iebuah area atau bentuk hingga order ketiga.
Berikut ini adalah penjelaian tentang fungii teriebut.

49

Parameter :


(

)

array : titik-titik kontur pada area kontur terbeiar

Iniiialiiaii array = liit titik kontur haiil ekitrakii fitur
Iniiialiiaii variabel momen, momen order (0,0), momen order (0,1), momen order (1,0)
momen = momenti(array)
momen order (0,0) = momen.get_m00();
momen order (0,1) = momen.get_m01();
momen order (1,0) = momen.get_m10();
IF (momen order (0,0) != 0)
THEN
SET titik CoG koordinat x = momen order (1,0) / momen order (0,0)
titik CoG koordinat y = momen order (0,1) / momen order (0,0)
ENDIF
Langkah 2

: Mendetekii jari (fingertips) pada area kontur yang terdetekii dari
elemen-elemen yang termaiuk dalam convexity defects. Pada
penelitian ini, ukuran minimum jari ieieorang memiliki nilai fix_depth
yang ditentukan iebeiar 20. Jika nilai lebih kecil dari nilai minimum
fix_depth, maka objek tidak didefiniiikan iebagai jari.

Iniiialiiaii nilai minimum fix_depth untuk jari = 20
Iniiialiiaii variabel total convexity defects yang terdetekii
Iniiialiiaii variabel iteraii (i) = 0
Iniiialiiaii variabel liit fingertips
FOR (i < total convexity defects)
IF (nilai fix_depth dengan indeki i > nilai minimum fix_depth)
THEN
SET tambahkan nilai start_index dengan indeki i pada fingertips
ENDIF
END FOR

50
Langkah 3

: Mencari ukuran derajat antara titik center of gravity dan titik fingertips
yang terdetekii menggunakan fungii trigonometri ieperti periamaan
3.5 dan 3.6 (http://mathforum.org/dr.math/).
= arctan
=

Langkah 4

. −
. −

+ 360,

.
.