SKRIPSI
Disusun oleh :
DEDY SETIANTO
NPM. 0934010203
J URUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN”
J AWA TIMUR
▸ Baca selengkapnya: menghitung jari di dalam air untuk melatih
(2)SKRIPSI
Diajukan Untuk Memenuhi Sebagai Persyaratan Dalam Memperoleh Gelar Sarjana Komputer
Jurusan Teknik Informatika
Disusun oleh :
DEDY SETIANTO
NPM. 0934010203
J URUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN”
J AWA TIMUR
MENGGUNAKAN RUANG WARNA YCBCR DAN TEKNIK DETEKSI KONTUR
Disusun oleh :
DEDY SETIANTO
NPM. 0934010203
Telah disetujui untuk mengikuti Ujian Negar a Lisan Gelombang V Tahun Akademik 2013/2014
Pembimbing I Pembimbing II
Wahyu S.J . Saputr a, S.Kom, M.Kom Chr istya Aji Putr a, S.Kom, M.Kom NPT. 3 8608 10 0295 1 NPT. 3 8610 10 0296 1
Mengetahui,
Ketua J ur usan Teknik Infor matika Fakultas Teknologi I ndustr i UPN “Veter an” J awa Timur
Dr . Ir . Ni Ketut Sar i, MT NIP. 19650731 199203 2 001
Disusun oleh :
DEDY SETIANTO NPM. 0934010203
Telah dipertahankan dihadapkan dan diter ima oleh Tim Penguji Skr ipsi J ur usan Teknik Infor matika Fakultas Teknologi Industri
Univer sitas Pembangunan Nasional “Veteran” J awa Timur Pada Tanggal 13 J uni 2014
Pembimbing I:
Wahyu S.J . Saputr a, S.Kom, M.Kom NPT. 3 8608 10 0295 1
Pembimbing II:
Chr istya Aji Putr a, S.Kom, M.Kom NPT. 3 8610 10 0296 1
Tim Penguji : 1.
Budi Nugr oho, S.Kom, M.Kom NPT. 3 8009 05 02051
Dekan Fakultas Teknologi I ndustr i
Univer sitas Pembangunan Nasional “Veter an” J awa Timur
KETERANGAN REVISI
Mahasiswa di bawah ini :
Nama : DEDY SETIANTO NPM : 0934010203
Jurusan : Teknik Informatika
Telah mengerjakan revisi/ tidak ada revisi*) pra rencana (design)/ skripsi ujian lisan gelombang V, TA 2013/2014 dengan judul:
“MENGHITUNG J UMLAH J ARI PADA CITRA TANGAN DENGAN MENGGUNAKAN RUANG WARNA YCBCR DAN TEKNIK DETEKSI KONTUR”
Surabaya, 30 Juni 2014 Dosen Penguji yang memerintahkan revisi :
Allah SWT atas segala rahmat serta karunia-Nya yang diberikan kepada penulis sehingga penulis dapat menyelesaikan skripsi yang berjudul “ MENGHITUNG J UMLAH J ARI PADA CITRA TANGAN DENGAN MENGGUNAKAN RUANG
WARNA YCBCR DAN TEKNIK DETEKSI KONTUR ”.
Skripsi dengan beban 4 SKS ini disusun sebagai salah satu syarat untuk menyelesaikan program Strata Satu (S1) pada jurusan Teknik Informatika, Fakultas Teknologi Industri, UPN “Veteran” Jawa Timur.
Penulis menyadari bahwa penulisan skripsi ini masih jauh dari kesempurnaan dikarenakan pengetahuan dan pengalaman yang dimiliki oleh penulis masih sangat terbatas dan masih perlu diperbaiki baik dari segi penyajian maupun isinya. Oleh karena itu, penulis mengharapkan kritik dan saran yang bersifat membangun dari semua pihak yang membaca skripsi ini. Semoga skripsi ini bermanfaat bagi semua pembaca pada umumnya dan bagi penulis pada khususnya. Amiin.
Surabaya, 30 Juni 2014
bantuan dari berbagi pihak. Oleh karena itu dalam kesempatan ini perkenankan penulis mengucapkan rasa terima kasih yang sebesar-besarnya kepada :
1) Allah SWT., karena berkat rahmat dan karunia-Nya penulis dapat menyusun dan menyelesaikan skripsi ini.
2) Keluarga tercinta. Ayah dan Ibu yang selalu memberikan kasih sayang, dukungan moril, doa, semangat dan materiil yang tiada henti-hentinya. Kak Pipit, kak iwan dan adik tercinta chiko. Dan juga “mimiku” yang selalu mendampingi, memberikan semangat dan motivasi serta perhatian dan pengertian yang luar biasa.
3) Bapak Prof. Dr. Ir. Teguh Soedarto, MP selaku Rektor Universitas Pembangunan Nasional “Veteran” Jawa Timur.
4) Bapak Sutiyono, MT selaku Dekan Fakultas Teknologi Industri UPN “Veteran” Jawa Timur.
5) Ibu Dr. Ir. Ni Ketut Sari, MT selaku Ketua Jurusan Teknik Informatika UPN “Veteran” Jawa Timur.
6) Ibu Yisti Vita Via, S.ST, M.Kom selaku PIA Tugas Akhir Teknik Informatika UPN “Veteran” Jawa Timur.
8) Bapak Christya Aji Putra, S.Kom, M.Kom selaku dosen pembimbing II skripsi ini di UPN “Veteran” Jawa Timur yang telah banyak memberikan waktu, bimbingan dan petunjuk sejak awal hingga terselesainya skripsi ini. 9) Sahabat seperjuangan Dony dan Yoga. Tiada hari siang malam tanpa ngopi
dan ngoding. Kenanglah selalu momen-momen indah pada saat itu.
10) Bapak Rully, S.Kom yang selalu menasehati dan membimbing penulis kearah yang benar. Penulis tidak akan melupakan jasa-jasa beliau.
ABSTRAK ... i
KATA PENGANTAR ... ii
UCAPAN TERIMA KASIH ... iii
DAFTAR ISI ... v
DAFTAR GAMBAR ... viii
DAFTAR TABEL ... x
BAB I PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Rumusan Masalah ... 2
1.3. Batasan Masalah ... 3
1.4. Tujuan ……….. ... 4
1.5. Manfaat ... 4
BAB II TINJ AUAN PUSTAKA ... 5
2.1. Image ... 5
2.1.1.Definisi Image ... 5
2.1.2.File Gambar ... 6
2.2. Mode Warna Pada Gambar Digital ... 8
2.2.2.CMYK (Cyan Magenta Yellow Black) ... 10
2.2.3.YCbCr (Luma dan Kroma) ... 11
2.3. Macam-Macam Teknik Pendeteksian Warna Kulit ... 12
2.3.1.Deteksi Warna Kulit Menggunakan Model Warna RGB 12 2.3.2.Deteksi Warna Kulit Menggunakan Model Warna YCbCr .... 14
2.4. Morphological Image Processing ... 16
2.4.1.Dilasi ... 17
2.4.2.Erosi ... 18
2.5. Segmentasi Citra ... 19
2.6. Deteksi Kontur Tangan ... 20
2.6.1.Convexity dan Convexity Defects ... 22
2.6.2. Convex Hull ... 24
3.4. Convex Hull dan Convexity Defects dari Tangan ... 43
3.5.1.Interface Tampilan Awal ... 45
3.5.2.Interface Menu Load Images ... 46
3.5.3.Interface Finger Recognition ... 47
3.5.4.Interface YCbCr Detection ... 47
3.6. Lingkungan Implementasi ... 48
BAB IV HASIL DAN PEMBAHASAN ... 50
4.3.4.Proses Menghitung Jumlah Jari ... 61
4.4. Uji Coba Program ... 63
4.4.1.Skenario Uji Coba ... 63
4.4.2.Pelaksanaan Uji Coba ... 64
4.5. Evaluasi Aplikasi ... 66
4.5.1.Analisis Proses Pengambilan Citra Jari Tangan ... 67
4.5.2.Analisis Proses Face Recognition ... 71
BAB V KESIMPULAN DAN SARAN ... 72
5.2. Saran ... 73
ABSTRAK
Saat ini penelitian yang dilakukan tentang Human Computer Interaction (HCI) memberikan pengaruh yang besar dalam mengembangkan komunikasi manusia dengan komputer dan telah diterapkan dalam berbagai bidang atau peralatan lainnya, salah satunya teknologi komunikasi tersebut adalah pengenalan sebuah jari tangan manusia dengan media web-cam. Teknologi komunikasi komputer tersebut sangat bermanfaat sebagai alat pengenalan yang kedepannya dapat membantu manusia dalam menciptakan teknologi yang tepat guna.
Untuk mengatasinya akan dirancang suatu aplikasi pengenalan jari tangan manusia dengan menggunakan format warna dan metode khusus secara otomatis oleh komputer. Tujuan aplikasi ini adalah agar komputer mampu menghitung jumlah sebuah jari tangan manusia. Dalam penerapannya, aplikasi menghitung jari tangan ini terutama adalah pengambilan objek gambar jari tangan menggunakan sebuah kamera laptop/web-cam, setelah itu load ke dalam komputer yang tersedia pada aplikasi ini dan kemudian objek gambar akan diproses untuk dihitung jumlah jarinya dengan bantuan format warna YCbCr dan pendeteksian kontur.
Pada penelitian ini proses pengenalan jari tangan manusia menggunakan metode Convex Hull dan Convexity Defects sebagai pendeteksi kontur, format warna YCbCr yang memudahkan dalam pendeteksian kontur dan dengan bahasa pemrograman Visual Basic, Microsoft Visual Studio 2010 (.Net) dan library Emgu CV. Metode ini mempunyai komputasi yang sederhana dan cepat. Pemrosesan metode Convex Hull dan Convexity Defects akan melalui tahapan thresholding dan deteksi kontur. Dan terakhir dilakukan pemrosesan perhitungan jumlah jari tangan dengan menggunakan pemrosesan dari metode Convex Hull dan Convexity Defects, kemudian melakukan perkalian dengan skala perbandingan yang sudah ada ketetapannya setelah dilakukan dari beberapa uji coba. Dari percobaan dan pengujian yang dilakukan, aplikasi dapat mengenali jari tangan manusia dan menghitung jumlah jarinya pada citra dengan tingkat keakuratan 92.11%. Tinggi rendahnya unsur pencahayaan dan latar yang berada di belakang obyek sangat mempengaruhi proses pengenalan.
1.1. Latar Belakang
Saat ini penelitian yang dilakukan tentang Human Computer Interaction (HCI) memberikan pengaruh yang besar dalam mengembangkan komunikasi manusia dengan komputer dan telah diterapkan dalam berbagai bidang atau peralatan lainnya, salah satu teknologi komunikasi tersebut adalah menghitung jumlah jari tangan manusia dengan webcam komputer sebagai alat pendeteksian citra. Teknologi komunikasi komputer tersebut sangat bermanfaat sebagai alat pengenalan yang kedepannya dapat membantu manusia dalam menciptakan teknologi yang tepat guna. Teknologi ini masuk kedalam kategori Computer Vision.
Komputer Vision sendiri merupakan pengolahan citra yang dikaitkan dengan akusisi citra, pemrosesan, klasifikasi, pengakuan, dan pencakupan keseluruhan pengambilan keputusan diikuti dengan pengidentifikasian citra. Dan Hand Recognition pun ada kaitannya dengan komputer vision yaitu merupakan
dan teknik deteksi kontur. Teknik ini diharapkan dapat mengklasifikasikan warna kulit yang nantinya akan terdeteksi sebagai warna kulit manusia.
Dalam penelitian ini dilakukan implementasi deteksi jari tangan menggunakan dengan menggunakan format warna YCbCr. Format warna ini sering digunakan untuk mengklasifikasikan warna kulit. Untuk dapat mendeteksi sebuah jari tangan tidak cukup hanya dengan klasifikasi format warna, tetapi juga perlu metode yang disini menggunakan Convex Hull dan Convexity Defects. Metode ini akan mengembalikan nilai berupa kontur-kontur objek yang dihasilkan dari citra tangan manusia. Convexity Defects berfungsi sebagai suatu metode untuk mendapatkan kontur yang berkarakter kuat dan pasti pada suatu objek misalkan tangan. sedangkan convex hull biasa dipakai untuk mendapatkan kontur besar yang mengelilingi suatu objek.
Dengan adanya penelitian ini diharapkan agar kedepannya para pengguna aplikasi ini bisa mengembangkan teknologi tersebut agar lebih bermanfaat bagi perkembangan teknologi khususnya dibidang pendeteksian citra.
1.2. Rumusan Masalah
Adapun dari latar belakang yang telah diurai sebelumnya ditemukan masalah yang dirumuskan dalam satu rumusan masalah yaitu :
b. Bagaimana cara mendapatkan kontur dari tangan manusia dengan klasifikasi ruang warna YCbCr.
1.3. Batasan Masalah
Adapun batasan-batasan masalah yang dibuat agar dalam pengerjaan tugas akhir ini dapat berjalan dengan baik adalah sebagai berikut :
a. Citra tangan yang akan dideteksi adalah citra tangan yang menghadap ke depan, dalam posisi tegak dan tidak terhalangi sebagian oleh objek lain.
b. Pengambilan citra dilakukan dengan load images dari file explorer komputer.
c. Warna background harus berbeda dari warna kulit yang akan dideteksi. d. Dapat digunakan untuk mendeteksi jari tangan manusia, namun bukan
untuk tangan alat peraga/boneka.
e. Bahasa pemrograman yang dipakai adalah Visual Basic (.Net) dengan compiler Microsoft Visual Studio 2010 dan library Emgu CV.
1.4. Tujuan
Tujuan dari tugas akhir ini adalah membuat aplikasi menghitung jumlah jari pada citra tangan dengan menggunakan ruang warna YCbCr dan teknik deteksi kontur.
1.5. Manfaat
Adapun manfaat yang dapat diambil dari tugas akhir ini adalah sebagai berikut :
1. Penelitian ini memiliki konstribusi yang sangat penting dalam perkembangan komunikasi langsung manusia dengan komputer (Human Computer Interaction).
2. Ikut memberikan kontribusi terhadap penelitian pengembangan fungsi dari penghitungan jari tangan secara real-time.
3. Menambah pengetahuan dalam bidang kecerdasan buatan dan teknik pengolahan citra khususnya pengenalan tangan dengan menggunakan format warna YCbCr dan teknik deteksi kontur.
2.1 Image
2.1.1. Definisi Image
“ Secara harfiah image (citra) adalah gambar pada bidang dua dimensi. Ditinjau dari sudut pandang matematis, citra merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dua dimensi. (Sitorus dkk, 2006)
Citra didefinisikan sebagai fungsi intensitas cahaya dua dimensi f(x,y) dimana x dan y menunjukkan koordinat spasial, dan nilai f pada suatu titik (x,y) sebanding dengan tingkat kecerahan (gray level) dari citra di titik tersebut.“ (Purwanto Ari, 2009)
“ Citra dapat dikelompokkan menjadi dua bagian yaitu citra diam (still images) dan citra bergerak (moving images). Citra diam adalah citra tunggal yang
tidak bergerak. Sedang citra bergerak adalah rangkaian citra diam yang ditampilkan secara beruntun (sekuensial), sehingga memberi kesan pada mata sebagai gambar yang bergerak.” (Sitorus dkk, 2006)
“ Citra digital adalah citra dengan f(x,y) yang nilainya didigitalisasikan baik dalam koordinat spasial maupun dalam gray level. Digitalisasi dari koordinat spasial citra disebut dengan image sampling. Sedangkan digitalisasi dari gray level citra disebut dengan gray-level quantization. Citra digital dapat dibayangkan
dalam citra, dan nilai elemen matriks tersebut menunjukkan gray level di titik tersebut.” (Purwanto Ari, 2009)
Hal tersebut dapat diilustrasikan pada Gambar 2.1. berikut ini.
Gambar 2.1. Citra Digital
2.1.2. File Gambar
Format file gambar adalah bentuk standar dari proses organisasi dan penyimpanan gambar. File gambar terkomposisi oleh data pixel atau vector yang dilakukan proses rasterized menjadi pixel saat ditampilkan dalam sebuah vector graphics display. Pixel yang mengkoposisi gambar disusun sebagai sebuah grid
(kolom dan baris) dan setiap pixel terdiri dari representasi magnitudes dari kecerahan dan warna.
a. JPEG
JPEG adalah sebuah format gambar, sangat berguna untuk membuat gambar jenis fotografi berkualitas tinggi dalam ukuran file yang sangat kecil. Meskipun kompresi gambar JPEG sangatlah efisien dan selalu menyimpan gambar dalam kategori warna true color (24 bit), format ini bersifat lossy, yang berarti bahwa kualitas gambar dikorbankan bila tingkat kompresi yang dipilih semakin tinggi.
b. GIF
(Graphics Interchange Format ) GIF merupakan format grafis yang sering digunakan pada desain web. GIF memiliki kombinasi warna lebih sedikit dibanding JPEG, tetapi mampu menyimpan grafis dengan latar belakang transparan ataupun dalam bentuk animasi sederhana.
c. BMP
Bitmap adalah representasi dari citra grafis yang terdiri dari susunan titik
(pada printer). Beberapa format file bitmap yang populer adalah BMP, PCX dan TIFF. (Wikipedia, 2013)
2.2 Mode War na Pada Gambar Digital
2.2.1. RGB (Red Green Blue)
Gambar 2.2 Model Warna RGB
Menurut Herman Pratomo model warna RGB adalah model warna berdasarkan konsep penambahan kuat cahaya primer yaitu Red, Green dan Blue. Dalam suatu ruang yang sama sekali tidak ada cahaya, maka ruangan tersebut adalah gelap total. Tidak ada signal gelombang cahaya yang diserap oleh mata kita atau RGB (0,0,0). Apabila kita menambahkan cahaya merah pada ruangan tersebut, maka ruangan akan berubah warna menjadi merah misalnya RGB (255,0,0), semua benda dalam ruangan tersebut hanya dapat terlihat berwarna merah. Demikian apabila cahaya kita ganti dengan hijau atau biru.
hanya dapat terlihat apabila ada tiga cahaya primer, jadi apabila kita non-aktifkan salah satu cahaya, maka benda tersebut berubah warna.
Pada perhitungan dalam program-program komputer model warna direpresentasi dengan nilai komponennya, seperti dalam RGB (r, g, b) masing-masing nilai antara 0 hingga 255 sesuai dengan urusan masing-masing-masing-masing yaitu pertama Red, kedua Green dan ketigha adalah nilai Blue dengan demikian masing-masing komponen ada 256 tingkat. Apabila dikombinasikan maka ada 256 x 256 x 256 atau 16.777.216 kombinasi warna RGB yang dapat dibentuk.
2.2.2. CMYK (Cyan Magenta Yellow Black)
Gambar 2.3 Model Warna CMYK
2.2.3. YCbCr (Luma dan Kroma)
Gambar 2.4 Model Warna YCbCr
2.3 Macam-Macam Teknik Pendeteksian War na Kulit
Teknik pendeteksian warna kulit merupakan sebuah teknik untuk melakukan perhitungan terhadap sebuah warna dengan menggunakan metode tertentu dan penyeleksian kondisi sehingga menghasilkan sebuah output apakah warna tersebut diidentifikasi sebagai warna kulit ataukah bukan. Ada beberapa teknik untuk mengidentifikasi sebuah warna kulit, tiga teknik diantaranya adalah teknik RGB dan teknik YCbCr. Dimana setiap teknik untuk mendeteksi warna kulit pada gambar memiliki kelebihan dan kekurangan masing-masing. (Wikipedia, 2009)
2.3.1. Deteksi Warna Kulit Menggunakan Model War na RGB
mengidentifikasi warna kulit secara langsung sehingga diperlukan penyeleksian kondisi untuk mengenali apakah warna pada sebuah pixel merupakan warna kulit atau bukan,dengan cara membandingkan nilai masing-masing komposisi warna R G dan B dengan nilai-nilai tertentu.
Berikut penyeleksian kondisi yang dibutuhkan untuk mengenali apakah sebuah pixel warna merupakan representasi dari warna kulit atau bukan. Kondisi yang mengidentifikasi pixel warna sebagai warna kulit jika nilai (R)Red, (G)Green, dan (B)Blue adalah sebagai berikut :
R > 95 and G > 40 and B > 20, Max {R,G,B} – min {R,G,B} > 15,
| R-G | > 15 and R > G and R > B,
Sedengkan untuk kondisi pencahayaan yang cukup banyak maka pixel warna diidentifikasi sebagai pixel warna jika (R)Red, (G)Green, dan (B)Blue adalah sebagai berikut :
R > 220 and G > 210 and B > 170, | R-G | ≤ 15 and B < R and B < G,
2.3.2. Deteksi Warna Kulit Menggunakan Model War na YCbCr
Menurut Liensberger mode warna RGB mencampurkan elemen-elemen luminositas dan kromatisitas. Luminositas adalah elemen kecerahan yaitu terang
dan gelap. Sedangkan kromatisitas adalah elemen warna murni sehingga terlihat perbedaan yang nyata (vivid) antara warna yang satu dengan warna yang lain. Model warna HSV, HIS, atau HSL (Hue, Saturation, Value/Intensity/Luminance) memisahkan elemen warna luminositas dan kromatisitas. Elemen warna Hue dan Saturation mewakili kromatisitas, sedangkan elemen warna Value/Intensity/Luminance mewakili luminositas. Dengan adanya pemisahan ini
maka ruang warna HSV/I/L bersifat invariant terhadap sumber cahaya.
Model warna HSV/I/L merupakan model warna yang mengkodekan nilai RGB secara non-linier. Model warna lain yang non-linier adalah model warna YCbCr yang umum digunakan pada studio televisi di Eropa untuk pekerjaan-pekerjaan pengolahan citra. Formula pengkodean dari RGB ke YCbCr adalah sebagai berikut : intensitas pixel gambar digital menjadi elemen luminositas dan kromasitas. Elemen luminositas diwakili oleh komponen Y, sedangkan elemen kromasitas adalah komponen Cb dan Cr.
diperlukan ‘cost’ baik dari sisi komputasi maupun dari sisi akurasi data mengingat terjadi proses perhitungan yang melibatkanbilangan-bilangan floating-point sehingga mengurangi tingkat akurasi walaupun tidak terlalu signifikan.
Namun dengan memisahkan elemen luminositas dan kromatisitas maka akan diperoleh informasi gambar robust terhadap orientasi. Yang mungkin menjadi persoalan adalah pemilihan model warna yang memberikan distribusi warna yang baik, kompak, sertatingkat kestabilan yang baik.
Untuk mengenali sebuah pixel yang merupakan pixel warna kulit atau bukan diperlukan beberapa penyeleksian kondisi dari hasil konversi RGB ke YCbCr. Sebuah pixel warna diidentifikasi sebagai warna kulit jika :
Cb [77,127] Cr [133,173]
YCbCr juga mempunyai sebuah nilai range untuk sebuah citra. YCbCr_min dan YCbCr_max adalah range warna untuk warna kulit seperti dibawah.
YCbCr_min = new Ycc ( 0, 131, 80 ) ;
YCbCr_max = new Ycc ( 255, 185, 135) ;
Dengan menggunakan batas-batas nilai tersebut, setiap pixel pada gambar yang telah diubah kedalam model warna tersebut akan diperiksa apakah pixel-pixel tersebut masuk kedalam kondisi batas-batas nilai warna tersebut. (Wahyu
Saputra, 2009)
2.4 Morphological Image Processing
Morphologi adalah teknik pengolahan citra digital dengan menggunakan bentuk (shape) sebagai pedoman dalam pengolahan. Nilai dari setiap pixel dalam citra digital hasil diperoleh melalui proses perbandingan antara pixel yang bersesuaian pada citra digital masukan dengan pixel tetangganya. Operasi morphologi bergantung pada urutan kemunculan dari pixel, tidak memperhatikan nilai numeric dari pixel sehingga teknik morphologi sesuai apabila digunakan untuk melakukan pengolahan binari image dan grayscale image.
pada batas dari suatu objek. Jumlah pixel yang ditambahkan atau yang dihilangkan dari batas objek pada citra digital masukan tergantung pada ukuran dan bentuk dari structuring element yang digunakan.
Perbedaan antara pemrosesan citra digital secara morfologis dengan pemrosesan biasa adalah sebagai berikut :
a. Pengolahan citra dasar sebelumnya hanya memandang sebuah citra sebagai suatu fungsi intensitas terhadap posisi (x,y)
b. Dengan pendekatan morfologi, kita memandang suatu citra sebagai sebuah himpunan
c. Pemrosesan citra secara morfologi biasanya dilakukan terhadap citra biner (hanya terdiri dari 0 dan 1), walaupun tidak menutup kemungkinan dilakukan terhadap citra dengan skala keabuan 0-255. (Wikipedia, 2009)
2.4.1 Dilasi
Dilasi adalah operasi morphologi yang akan menambahkan pixel pada batas antar objek dalam suatu citra digital. Atau secara rinci Dilasi merupakan suatu proses menambahkan pixel pada batasan dari objek dalam suatu image.
Gambar diatas merupakan hasil image setelah dilakukan proses Dilasi dari Original Image dengan Stucturing Element yang telah ditentukan di atas. Warna
hijau merupakan pixel tambahan setelah dilakukan Dilasi. (M. Taufik Yusuf, 2011)
2.4.2 Erosi
Erosi merupakan kebalikkan dari Dilasi. Proses ini akan membuat ukuran sebuah citra menjadi lebih kecil. Berbeda dengan dilatasi, apabila erosi dilakukan maka yang dikerjakan adalah memindahkan pixel pada batasan-batasan objek yang akan di erosi. Jumlah dari pixel yang ditambah atau dihilangkan bergantung pada ukuran dan bentuk dari structuring element yang digunakan untuk memproses image tersebut.
Gambar 2.6 Hasil Gambar Sebelum dan Sesudah Erosi
hijau merupakan pixel dihilangkan setelah dilakukan proses Erosi, sehingga pixel hasilnya hanya yang berwarna hitam. (M. Taufik Yusuf, 2011)
2.5 Segmentasi Citr a
Segmentasi Citra merupakan teknik untuk memisahkan atau mengisolasi suatu objek atau sebagian dari objek dari suatu image (memisahkan foreground dengan background). Banyak situasi dalam computer vision yang membutuhkan segmentasi atau memisahkan foreground atau suatu objek terhadap backgroundnya guna melihat aktifitas pixel dari objek yang objek yang ingin kita
lihat. Misalkan ketika suatu kamera keamanan dilengkapi pendeteksi pergerakan manusia atau objek lainnya yang menyerupai manusia dan beberapa binatang, maka kamera tersebut harus terlebih dahulu dapat melakukan segmentasi terhadap objek manusia ataupun binatang tertentu.
seperti morphology, flood fill, threshold, dan pyramid akan tetapi terdapat algoritma tersendiri yang dapat menghasilkan segmentasi yang cukup baik terutama dalam segmentasi kulit manusia yang dipakai dalam penelitian ini. (Fadlisyah, 2007)
2.6 Deteksi Kontur Tangan
Kontur merupakan daftar himpunan terurut pixel tepi atau komponen terhubung. Pelacakan kontur menggunakan metode contour tracking. Metode pelacakan kontur adalah metode untuk mendeteksi kontur luar dan kemungkinan kontur dalam, mengenali dan membuat label bagian dalam dari setiap komponen. Metode ini didasari pada kenyataan bahwa suatu komponen sepenuhnya ditentukan oleh kontur. Pelabelan dilakukan dengan sekali kunjungan yaitu dari atas ke bawah dan dari kiri ke kanan untuk setiap garis, namun demikian titik kontur kemungkinan dikunjungi lebih dari satu kali sampai sejumlah tertentu. Teknik ini selain melakukan pelabelan terhadap komponen terhubung juga melakukan ekstraksi kontur komponen terhubung dan mengurutkan titik kontur.
Kontur adalah suatu kumpulan poin atau titik yang didapatkan dari suatu komputasi atau perhitungan yang mewakili bentuk dari suatu batas objek pada suatu citra yang nantinya dihubungkan dengan garis dari setiap titik atau point yang telah didapat, sehingga menghasilkan kontur dari objek tersebut.
melakukan pencarian kontur terhadap suatu citra untuk melihat apakan ada kontur yang berbentuk seperti sebuah mobil dala suatu citra.
Kontur didalam openCV membutuhkan suatu tempat memory khusus untuk menampung sequence yang berisikan titik atau point-point yang ditemukan. Maka di dalam openCV dibuat suatu struktur data yang merupakan linkedlist yang sequential tersendiri untuk menampung titik-titik kontur tersebut yang disebut dengan sequence atau disingkat cvSeq (computer vision Sequential).
Dalam pencarian kontur ada 4 metode yang dapat digunakan dalam pengambilan kontur pada suatu citra yaitu Retrieval External, Retrieval Components, Retriecal List dan Retrieval Tree.
a. Retrieval External
Pengambilan kontur yang didasarkan hanya pada kontur-kontur yang terlihat jelas dan berada di bagian luar objek yang ada dalam citra. b. Retrieval List
Pengambilan seluruh kontur dan menyimpannya di dalam list. Tersimpan sebagai linkedlist.
c. Retrieval Components
Pengambilan seluruh kontur dan menyimpannya pada dua level hirarki dimana hirarki paling atas/top level boundaries (kontur yang paling luar yang melingkari hole) adalah external boundaries dari komponen sedangkan level kedua adalah boundaries dari hole.
Pengambilan seluruh kontur dan merekonstruksikannya ke dalam hirarki (full herarchy) menjadi kontur yang bersarang. (Niko Purwanto Putra, 2012)
2.6.1 Convexity dan Convexity Defects
Dalam menggambar shape atau suatu bentuk dalam suatu kontur yang sudah ditemukan dapat menggunakan metode Convexity and Convexity defects. Metode ini memberikan pemahaman pada komputer mengenai bentuk dari kontur yang ditemukan dengan memanfaatkan ketidak tepatan penggambaran shape yang mengelilingi objek, metode ini bukan hanya dapat mendapatkan karakteristik dari tangan tapi juga posisi tangan.
Convexity Defects berfungsi sebagai suatu metode untuk mendapatkan
kontur yang berkarakter kuat dan pasti pada suatu objek misalkan tangan. sedangkan convex hull biasa dipakai untuk mendapatkan kontur besar yang mengelilingi suatu objek.
Convexity dan convexity defects menggambarkan kontur dengan dua
Penjelasan dalam rumus diatas diketahui phi convex hull dibagi dengan phi shape dari benda tersebut. Sehingga dengan menggunakan convex hull kita akan
mendapatkan bentuk boundary dari tangan dengan batas-batas minimal.
Sedangkan untuk mendapatkan kontur atau menggambarkan kontur tepat mengelilingi kontur tangan dapat menggunakan metode convexity defects. Berikut adalah persamaan yang dipakai dalam openCV sesuai dengan advances visual computing 5th symposium :
Dimana v1,v2 adalah masing-masing vektor antara awal dan titik akhir pertama dan kedua convexity defects. Jika angle lebih rendah dari threshold terkecil, maka v1 dan v2 dari persamaan convexity defects tersebut dianggap sebagai kandidat yang mungkin untuk penyempitan (menjadi titik baru), selain itu maka convexity defects tidak dapat dipakai Berikut contoh convex hull dan convexity defects.
Convexity defect terlihat merupakan garis yang tepat mengelilingi tangan
dan merupakan shape atau bentuk yang minimalis, sedangkan garis kontur gelap adalah convex hull sekitar tangan. (Hendri Kharisma, 2010)
2.6.2 Convex Hull
Definisi dari convex hull adalah poligon yang disusun dari subset titik sedemikian sehingga tidak ada titik dari himpunan awal yang berada di luar poligon tersebut (semua titik berada di batas luar atau di dalam area yang dilingkupi oleh poligon tersebut).
Convex Hull dari kumpulan sejumlah titik adalah suatu convex set terkecil
yang didalamnya terdapat titik-titik tersebut. Dalam dua dimensi ini merupakan convex polygon. Simple polygon adalah bentuk dua dimensi yang mempunyai
Gambar 2.8 Convex Hull
2.7 Visual Basic
Bahasa Visual Basic adalah salah satu diantara sekian banyak bahasa pemrograman yang cukup banyak digunakan oleh para programmer. Visual Basic adalah bahasa pemrograman visual dengan dasar pemrograman bahasa BASIC. Bahasa BASIC (Beginner's All-purpose Sybolic Instruction Code) dikembangkan pertama kali pada awal 1950-an. Sementara bahasa Visual Basic, yang merupakan pengembangan bahasa BASIC dikembangkan pertama kali oleh Microsoft pada tahun 1991.
Tampilan dari Visual Basic 2010 seperti pada Gambar 2.8. berikut ini.
Gambar 2.9 Tampilan Lingkungan Visual Basic 2010
Agar bisa menguasai bahasa pemrograman Visual Basic, diharuskan mempelajari dasar-dasarnya dengan lebih baik dan kuat. Beberapa komponen utama dalam bahasa Visual Basic yang harus diketahui diantaranya :
• Project
Project adalah sekumpulan modul. Jadi project (proyek) adalah program
aplikasi itu sendiri. Didalamnya terdapat form beserta code nya. Project ini disimpan dalam file berakhiran .vbproj.
• Form
Form adalah object yang dipakai sebagai tempat bekerja program aplikasi.
Toolbox adalah kotak alat yang berisi icon-icon untuk memasukkan objek
tertentu ke dalam jendela form. • Properties
Properties digunakan untuk menentukan setting suatu objek. Suatu objek
biasanya mempunyai beberapa properties yang dapat diatur langsung dari jendela properties atau lewat kode program.
• Kode Program
Kode program adalah serangkaian tulisan perintah yang akan dilaksanakan
jika suatu objek dijalankan. Kode program ini akan mengontrol dan menentukan jalannya suatu objek.
• Event
Event adalah peristiwa atau kejadian yang diterima oleh suatu objek,
misalnya klik, seret, tunjuk, dan lain-lain. Event yang diterima objek akan memicu MS VB menjalankan kode program yang ada di dalamnya. (Wikipedia ,2011)
2.8 OpenCV (Open Computer Vision)
OpenCV merupakan framework untuk membantu dalam membangun sistem yang menggunakan teknologi Computer Vision yang support terhadap Intel Image Processing Library (IPL). OpenCV di desain untuk mengefisiensikan
Recognition pada tahun 2000, pada pertengahan tahun 2008 disupport oleh Willow
Garage dan pada tahun 2009 di release OpenCv versi 2. (OpenCV, 2010)
2.9 Emgu CV
Emgu CV merupakan suatu library open source lintas platform. Emgu CV sebenarnya adalah .Net wrapper pada Open CV library image processing. Emgu CV dapat memanggil fungsi-fungsi pada Open CV dengan bahasa pemrograman kompatibel .Net.
Keuntungan menggunakan library Emgu CV adalah : a. Cross Platform
Emgu CV dapat dijalankan pada berbagai sistem operasi seperti Linux, MacOS, Windows, iPad, iPhone dan Android.
b. Cross Language
Meskipun ditulis dalam bahasa pemrograman C#, Emgu CV dapat digunakan oleh bahasa pemrograman lain yang kompatibel, seperti VB.NET, C++, dan IronPython.
Emgu CV memiliki 2 layer, layer 1 berisi function, structure, dan enumeration mappings yang secara langsung merefleksikan yang ada di Open
CV. Sementara layer 2 berisi class yang merupakan keuntungan dari bahasa pemrograman .Net.
Tabel 2.1. Fungsi Class – Class Pada Emgu CV
Class Description
AdaptiveSkinDetector Adaptive Skin Detector CameraCalibration Camera calibration functions
Capture Capture images from either camera or video
file
CascadeClassifier The Cascade Classifier
ColorInfoAttribute Attribute used to specify color information
Contour(T) Wrapped class for Contour
CvArray(TDepth) Wrapped CvArr
CvInvoke Library to invoke OpenCV functions
DenseHistogram A Dense Histogram
Class Description
ExtrinsicCameraParameters Extrinsic camera parameters
FaceRecognizer Face Recognizer
FeatureTree A wrapper for CvFeatureTree
FisherFaceRecognizer Fisher face recognizer
HaarCascade HaarCascade for object detection
HOGDescriptor A HOG discriptor
A Map is similar to an Image, except that the location of the pixels is defined by its area and resolution
Matrix(TDepth) A Matrix is a wrapper to cvMat of OpenCV
cvMemStorage of OpenCV
MotionHistory The motion history class
Octree Oct-Tree
OpticalFlow Contains a collection of optical flow methods
Class Description
PointCollection A collection of points
RotationMatrix2D(T) A (2x3) 2D rotation matrix. This Matrix defines an Affine Transform
Seq(T) Wrapper to cvSeq of OpenCV
SparseMatrix(TDepth) Create a sparse matrix
StereoBM Use Block Matching algorithm to find stereo
correspondence
StereoGC Use Graph Cut algorithm to find stereo
correspondence
VideoWriter Create a video writer that write images to video format
Pada EmguCV untuk melakukan perhitungan jari tangan dapat menggunakan class AdaptiveSkinDetector, Countur, CvArray, CvInvoke, dll. Sebenarnya banyak fungsi-fungsi dari EmguCV yang mempunyai kegunaan masing-masing, contohnya fungsi untuk mendeteksi sebuah wajah atau fungsi untuk mendeteksi gerakan suatu benda dll. Dan inilah class-class dalam emguCV yang digunakan untuk pembuatan aplikasi perhitungan jari tangan. (EmguCV, 2011)
Tabel 2.2. Class – Class yang digunakan pada Emgu CV
Class Description
Contour(T) Wrapped class for Contour
CvArray(TDepth) Wrapped CvArr
CvInvoke Library to invoke OpenCV functions
Image(TColor, TDepth) An Image is a wrapper to IplImage of OpenCV.
Pada bab ini akan dijelaskan mengenai proses pembuatan aplikasi menghitung jumlah jari pada citra tangan dengan menggunakan ruang warna YCbCr dan metode ConvexHull dan Convexity Defects.
3.1. Analisis Sistem
Secara garis besar proses perancangan aplikasi akan digambarkan seperti pada Gambar 3.1. di bawah ini.
Gambar 3.1. di atas merupakan desain flowchart dari pengembangan sistem pengenalan citra jari tangan menggunakan metode convex hull and defects. Berikut penjelasan dari flowchart diatas :
a. Start
b. Input image
Pada proses input image, user melakukan pengambilan gambar tangan yang ingin dideteksi yang berasal dari file browser komputer user. Gambar yang akan dideteksi harus file gambar yang ber-ekstensi .JPG / JPEG dengan ukuran gambar 391x324.
c. Pada proses YCbCr_min dan YCbCr_max, maka gambar yang telah diinputkan tadi akan ditentukan nilai value pada format warna YCbCr. Pada Emgu CV untuk menentukan format warna YCbCr value dapat dengan menggunakan nilai range sebagai berikut :
YCr Cb_mi n = New Ycc( 0, 131, 80) YCr Cb_max = New Ycc( 255, 185, 135)
d. Pada proses Convert to Ycc color maka akan dihasilkan gambar yang ber-range warna YCbCr. Dengan menggunakan warna YCbCr maka akan
dapat memudahkan dalam pendeteksian tangan manusia dengan memanfaatkan warna kulit manusia.
Berikut adalah konversi warna RGB ke dalam YCrCb : = 0.2999 ∙ + 587 ∙ + 114 ∙
= + 1.403 ∙ (Cr + elta )
= − 0.344 ∙ ( r − elta ) − 0.714 · ( b − elta ) = + 1.773 ∙ ( b − elta )
Dimana
Gambar 3.2. Hasil Konversi YCbCr Color
Gambar 3.3. Hasil Proses Dilate Pada Gambar
f. Pada proses Erode, derau-derau/noise yang terdeteksi didalam frame gambar akan dihapus sehingga menghasilkan gambar yang halus dan tidak ada noise.
Gambar 3.4. Hasil Proses Erode Pada Gambar
Gambar 3.5. Get Convex Hull and Convexity Defects
h. Menghitung Jari, fungsi ini akan melakukan penghitungan jumlah jari yang dideteksi dari tangan tersebut berdasakan oleh garis tepi dan garis polygon yang sudah diproses sebelumnya. Fungsi ini akan menetukan
mana bagian dari garis tepi yang cekung dan nantinya akan diasumsikan sebagai depthpoint dari cekungan tersebut. Kemudian mana bagian dari garis polygon yang menonjol dan nantinya akan diasumsikan sebagai startpoint.
3.1.1 Pre-processing
Gambar 3.6 Pra-proses
Tahap pre-processing seperti pada Gambar 3.6. di atas merupakan tahapan proses dari citra tangan yang nantinya akan diproses untuk pengenalan citra tangan sampai penghitungan jari tangan. Terdapat 4 tahapan dalam pre-processing diatas, antara lain :
a. YCbCr_min YCbCr_max
Pada tahap ini sebuah citra tangan akan ditentukan nilai value YCbCr Color-nya dengan fungsi YCbCr_min dan YCbCr_max. Tujuannya dari tahapan
ini adalah untuk menentukan nilai value format warna YCbCr yang ada pada suatu citra. Pada Emgu CV untuk menentukan format YCbCr dengan menggunakan perintah :
Dim YCrCb_min As Ycc Dim YCrCb_max As Ycc
b. Konversi Threshold
Gambar 3.8 Proses konversi Treshold
image_result = image_scr.Convert(Of Gray, Byte)()
dimana :
image_scr as image awal berformat RGB
image_result as image hasil berformat grayscale
c. Dilate
Gambar 3.9 Proses dilate
Pada tahapan dilate ini adalah proses yang menyempurnakan dari proses citra gambar black white untuk mempertebal dan memperjelas kontur dari tangan yang sudah terdeteksi. Citra tangan akan ditemukan oleh proses ini. Sehingga tepian terlihat lebih jelas.
d. Erode
Pada tahapan erode ini adalah proses yang menyempurnakan dari citra gambar black white untuk menghapus derau-derau/noise yang terdeteksi didalam frame gambar sehingga menghasilkan gambar yang halus dan tidak ada noise.
Citra tangan akan ditemukan oleh proses ini, sehingga tepian terlihat lebih halus dan mulus.
3.2. Segmentasi Citr a Tangan
Pada tahap deteksi tangan dengan metode convex hull dan convexity defects terdapat proses-proses tertentu dalam implementasi metode tersebut,
diantaranya metode convex hull memerlukan citra 1 bit dan merupakan contour hasil threshold. Pembuatan citra hasil threshold dilakukan dengan melakukan segmentasi menggunakan metode cvInRange untuk melakukan segmentasi dengan nilai maximum dan minimum warna kulit dengan format YCrCb, lalu dikenakan cvDilate untuk melakukan segmentasi pada citra dengan hasil cvRangeS sebelumnya dan cvErode untuk memperjelas atau mempertegas hasil threshold yang di dapat.
Berikut adalah psudeocode prosedur getGraber yang merupakan proses segmentasi warna kulit :
Procedure Dim grabber As Image()
1 : image := grabber = New Image(Of Bgr, Byte)
2 : ConvertColor(image, imageCopy, CV_RGB_To_YCbCr) 3 : InRanges(currentYCbCrFrame, min, max, skin) 4 : ConvexHulldanDefects()
Sedangkan untuk algoritma pada convert color YcbCr sendiri yaitu : Procedure Dim grabber As Image()
1 : input:
10: let mask = colorclose(Cb_p, Cr_p, Cb_key, Cr_key, tola, tolb)
11: let mask = 1.0 - mask
12: out(i,j) = fg(i,j) - mask*key_color + bg(i,j)*mask 13: end return;
14: end
Pada gambar 3.11 merupakan contoh hasil segmentasi menggunakan nilai maksimum dan minimum dari warna kulit.
Gambar 3.11. Contoh Hasil Segmentasi
Procedure Dilation()
Berikut adalah psudeocode prosedur erode yang menentukan wilayah warna kulit :
Procedure Dim skinErode As Image()
1 : image := grabber = New Image(Of Bgr, Byte)
3.3. Pencarian Kontur Tangan
Setelah proses diatas barulah dapat dilakukan proses pencarian contour dengan menggunakan metode Finding Contour dan mencari kontur terbesar atau biggest contour. Dalam tahap ini digunakan rutin emguCV yaitu cvFindContours.
Procedure ConvexHulldanDefects()
1 : contour = FindCountur(skin,contour,storage) 2 : do while contour <> Null
3 : result1 = contour.Area 4 : if result1 > result2 then 5 : result2 = result1
6 : biggestContour = contour 7 : endif
8 : contour := contour.next 9 : enddo
10: if biggestCountur <> Null then
11: DrawCountur(biggestCountur,storage) 12: hull = convexHull(biggestCountur)
13: imageBox = cvMinRect(biggestCountur,storage) 14: imageCenter = createCircle(imageBox)
15: defects = ConvexityDefects(biggestCountur, hull) 16: endif
17: end
Pada gambar 3.12 merupakan contoh hasil ekstraksi kontur yang didapat setelah melakukan segmentasi dari warna kulit.
Gambar 3.12. Contoh Hasil Pencarian Kontur
3.4. Convex Hull dan Convexity Defects dar i Tangan
convex hull untuk mendeteksi bidang tangan dan convexity defects yang nantinya
titik hasil dari convexity defects digunakan untuk komputasi menghitung jari. Parameter input dalam convex hull merupakan contour hasil komputasi sebelumnya. Parameter hull_storage merupakan tampat alokasi sequence hasil komputasi convex hull sedangkan orientation bernilai default dengan konstanta CV_CLOCKWISE yang bernilai 1 yang artinya proses komputasi searah jarum jam. Dan tipe data dari return value convex hull merupakan sequence hasil dari komputasi artinya contour yang sudah menunjukan lekuk dari tangan manusia.
Setelah mendapatkan hull tangan manusia yang merupakan lekuk dari tangan manusia lalu proses dilanjutkan dengan menghitung titik defects dengan metode convexity defects. Berbeda dengan convex hull, convexity defects memiliki tipe data tersendiri sebagai hasil komputasinya yaitu CvConvexityDefect yang nanti berfungsi menampung titik defects yang akan digunakan sebagai parameter untuk menghitung jumlah jari manusia.
Parameter kontur merupakan kontur dari tangan hasil threshold pencarian warna kulit, sedangkan parameter convexhull merupakan nilai hull hasil komputasi convex hull sebelumnya. Yang dihasilkan berupa sequence yang nantinya dirubah dalam tipe data cvConvexityDefects array 2 dimensi. Pada gambar 3.2 adalah langkah yang dibutuhkan untuk menggunakan metode Convex-Hull dan Convexity Defects hingga hasil dari metode digunakan untuk melakukan
Procedure MenghitungJari()
1 : For i=0 to defects.total.do 2 : startPoint = arrDefects.Start 3 : endpoint = arrDefects.End 4 : deptPoint = arrDefects.Dept
5 : if ((startPoint.y < imageBox.y) OR (deptPoint.y < imageBox.y)) AND (startPoint.y < deptPoint.y) && (sqrt(pow(startPoint.x = deptPoint.x,2) + pow(startPoint = deptPoint.y,2)) > (imageBox.height /6.0)) then
6 : fingerNum = fingerNum + 1
7 : cvLine(image, startPoint, deptPoint) 8 : endif
9 : cvCircle(image, startPoint, 2, 5) 10: cvCircle(image, deptPoint),2, 5) 11: enddo
12: end
3.5. Perancangan Interface
Interface merupakan suatu halaman perangkat lunak sebagai tempat
interaksi bagi pengguna dan perangkat lunak tersebut. Tujuan dari perancangan interface berikut ini agar pengguna dapat memahami jalan kerja program dengan
mudah.
3.5.1. Interface Tampilan Awal
Gambar 3.13. Desain Tampilan Awal
3.5.2. Interface Menu Load Images
Pada form seperti pada Gambar 3.14. dibawah, pengguna dapat memilih gambar dari file gambar komputer pengguna dengan mengklik tombol load images. Gambar yang akan dideteksi yaitu gambar yang ber-ekstensi jpg file dan
sudah memiliki ukuran yang sesuai dengan frame aplikasi.
Gambar 3.14. Desain Tampilan Menu Load Image
x
Finger Recognition YCbCr Color in BW
Image
Load
x
Finger Recognition YCbCr Color in BW
Image
3.5.3. Interface Finger Recognition
Pada ImageBox seperti pada Gambar 3.15 dibawah, akan muncul gambar yang sudah terdeteksi jari tangan pengguna disertai jumlah jari yang terdeteksi. Pada ImageBox ini akan disertai pula garis-garis yang mempermudah user dalam mengetahui berdasarkan apa tangan yang dideteksi dalam imagebox tersebut.
Gambar 3.15. Desain Tampilan ImageBox Finger Recognition
3.5.4. Interface YCbCr Detection
Pada ImageBox seperti pada Gambar 3.16 dibawah, akan muncul gambar hasil dari format YCbCr dalam bentuk Black and White Picture. Menggunakan Black and White Picture bertujuan untuk memudahkan para pengguna aplikasi
dalam menentukan kontur dari sebuah tangan yang akan dideteksi. Tentunya format warna ini berasal dari format warna YCbCr yang sudah dikonvert ke nilai Threshold Black and White Picture.
x
Finger Recognition YCbCr Color in BW
Image
Gambar 3.16. Desain Tampilan ImageBox YCbCr Detection
3.6. Lingkungan Implementasi
Untuk dapat melalukan implementasi sistem secara optimum, maka dibutuhkan spesifikasi sistem perangkat lunak (software) ataupun perangkat keras (hardware) yang memadai.
Pada bagian ini akan dijelaskan mengenai perangkat keras dan perangkat lunak yang digunakan pada implementasi aplikasi pengenalan jari tangan ini.
a. Perangkat Keras
Perangkat keras yang digunakan untuk implementasi aplikasi pengenalan citra jari tangan ini adalah :
• Komputer dengan processor AMD Turion™ II Dual-Core Mobile M500 (2 CPUs), ~2.2GHz
• 3072 MB RAM
x
Finger Recognition YCbCr Color in BW
Image
• VGA Card ATI Mobility Radeon HD 4200 1474 MB • Monitor 14”
• Hard Disk 320 GigaByte
b. Perangkat Lunak
Perangkat lunak yang digunakan untuk implementasi aplikasi pengenalan citra jari tangan ini adalah :
• Sistem Operasi Microsoft Windows 7 Professional 32-bit (6.1, Build 7601) Service Pack 1
Pada bab IV ini akan dijelaskan mengenai implementasi dari rancangan program yang telah dibuat pada bab III. Bagian implementasi aplikasi menghitung citra jari tangan ini meliputi : lingkungan implementasi, implementasi data, implementasi interface, implementasi proses, uji coba dan evaluasi aplikasi.
4.1. Implementasi Data
Data yang akan diimplementasikan pada proses pembuatan aplikasi menghitung citra jari tangan dengan metode deteksi kontur dan format warna YCbCr menggunakan library Emgu CV ini berupa citra yang telah di-capture
melalui web-camera yang akan diproses melalui beberapa tahapan untuk menyimpan dan melakukan pengenalan citra jari tangan yang terdeteksi tersebut.
4.2. Implementasi Interface
Gambar 4.1. Tampilan Loading Pembuka
Tampilan diatas merupakan tampilan ketika awal aplikasi dijalankan, user diminta untuk menunggu proses yang akan dimulai. Tampilan ini hanya dikhususkan untuk memperindah tampilan aplikasi.
Gambar 4.2. Tampilan Utama Aplikasi
• tombol (exit),
• tombol (search),
Tombol exit berfungsi untuk keluar dari aplikasi pengenalan citra jari tangan tersebut, tombol search berfungsi untuk menampilkan file browser dari data laptop/pc.
Tampilan aplikasi telah disusun sedemikian rupa dengan tujuan untuk mempermudah pengguna dalam memahami dan menggunakan aplikasi pengenalan citra jari tangan tersebut.
Ketika pengguna mengklik tombol search maka akan ditampilkan seperti pada Gambar 4.3.
Gambar 4.3. Tampilan Search
Dengan demikian maka akan terdeteksi pula jumlah jari yang ada pada gambar beserta gambar yang sudah di konversi ke threshold (frame sebelah kanan).
4.3. Implementasi Pr oses
Bagian implementasi proses ini menjelaskan mengenai implementasi proses-proses sesuai dengan konsep yang telah dibuat pada bab III seperti yang telah digambarkan dalam flowchart.
Aplikasi pengenalan citra jari tangan ini merupakan aplikasi yang menggunakan library Emgu CV, oleh karena itu sebelum proses coding maka diperlukan untuk melakukan konfigurasi pada komputer dan Microsoft Visual Studio 2010 agar dapat menjalankan fungsi-fungsi yang terdapat dalam library Emgu CV tersebut. Berikut ini adalah langkah-langkahnya :
1. Instalasi Open CV dan Konfigurasinya
Untuk memulai instalasinya, double klik pada file Open CV yang sudah didownload. Sebenarnya ini bukanlah instalasi, melainkan hanya mengekstrak file saja. Pilih lokasi untuk mengekstrak file .exe Open CV. Untuk lebih memudahkan kita ekstrak saja pada drive C. Setelah proses ekstrak file selesai, tahap selanjutnya adalah melakukan setting path agar file library Open CV dapat dipanggil dari Visual Studio. Klik kanan pada Computer, pilih Properties kemudian pilih Advanced system settings
Gambar 4.4. Tampilan Setting Open CV ke-1
Kemudian klik Environment Variables seperti pada Gambar 4.6.
Gambar 4.5. Tampilan Setting Open CV ke-2
;C:\opencv\build\x86\vc10\lib\;C:\opencv\build\bin\;C:\opencv\build\x86
\vc10\bin\ seperti pada Gambar 4.7.
Gambar 4.6. Tampilan Setting Open CV ke-3
Klik OK, kemudian restart komputer agar system dapat mengenali path baru tersebut.
2. Instalasi Emgu CV dan Konfigurasinya
Seperti instalasi pada Open CV untuk memulai instalasi double klik pada file Emgu CV yang sudah didownload. Pilih drive C untuk mengekstrak file .exe Emgu CV.
Gambar 4.7. Tampilan Setting Emgu CV ke-1
Pada tab browse pilih lokasi penginstalan Emgu CV kemudian pilih folder bin. Pilih file Emgu.CV.dll, Emgu.CV.UI.dll dan Emgu.Util.dll seperti pada Gambar 4.8.
Setelah menambahkan library kemudian menambahkan beberapa komponen Emgu CV ke toolbox. Komponen ini nantinya dapat digunakan untuk menampilkan gambar seperti picture box. Untuk menambahkan komponen, terlebih dahulu pilih bagian General pada Toolbox. Kemudian klik kanan dan pilih Choose Items seperti pada
Gambar 4.9.
Gambar 4.9. Tampilan Setting Emgu CV ke-3
Lanjutkan dengan mengklik tombol Browse dan pilih file Emgu.CV.UI.dll pada folder bin di lokasi folder Emgu CV. Kemudian
Gambar 4.10. Tampilan Setting Emgu CV ke-4
Pada view code di project yang telah dibuat tambahkan kode sebagai berikut :
Imports Emgu.CV
Imports Emgu.CV.Structure
Imports Emgu.CV.CvEnum
4.3.1. Pr oses Input Gambar pada File Explorer PC
Proses input gambar ini merupakan sebuah proses untuk menginputkan gambar yang diambil dari file explorer PC/Laptop user yang nantinya akan digunakan untuk memulai pengenalan citra jari tangan pada gambar yang ingin dideteksi dan menampilkannya pada form yang telah disediakan. Berikut adalah potongan source code untuk proses tersebut :
... ... ...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
4.3.2. Pr oses Deteksi YCbCr
Proses Deteksi YCbCr ini merupakan proses mengkonversi image berwarna RGB menjadi YCbCr color kemudian dimplementasikan ke black white image . Berikut adalah potongan source code untuk proses tersebut :
... ... ...
currentFrameCopy = currentFrame.Copy()
YCrCb_min = New Ycc(0, 131, 80)
YCrCb_max = New Ycc(255, 185, 135)
Dim currentYCrCbFrame As Image(Of Ycc, Byte) =
currentFrameCopy.Convert(Of Ycc, Byte)()
Dim skin As Image(Of Gray, Byte) = New Image(Of Gray,
Byte)(currentFrameCopy.Width, currentFrameCopy.Height)
skin = currentYCrCbFrame.InRange(CType(YCrCb_min, Ycc),
CType(YCrCb_max, Ycc))()
... ... ...
4.3.3 Pr oses Convex Hull dan Defects
Pada proses ini Convexity Defect berfungsi sebagai suatu metode untuk mendapatkan kontur yang berkarakter kuat dan pasti pada suatu objek yaitu tangan. Sedangkan convex hull biasa dipakai untuk mendapatkan kontur besar yang mengelilingi suatu objek tangan tersebut. Berikut adalah potongan source code untuk proses tersebut :
... ... ...
If (Not (biggestContour) Is Nothing) Then
Dim currentContour As Contour(Of Point) =
biggestContour.ApproxPoly((biggestContour.Perimeter * 0.0025), storage)
currentFrameCopy.Draw(currentContour, New Bgr(Color.LimeGreen), 2)
hull = biggestContour.GetConvexHull (Emgu.CV.CvEnum.ORIENTATION. CV_CLOCKWISE)
box = biggestContour.GetMinAreaRect()
Dim points() As PointF = box.GetVertices()
Dim ps() As Point = New Point((points.Length) - 1) {}
Dim i As Integer = 0
Do While (i < points.Length)
ps(i) = New Point(CType(points(i).X, Integer), CType(points(i).Y,
Integer)) i = (i + 1)
Loop
currentFrameCopy.DrawPolyline(hull.ToArray, True, New Bgr(200,
125, 75), 2)
currentFrameCopy.Draw(New CircleF(New PointF(box.center.X,
box.center.Y), 3), New Bgr(200, 125, 75), 2)
filteredHull = New Seq(Of Point)(storage)
Dim j As Integer = 0
Do While (j < hull.Total)
If (Math.Sqrt((Math.Pow((hull(j).X - hull((j + 1)).X), 2) +
Math.Pow((hull(j).Y - hull((j + 1)).Y), 2))) _
> (box.size.Width / 10)) Then
dihubungkan yang kemudian dihasilkan menjadi nilai 1 pada kontur yang dideteksi.
Setelah proses pengenalan citra jari tangan selesai, maka akan ditampilkan hasil dari pengenalan citra tersebut dengan Text yang berada diantara frame.
Berikut ini adalah potongan source code untuk proses tersebut :
... ... ...
Do While (i < defects.Total)
Dim startPoint As PointF = New
PointF(CType(defectArray(i).StartPoint.X, Single),
CType(defectArray(i).StartPoint.Y, Single))
Dim depthPoint As PointF = New
PointF(CType(defectArray(i).DepthPoint.X, Single),
CType(defectArray(i).DepthPoint.Y, Single))
Dim endPoint As PointF = New
PointF(CType(defectArray(i).EndPoint.X, Single),
CType(defectArray(i).EndPoint.Y, Single))
Dim startDepthLine As LineSegment2D = New
LineSegment2D(defectArray(i).StartPoint,
defectArray(i).DepthPoint)
Dim depthEndLine As LineSegment2D = New
LineSegment2D(defectArray(i).DepthPoint, defectArray(i).EndPoint)
Dim startCircle As CircleF = New CircleF(startPoint, 5.0!)
Dim depthCircle As CircleF = New CircleF(depthPoint, 5.0!)
Dim endCircle As CircleF = New CircleF(endPoint, 5.0!)
If ((startCircle.Center.Y < box.center.Y Or depthCircle.Center.Y <
box.center.Y) And (startCircle.Center.Y < depthCircle.Center.Y)
And (Math.Sqrt(Math.Pow(startCircle.Center.X -
depthCircle.Center.X, 2) + Math.Pow(startCircle.Center.Y -
depthCircle.Center.Y, 2)) > box.size.Height / 6.5)) Then
fingerNum = (fingerNum + 1)
End If
... ... ...
4.4. Uji Coba Program
Pada sub bab ini akan dijelaskan tentang uji coba terhadap aplikasi pengenalan citra jari tangan yang telah dibuat dan selanjutnya akan dievaluasi dari hasil uji coba tersebut. Uji coba dilaksanakan untuk mengetahui kemampuan aplikasi dapat berjalan dengan baik sesuai dengan rancangan. Evaluasi dilakukan untuk menentukan tingkat keberhasilan dari aplikasi yang dibuat.
4.4.1. Skenario Uji Coba
Untuk memastikan bahwa aplikasi ini berjalan dengan baik, diperlukan adanya skenario yang akan dicoba, antara lain :
a. Melakukan pengambilan contoh sample gambar dengan menggunakan web-cam laptop/pc atau juga bisa browsing dari internet. Posisi tangan
harus bervariasi agar dapat mengamati tingkat keberhasilan yang tepat. b. Melakukan proses pengenalan citra jari tangan dan menguji tingkat
4.4.2. Pelaksanaan Uji Coba
Setelah melakukan perancangan interface aplikasi dan pengcodingan program kemudian adalah menguji aplikasi tersebut. Dari project yang telah dibuat tekan F5 untuk memulai menjalankan aplikasi pengenalan citra jari tangan tersebut. Pertama kali dibuka maka akan muncul tampilan proses menunggu untuk user, tampilan ini hanya untuk keindahan dari interfaces aplikasi tersebut seperti
pada Gambar 4.12.
Gambar 4.12. Uji Coba Tampilan Please Wait awal aplikasi
Gambar 4.13. Uji Coba Tampilan Utama Aplikasi
Uji coba pertama adalah melakukan browse gambar yang ingin kita deteksi. Klik tombol “search” dan kemudian kita akan masuk kedalam file browser pc/laptop kita seperti Gambar 4.14.
Setelah itu kembali ke aplikasi, setelah memilih gambar yang akan dideteksi maka akan langsung terdeteksi jumlah jari tangan user pada tengah aplikasi seperti pada Gambar 4.15.
Gambar 4.15. Uji Coba Tampilan keberhasilan pendeteksian
Jika ingin keluar dari aplikasi ini hanya Klik tombol “power” dipojok kanan atas, desain ini memudahkan kita dalam mencari tombol keluar.
4.5. Evaluasi Aplikasi
4.5.1. Analisis Pr oses Pengambilan Citr a J ari Tangan
Pada tahap pengujian Mengitung Jari Tangan ini akan diuji berdasarkan tingkat ketepatan dalam mendeteksi area jari tangan dari citra tangan yang ter-capture. Pengujian Menghitung Jari Tangan ini dilakukan dalam kondisi cahaya
yang terang. Jarak citra tangan dengan web-camera adalah konstan ±30 cm. Berikut adalah contoh scan/model gambar yang akan dideteksi seperti pada Tabel 4.1.
Tabel 4.1. Contoh Model Gambar Pengambilan Jari Tangan
J ari 1 J ari 2 J ari 3 J ari 4 J ari 5
Dari kelima contoh gambar/sample diatas maka akan dikumpulkan dari berbagai model tiap jari, kemudian akan dideteksi tiap model seperti pada Tabel 4.2.
Uji
11 Gambar 2-5.jpg Berhasil 12 Gambar 2-6.jpg Berhasil
13 Gambar 2-7.jpg Berhasil 14 Gambar 2-8.jpg Berhasil
2-Uji
27 Gambar 3-1.jpg Berhasil 28 Gambar 3-2.jpg Berhasil
29 Gambar 3-3.jpg Berhasil 30 Gambar 3-4.jpg Berhasil
31 Gambar 3-5.jpg Berhasil 32 Gambar 3-6.jpg Berhasil
Uji
15.jpg Berhasil 42 Gambar 4-1.jpg Berhasil
43 Gambar 4-2.jpg Berhasil 44 Gambar 4-3.jpg Berhasil
45 Gambar 4-4.jpg Berhasil 46 Gambar 4-5.jpg Berhasil
49 Gambar 4-8.jpg Berhasil 50 Gambar 5-1.jpg Berhasil
Dari percobaan pada pengenalan jari tangan yang telah dilakukan, dapat dilihat bahwa dari 50 kali uji coba menghasilkan jari tangan berhasil terdeteksi sebanyak 46 kali dan 4 kali tidak terdeteksi. Tingkat keberhasilan akurasi pengenalan jari tangan ini sangat tinggi yaitu mencapai : 46/50*100% = 92% .
4.5.2. Analisis Pr oses Menghitung J ari Tangan
Pada tahap pengujian Menghitung Jari Tangan ini dilakukan untuk mengetahui keberhasilan aplikasi tersebut pada kondisi pencahayaan yang terang.
Berdasarkan seluruh kegiatan yang dilakukan mulai dari pembahasan teori, perancangan aplikasi hingga pengujian terhadap aplikasi menghitung citra jari tangan menggunakan format warna YCbCr dan teknik deteksi kontur pada library Emgu CV ini maka dapat diambil beberapa kesimpulan dan memberikan
beberapa saran sebagai berikut.
5.1. Kesimpulan
Setelah melakukan uji coba dan evaluasi pada tugas akhir ini maka dapat diambil kesimpulan sebagai berikut :
a. Proses deteksi citra jari tangan dengan menggunakan convex hull dan conviexity defects mempunyai tingkat akurasi tinggi hingga 92% dalam
kondisi pencahayaan yang terang.
b. Kondisi pencahayaan, background dan pose citra tangan mempengaruhi tingkat akurasi penghitungan.
5.2. Sar an
Beberapa saran yang dapat penulis berikan untuk pengembangan tugas akhir ini adalah sebagai berikut :
Vision Projects, www.it-ebooks.info, diakses tanggal 1 Agustus 2013 Emgu CV http://www.emgu.com/wiki/index.php/Main_Page, diakses tanggal 1
Oktober 2013
Wikipedia http://id.wikipedia.org/wiki/JPEG, diakses pada tanggal 2 Oktober 2013
Scribd http://www.scribd.com/masdalco, Published by M. Taufik Yusuf diakses pada tanggal 2 Oktober 2013
G. Bradski, Kehler, Adrian, Learning OpenCV First ed. New Yourk: O'Relly, 2008.
Fadlisyah, Computer Vision dan Pengolahan Citra: Andi, 2007.
Prasetyo Eko, (2011), Pengolahan Citr a Digital Dan Aplikasinya Menggunakan Matlab, Penerbit Andi, Yogyakarta
Purwanto Ari, http://aripurwanto.blog.upi.edu/files/2009/06/tro_0608627.pdf, , diakses tanggal 12 Oktober 2013
Setting Emgu CV, http://www.emgu.com/wiki/index.php/Setting_up_ EMGU_C_ Sharp, , diakses tanggal 20 Oktober 2013
Sitorus Syahriol dkk., (2006), Pengolahan Citr a Digital, USU Press, Medan Anil K. Jain, (1989), Fundamentals of Digital Image Processing, Prentice Hall Balza dan Kartika Firdausy, (2005), Teknik Pengolahan Citra, Ardi Publishing,
Komando Deteksi Citra Pergerakan, Surabaya.
Edi S. Mulyanta, (2006). Dari Teori Hingga Praktik : Pengolahan Digital Image dengan Photoshop CS2, Jakarta.
Hendri Kharisma, (2011). Implementasi Hand Tr acking Pada Kontr ol Mouse Pointer Menggunakan Algoritma Phyramidal Lucas-Kanade,
Bandung.
Djoni Haryadi Setiabudi, (2002).Uji Kecepatan Algoritma Convex-Hull: Graham dan Melkman, Surabaya.
Wahyu S J Saputra, (2009). Perancangan dan pembuatan aplikasi
pendeteksian gambar terbuka menggunakan model warna YCbCr, Surabaya.