BAB 3 ANALISIS DAN PERANCANGAN
Bab ini akan membahas tentang implementasi metode yang digunakan untuk mengenali gerakan tangan manusia. Adapun 2 dua tahap yang akan dibahas pada
bab ini, yaitu tahap analisis dan tahap perancangan system.
3.1 Data yang Digunakan
Data yang digunakan dalam penelitian ini berupa citra yang diambil secara real-time melalui kamera web. Dalam pengambilan citra, ada beberapa aspek yang yang perlu
diperhatikan yaitu kualitas kamera web, pencahayaanlighting dan jarak pengambilan
gambar.
3.2 Analisis Sistem
Metode yang digunakan untuk mengenali gestur tangan manusia melalui kamera web yang digunakan sebagai interaksi manusia-komputer untuk menjalankan instruksi
yang telah ditentukan. Penelitian ini terdiri dari beberapa langkah, adapun langkah- langkah tersebut yaitu: pengambilan citra atau gambar melalui kamera web; resizing
citra; konversi warna RGB ke HSV; pendeteksian warna kulit dengan mengatur nilai range HSV yang diinginkan; memperbaiki citra dengan median blur utk
menghilangkan noise dandilasi; ekstraksi fitur dengan contour dan mencari convex- hull dari contour yang telah tertangkap; menghitung convexity defects; menghitung
jumlah jari tangan yang terdeteksi. Setelah langkah tersebut telah dilakukan dan berhasil maka akan didapatkan jumlah jari tangan manusia yang berupa suatu instruksi
atau perintah untuk memilih sebuah scene yang terdapat pada aplikasi Unity 3D. Adapun arsitektur umum yang menggambarkan metode pada penelitian ini
ditunjukkan pada Gambar 3.1.
Universitas Sumatera Utara Universitas Sumatera Utara
Gambar 3.1 Arsitektur Umum
3.2.1 Skin Detection
Proses segmentasi digunakan untuk mendapatkan objek yang akan diidentifikasi yang dalam hal ini adalah citra tangan.Agar citra tangan dari pengguna yang diambil dari
kamera dapat diidentifikasi sebagai suatu perintah. Pendeteksian objek tangan berdasarkan warna kulit ini sangat dipengaruhi oleh
intensitas cahaya pada citra dan juga kualitas dari kamera web itu sendiri dan juga latar pengambilan objek itu sendiri.Pada penelitian ini digunakan metode warna HSV
Citra ditangkap web camera
Pemilihan Scene Unity berdasarkan jumlah jari
yang terdeteksi
Eksraksi Fitur
Contour
Convex-Hull
Convexity Defects
Klasifikasi
Menghitung Jumlah Jari
Output
Konversi RGB ke HSV
Atur range HSV Erosion
Dilation
Median Blur
Perbaikan Citra Pre-Processing
Tresholding
Universitas Sumatera Utara Universitas Sumatera Utara
sebagai segmentasi gambar berdasarkan warna.Adapun langkah-langkah mendeteksi warna kulit manusia sebagai berikut.
3.2.1.1 Konversi RGB ke HSV
Setelah citra tertangkap oleh kamera web, kemudian akan dikonversi ke ruang warna HSV. Format HSV lebih cocok untuk melakukan pengolahan berdasarkan warna
daripada menggunakan RGB, karena kita mendapatkan saluran tunggal H yang memegang nilai warna pixel dan dua saluran lainnya S dan V yang memegang
tingkat saturasi dan kecerahan tingkat pixel. Pada penelitian ini menggunakan fungsi cvtColor yang tersedia pada OpenCV. Berikut adalah penjelasan fungsi tersebut.
cvtColor Mat src, Mat dst, Imgproc, int code; Parameter:
• Src
: citra masukan yaitu rgbaMat •
Dst : citra keluaran yaitu hsvMat
• Code
: kode konversi ruang warna yaitu COLOR_BGR2HSV
3.2.1.2 Atur Range HSV
Setelah dilakukan konversi ke format HSV, selanjutnya dilakukan perubahan citra ke dalam bentuk citra biner menggunakan proses thresholding. Deteksi warna kulit
dilakukan dengan cara menentukan rentang nilai dari H, S, dan V, Sehingga untuk setiap piksel dalam citra, jika berada dalam range tersebut, maka akan dianggap
sebagai warna kulit, sedangkan untuk yang berada di luar range tersebut akan dianggap sebagai background. Untuk mengecek apakah element tersebut berada di
range pada penelitian ini digunakan fungsi Core.inRange yang tersedia pada OpenCV. Berikut ini adalah penjelasan tentang fungsi tersebut.
inRange Mat src, Scalar lowerb, Scalar upperb, Mat dst; Parameter :
• src
: citra masukan yaitu hsvMat •
dst : citra keluaran yaitu hsvMat
• Lowerb
: batas bawah array •
Upperb : batas atas array
Universitas Sumatera Utara Universitas Sumatera Utara
3.2.1.3 Tresholding
Untuk setiap piksel dalam citra, jika nilai H, S, V berada dalam rentang tersebut, maka akan dianggap sebagai warna kulit dan nilainya akan diubah menjadi 255
warna putih. Sedangkan untuk yang berada di luar rentang itu, akan dianggap sebagai latar belakang dan akan diubah nilainya menjadi 0 warna hitam. Dengan
metode ini, didapatkan citra biner hasil skin detection dengan warna putih merepresentasikan tangan pengguna dan warna hitam merepresentasikan background.
3.2.2 Perbaikan Citra
Hasil dari proses segmentasi yang berupa gambar hitam putih binary image yang menunjukkan bagian kulit dari gambar masukan. Akan tetapi citra hasil segmentasi
tersebut masih terdapat noise potongan dari beberapa benda lainnya pada citra, seperti latar belakang gambar. Oleh karena itu, perlu dilakukan beberapa tahapan
proses morfologi untuk membersihkan gambar dari noise potongan tersebut. Adapun beberapa proses morfologi tersebut yaitu. Erosion, dilation dan median blur.
3.2.2.1 Erosion
Proses erosi membuang piksel dari gambar atau ekivalen dengan membuat piksel ON menjadi OFF, yaitu piksel putih yang melekat pada daerah background, sehingga akan
menyebabkan piksel putih berkurang luasnya shrinking dengan tujuan untuk menghilangkan piksel yang memiliki noise pada citra. Adapun fungsi yang digunakan
peneliti untuk proses erosi yaitu. Mat element = getStructuringElementerosion_type,Size
2erosion_size+1,Pointerosion_size,erosion_size; Imgproc.erodesrc, dst, element;
Parameter: •
Src : citra masukan
• Dst
: citra keluaran •
Element : Ini adalah kernel yang akan di gunakan untuk melakukan
operasi. Jika tidak ditentukan dahulu, maka defaultnya adalah matriks 3x3 sederhana.Akan tetapi, kita dapat menentukan
Universitas Sumatera Utara Universitas Sumatera Utara
bentuknya. Untuk ini, kita perlu menggunakan fungsi getStructuringElement:
• Erosi_type
: bentuk dari kernel, bentuk yang digunakan yaitu MORPH_ELLIPSE yang berbentuk Ellipse
• Erosion_size : ukuran celah linear, ukuran yang digunakan pada penelitian ini
adalah 5
3.2.2.2 Dilation
Proses dilasi adalah kebalikan dari proses erosi, membuat piksel off menjadi on, sehingga akan menyebabkan piksel putih bertambah luasnya. Tujuan dilakukan
proses dilasi adalah karena saat proses erosi dilakukan pada citra masukan, daerah yang diproses termasuk juga kulit ikut mengalami shrinking sehingga perlu dilakukan
suatu proses yang mengembalikan daerah tersebut agar bagian tangan nantinya akan terdeteksi dengan benar.
Mat element = getStructuringElementdilation_type,Size 2dilation_size+1,Pointdilation_size,dilation_size;
Imgproc.dilatesrc, dst, element; Parameter:
• Src
: citra masukan •
Dst : citra keluaran
• Element
: Ini adalah kernel yang akan di gunakan untuk melakukan operasi. Jika tidak ditentukan dahuly, maka defaultnya adalah
matriks 3x3 sederhana.Akan tetapi, kita dapat menentukan bentuknya. Untuk ini, kita perlu menggunakan fungsi
getStructuringElement: •
Dilation_type : bentuk dari kernel, bentuk yang digunakan yaitu MORPH_ELLIPSE yang berbentuk Ellipse
• Dilation_size : ukuran celah linear, ukuran yang digunakan pada penelitian ini
adalah 5
Universitas Sumatera Utara Universitas Sumatera Utara
3.2.2.3 Median Blur
Median blur dilakukan untuk menghilangkan noise yang masih terdapat pada citra setelah proses dilasi, agar tidak terdefinisi sebagai titik objek.berikut adalah fungsi
yang tersedia pada library OpenCV. medianBlurInputArray src, OutputArray dst, int ksize;
Parameter: •
src : citra masukan
• dst
: Citra keluaran •
ksize : ukuran celah linear, biasanya lebih dari 1, contohnya: 3, 5, 7.
3.2.3 Ekstraksi Fitur
Setelah gambar melalui tahap perbaikan citra untuk membersihkan gambar dari noise , maka selanjutnya citra akan dilakukan proses ekstraksi fitur yang meliputi
contour,convex-hull dan convexity defects pada citra. Proses ini dilakukan untuk mendapatkan informasi yang diinginkan untuk proses analisis ataupun
pengklasifikasian data citra. Berikut ini adalah penjelasan dari masing-masing proses yang disebutkan diatas.
3.2.3.1 Contour
kontur ditarik sekitar titik-titik putih dari tangan yang ditemukan dari hasil thresholding citra masukan. Hasil tresholding tersebut akan terbentuk lebih dari satu
titik pada gambar karena noise dari latar belakang citra. pada penelitian ini digunakan fungsi findcontours yang telah tersedia oleh OpenCV untuk mendeteksi titik-titik
kontur pada citra hasil perbaikan noise sebelumnya.Berikut adalah penjelasan dari fungsi tersebut.
findContours src image, contours, hierarcy, mode, method, Point; Parameter :
• Image
: citra masukan, yaitu citra hasil proses perbaikan citra •
Contours : titik kontur yang terdeteksi. Setiap titik kontur yang terdeteksi
akan disimpan didalam list titik vector
Universitas Sumatera Utara Universitas Sumatera Utara
• hierarchy
: keluaran berupa titik vektor yang bersifat opsional. Dalam parameter ini disimpan berbagai informasi dari setiap titik
kontur, misalnya titik kontur sebelumnya, titik kontur selanjutnya, titik kontur utama, dsb.
• Mode
: cara pendeteksian titik kontur. Pada penelitian ini dilakukan dengan cara CV_RETR_EXTERNAL, yang mengambil semua
titik kontur dan merekontruksi 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 segmen horizontal, vertikal, dan diagonal dan menentukan titik akhir pada kontur.
Setelah contour didapatkan pada citra masukan, maka titik-titik yang didapatkan akan digambar membentuk sebuah gambar tangan. Fungsi yang digunakan pada penelitian
ini yaitu drawContours yang telah tersedia pada library OpenCV.Berikut ini adalah gambar dari proses pendeteksian contour pada penelitian ini yang dapat dilihat dari
gambar 3.2.
Gambar 3.2 Hasil dari Contour
3.2.3.2 Convex-hull
Setelah titik-titik yang dihasilkan didapatkan dan dibentuk menjadi contour pada proses sebelumnya, maka proses selanjutnya yaitu Convex-hull. Convex hull adalah
metode yang digunakan untuk mendeteksi kontur atau obyek pada citra.Convex hull terdiri dari titik-titik yang dihubungkan dengan garis yang mengelilingi kontur objek
Universitas Sumatera Utara Universitas Sumatera Utara
pada citra. Setelah kontur-kontur didapatkan, dari kontur-kontur tersebut akan dicari kontur yang paling besarnya objek tangan harus yang paling besar sebelum
dilakukan pencarian convex hullnya .Fungsi yang digunakan pada penelitian ini yaitu convexHull. Adapun penjelasan fungsi tersebut yaitu.
convexHullInputArray points, OutputArray hull; Parameter:
• Points : titik kontur yang terdeteksi dan telah disaring.
• Hull : hasil keluaran Convex-hull.
Berikut ini adalah gambar dari proses pendeteksian convex-hull pada penelitian ini yang dapat dilihat dari gambar 3.3
Gambar 3.3 Hasil dari Convex-hull
3.2.3.3 Convexity defects Setelah kontur terbesar dan Convex-hull terdeteksi, maka proses selanjutnya yaitu
Convexity defects.yang merupakan titik temu antara titik kontur dan garis Convex-hull. Pada penelitian ini, digunakan fungsi convexityDefects yang telah tersedia di
OpenCV untuk mendeteksi Convexity defects. Berikut ini adalah penjelasan tentang fungsi tersebut.
convexityDefectscontour, convexHull, convexityDefects; Parameter :
• contour
: Titik-tik kontur terbesar yang terdeteksi •
convexhull : Convex-hull yang terdeteksi
Universitas Sumatera Utara Universitas Sumatera Utara
• convexityDefects
: hasil keluaran Convexity Defects. Berikut ini adalah gambar dari proses pendeteksian convex-hull pada penelitian
ini yang dapat dilihat dari gambar 3.4
Gambar 3.4 Hasil dari Convexity defects
3.3 Use Case Diagram