intelegent dental light system

89
SKRIPSI PURWARUPA KENDALI LENGAN DENTAL LIGHT DENGAN ISYARAT JARI BERBASIS PENGOLAHAN CITRA DIGITAL (OPENCV) MUHAMMAD ANIS AL HILMI 08/269922/PA/12129 PROGRAM STUDI ELEKTRONIKA DAN INSTRUMENTASI JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA YOGYAKARTA 2012

description

intelegent dental system based opencv

Transcript of intelegent dental light system

Page 1: intelegent dental light  system

SKRIPSI

PURWARUPA KENDALI LENGAN DENTAL LIGHT DENGAN ISYARAT

JARI BERBASIS PENGOLAHAN CITRA DIGITAL (OPENCV)

MUHAMMAD ANIS AL HILMI

08/269922/PA/12129

PROGRAM STUDI ELEKTRONIKA DAN INSTRUMENTASI

JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

YOGYAKARTA

2012

Page 2: intelegent dental light  system

i

SKRIPSI

PURWARUPA KENDALI LENGAN DENTAL LIGHT DENGAN ISYARAT

JARI BERBASIS PENGOLAHAN CITRA DIGITAL (OPENCV)

Diajukan untuk memenuhi salah satu syarat memperoleh derajat Sarjana Sains

Program Studi Elektronika dan Instrumentasi

MUHAMMAD ANIS AL HILMI

08/269922/PA/12129

PROGRAM STUDI ELEKTRONIKA DAN INSTRUMENTASI

JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

YOGYAKARTA

2012

Page 3: intelegent dental light  system
Page 4: intelegent dental light  system

iii

PERNYATAAN

Dengan ini saya menyatakan bahwa laporan skripsi ini tidak terdapat

karya yang pernah diajukan untuk memperoleh gelar kesarjanaan di suatu

Perguruan Tinggi, dan sepanjang pengetahuan saya juga tidak terdapat karya atau

pendapat yang pernah ditulis atau diterbitkan oleh orang lain, kecuali secara

tertulis diacu dalam naskah ini dan disebutkan dalam daftar pustaka.

Yogyakarta, Juli 2012

Muhammad Anis Al Hilmi

Page 5: intelegent dental light  system

iv

HALAMAN MOTTO

“Sometimes I just hate it when I'm right.” - MacGyver (Bushmaste

episode).

“Ketidakenakan kamu itu, (akan) mengenak pelan-pelan.” –Prie G.S.

Humor Sahur Metro TV episode Baik Sangka.

Page 6: intelegent dental light  system

v

KATA PENGANTAR

Puji Syukur kita panjatkan kepada Allah SWT atas petunjuk dan kasih

sayang-Nya juga telah melimpahkan semua rahmat, hidayah, dan karunia-Nya

sehingga penulis dapat menyelesaikan skripsi yang berjudul “Purwarupa Kendali

Lengan Dental Light dengan Isyarat Jari Berbasis Pengolahan Citra Digital

(OpenCV)”. Sholawat serta salam penulis tujukan kepada junjungan umat, Nabi

Muhammad SAW yang telah memberikan tauladan dan inspirasi di segala aspek

kehidupan.

Skripsi ini disusun sebagai salah satu syarat untuk memperoleh gelar

Sarjana S1 Program Studi Elektronika dan Instrumentasi, Jurusan Ilmu Komputer

dan Elektronika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas

Gadjah Mada Yogyakarta. Dalam pembuatannya, penulis menyadari bahwa

terselesaikannya skripsi ini tidak terlepas dari bantuan dan dukungan dari berbagai

pihak. Oleh karena itu, dengan segala hormat pada kesempatan ini penulis ingin

menyampaikan penghargaan dan terima kasih kepada:

1. Ayah-bunda dan seluruh keluarga penulis atas segala bimbingan dan

dukungan yang diberikan ke penulis.

2. Bapak Drs. Agus Harjoko, M.Sc., Ph.D selaku dosen pembimbing

skripsi yang telah bersabar dan banyak meluangkan waktu untuk

membimbing, memberikan ide dan pemikiran, serta saran juga masukan

sehingga penulis dapat menyelesaikan skripsi ini dengan baik.

3. Dosen-dosen penulis selama mengikuti perkuliahan di program studi

elektronika dan instrumentasi ini yang tidak bisa disebutkan namanya satu

persatu, yang telah memberikan banyak ilmu dan bimbingan.

4. Semua teman Elins angkatan 2008 yang tidak bisa disebutkan namanya

satu persatu, terima kasih atas kebersamaannya selama ini.

5. Teman-teman di Fakultas Kedokteran Gigi UGM.

6. Teman-teman di komunitas Idebeda.

7. Semua pihak yang selama ini telah membantu, mendukung dan

menyemangati penulis hingga saat ini. Terima kasih, semoga Allah SWT

membalas kebaikan Anda semua.

Yogyakarta, Juli 2012

Penulis

Page 7: intelegent dental light  system

vi

DAFTAR ISI

HALAMAN PENGESAHAN ................................................................................. ii

PERNYATAAN ..................................................................................................... iii

HALAMAN MOTTO ............................................................................................ iv

KATA PENGANTAR ............................................................................................. v

DAFTAR ISI ........................................................................................................ vi

DAFTAR GAMBAR ........................................................................................... viii

DAFTAR TABEL .................................................................................................... x

INTISARI ............................................................................................................. xi

ABSTRACT ......................................................................................................... xii

BAB I PENDAHULUAN ...................................................................................... 1

1.1 Latar Belakang .................................................................................... 1

1.2 Rumusan Masalah ............................................................................... 1

1.3 Batasan Masalah ................................................................................. 2

1.4 Tujuan Penelitian ................................................................................ 2

1.5 Metodologi Penelitian ......................................................................... 2

1.6 Sistematika Penulisan ......................................................................... 3

BAB II TINJAUAN PUSTAKA ............................................................................. 5

BAB III LANDASAN TEORI ................................................................................. 7

3.1 Dental Light ......................................................................................... 7

3.2 Pengolahan Citra .................................................................................. 9

3.2.1 Model Warna RGB dan HSV .................................................. 11

3.2.2 Threshold ................................................................................. 13

3.2.3 Erosi dan Dilasi ........................................................................ 13

3.2.4 Gaussian Smoothing ................................................................ 14

3.2.5 Deteksi Kontur ......................................................................... 16

3.3 Webcam .............................................................................................. 18

3.4 Motor Servo ....................................................................................... 19

3.4.1 Jenis-Jenis Motor Servo ........................................................... 20

3.5 Bahasa C dan C++ ............................................................................. 20

3.6 OpenCV ............................................................................................. 21

3.7 BASCOM AVR ................................................................................. 23

3.8 PowerSwitch ...................................................................................... 23

BAB IV ANALISIS DAN PERANCANGAN SISTEM ....................................... 24

4.1 Analisis Sistem Kendali ..................................................................... 24

4.2 Analisis Perangkat Lunak .................................................................. 25

4.3 Analisis Purwarupa Lengan Robot .................................................... 25

4.4 Rancangan Sistem Secara Keseluruhan ............................................. 27

4.5 Rancangan Perangkat Lunak .............................................................. 28

4.5.1 Deteksi Jari Tangan ................................................................. 28

4.5.2 Deteksi Arah Isyarat ................................................................ 30

4.5.3 Mengatur Perintah Gerakan Lengan ........................................ 31

4.5.4 Program Kendali Servo ............................................................ 32

4.6 Rancangan Perangkat Keras .............................................................. 33

Page 8: intelegent dental light  system

vii

4.6.1 Rancangan PowerSwitch .......................................................... 35

4.6.2 Rancangan Servo Controller ................................................... 36

4.6.3 Rancangan Pedal dan Relay ..................................................... 37

4.7 Rancangan Pengujian ........................................................................ 37

BAB V IMPLEMENTASI ..................................................................................... 39

5.1 Penentuan Parameter Warna .............................................................. 39

5.2 Implementasi Deteksi Jari .................................................................. 40

5.3 Implementasi Deteksi Arah Tunjuk Jari ............................................ 44

5.4 Implementasi Mengatur Perintah Gerakan Lengan Robot................. 51

5.4.1 Firmware PowerSwitch ........................................................... 52

5.5 Implementasi Program Kendali Servo ............................................... 52

5.6 Implementasi Perangkat Keras .......................................................... 55

BAB VI PENGUJIAN DAN PEMBAHASAN ..................................................... 58

6.1 Langkah-langkah Pengujian............................................................... 58

6.2 Pengujian Warna Sarung Tangan....................................................... 60

6.3 Pengujian Pengaruh Intensitas Cahaya Ruangan ............................... 62

6.4 Pengujian Jarak Tangan ..................................................................... 63

6.5 Pengujian Waktu Respon Gerakan .................................................... 64

6.6 Pengujian Ketepatan Gerakan ............................................................ 66

BAB VII PENUTUP .............................................................................................. 67

7.1 Kesimpulan ....................................................................................... 67

7.2 Saran ................................................................................................. 68

DAFTAR PUSTAKA ............................................................................................ 69

LAMPIRAN ........................................................................................................ 71

Page 9: intelegent dental light  system

viii

DAFTAR GAMBAR

Gambar 3.1 Dental Chair ........................................................................................ 7

Gambar 3.2 Lengan Dental Light............................................................................ 8

Gambar 3.3 Bagian Kepala Dental Light ................................................................ 8

Gambar 3.4 PSD pada Citra Digital ........................................................................ 9

Gambar 3.5 Kubus Modul RGB............................................................................ 11

Gambar 3.6 Kerucut Model HSV.......................................................................... 12

Gambar 3.7 Contoh Hasil Thresholding ............................................................... 13

Gambar 3.8 Hasil Erosi A oleh B.......................................................................... 14

Gambar 3.9 (a) Fungsi Lowpass Filter 2 Dimensi ................................................ 15

Gambar 3.9 (b) Hasil Lowpass Filter .................................................................... 15

Gambar 3.10 Contoh Hasil Gaussian Smoothing ................................................. 15

Gambar 3.11 Profil Matriks Filter Gauss .............................................................. 16

Gambar 3.12 Operator Matriks Deteksi Tepi ........................................................ 17

Gambar 3.13 Contoh Hasil Deteksi Tepi .............................................................. 17

Gambar 3.14 Kamera Web atau Lebih Sering Disebut Webcam .......................... 18

Gambar 3.15 Sistem Mekanik Motor Servo ......................................................... 19

Gambar 3.16 Motor Servo Hitec 311 .................................................................... 20

Gambar 3.17 Board PowerSwitch ....................................................................... 203

Gambar 4.1 Diagram Sistem Kendali Open Loop ................................................ 24

Gambar 4.2 Diagram Blok Rancangan Sistem secara Keseluruhan ..................... 28

Gambar 4.3 Bentuk Isyarat Jari yang Dipakai ...................................................... 29

Gambar 4.4 Diagram Alir Tahap Deteksi Jari ...................................................... 30

Gambar 4.5 Gambaran Cara Menentukan Arah Isyarat Tangan ........................... 31

Gambar 4.6 Diagram Alir Program Kendali Servo ............................................... 33

Gambar 4.7 Rancangan Derajat Kebebasan Lengan Dental Light ....................... 34

Gambar 4.8 Skematik PowerSwitch ...................................................................... 35

Gambar 4.9 Skema Minimun Sistem ATmega32 sebagai Servo Controller ........ 36

Gambar 4.10 Skema Rangkaian Relay.................................................................. 37

Gambar 5.1 Kode HSV Minimum dan Maksimum .............................................. 39

Gambar 5.2 Kode Pembacaan File Eksternal ........................................................ 40

Gambar 5.3 Kode untuk Mengakses Webcam ...................................................... 40

Gambar 5.4 Listing Ekstraksi Frame dari Kamera ............................................... 41

Gambar 5.5 Listing Mencari Objek Tangan ......................................................... 43

Gambar 5.6 Kode Pencarian kontur ...................................................................... 44

Gambar 5.7 Kode Menentukan Titik Tengah Tangan .......................................... 45

Gambar 5.8 Kode Menentukan Vektor-vektor pada Tangan ................................ 46

Gambar 5.9 Titik-titik pada Kontur Tangan ......................................................... 47

Gambar 5.10 Titik Ujung Jari dan Bagian “Lembah” antar Jari ........................... 47

Gambar 5.11 Kode Pemberian Indikator dari Hasil Pengenalan .......................... 48

Page 10: intelegent dental light  system

ix

Gambar 5.12 Penghitungan Cosinus untuk Menentukan Arah Tunjuk Jari.......... 49

Gambar 5.13 Kode Penentuan Arah & Pemanggilan Program Penggerak Servo 50

Gambar 5.14 Kode Menampilkan Jendela Hasil Pengolahan Citra ...................... 51

Gambar 5.15 Sebagian Kode Program PowerSwitch ............................................ 52

Gambar 5.16 Kode Kendali Servo Bagian Deklarasi Awal .................................. 53

Gambar 5.17 Kode Kendali Servo Bagian Looping.............................................. 54

Gambar 5.18 Bentuk Papan PowerSwitch yang Sudah Jadi ................................. 55

Gambar 5.19 Bentuk Servo Controller yang Sudah Jadi ...................................... 56

Gambar 5.20 Perangkat Keras Keseluruhan yang Telah Dibuat........................... 57

Gambar 6.1 Tampilan File test.txt untuk Penentuan Parameter Warna ................ 58

Gambar 6.2 Tampilan Terminal Mengubah Status User menjadi Root ................ 59

Gambar 6.3 Tampilan Citra Asli Hasil Capture Webcam..................................... 59

Gambar 6.4 Tampilan Jendela Hasil Erosi Citra ................................................... 60

Gambar 6.5 Warna Sarung Tangan di Pasaran ..................................................... 61

Page 11: intelegent dental light  system

x

DAFTAR TABEL

Tabel 3.1 Nilai Sudut dan Warna pada Hue .......................................................... 12 Tabel 5.1 Daftar Karakter ASCII .......................................................................... 42 Tabel 6.1 Hasil Pengujian Warna Sarung Tangan ................................................ 61 Tabel 6.2 Hasil Pengujian Pengaruh Intensitas Cahaya ........................................ 62 Tabel 6.3 Hasil Pengujian Jarak ............................................................................ 63 Tabel 6.4 Hasil Pengujian Waktu Respon ............................................................ 64

Tabel 6.5 Hasil Pengujian Ketepatan Gerakan ..................................................... 65

Page 12: intelegent dental light  system

xi

INTISARI

PURWARUPA KENDALI LENGAN DENTAL LIGHT DENGAN ISYARAT

JARI BERBASIS PENGOLAHAN CITRA DIGITAL (OPENCV)

Oleh

Muhammad Anis Al Hilmi

08/269922/PA/12129

Dental light atau lampu sorot yang terdapat pada kursi praktik dokter gigi

merupakan salah satu bagian penting pada dental chair. Dental light perlu diatur

posisinya agar arah cahaya sorot sesuai kebutuhan dokter. Cara biasa untuk

mengaturnya adalah dengan digerakkan dengan tangan secara langsung oleh

dokter. Cara tersebut dirasakan cukup merepotkan dan mengurangi kesterilan

tangan dokter karena harus menyentuh dental light secara langsung.

Dalam penelitian ini, masalah tersebut dicoba diselesaikan dengan

teknologi pengolahan citra digital. Sebuah webcam digunakan untuk meng-

capture citra. Kemudian citra diolah sampai mengenali isyarat jari, untuk

kemudian dapat mengendalikan dental light. Pengenalan isyarat jari dalam

penelitian ini menggunakan metode pemisahan objek dengan latar belakangnya.

Range warna dari sarung tangan dokter dipakai sebagai acuan pengenalan objek

tangan. Model warna yang dipakai adalah model HSV.

Dari 4 warna sarung tangan yang diuji, warna dengan hasil terbaik adalah

warna kuning. Jarak optimal antara webcam dan posisi tangan adalah 55-65 cm.

Waktu respon rata-rata dari saat ada isyarat sampai lengan robot bergerak adalah

0,4-0,6 sekon. Dengan hasil penelitian ini diharapkan dokter tidak perlu lagi

menyentuh langsung dental light sehingga pemakaiannya lebih mudah dan steril.

Kata kunci: dental light, lengan robot, pengolahan citra, OpenCV, range warna

Page 13: intelegent dental light  system

xii

ABSTRACT

PROTOTYPE OF ARM-DENTAL LIGHT CONTROL USING FINGER

GESTURE BASED ON DIGITAL IMAGE PROCESSING (OPENCV)

By

Muhammad Anis Al Hilmi

08/269922/PA/12129

Dental light or head-light that exists on dental chair, is one of essenstial

part of dental chair instruments. Dental light needs an appropriate positioning

control to beam the light as dentist want. The common way of controlling dental

light is the dentist stir the lamp using their hand manually. That manual control

makes the dentist wrinkled and that method is not sterile, because the dentist

touches the lamp/light directly.

In this research, that problem is tried to be solved using digital image

processing technology. A webcam is used to capture image, then the image is

processed until yield a recognition result for finger gesture and then create an

output to contol dental light.Finger gesture recognition in this research is using

object’s color filter method. The color range of dentist gloves is used as reference

to recognize the dentist’s hand. Color model that used in this research is HSV

From 4 colors of dentist gloves that tested, the best color is yellow. The

optimum distance between webcam and hand position is 55-65 cm. The average

time response from the time that finger gesture appear until the prototype of arm

robot moves is 0.4-0.6 second. The result of this research is aimed to make a new

method that easier and more sterile to control the dental light. And the dentist

doesn’t need to touch the lamp directly anymore.

Keywords: dental light, arm robot, image processing, OpenCV, color range

Page 14: intelegent dental light  system

1

BAB I

PENDAHULUAN

1.1 Latar Belakang

Dalam dunia kedokteran gigi, dikenal suatu teknologi bernama dental

chair. Dental chair adalah kursi periksa untuk pasien dokter gigi yang telah

dilengkapi beberapa peralatan medis. Dental chair biasanya ditunjang oleh

fasilitas listrik, gas, kompresor udara, aliran air, dan saluran pembuangan. Salah

satu bagian penting dari dental chair adalah dental light.

Dental light yaitu lampu yang disorot untuk menerangi bagian mulut

pasien yang sedang diperiksa. Dental light ditopang oleh lengan berbahan metal

yang memiliki sendi-sendi yang memungkinkannya melakukan beberapa gerakan.

Dalam penggunaanya, dental light digerakkan menggunakan tangan sampai

cahaya sorotnya dirasa sesuai dengan posisi periksa dokter. Namun, cara

pengaturan tersebut dirasakan cukup merepotkan dan mengurangi kesterilan

tangan dokter karena harus menyentuh langsung. Selain itu tidak semua dokter

gigi didampingi asisten, padahal dalam melakukan praktiknya tangan dokter harus

steril. Hal inilah yang melatarbelakangi penelitian ini.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, maka dapat dirumuskan masalah

sebagai berikut:

Bagaimana membuat sebuah sistem kendali yang mampu menggerakkan

purwarupa lengan dental light hanya dengan menggunakan isyarat jari tanpa

menyentuh langsung.

Page 15: intelegent dental light  system

2

1.3 Batasan Masalah

Dalam pembuatan dan uji coba sistem ini, diberikan beberapa batasan

masalah sebagai berikut:

a. Bentuk dan ukuran purwarupa lengan dental light tidak sama dengan

yang sebenarnya.

b. Lengan dental light secara umum dapat melakukan 10 gerakan. Namun

dalam penelitian ini dibatasi hanya melakukan 8 gerakan dasar yaitu

memutar ke atas, ke bawah, menggeleng ke kiri, menggeleng ke kanan,

bergeser ke atas, ke bawah, berputar ke kiri , dan berputar ke kanan.

c. Dalam satu waktu, hanya 1 motor servo yang bergerak.

1.4 Tujuan Penelitian

Tujuan dari penelitian ini adalah merancang dan mengimplementasikan

purwarupa kendali lengan dental light dengan isyarat jari menggunakan

pengolahan citra digital (opencv) yang mampu menggerakkan dental light hanya

dengan isyarat jari, tanpa sentuhan langsung. Juga melakukan pengujian warna

sarung tangan, pengaruh intensitas cahaya, jarak antara tangan dengan divais

peng-capture citra, waktu respon, dan ketepatan gerakan lengan robotnya.

1.5 Metodologi Penelitian

Metodologi penelitian yang direncanakan dalam penelitian ini adalah

sebagai berikut :

1. Merumuskan masalah yang dijadikan sebagai acuan untuk menentukan

tema.

2. Melakukan kajian dan pembelajaran lebih lanjut mengenai sistem

deteksi posisi jari dengan menggunakan metode sebagai berikut :

a) Studi literatur, yaitu dengan mempelajari artikel, jurnal, karya tulis

dan buku yang berhubungan dengan deteksi jari dari data citra.

b) Konsultasi dengan dosen pembimbing tentang pengolahan citra

untuk mendapatkan saran serta masukan yang bermanfaat.

Page 16: intelegent dental light  system

3

3. Membuat rancangan metode deteksi pola jari secara real time yang

meliputi rancangan dalam mengatasi masalah dalam pendeteksian dan

algoritma.

4. Implementasi metode deteksi pola jari secara real time dengan

menggunakan webcam.

5. Implementasi lengan dental light.

6. Melakukan uji coba di Fakultas Kedokteran Gigi UGM.

7. Membuat laporan akhir.

1.6 Sistematika Penulisan

Penulisan laporan skripsi ini berdasarkan sistematika berikut ini:

BAB I PENDAHULUAN

Berisi latar belakang pembuatan skripsi, rumusan masalah, batasan

masalah, tujuan pembuatan skripsi, metodologi penelitian serta sistematika

penulisan pada skripsi.

BAB II TINJAUAN PUSTAKA

Dalam bab ini dipaparkan hasil penelitian terdahulu atau teknologi yang

mempunyai keterkaitan dengan penelitian yang dilakukan oleh penulis.

BAB III DASAR TEORI

Berisi penjelasan dan teori komponen-komponen yang digunakan pada

sistem, baik komponen elektronik mapun teori-teori yang berkaitan

dengan sistem yang diteliti oleh penulis.

BAB IV ANALISIS DAN PERANCANGAN SISTEM

Berisi tentang perancangan sistem yang dibuat, meliputi perancangan

perangkat keras dan perangkat lunaknya.

Page 17: intelegent dental light  system

4

BAB V IMPLEMENTASI

Berisikan tentang implementasi (uji coba) dari rancangan alat dalam

bentuk nyata baik kinerja hardware ataupun software.

BAB VI PENGUJIAN DAN PEMBAHASAN

Tentang hasil pengujian sistem yang dilakukan oleh penulis meliputi

pengamatan perangkat keras, perangkat lunak. Hasil pengujian kemudian

dibahas dan dianalisis hasil dan kinerjanya.

BAB VII PENUTUP

Bab ini berisi kesimpulan dan saran-saran sehingga sistem ini dapat

dikembangkan lebih lanjut, dengan harapan dapat digunakan untuk

mendukung kehidupan masyarakat.

Page 18: intelegent dental light  system

5

BAB II

TINJAUAN PUSTAKA

Dalam penelitian yang dilakukan Ho (2011), webcam digunakan sebagai

pengambil masukan citra pola jari tangan berupa video. Pengambilan citra

dilakukan dengan menggunakan latar belakang berwarna hitam untuk

memudahkan pemisahan citra tangan dengan latar belakangnya. Metode yang

dipakai dalam memisahkan citra tangan dengan latar belakangnya adalah

ekualisasi histogram, kemudian dihaluskan dengan filter Gauss, lalu di-threshold

untuk menguatkan nilai masing-masing pixel. Setelah objek tangan dipisah dari

latar belakang, kemudian dicari kontur dari tangan. Kontur yang dihasilkan

kemudian dihitung titik tengahnya, dari sana didapatkan koordinat titik tengah

dari tangan.

Dalam hal ini penelitian tersebut tidak hanya mendeteksi tangan tapi juga

mengenali arah/direction dari tangan. Dengan isyarat jari telunjuk, kontur tangan

akan berubah, dari sana bisa dicari koordinat ujung jari telunjuk. Setelah itu

koordinat ujung jari dan titik tengah dibandingkan dan dihitung jarak dan

sudutnya. Dengan metode pengolahan citra tersebut selanjutnya dikembangkan

algoritma untuk mendapatkan arah tunjuk yang dilakukan tangan, apakah ke atas,

ke bawah, kiri, atau arah kanan. Dari percobaan itu, penulis akan

mengembangkannya sebagai masukan untuk mengontrol gerakan lengan dental

light, namun dengan warna latar belakang yang lebih variatif, tidak dibatasi hanya

dengan warna hitam.

Dalam penelitian Oliviera (2009), yaitu untuk memilah warna kulit

manusia, bisa menggunakan metode konversi citra dari RGB ke HSV. Dalam

pustaka OpenCV, sangat dimungkinkan untuk melakukan hal itu. Citra akan

dipilah berdasarkan range warna yang dimiliki kulit manusia secara umum, baik

hue, saturation, dan value-nya.

Dari penelitian tersebut, penulis akan menggunakan metode konversi

RGB ke HSV dan memilah range warna dari sarung tangan yang dikenakan

Page 19: intelegent dental light  system

6

dokter dalam praktiknya. Selanjutnya memproses dengan algoritma dari penelitian

Ho (2011).

Agrawal (2012) membuat penelitian yang berjudul SNAP. Ia membuat

sistem pengambilan gambar seperti kamera dengan webcam hanya dengan

membentuk isyarat „L‟ dengan telunjuk dan ibu jari. Segmentasi antara kulit

dengan latar belakang memerlukan beberapa metode untuk menghilangkan derau.

Diantaranya adalah erotion dan dilation, yakni untuk mengurangi derau berukuran

kecil juga mempertajam citra. Hal ini dilakukan sebelum mencari kontur dari

tangan. Dari sana penulis akan menggunakan metode yang sama untuk

menghilangkan derau dari citra untuk menghasilkan keluaran dengan hasil terbaik.

Dental light dalam penelitian ini akan diwujudkan dalam bentuk lengan

robot. Dalam penelitian Hamed (2011), faktor utama dan terpenting dari

mendesain robot lengan adalah pembuatan keputusan tentang jumlah dari derajat

kebebasan atau degree of freedom (DOF) yang akan dilakukan dan area kerja dari

lengan robot. Semakin besar DOF, maka lengan robot akan semakin efisien dan

cekatan. Tapi di lain pihak, kerumitan sistem dalam desain dan kontrol juga akan

meningkat.

Pada penelitian yang dilakukan oleh Tanjung dan Sulistijono (2010),

pengendalian robot dual arm menggunakan web camera dapat menghasilkan

posisi sumbu X dan Y pada pendeteksian warna. Pengendalian robot dual arm

menggunakan web camera ketika data sudah diperoleh berupa titik tengah

sumbu X dan Y dari deteksi warna menggunakan OpenCV, robot dual arm

dapat mengikuti gerakan posisi dari pendeteksian obyek berwarna tersebut.

Penelitian tersebut sebagai tolak ukur saja, bahwa OpenCV dapat diintegrasikan

dengan aktuator berupa lengan robot.

Dari seluruh paparan di atas, maka dimungkinkan dirancang perpaduan

antara pengolahan citra dengan pengendalian lengan robot sebagai pengatur

gerakan dental light.

Page 20: intelegent dental light  system

7

BAB III

LANDASAN TEORI

3.1 Dental Light

Dental light adalah lampu yang digunakan dokter gigi untuk menerangi

bagian mulut pasien saat melakukan praktiknya. Dental light ditopang oleh lengan

yang dapat digerakkan sesuai kebutuhan dokter gigi. Dental light terintegrasi

dengan dental chair. Pada Gambar 3.1 diperlihatkan contoh bentuk keseluruhan

dental chair.

Gambar 3.1 Dental Chair (A-dec Inc., 2011)

Page 21: intelegent dental light  system

8

Pada Gambar 3.2 diperlihatkan contoh bentuk lengan dental light.

Gambar 3.2 Lengan Dental Light (Kabdental.com, 2011)

Lengan dental light pada umumnya memiliki 5 degree of freedom / derajat

kebebasan. Sehingga dapat melakukan 10 gerakan, yaitu : maju, mundur, geser ke

kiri, geser ke kanan, geser ke atas, geser ke bawah, putar ke kiri, putar ke kanan,

putar ke atas, dan putar ke bawah.

Dental light memiliki light handle, yang digerakkan secara manual

menggunakan tangan. Gambar 3.3 menunjukkan bagian kepala dari dental light

A-dec 371/372 :

Gambar 3.3 Bagian Kepala Dental Light (A-dec Inc., 2011)

A : flexarm

B : bulb cap assembly

C : tutup lampu

D : light handle

E : sakelar on/off

F : pivot housing

Page 22: intelegent dental light  system

9

3.2. Pengolahan Citra

Pengolahan citra adalah proses mengubah sinyal citra dari sebuah

gambar, ataupun pemandangan menjadi bentuk fisik dari sebuah citra, citra ini

sendiri dapat berupa analog maupun digital. Keluaran dari pengolahan citra

sendiri dapat berupa gambar secara fisik (berupa gambaran dari benda atau

pemandangan yang kita lihat) atau karakterisitik dari suatu gambar.

Pengolahan citra juga sering didefinisikan sebagai proses penyesuaian

citra agar mudah diintepretasikan oleh manusia atau komputer. Penyesuaian citra

yang dilakukan disini adalah melakukan proses-proses tertentu untuk mengolah

citra dengan mentranformasikan citra menjadi citra lain yang lebih mendekati

bentuk citra yang diharapkan, contoh transformasinya misalnya pemampatan citra,

penghilangan derau dan penyesuaian kontras dari citra. Pada Gambar 3.4

digambarkan operasi pengolahan sinyal digital pada citra digital.

Gambar 3.4 PSD pada Citra Digital (Hu, 2002a)

Page 23: intelegent dental light  system

10

Pengambilan citra secara fisik, dilakukan oleh sensor, yang peka terhadap

energi radiasi dari objek. Dari tangkapan tersebut, kemudian di-digital-isasi oleh

digitizer / hardware tambahan yang sanggup mengolahnya menjadi data digital.

Dalam penelitian ini, tidak ada perangkat keras tambahan yang digunakan karena

penggunaannya masih sederhana.

Komputer, dalam pengolahan citra bertindak sebagai pengolah dengan

software-software yang berjalan di atas sistem operasinya. Pengguna dapat

memasukkan kode-kode program yang dia butuhkan dalam pengolahan citra.

Dengan bahasa pemrograman, pengguna dapat mengatur proses olah citra sesuai

tujuan yang diharapkan

Mass storage / media penyimpanan adalah mutlak diperlukan dalam

pengolahan citra. Tiap citra memiliki ukuran berbeda-beda, mulai dari kecil

sampai besar, dalam menjaga efisiensi biasanya dilakukan kompresi atas citra itu.

Namun, untuk keperluan tertentu, citra dijaga seperti ukuran aslinya, bahkan

untuk citra dengan ukuran besar sekalipun. Karena itu, media penyimpanan sangat

diperlukan. Namun dalam penelitian ini, hasil proses pengolahan tidak disimpan.

Di masa sekarang, citra seringkali ditampilkan pada monitor. Monitor

menampilkan citra keluaran dan diatur oleh kartu grafis yang ada di komputer.

Dalam praktiknya, citra juga dapat disimpan dalam beberapa media, seperti CD-

ROM atau flash disk. Semakin berkembang pula, teknologi jaringan menjadi

bagian dari keseharian manusia. Dengan internet, data mengenai pengolahan citra

dapat ditransmisikan ke tempat lain. Namun, untuk dapat melakukan ini,

diperlukan kecepatan internet yang cepat, contohnya dengan fiber optik dan

teknologi broadband. Seluruh pemaparan di atas hanyalah model secara umum

dari pengolahan citra digital, dalam penelitian ini tidak semua bagian

ada/dibutuhkan, misalnya bagian hardcopy, storage, specialized hardware, dan

network dalam penelitian ini tidak digunakan.

Page 24: intelegent dental light  system

11

3.2.1 Model Warna RGB dan HSV

Dalam pengolahan citra, biasanya masalah warna tidak memainkan peran

penting. Umumnya, citra diproses dalam ranah gray-scale. Contohnya banyak

pengolahan citra yang lebih menekankan ke pengenalan bentuk atau pola. Tapi di

sisi lain, masalah warna/color space amat diperlukan. Misalkan dalam kasus

pemilahan kualitas buah (Davies, 2005).

Kamera video atau monitor biasanya menghasilkan citra dalam ranah

RGB (red, green, blue). Padahal manusia memiliki penerimaan atas warna citra

yang berbeda dengan itu, maka disarankan untuk mengonversi RGB ke domain

HSV (hue, saturation, value) sebelum melakukan pemrosesan citra lebih lanjut.

Pada model RGB, citra terdiri dari 3 sumbu yang independen. Tiap

sumbu adalah warna primer, yaitu merah, hijau, dan biru. Sebuah warna

ditentukan dari letaknya dari ketiga sumbu primer. Di bawah ini adalah Gambar

3.5 mengenai model RGB dalam koordinat kartesian.

Gambar 3.5 Kubus Modul RGB (CVonline, 1999)

Page 25: intelegent dental light  system

12

Misalkan saja warna kuning, ia adalah hasil (merah + hijau), cyan (biru +hijau) ,

magenta (merah +biru), dan putih (merah+ hijau+biru). Sedangkan model HSV

yang terdiri dari 3 komponen yaitu hue, saturation, value. Value terkadang

disamakan dengan tingkat kecerahan. Model HSV dibuat oleh Alvy Ray Smith

pada tahun 1978. HSV dikenal juga sebagai model warna hex-cone. Hue,

merepresentasikan warna, hue adalah sudut diantara 0 sampai dengan 360 derajat.

Tabel 3.1 Nilai Sudut dan Warna pada Hue

Sudut (0) Warna

0-60 Merah

60-120 Kuning

120-180 Hijau

180-240 Cyan

240-300 Biru

300-360 Magenta

Gambar 3.6 Kerucut Model HSV (Sequin, 2011)

Saturation mengindikasikan range/batas dari tingkat keabu-abuan dalam

ruang warna/color space. Yaitu dari nilai 0-100 %. Kadang, ia dihitung dari 0-1,

Page 26: intelegent dental light  system

13

saat nilainya 0 maka warnanya abu-abu dan bila nilainya 1 maka warnanya

adalah warna primer. Value adalah tingkat kecerahan/brightness dari warna dan

nilainya bervariasi dan berhubungan dengan saturation. Nilainya berkisar dari

dari 0-100%. Saat 0 nilainya hitam total, dengan peningkatan nilai value maka

tingkat kecerahannya bertambah. Kelebihan model HSV adalah karena mendekati

warna yang dirasa indra manusia, sehingga sering digunakan dalam pengolahan

citra terutama pendeteksian suatu objek dengan warna tertentu.

3.2.2 Threshold

Threshold adalah metode di mana kita menetapkan suatu nilai, kemudian

kita hanya mengambil nilai di atasnya saja atau di bawahnya saja, sedangkan nilai

selainnya diabaikan (Bradski dan Kaehler, 2008). Hasil dari threshold adalah citra

yang tampak nyata perbedaan intensitasnya, biasanya hitam dan putih. Metode ini

biasanya digunakan untuk proses segmentasi / pemisahan suatu objek dengan

selainnya. Gambar 3.7 adalah contoh hasil thresholding citra.

Gambar 3.7 Contoh Hasil Thresholding (Bradski dan Kaehler, 2008)

3.2.3 Erosi dan Dilasi

Erosi atau dalam bahasa Inggrisnya erotion, adalah konvolusi dari

beberapa citra/wilayah citra sebut saja A, dengan kernel yang disebut saja B.

Kernel B bisa bervariasi bentuk dan ukurannya, ia memiliki satu titik

patokan/anchor point di tengah kernelnya. Kernel dapat juga dianggap sebagai

matrix untuk masking dan sebagai local minimum operator. Region A di-scan

Page 27: intelegent dental light  system

14

dengan B untuk mendapat wilayah A yang lebih tipis. Pada Gambar 3.8

diperlihatkan hasil erosi A oleh B. Dilasi adalah kebalikan dari erosi.

Gambar 3.8 Hasil Erosi A oleh B (Bradski dan Kaehler, 2008)

Dalam penelitian ini, erosi digunakan untuk menghilangkan derau berupa titik-

titik kecil yang mengganggu proses deteksi objek tangan. Proses erosi dapat

dilakukan beberapa kali sesuai kebutuhan, namun banyak proses erosi perlu

diperhitungkan dengan seksama, jika berlebihan, region bisa habis tererosi.

3.2.4 Gaussian Smoothing

Low-pass filter dalam pengolahan citra digunakan untuk menghilangkan

sinyal frekuensi tinggi. Dengan itu, citra menjadi semakin halus. Salah satu

metode smoothing dalam pengolahan citra adalah Gaussian smoothing.

Page 28: intelegent dental light  system

15

Gambar 3.9 (a) Fungsi Lowpass Filter 2 Dimensi

(b) Hasil Lowpass Filter (Hu, 2002b)

Berikut adalah pasangan persamaan transformasi Fourier dari filter

Gauss:

Fungsi dari proses smoothing adalah untuk mengurangi noise, menyatukan

beberapa bagian citra yang rusak/terpisah, seperti contoh pada Gambar 3.10

berikut

Gambar 3.10 Contoh Hasil Gaussian Smoothing (Hu, 2002b)

Dan dalam komputasi, filter Gauss berbentuk matriks yang digunakan untuk

memanipulasi piksel di dalam citra.

a b

222

22

2

2/

2)(

)(x

u

Aexh

AeuH

Page 29: intelegent dental light  system

16

Gambar 3.11 Profil Matriks Filter Gauss (Davies, 2005)

3.2.5 Deteksi Kontur

Pendeteksian suatu objek dalam citra akan mudah dilakukan dengan

deteksi tepi. Pengertian tepi adalah lokasi perbatasan yang memiliki perbedaan

nilai yang ekstrim. Untuk menguatkan nilai tepi, dilakukan masking dengan

matriks operator, diantara yang sering digunakan dalam pengolahan citra adalah

sebagai berikut : Robert, Prewitt, Sobel, Canny, dll.

Page 30: intelegent dental light  system

17

Gambar 3.12 Operator Matriks Deteksi Tepi (Hu, 2002b)

Gambar 3.13 Contoh Hasil Deteksi Tepi (Huaman, 2011)

Page 31: intelegent dental light  system

18

3.3 Webcam

Webcam (singkatan dari web camera) seperti ditunjukkan pada Gambar

3.14 adalah sebuah video kamera yang menangkap gambar secara realtime dan

mengirimkan datanya ke komputer.

Gambar 3.14 Kamera Web atau Lebih Sering Disebut Webcam

Webcam adalah kamera video kecil yang mengambil gambar dengan pelan dan

biasanya dipasang di bagian atas layar komputer akan tetapi juga dapat dipasang

dimana saja. Webcam terhubung dengan video capture card di dalam komputer

dan mengambil gambar secara periodik, misal setiap 30 frame per detik. Jika ingin

melakukan video streaming, kita harus menggunakan webcam dengan frame rate

diantara 15 dan 30 frame per detik dan diperlukan juga saluran Internet

broadband (Learn2succeed.com Inc, 2008).

Frame rate adalah sebuah ukuran sebuah webcam secara berurutan

mengambil gambar setiap detiknya. Misalnya sebuah webcam dengan dengan

frame rate 30 frames per second berarti mengambil 30 gambar setiap detiknya.

Frame per second (fps) adalah satuan yang menunjukkan jumlah gambar yang

diambil sebuah kamera setiap detiknya, semakin tinggi sebuah frame rate maka

semakin banyak pula gambar yang diambil setiap detiknya yang berarti semakin

besar pula ukuran dari file video yang dihasilkan.

Page 32: intelegent dental light  system

19

Dalam penelitian ini webcam yang rencananya digunakan adalah webcam dengan

merek Logitech dengan type C170 memiliki kemampuan melakukan maksimal

capture 30 frame setiap detik.

3.4 Motor Servo

Motor servo adalah sebuah motor dengan sistem closed feedback di mana

posisi dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di

dalam motor servo. Motor ini terdiri dari sebuah motor, serangkaian gear,

potensiometer dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan

batas sudut dari putaran servo. Sedangkan sudut dari sumbu motor servo diatur

berdasarkan lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor

(Iswanto, 2011).

Gambar 3.15 Sistem Mekanik Motor Servo (Iswanto, 2011)

Motor servo biasanya hanya bergerak mencapai sudut tertentu saja dan

tidak kontinyu seperti motor DC maupun motor stepper. Walau demikian, untuk

beberapa keperluan tertentu, motor servo dapat dimodifikasi agar bergerak

kontinyu. Pada robot, motor ini sering digunakan untuk bagian kaki, lengan atau

bagian-bagian lain yang mempunyai gerakan terbatas dan membutuhkan torsi

cukup besar.

Motor servo adalah motor yang mampu bekerja dua arah (clock wise dan

counter clock wise) dimana arah dan sudut pergerakan rotornya dapat

dikendalikan hanya dengan memberikan pengaturan duty cycle sinyal PWM pada

bagian pin kontrolnya. Motor servo tampak pada Gambar 3.16.

Page 33: intelegent dental light  system

20

Gambar 3.16 Motor Servo Hitec 311 (Jogjarobotika, 2011)

Motor servo adalah motor yang berputar lambat, dimana biasanya

ditunjukkan oleh rate putarannya yang lambat, namun demikian ia memiliki torsi

yang kuat karena internal gear-nya. Lebih dalam dapat digambarkan bahwa

sebuah motor servo memiliki :

- 3 jalur kabel : power, ground, dan control

- Sinyal control mengendalikan posisi

- Operasional dari servo motor dikendalikan oleh sebuah pulsa selebar ± 20

ms, dimana lebar pulsa antara 0.5 ms dan 2 ms menyatakan akhir dari

range sudut maksimum.

3.4.1 Jenis-Jenis Motor Servo

Motor Servo Standar 180°, motor servo jenis ini hanya mampu bergerak

dua arah (CW dan CCW) dengan defleksi masing-masing sudut mencapai 90°

sehingga total defleksi sudut dari kanan – tengah – kiri adalah 180°. Motor Servo

Continuous, motor servo jenis ini mampu bergerak dua arah (CW dan CCW)

tanpa batasan defleksi sudut putar (dapat berputar secara kontinyu).

3.5 Bahasa C dan C++

Dalam pembuatan perangkat elektronika modern, tentu tidak

lepas dari bahasa pemrograman. Contoh bahasa yang sering digunakan adalah

C. Bahasa C dikatakan berada di antara bahasa beraras rendah dan beraras tinggi.

Bahasa beraras rendah artinya berorientasi pada mesin, sedangkan beraras tinggi

berorientasi pada manusia (Iswanto, 2011).

Page 34: intelegent dental light  system

21

Pencipta bahasa C adalah Brian W. Kerighan dan Denis M. Ritchie sekitar

tahun 1972. Penulisan program dalam bahasa C dilakukan dengan membagi

dalam blok-blok sehinggga bahasa C disebut bahasa terstruktur. Bahasa C

memiliki tingkat efisiensi yang tinggi dalam penggunaan memori, sehingga sangat

cocok untuk memprogram mikrokontroler.

C++ dikembangkan di Bell Labs, bahasa itu diturunkan dari bahasa

sebelumnya, yaitu BCL. Salah satu perbedaan yang paling mendasar dengan

bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek

(object oriented programming).

Perbedaan antara bahasa pemrograman C dan C++ meskipun bahasa-

bahasa tersebut menggunakan sintaks yang hampir sama tetapi mereka memiliki

perbedaan, C merupakan bahasa pemrograman prosedural, dimana penyelesaian

suatu masalah dilakukan dengan membagi-bagi masalah tersebut kedalam sub-

submasalah yang lebih kecil, Selain itu, C++ merupakan bahasa pemrograman

yang memiliki sifat OOP, untuk menyelesaikan masalah, C++ melakukan langkah

pertama dengan menjelaskan class-class yang merupakan anak class yang dibuat

sebelumnya sebagai abstraksi dari object-object fisik, class tersebut berisi keadaan

object, anggota-anggotanya dan kemampuan dari objectnya, Setelah beberapa

class dibuat kemudian masalah dipecahkan dengan class. Dalam penelitian ini

bahasa C++ digunakan dalam pengolahan citra, dan bahasa C digunakan untuk

komunikasi USB dan memprogram mikrokontroler.

3.6 OpenCV

OpenCV (Open Source Computer Vision) adalah library / pustaka fungsi

pemrograman untuk pemrosesan waktu nyata pada computer vision

(Willowgarage, 2011). OpenCV dirilis dibawah lisensi BSD, gratis untuk

digunakan untuk kegunaan akademis maupun untuk fungsi komersial.

Menggunakan antarmuka C++, C dan Python, juga Java. Library ini dapat

berjalan pada sistem operasi Windows, Linux maupun Mac. OpenCV memiliki

banyak lebih dari 500 fungsi.

Page 35: intelegent dental light  system

22

Beberapa fitur OpenCV yang digunakan dalam penelitian ini, antara lain :

1. Manipulasi data citra (alokasi, copying, setting, konversi).

2. Citra dan video I/O (file dan kamera based input, image/video file output).

3. Manipulasi matriks dan vektor beserta rutin-rutin aljabar linear (products,

solvers, eigenvalues, SVD).

4. Pemroses citra fundamental (filtering, edge detection, corner detection,

sampling and interpolation, color conversion, morphological operations,

histograms, image pyramids).

5. Analisis struktur (connected components, contour processing, distance

transform, various moments, template matching, Hough transform,

polygonal approximation, line fitting, ellipse fitting, Delaunay

triangulation).

6. Graphical user interface (display image/video, penanganan keyboard dan

mouse handling, scroll-bars).

7. Pelabelan citra (line, conic, polygon, text drawing)

OpenCV terdiri dari beberapa library, diantaranya:

- CV : untuk algoritma image processing dan vision

- Highgui : untuk GUI, Image dan video I/O

- CXCORE : untuk struktur data, support XML dan fungsi-fungsu grafis.

3.7 BASCOM AVR

Bascom AVR adalah compiler bahasa pemrograman Basic yang berjalan

di atas Windows untuk memprogram keluarga mikrokontroler AVR. Ia didesain

untuk berjalan di W95/W98/NT/W2000, XP and Vista, juga Win7

(MCSelectronics, 2012). Fitur dari Bascom AVR :

Bahasa Basic terstruktur dengan label.

Pemrograman terstruktur dengan IF-THEN-ELSE-END IF, DO-LOOP,

WHILE-WEND, SELECT- CASE.

Variabel dan label maksimal dapat memuat 32 karakter.

Variabelnya mendukung : bit, byte, integer, word, long, single , double,

and string.

Page 36: intelegent dental light  system

23

Terdapat fungsi kalkulasi tanggal dan waktu.

Terdapat perintah spesial untuk LCD display , chip I2C dan chip 1wire,

keyboard PC, keyboard matrix, RC5 reception, software UART, SPI ,

LCD grafis, IR RC5, RC6.

Mendukung variable lokal, fungsi, dan pustaka.

Terdapat emulator terminal terintegrasi dengan opsi download.

Terdapat simulator terintegrasi.

Mendukung ISP programmer, STK200 programmer , dan STK300

programmer.

IDE dengan statement highlighting.

Memiliki PDF datasheet viewer.

Dokumentasi dan help yang lengkap.

3.8 PowerSwitch

PowerSwitch terdiri dari 2 bagian, yaitu modul perangkat keras dan

firmware. Firmware adalah program yang ditanam pada memori ROM, tidak

hilang walau tidak ada catu daya. Modul PowerSwitch terdiri atas chip AVR

ATtiny 2313 yang dilengkapi dengan kristal eksternal 12 MHz dan beberapa

komponen lain. Walaupun terkoneksi USB, papan sirkuit PowerSwitch tidak

membutuhkan chip tambahan seperti FTDI dan sebagainya, hal ini karena

dalam chip ATtiny 2313 sudah dimasukkan firmware sebagai emulator

protokol USB yang memungkinkan komunikasi komputer via USB dengan chip

AVR secara langsung (Objective Development, 2008).

Gambar 3.17 Board PowerSwitch (Objective Development, 2008)

Page 37: intelegent dental light  system

24

BAB IV

ANALISIS DAN PERANCANGAN SISTEM

4.1 Analisis Sistem Kendali

Penelitian ini pada intinya adalah integrasi antara pengolahan citra

dengan lengan robot sebagai representasi dari dental light. Berangkat dari sana

tentu dibutuhkan suatu sistem kendali yang tepat. Dengan mengurai dan kembali

ke esensi permasalahan, yakni cara pengontrolan dental light oleh dokter gigi,

maka di antara 2 jenis sistem kendali, yaitu open-loop dan closed-loop maka

dipilihlah jenis open-loop dikarenakan output-nya tidak memberi efek/feedback

ke sistem kontrol dan yang mengendalikan sepenuhnya adalah dokter gigi itu

sendiri. Pada Gambar 4.1 ditunjukkan diagram sistem kendalinya.

Gambar 4.1 Diagram Sistem Kendali Open Loop

Masukan dari sistem kendali di atas berasal dari isyarat arah tunjuk jari

dari dokter gigi, apakah menunjuk ke atas, ke bawah, ke kiri, atau ke kanan. Arah

tunjuk digunakan sebagai input dirasakan memudahkan penggunaan karena hal itu

mudah diingat dibandingkan dengan isyarat lain seperti menghitung jumlah jari.

Kemudian untuk pengolahan citranya dibutuhkan prosesor yang mampu

menjalankan program dengan pustaka OpenCV. Dengan memanfaatkan yang

sudah ada, dalam hal ini adalah sebuah laptop, dengan spesifikasi prosesor Intel

Core 2 Duo T5870, RAM 2 GB, VGA Intel GMA 4500M, dan HD 250 GB

dianggap akan mampu melakukan proses tersebut. Sebagai controller, dibutuhkan

divais yang mudah digunakan user, juga mudah komunikasinya dengan laptop.

Pada umumnya, untuk mengontrol sesuatu di luar komputer, yang biasa

digunakan adalah protokol RS232/serial, namun karena di laptop sudah jarang

Referensi

berupa isyarat

arah tunjuk jari

Proses

pengolahan

citra

output gerakan

lengan robot

Controller

Page 38: intelegent dental light  system

25

dijumpai port serial, maka komunikasi yang dimungkinkan dan efisien adalah via

USB. Sedangkan untuk modul controller itu sendiri membutuhkan hasil kerja

yang baik dalam menggerakkan lengan robot, namun juga tidak terlalu kompleks.

4.2 Analisis Perangkat Lunak

Proses pengolahan citra dalam penelitian ini dilakukan oleh perangkat

lunak. Dipilihlah bahasa pemrograman C++ karena meneruskan kode sumber

yang sudah ada dari penelitian Ho (2011). OpenCV digunakan sebagai pustaka

khusus mengenai computer vision karena mudah diunduh, gratis, kemampuannya

memadai, ringan, walaupun untuk referensi dan tutorialnya tidak terlalu banyak.

Untuk sistem operasi yang digunakan, juga meneruskan dari penelitian Ho (2011),

yaitu Linux. Linux juga memiliki kemudahan dan fleksibilitas untuk melakukan

pengaturan program, integrasi dengan perangkat keras, tidak membutuhkan

source komputer yang besar, juga kini telah luas digunakan tidak hanya pada

ranah desktop, tapi juga mobile device. Sehingga untuk pengembangan

kedepannnya bisa sangat luas.

Kemudahan penggunaan tetap dipertimbangkan meskipun sifatnya masih

pengembangan awal. Karena metode pengolahan citra yang digunakan adalah

pemilahan suatu warna objek dari warna latar belakangnya, maka ada parameter

tertentu yakni range warna dari objek tersebut. Untuk kemudahan penggantian

nilai parameter itu, perlu dibuat mekanisme cara memasukkan data yang fleksibel,

tidak secara langsung dalam kode program agar pengguna tidak perlu meng-

compile ulang program. Mengenai program pengolahan citranya, langkah-langkah

pemrosesan citra diusahakan menghasilkan keluaran yang baik, tidak dibatasi

warna latar belakang tertentu, dan dapat menghilangkan derau yang mungkin

terjadi.

4.3 Analisis Purwarupa Lengan Robot

Dengan batasan masalah antara lain :

a. Bentuk dan ukuran purwarupa lengan dental light tidak sama dengan

yang sebenarnya.

Page 39: intelegent dental light  system

26

b. Gerakan dental light dibatasi hanya melakukan 8 gerakan dasar yaitu

memutar ke atas, ke bawah, menggeleng ke kiri, menggeleng ke

kanan, bergeser ke atas, ke bawah, berputar ke kiri , dan berputar ke

kanan. Yang mana gerakan aslinya juga dapat bergerak maju dan

mundur, juga bergeser ke kiri dan ke kanan digantikan dengan

berputar ke kiri dan ke kanan.

c. Dalam satu waktu, hanya 1 motor servo yang bergerak.

Dari analisis batasan tersebut, bentuk purwarupa lengan robot yang akan dibuat

tidak memerlukan bagian lengan yang panjang-panjang seperti bentuk dental light

asli. Walaupun begitu, jenis motor yang digunakan haruslah dapat menahan beban

dan mampu mempertahankan posisinya, dari sana maka jenis motor yang paling

cocok digunakan adalah motor servo, selain juga cara mengatur gerakannnya

mudah. Torsi dari motor servo yang dibutuhkan tidak terlalu besar karena

purwarupa tidak seperti lengan dental light asli yang memiliki lengan panjang-

panjang.

Karena gerakan yang akan dilakukan berjumlah 8 gerakan, maka

diperlukan penghitungan jumlah derajat kebebasan lengan yang dibutuhkan.

Setiap motor servo dapat melakukan 2 gerakan yaitu searah jarum jam dan

sebaliknya, namun dibatasi sudut putarnya hanya 1800 karena servo yang

digunakan bukan tipe yang bisa berputar 3600. Dari sana dapat dihitung bahwa

untuk memperoleh 8 gerakan, maka dibutuhkan 4 motor servo. Karena setiap

motor servo juga merepresentasikan satu derajat kebebasan, maka dalam

penelitian ini, lengan robot memiliki 4 derajat kebebasan.

Pada bagian analisis sistem kendali, sebagai referensi masukannya adalah

isyarat jari. Namun jumlah dari isyarat tersebut hanya 4, sedangkan gerakan yang

dilakukan lengan robot ada 8. Maka perlu mekanisme tambahan agar dari 4

isyarat jari bisa mengontrol 8 gerakan. Sebagai pertimbangan, ada sebuah

komponen elektronika bernama relay, ia memiliki beberapa sakelar yang secara

mekanik dapat berubah posisi secara bersamaan jika diberi tegangan listrik.

Dengan relay yang memiliki 4 sakelar, dapat dibuat 2 kanal untuk memperbanyak

variasi masukan untuk mengontrol gerakan lengan robot.

Page 40: intelegent dental light  system

27

4.4 Rancangan Sistem Secara Keseluruhan

Sistem ini menggunakan webcam yang mengambil citra pola jari tangan.

Pola tersebut didapat dari bentuk gerakan jari telunjuk atau jempol. Jari tersebut

nantinya menunjuk ke suatu arah dari 4 pilihan arah, yakni atas, bawah, kiri, dan

kanan. Arah yang ditunjukkan oleh bentuk pola jari ini akan menjadi dasar

masukan untuk gerakan lengan dental light tanpa menyentuh langsung.

Pada dasarnya gerakan dental light ada 8, maka dari 4 arah yang menjadi

input tadi, akan ditambahkan pedal yang bisa diinjak dokter (untuk mengontrol

relay) guna memperbanyak variasi gerakan menjadi 2 kali lipatnya, menjadi total

8 gerakan. Hal ini agar dokter tidak perlu menghafal bentuk isyarat jari.

Pemrosesan citra pola jari dilakukan menggunakan bahasa C++ dengan library

OpenCV. Di dalam program pemrosesan citra tersebut terdapat 5 jenis output,

yaitu default, arah atas, arah bawah, arah kiri, dan arah kanan. Kemudian output

tersebut dihubungkan dengan program PowerSwitch, yang mana program tersebut

dikembangkan dengan bahasa C.

Program PowerSwitch, yang berjalan di atas OS Linux berguna

mengendalikan board PowerSwitch yang terkoneksi dengan port USB komputer /

laptop untuk mengeluarkan logika TTL 1 atau 0. Empat keluaran dari

PowerSwitch lalu dihubungkan ke relay untuk diatur sambungannya ke papan

PCB servo controller yang menerima 8 input. PCB servo controller

menggerakkan lengan dental light jika ia mendapat masukan logika 0 atau

dinamakan active-low. Masukan nilai ke servo controller didapat dari keluaran

PowerSwitch. Jumlah keluaran dari PowerSwitch adalah 4 pin, padahal lengan

dental light dapat melakukan 8 gerakan. Maka digunakan relay untuk bertugas

memperbanyak output dari PowerSwitch yang hanya 4. Relay dikontrol

menggunakan pedal yang esensinya adalah sebuah sakelar. Pedal ini dikendalikan

dengan kaki sehingga tangan dokter tetap tidak perlu memegang sehingga terjaga

kesterilan tangannya.

Motor servo bergerak mengikuti input dari pola deteksi arah jari. Ketika

ada pola arah yang terdeteksi, maka servo controller akan mengirim sudut gerak

Page 41: intelegent dental light  system

28

lengan dan melakukan increment / penambahan sampai pola arah tidak ada lagi /

kondisi default. Program servo-controller dibuat dengan Bascom AVR. Pada

Gambar 4.2 ditunjukkan diagram blok dan diagram alir perancangan sistem secara

keseluruhan.

Gambar 4.2 Diagram Blok Rancangan Sistem secara Keseluruhan

4.5 Rancangan Perangkat Lunak

Rancangan perangkat lunak yang terdapat dalam sistem ini ada 4 bagian,

yakni terdapat di dalam komputer berupa pengolahan citra untuk jari tangan,

aplikasi PowerSwitch di commandline di mana keduanya berjalan di atas platform

Linux Ubuntu. Perangkat lunak juga terdapat di board PowerSwitch, dan board

servo controller.

4.5.1 Deteksi Jari Tangan

Perangkat lunak pertama akan menerima masukan berupa gambar dari

kamera menjadi Ipl Image yang dikenali oleh modul OpenCV. Bentuk dari

Isyarat

arah tunjuk

jari

Input

parameter

HSV

u

Threshold

Erosi dan

dilasi Smoothing Cari kontur

Cari titik

tengah

tangan

Cari

ujung jari

Cari arah

tunjuk jari

PowerSwitch Servo

controller Lengan

dental light

Pengolahan citra

Cari warna

pada range

tertentu

Page 42: intelegent dental light  system

29

isyarat jari yang akan digunakan digambarkan pada Gambar 4.3. Arah gerakan

dilakukan dengan menunjuk ke suatu arah.

Gambar 4.3 Bentuk Isyarat Jari yang Dipakai

Berikut adalah tahapan dalam mendeteksi jari :

1. Mengonversi citra hasil tangkapan webcam dari RGB ke HSV. Hal ini

dilakukan untuk sedekat mungkin menyamai persepsi warna yang diterima

indra manusia. Juga agar lebih teliti dalam memilah nilai dari posisi warna

objek, dalam hal ini adalah sarung tangan yang dipakai dokter.

2. Memeriksa citra dengan range warna tertentu dari sarung tangan dokter untuk

mendapat bentuk dari tangan. Nilai dari warna objek tidak absolut hanya satu

nilai, namun dalam batas-batas/range yang ditentukan. Hal ini karena bisa jadi

pada suatu ruangan, intensitas dari cahaya berubah sehingga warna yang

diterima webcam juga berubah. Nilai di luar batas akan dianggap tidak ada, hal

ini dilakukan untuk membuang latar belakang yang tidak perlu.

3. Setelah objek tangan terpilah warnanya dari latar belakang, maka citra

selanjutnya di-threshold agar ada pemisahan secara tegas antara tangan dengan

latar belakang (bukan tangan).

4. Dari hasil di atas, ada beberapa derau yang dihasilkan, maka perlu dilakukan

erosi dan dilasi agar derau hilang dan hasil deteksi maksimal.

5. Dari hasil dilasi, dilakukan smoothing agar citra menjadi halus.

6. Bentuk dari tangan dicari tepiannya saja untuk menghasilkan kontur tangan.

Page 43: intelegent dental light  system

30

Gambar 4.4 Diagram Alir Tahap Deteksi Jari

Gambar 4.4 Diagram Alir Tahap Deteksi Jari

4.5.2 Deteksi Arah Isyarat

Setelah citra tangan berhasil dipilah dari latar belakangnya, selanjutnya

dicari ke arah manakah isyarat jari menunjuk. Dalam penelitian Ho (2011),

dilakukan beberapa proses sampai menemukan arah tersebut. Cara menentukan

arah isyarat jari dilakukan dengan melakukan perhitungan sudut antara 2 titik, H

sebagai titik pusat tangan dan P sebagai ujung jari. Dari sana dapat ditentukan

apakah arahnya ke atas, ke bawah, ke kanan, atau ke kiri.

Mulai

cvImage = frame

saat ini

Input parameter HSV

Erosi dan Dilasi

range HSV min

s.d. HSV max

Thresholding

RGB to HSV

Smoothing

Selesai

Cari kontur

Page 44: intelegent dental light  system

31

Gambar 4.5 Gambaran Cara Menentukan Arah Isyarat Tangan

Titik tengah H, diperoleh dari titik tengah dari keseluruhan objek tangan,

sedangkan P adalah titik yang diciptakan oleh telunjuk atau jempol, juga Ox

sebagai sumbu horizontal X. Setelah itu dapat dilakukan penghitungan

Cos(HP,Ox). Dari sana hasilnya bervariasi :

Cos (HP,Ox) > 0.7, arah = ke bawah.

Cos (HP,Ox) < -0.7, arah = ke atas.

If -0.7 < Cos (HP,Ox) < 0.7, dan H.y < P.y, arah = kiri.

If -0.7 < Cos (HP,Ox) < 0.7, dan H.y > P.y, arah = kanan.

4.5.3 Mengatur Perintah Gerakan Lengan

Penghubung antara pengolahan citra untuk mengenali arah isyarat

dengan gerakan lengan dental light adalah program PowerSwitch. Ia adalah

program yang dikembangkan Object Development melalui lamannya di

http://obdev.at. PowerSwitch adalah program tersendiri yang berjalan di terminal

command line Linux Ubuntu, fungsinya adalah memberi output logika 5 volt atau

0 melalui USB. Sinyal keluaran ini berguna untuk memberi perintah gerakan ke

board pengatur gerakan lengan robot. Cara menggabungkan program pengolahan

citra yang berbahasa C++ adalah dengan menambahkan fungsi „system ()‟

untuk memanggil program PowerSwitch setelah penentuan arah isyarat jari

Page 45: intelegent dental light  system

32

ditemukan. Program PowerSwitch harus dimasukkan ke dalam folder usr/bin/ agar

langsung bisa dipanggil. Karena lengan robot diaktifkan dengan metode active-

low, maka program PowerSwitch ini diubah dari aslinya agar sesuai kebutuhan,

dengan cara menginvert nilai keluarannya.

4.5.4 Program Kendali Servo

Dengan menggunakan bahasa Bascom AVR, mengendalikan gerakan

servo menjadi mudah. Dalam penelitian ini dibuat 8 input masukan dan 8 gerakan

yang dapat dilakukan oleh 4 servo. Delapan input masukan menggunakan metode

active-low, ketika ada sinyal 0/GND maka program akan melakukan proses

increment, selanjutnya nilai yang bertambah itu dikeluarkan ke bagian sinyal

servo sebagai sudut putarnya. Nilai sudut dibatasi dari 0-255 untuk menghindari

adanya perulangan loop program yang tidak perlu sehingga mengakibatkan

gerakan lengan robot menjadi kacau. Gambar 4.6 adalah flowchart programnya.

Page 46: intelegent dental light  system

33

Gambar 4.6 Diagram Alir Program Kendali Servo

4.6. Rancangan Perangkat Keras

Perangkat keras yang dipakai dalam sistem ini berupa webcam, board

PowerSwitch, relay, pedal, dan board servo controller, serta lengan dental light

yang disusun dari 4 motor servo. Webcam yang digunakan adalah Logitech C170

yang memiliki kualitas video yang cukup tajam yaitu maksimal 30 fps. Perangkat

Page 47: intelegent dental light  system

34

keras selanjutnya, Board PowerSwitch. Perangkat itu dihubungkan ke laptop

dengan kabel USB. Inti dari PowerSwitch adalah mikrokontroler ATtiny2313A.

Output dari PowerSwitch dihubungkan ke relay yang sudah dilengkapi pedal.

Penggunaan relay dan pedal ini dimaksudkan untuk mempermudah penggunaan

alat agar intuitif. Dokter gigi tidak perlu menghafalkan 8 pola jari yang berbeda,

itu terlalu banyak. Maka dokter gigi hanya perlu menghafal 4 pola jari yakni atas,

bawah, kiri, dan kanan. Dengan tambahan relay dan pedal akan menambah 4 lagi

variasi gerakan, yaitu pedal dan arah atas, pedal dan arah bawah, pedal dan arah

kiri, dan pedal dan arah kanan. Sehingga total menjadi 8 keluaran nilai.

Delapan keluaran dari relay terhubung ke papan pengendali gerakan

motor servo. Pengendali ini mengontrol gerakan 4 motor servo yang sudut putar

maksimalnya adalah 1800

. Dari 4 motor servo, derajat kebebasan dari lengan

dental light diperlihatkan pada Gambar 4.7. Derajat kebebasan merupakan sumbu

pergerakan dari tiap motor servo.

Gambar 4.7 Rancangan Derajat Kebebasan Lengan Dental Light

Dalam satu waktu, motor servo yang bergerak hanya satu, misalkan

dokter gigi menunjuk ke arah atas dan tidak menginjak pedal, maka motor servo

nomor 2 misalnya, akan bergerak searah jarum jam secara periodik sesuai

perintah. Gerakan periodik dari motor servo dikarenakan adanya penambahan

nilai dari servo controller.

Page 48: intelegent dental light  system

35

4.6.1 Rancangan PowerSwitch

PowerSwitch dalam bentuk modul perangkat keras rancangannya dibuat

berdasarkan skematik dari laman http://obdev.at. Modul ini mendapat daya listrik

dari laptop lewat konektor USB. Modul PowerSwitch memiliki 4 keluaran yang

dapat menghasilkan 5 volt atau 0 volt. Gambar 4.8 memperlihatkan skematik

rincinya.

Gambar 4.8 Skematik PowerSwitch (Objective Development, 2008)

Chip yang digunakan dalam modul ini adalah ATtiny 2313. Ia diprogram dengan

menanamkan program berupa file berekstensi *.hex yang di dalamnya sudah

terdapat firmware untuk memungkinkan komunikasi antara komputer dan divais

eksternal via USB tanpa perangkat dengan protokol USB secara khusus. Bisa

dilihat di Gambar 4.8 konektor SV2 adalah 4 keluaran sedangkan SV1 adalah

konektor untuk memprogram Attiny 2313.

Page 49: intelegent dental light  system

36

4.6.2 Rancangan Servo Controller

Untuk mengontrol servo, diperlukan rangkaian elektronika yang dapat

menghasilkan sinyal PWM yang mengarahkan motor servo untuk berputar.

Kebutuhan dari penelitian ini adanya 8 masukan dari hasil pengolahan citra, juga

4 keluaran untuk 4 buah motor servo. Selain sinyal PWM, servo membutuhkan

VCC dan GND. Dalam rangkaian juga ditambahkan tombol reset untuk

mengembalikan seluruh servo ke posisi awal, hal ini dilakukan untuk menghadapi

kemungkinan adanya program error atau tidak ada respon. Pada Gambar 4.9

ditunjukkan skematik lengkap sistem minimum servo controller.

Gambar 4.9 Skema Minimun Sistem ATmega32 sebagai Servo Controller

Dalam rangkaian juga ditambahkan rangkaian regulator catu daya. Digunakan IC

7805 untuk membatasi tegangan yang masuk sebagai suplai ke mikrokontroler

ATmega 32 dan servo.

Page 50: intelegent dental light  system

37

4.6.3 Rancangan Pedal dan Relay

Pada bagian akhir analisis purwarupa lengan robot sudah sempat

disinggung tentang kebutuhan mekanisme tambahan yang mengatasi masalah

jumlah isyarat jari yang hanya 4 kurang dari jumlah gerakan lengan robot yang

berjumlah 8 gerakan. Maka dibuatlah rancangan untuk memperbanyak variasi

input dengan relay yang memiliki 4 sakelar di dalamnya. Pada Gambar 4.10

diperlihatkan bagaimana skematikanya.

Gambar 4.10 Skema Rangkaian Relay

Relay ditambahi sebuah diode agar mencegah adanya arus balik yang dapat

mengganggu kerja relay atau merusak komponen lain. Untuk mengaktifkan relay,

diberi juga sakelar yang dibentuk seperti pedal. Dengan begitu meskipun ada

mekanisme tambahan, dokter gigi tetap tidak perlu menyentuh dental light secara

langsung. Pedal diberi indikator berupa LED agar tampak kondisi saat pedal

diinjak atau tidak. Masukan tegangan yang dibutuhkan relay adalah 12 volt.

4.7 Rancangan Pengujian

Setelah seluruh perangkat lunak dan perangkat keras jadi dan telah

diintegrasikan, diperlukan pengujian untuk mengetes sejauh mana kualitas dari

penelitian ini. Tidak hanya masalah bisa atau tidak bisa menggerakkan lengan

Page 51: intelegent dental light  system

38

robot dengan isyarat jari, tapi ada beberapa pengujian kuantitatif yang perlu

dilakukan. Pengujian tersebut diantaranya :

a. Pengujian warna sarung tangan

Karena dokter gigi dalam praktiknya menggunakan sarung tangan, maka objek

yang akan dikenali warnanya adalah sarung tangan. Di pasaran, terdapat

berbagai macam warna sarung tangan yang tersedia. Dari varian warna tersebut

perlu diuji bagaimana karakteristik warna sarung tangan yang baik untuk

dikenali dan menggerakkan lengan robot dental light.

b. Pengujian pengaruh intensitas cahaya

Dokter gigi melakukan praktik pada umumnya di dalam ruangan. Kondisi dari

ruangan juga dapat bermacam-macam, yang paling berpengaruh terhadap

kualitas citra adalah pengaruh intensitas cahaya dalam suatu ruangan. Maka

pengaruh dari intensitas cahaya dalam ruangan juga perlu diuji, kondisi

bagaimana yang menghasilkan pengontrolan yang baik.

c. Pengujian jarak

Jarak antara webcam dengan tangan perlu dites berapa jarak optimalnya. Perlu

dicari, jarak berapakah yang menghasilkan pengontrolan lengan dental light

yang baik dan sesuai isyarat yang diberikan.

d. Pengujian waktu respon

Waktu antara adanya isyarat dan kapan lengan robot meresponnya juga perlu

diuji seberapa cepat. Jika responnya lambat, tentu akan menjadi masalah bagi

dokter yang menggunakan sistem ini.

e. Pengujian ketepatan gerakan

Arah tunjuk dari jari dan gerakan dari lengan robot perlu diuji kesesuaiannya.

Ini adalah esensi dari sistem kendali lengan dental light menggunakan isyarat

jari.

Page 52: intelegent dental light  system

39

BAB V

IMPLEMENTASI

Bab ini menjelaskan tentang implementasi pendeteksian isyarat jari dari

citra yang ditangkap webcam kemudian digunakan untuk mengendalikan lengan

dental light. Implementasi sistem ini menggunakan perangkat keras dan perangkat

lunak sebagai berikut:

1. Webcam Logitech C170

2. Laptop ASUS K40IJ Intel Core 2 Duo T5870, 2 GB RAM

3. Servo controller

4. PowerSwitch Board

5. Lengan Robot

6. Sistem Operasi Linux Ubuntu 10.04 a.k.a. Lucid Lynx 32-Bit

7. OpenCV 2.3.1

5.1 Penentuan Parameter Warna

Yang pertama dilakukan adalah tahap kalibrasi, di mana ia berfungsi untuk

memasukkan nilai HSV minimal dan HSV maksimal untuk dapat mendeteksi

suatu warna tertentu saja dan tidak mengindahkan selainnya. Warna yang

dideteksi adalah warna sarung tangan yang dipakai dokter gigi. Cara memasukkan

nilai HSV-nya adalah dengan membuat file baru di luar file pengolahan citra, agar

pengguna tidak perlu meng-compile ulang program untuk mengganti parameter

HSV. File baru tersebut berekstensi *.txt, dengan format :

num1 num2 num3

num4 num5 num6

“num1” sampai dengan “num6” adalah variabel-variabel yang akan

menggantikan nilai HSV minimal dan maksimal, dalam program pengolahan

citra:

91 CvScalar hsv_min = cvScalar(num1,num2,num3); //H,S,V

92 CvScalar hsv_max = cvScalar(num4,num5,num6);

Gambar 5.1 Kode HSV Minimum dan Maksimum

Page 53: intelegent dental light  system

40

Untuk membaca file eksternal tersebut, di dalam listing program pengolahan citra

ditambahkan fungsi kalibrasi :

19 void parameter_warna()

20 {

21 ifstream indata; // indata is like cin

22 indata.open("test.txt"); // opens the file

23 if(!indata)

24 { // file couldn't be opened

25 cerr << "Error: file could not be opened" <<

endl;

26 exit(1);

27 }

28

29 indata >>num1>>num2>>num3>>num4>>num5>>num6;

//masukkan nilai ke variabel

30 indata.close();

31 }

Gambar 5.2 Kode Pembacaan File Eksternal

Fungsi ini membutuhkan header “fstream.h”, maka #include <fstream> perlu

dicantumkan. “ifstream indata” bertindak layaknya perintah cin dalam C++.

File yang akan dibaca dimasukkan dalam perintah “indata.open(“ .txt“)”.

Setelah itu dilakukan pengecekan tentang ada tidaknya file yang akan dibaca.

Perintah “indata>>” memasukkan nilai yang terbaca ke variabel num1 s.d. num6.

Variabel num1 s.d. num6 tidak dideklarasikan di dalam fungsi karena sebelumnya

sudah ada di bagian atas, juga dimaksudkan menjadi variabel global agar bisa

diakses fungsi lain nantinya.

5.2 Implementasi Deteksi Jari

Implementasi deteksi jari dilakukan dengan langkah-langkah seperti pada

Gambar 4.3 dengan memproses setiap frame citra dari webcam, citra diambil dari

webcam dengan menggunakan kode pada Gambar 5.3.

41 CvCapture* capture = cvCaptureFromCAM(1);

Gambar 5.3 Kode untuk Mengakses Webcam

Kamera yang digunakan adalah kamera dengan nomor ID (1), ID ini

berarti kamera yang diakses adalah kamera eksternal, karena bila hanya ada satu

Page 54: intelegent dental light  system

41

kamera di komputer (webcam laptop) maka secara default akan berada pada ID

(0). Hasil dari capture oleh kamera dimasukkan kedalam variabel “capture”.

Setelah itu dilakukan pengecekan terhadap kamera.

43 if ( !capture )

44 {

45 fprintf( stderr, "ERROR 1: CAPTURE is NULL \n" );

46 getchar();

47 return -1;

48 }

49

50 while(!end)

51 {

52 cvGrabFrame (capture);

53 IplImage* in0 = cvRetrieveFrame (capture);

54

55 if ( !in0 )

56 {

57 fprintf( stderr, "ERROR 2: FRAME is null...\n" );

//kamera tak dapat meng-capture citra

58 getchar();

59 break;

60 }

61

62 cvNamedWindow("init",CV_WINDOW_AUTOSIZE );

63

64

65 /*==================init phase=====================*/

66 if (key == 0)

67 {

68 IplImage* init = cvCloneImage(in0);

69 //cvNamedWindow("init",CV_WINDOW_AUTOSIZE );

70 cvShowImage("init",init);

71 if ( (cvWaitKey(10) & 255) == 10 ) // press enter to start

72 {

73 key = 1;

74 //cvDestroyWindow( "init" );

75 }

76 }

Gambar 5.4 Listing Ekstraksi Frame dari Kamera

Yang dilakukan di sini adalah mengecek apakah kamera terpasang atau

tidak, juga memeriksa apakah kamera dapat meng-capture citra atau tidak. Bila

variabel capture tidak ada isinya, dikarenakan kamera tidak dapat mengambil

gambar, maka akan muncul pemberitahuan "ERROR 2: FRAME is null...\n".

Jika kamera berhasil menangkap citra, maka citra dimasukkan ke variabel “in0”

Page 55: intelegent dental light  system

42

dan akan dibuat jendela bernama “init” sebagai penampil dari citra asli yang

ditangkap kamera. Selanjutnya dari citra asli in0, disalin dengan nama init dengan

perintah IplImage* init = cvCloneImage(in0); baru kemudian ditampilkan

pada jendela “init” yang sebelumnya sudah dibuat. Untuk memulai pemrosesan

citra, program menunggu tombol “Enter” pada keyboard ditekan. Pada daftar kode

ASCII, tombol “Enter” disamakan dengan “nl” atau new line.

Tabel 5.1 Daftar Karakter ASCII (Sequin, 2011)

Program kemudian dilanjutkan mencari objek tangan yang ditunjukkan

dalam Gambar 5.5.

Page 56: intelegent dental light  system

43

78 if (key == 1)

79 {

80

81 int y_finger = 0;

82 //int cDirect = 0 ;// = 0;

83 CvPoint fVector,hand_center;

84 CvPoint horizontal=cvPoint(0,10);

85

86 int nFingers = 0;

87

88 //====================PROSES=========================================

89 parameter_warna();

90

91 CvScalar hsv_min = cvScalar(num1,num2,num3); //H,S,V

92 CvScalar hsv_max = cvScalar(num4,num5,num6);

93

94 //convert to hsv image

95 IplImage* in = cvCreateImage( cvSize( 640, 480 ), 8, 3 );

96 IplImage* hsv_image=cvCreateImage( cvSize(640,480),8, 3);

97

98 IplImage* hsv_black=cvCreateImage(cvSize(640,480),8,1);

99

100

101 //IplImage* equal = doEqualHist(in0);

102

103 cvCvtColor(in0, hsv_image, CV_BGR2HSV);

104 cvInRangeS(hsv_image, hsv_min,hsv_max, hsv_black); //

deteksi warna kuning

105 IplImage* thres2 = doThresBinary(hsv_black,100);

106 IplImage* erode = doErode (thres2, 2 );

107 IplImage* dilate = doDilate (erode, 1 );

108 IplImage* smooth = doSmoothGaussian(dilate, 41,41);

//lebar, tinggi kernel Gaussian (harus angka ganjil)

Gambar 5.5 Listing Mencari Objek Tangan

Pada fase pengenalan, variabel-variabel yang digunakan diberi nilai awal

yakni = 0. Selanjutnya, untuk memilah warna yang akan diproses, dalam hal ini

warna dari sarung tangan dokter gigi, maka diperlukan batas nilai pada mode

warna HSV-nya. Dalam program dituliskan dengan CvScalar hsv_min dan

CvScalar hsv_max. Nilai-nilai tersebut didapat dengan pemilihan warna model

HSV.

Berikutnya yang perlu disiapkan adalah membuat jendela untuk

menampilkan hasil konversi citra dari RGB ke HSV. Hal ini dilakukan agar di

layar monitor nantinya tampak jelas setiap proses yang dilakukan. Ukuran dari

Page 57: intelegent dental light  system

44

jendela-jendela tersebut dibuat dengan ukuran 640x480 pixel. Dengan format

perintah : IplImage* cvCreateImage(CvSize size, int depth, int

channels) maka depth/tingkat kedalaman diatur ke 8 bit dan channel warna

nomor 3 dan nomor 1 untuk yang hitam-putih. Proses konversi dilakukan dengan

perintah cvCvtColor(in0, hsv_image, CV_BGR2HSV); yang artinya citra in0

dikonversi dari RGB ke HSV dan hasilnya dinamai hsv_image. Dari hasil

konversi tersebut lalu nilai HSV-nya dipilah sesuai batas yang ditentukan di

hsv_min dan hsv_max, hasil pemilahan warna tersebut kemudian dinamai

hsv_black.

Dari pemilahan objek tangan berdasar warna, kemudian dilakukan

thresholding untuk memfilter pixel yang nilainya terlalu kecil atau terlalu besar.

Dalam hal ini nilai yang digunakan adalah 100-255. Metode yang dipakai adalah

THRESH_BINARY, nilai di bawah 100 akan dianggap 0, dan selain itu dianggap 1.

Untuk menghilangkan derau berupa titik, maka dierosi 2 kali kemudian dilakukan

dilasi 1 kali untuk mengisi lubang-lubang di citra pada objek tangan. Setelah itu

dilakukan proses smoothing untuk memperhalus citra. Metode smoothing yang

dipakai adalah dengan Gaussian kernel berukuran 41x41, ukuran itu dari

penelitian Ho (2011).

5.3 Implementasi Deteksi Arah Tunjuk Jari

Setelah mendapatkan objek tangan dan membuang pixel latar belakangnya,

maka yang dilakukan adalah mendeteksi arah tunjuk dari jari. Objek tangan

selanjutnya dicari konturnya. Sebelum proses pencarian kontur, dipersiapkan

dahulu jendela untuk hasil kontur dengan IplImage* contour.

111 IplImage* contour = cvCloneImage(smooth);

112 CvMemStorage* storage = cvCreateMemStorage(0);

113 CvSeq* hand_contour = 0;

114

115 //fungsi di bawah cuma buat binary

116 cvFindContours

(contour,storage,&hand_contour,sizeof(CvContour),CV_RETR_TR

EE, CV_CHAIN_APPROX_NONE,cvPoint(0,0));

Gambar 5.6 Kode Pencarian kontur

Page 58: intelegent dental light  system

45

Kontur tangan didapatkan dengan menggunakan fungsi cvFindContours

dengan tipe CV_RETR_TREE, menerima kembali semua kontur dan

merekonstruksi hirarkinya seperti pohon/tree. susunan hierarki dipakai untuk

menarik sebuah ciri-ciri umum dari citra yang sudah diambil.

CV_CHAIN_APPROX_NONE, menyimpan semua titik kontur. Artinya, setiap 2 titik

berikutnya (x1, y1) dan (x2, y2) dari kontur baik itu bertetangga secara horizontal

atau vertikal (abs(x1-x2),abs(y2-y1))==1. cvPoint(0,0)yaitu nilai offset, artinya

tidak ada pergeseran .

118 if (hand_contour)

119 {

120 //mencari titik tengah tangan

121 CvRect hand_box= cvBoundingRect (hand_contour,0);

122 hand_center.x = cvRound(hand_box.x + hand_box.width*0.5);

123 hand_center.y = cvRound(hand_box.y + hand_box.height*0.5);

Gambar 5.7 Kode Menentukan Titik Tengah Tangan

Dari sana ditentukan posisi X dan Y dari titik tengah tangan. Objek tangan

diberi batas berupa kotak/box. Kemudian dari sana dapat ditentukan nilai titik

pusatnya. Proses kemudian dilanjutkan untuk mendeteksi ujung jari. Di mana ada

“r” sebagai jarak antara titik tengah tangan dengan ujung jari, yang nantinya

diproses untuk dihitung nilai cosinus sudutnya dengan sumbu X. Dari Ho (2011),

dilakukan penghitungan nilai vektor P1, P2 dan seterusnya.

Page 59: intelegent dental light  system

46

125 int i=0;

126 int r = 75; //jarak antara tengah tangan dan ujung jari

127 int step = 10; //n step kontur

128 for( i = 0; i < (hand_contour ? hand_contour->total : 0);

i+= step )

129 {

130 CvPoint* r0 = (CvPoint*)cvGetSeqElem( hand_contour, i );

131 CvPoint n0 = cvPoint (r0->x,r0->y);

132 double cos0 = curve (hand_contour, i, r); //calculate the COS at

point P

133 if (cos0 > 4)

134 {

135 final = g_nFingers;

136 break;

137 }

138 if (cos0 > 0.5)

139 {

140 double cos1 = curve (hand_contour, i - step, r); // calculate

COS at point P1

141 double cos2 = curve (hand_contour, i + step, r); // calculate

COS at point P2

142 double max1 = max_3 (cos0, cos1, cos2); // Find the Max of 3 Cos

value

143 bool equal = IsEqual (max1 , cos0);

144 signed int z = zCrossProduct (hand_contour, i, r); //

Calculate cross product of 2 vector PP1 and PP2

145

146 if (equal == 1 && z<0)

147 {

148 nFingers += 1;

149 CvPoint* r0 = (CvPoint*)cvGetSeqElem( hand_contour, i );

Gambar 5.8 Kode Menentukan Vektor-vektor pada Tangan

Seperti bisa dilihat pada Gambar 5.1, Jika didapat 3 titik pada kontur

tangan, dan menghitung sudut A diantara vektor PP1 dan PP2, maka dapat

ditentukan yang manakah titik sebagai ujung jari. Jika sudut A nilainya kurang

dari 450 maka bisa dipastikan itu adalah ujung jari (Ho, 2011).

Page 60: intelegent dental light  system

47

Gambar 5.9 Titik-titik pada Kontur Tangan (Ho 2011)

Persoalan belum selesai, masih ada masalah jika ditemukan titik “lembah”

diantara jari seperti pada Gambar 5.10. Dengan sudut yang amat kecil juga, maka

dilakukan penghitungan cross product antara PP1 and PP2 untuk membedakan

ujung jari dengan lembah. Jika hasil cross product Z kurang dari 0 maka itulah

titik ujung jari.

Gambar 5.10 Titik Ujung Jari dan Bagian “Lembah” antar Jari (Ho 2011)

Page 61: intelegent dental light  system

48

Agar hasil dari pendeteksian kontur tangan, ujung jari, dan titik tengah

tangan, maka di titik-titik tersebut diberi indikator berupa lingkaran dengan

cvCircle dan garis dengan cvLine yang menghubungkan keduanya. Warna dari

indikator-indikator tersebut dibuat berbeda agar tegas. Pengaturan warnanya

diatur dengan model RGB. Misalkan R=255, G=0, dan B=0 untuk menciptakan

warna merah dan seterusnya.

150 CvPoint n0 = cvPoint (r0->x,r0->y);

151 y_finger = r0->x;

152 fVector = cvPoint(n0.x - hand_center.x, n0.y -

hand_center.y);

153 cvCircle( in0,n0 , 8, CV_RGB(255,0,0), 3, 8, 0 ); /ujung jari,

warna merah

154 cvCircle( in0,hand_center , 8, CV_RGB(0,255,0), 3, 8, 0 );

//tengah jari, warna kuning

155 cvLine (in0, n0, hand_center,cvScalarAll(255), 1,8 );

156 cvDrawContours( in0, hand_contour, CV_RGB(255,0,0),

CV_RGB(0,255,0), 1, 2, 8, cvPoint(0,0));

Gambar 5.11 Kode Pemberian Indikator dari Hasil Pengenalan

Pada penelitian Ho (2011), untuk dapat mengetahui arah tunjuk dari jari

dibutuhkan titik tengah tangan dan titik ujung jari. Dari proses sebelumnya, hal

tersebut sudah bisa didapatkan. Selanjutnya, dari kedua titik itu, dicarilah nilai

cosinus-nya. Kodenya ada pada Gambar 5.12.

Page 62: intelegent dental light  system

49

178 if (final == 1)

179 {

180 //if (final == 0)

181 //cout << "stop" << endl;

182

183 double cos_angle = cos_vector(fVector, horizontal);

184 if (cos_angle < -0.7)

185 {

186 cDirect = 1; //up

187 }

188 else if (cos_angle > 0.7)

189 {

190 cDirect = 2; //down

191 }

192 else

193 {

194 if (y_finger > hand_center.x)

195 {

196 cDirect = 3; //right

197 }

198 else

199 {

200 cDirect = 4; //left

201 }

202 }

203 }

204 if (final != 1) // tidak ada arah yg terdeteksi, stop

205 cDirect = 0;

Gambar 5.12 Penghitungan Cosinus untuk Menentukan Arah Tunjuk Jari

Seperti dijelaskan sebelumnya pada bab perancangan, cara menentukan

arah adalah dengan menghitung sudut antara vektor HP (vektor antara titik pusat

tangan dan ujung jari) dengan garis horizontal/sumbu X. Bila nilai cos HPOx < -

0.7 maka arah yang ditunjukkan adalah ke atas, bila cos HPOx < 0.7 maka arah

yang ditunjukkan adalah ke bawah. Kemudian jika posisi koordinat ujung jari

lebih tinggi dibanding koordinat H/pusat tangan pada sumbu Y, maka arahny

adalah ke kiri, selain itu semua adalah arah kanan. Bila tak ada arah yang

terdeteksi, maka berhenti. Nilai dari arah disimpan di variabel cDirect. Setelah

arah tunjuk didapat, maka dengan fungsi system(), dapat memanggil program

PowerSwitch sebagai input ke perangkat keras. Ditambahkan pula “kondisi” agar

di terminal penampil, ada keterangan arah yang ditunjuk. Di Gambar 5.13

Page 63: intelegent dental light  system

50

dituliskan juga bagaimana pemanggilan program PowerSwitch dilakukan. Dari 8

channel, yang diperlukan hanya 4 channel.

207 if (g_direct != cDirect )

208 {

209 g_direct = cDirect;

210 //cek g_nFingers

211 //cout << "g_nFingers : " << g_nFingers << "\n";

212 cout << "kondisi : " << g_direct << endl;

213

214 switch (g_direct)

215 {

216 case 0: cout << "stop" << endl;

217 system("for i in 0 1 2 3 4 5 6 7; do powerSwitch off $i;

done"); break;

218 case 1: cout << "up" << endl;

219 system("powerSwitch on 5"); break;

220 case 2: cout << "down" << endl;

221 system("powerSwitch on 4"); break;

222 case 3: cout << "left" << endl;

223 system("powerSwitch on 6"); break;

224 case 4: cout << "right" << endl;

225 system("powerSwitch on 7"); break;

226

227 }

228 }

Gambar 5.13 Kode Penentuan Arah & Pemanggilan Program Penggerak

Servo

Tahap akhir dalam program pengolahan citra, adalah menampilkan

jendela-jendela yang menampilkan hasil dari pemrosesan yang dianggap perlu,

diantaranya citra asli yang ditangkap kamera dan citra hasil eroding. Dari

keduanya akan nampak hasil pendeteksian tangan, pendeteksian arah tunjuk dari

jari, titik tengah tangan, ujung jari, dan kontur tangan. Perintah untuk

menampilkan jendela-jendela tersebut, cukup dengan cvShowImage. Di akhir

program, perlu dilakukan penghapusan memori dari citra yang telah diproses agar

leluasa bagi citra yang baru, perintahnya dengan cvReleaseImage. Untuk

mematikan program, user perlu menekan tombol ESC pada keyboard, yang dalam

ASCII bernomor 27. Jelasnya dituliskan dalam Gambar 5.14.

Page 64: intelegent dental light  system

51

232 cvShowImage("init",in0);

233 //cvShowImage("contour",contour);

234 cvShowImage("dilate",dilate);

235 //cvShowImage( "hsv-black", hsv_black);

236

237 //fingers quantity stabilizer

238

239 if ( (cvWaitKey(10) & 255) == 27 ) //wait for esc key to stop

240 end = 1;

241

242 cvReleaseMemStorage( &storage );

243 cvReleaseImage(&in);

244 //cvClearSeq(CvSeq* hand_contour);

245 //cvReleaseMemStorage( &in );

246 cvReleaseImage(&smooth);

247 cvReleaseImage(&contour);

248 cvReleaseImage(&hsv_image);

249 cvReleaseImage(&hsv_black);

250 cvReleaseImage(&erode);

251 cvReleaseImage(&dilate);

252 cvReleaseImage(&thres2);

253

254 }

255

256

257 //cvDestroyWindow( "thres2" );

258

259 }

260

261 cvDestroyWindow( "in" );

262

263 cvReleaseCapture(&capture);

264 return 0;

265 }

Gambar 5.14 Kode Menampilkan Jendela Hasil Pengolahan Citra

5.4 Implementasi Mengatur Perintah Gerakan Lengan Robot

Untuk bisa menggunakan program PowerSwitch, maka perlu menginstal

program tersebut terlebih dahulu. Namun dalam penelitian ini, ada beberapa

modifikasi yang perlu dilakukan agar sesuai kebutuhan. Karena bersifat open-

source, proses modifikasi dapat dilakukan dengan cukup mudah. Sebelumnya, ia

memerlukan avr-gcc dan avr-libc ( pustaka bahasa C untuk microcontroller

AVR). Pada sub-direktori “commandline” terdapat file “make” yang siap

dieksekusi lewat terminal. Sebelum itu, perlu dilakukan pengeditan file

“powerSwitch.c” sebagai berikut :

Page 65: intelegent dental light  system

52

199 printf("port %d: %s%s\n", i, isOn ? "off" : "on", isInv ?

(isOn ? " / pulse on" : " / pulse off") : "");

212 if(strcmp(argv[1], "off") == 0){

nBytes = usb_control_msg(handle, USB_TYPE_VENDOR |

USB_RECIP_DEVICE | USB_ENDPOINT_IN, PSCMD_ON, duration,

port, (char *)buffer, sizeof(buffer), 5000);

}else if(strcmp(argv[1], "on") == 0)

Gambar 5.15 Sebagian Kode Program PowerSwitch

Kata “off” diganti menjadi “on” begitu juga sebaliknya. Karena servo controller

aktif jika diberi sinyal rendah/active low. Setelah itu, barulah program dapat di-

compile dengan terlebih dahulu membuka terminal, kemudian mengakses sub-

direktori “commandline” program PowerSwitch lalu mengetik perintah “make”.

Setelah jadi, program PowerSwitch di salin ke direktori filesystem Linux /usr/bin/

agar tidak perlu repot mengakses direktori, sehingga langsung bisa dipanggil

program pengolahan citranya.

5.4.1 Firmware PowerSwitch

Seperti program PowerSwitch yang berjalan di atas OS Linux, program

yang ditanam pada chip ATtiny2313 juga perlu di-compile dan caranya sama saja.

Hanya saja, dalam mengisi chip ATtiny2313, diperlukan devais tambahan, yakni

USBASP downloader. Dengan menggunakan program AVR-Dude file berekstensi

.hex dapat ditanam ke chip ATtiny2313.

5.5 Implementasi Program Kendali Servo

Nilai keluaran dari PowerSwitch digunakan sebagai nilai masukan pada

papan kendali servo. Untuk dapat bergerak, servo memerlukan sinyal perintah 8

bit / 0-255. Logika dari program kendali servo adalah, ketika ada input tegangan

rendah / 0 volt pada port B di Atmega 32 papan kendali servo, maka akan dikirim

sinyal ke servo yang nilainya terus bertambah/increment seiring lama waktu input

yang diberikan. Sinyal keluaran ada di port D Atmega 32. Program dibuat dengan

Bascom AVR. Kode program ada pada Gambar 5.16 berikut ini.

Page 66: intelegent dental light  system

53

5 $regfile = "m32def.dat"

6 $crystal = 12000000

7

8 Config Pinb.0 = Input

9 Config Pinb.1 = Input

10 Config Pinb.2 = Input

11 Config Pinb.3 = Input

12 Config Pinb.4 = Input

13 Config Pinb.5 = Input

14 Config Pinb.6 = Input

15 Config Pinb.7 = Input

16

17 'aktif low

18

19 Set Portb.0

20 Set Portb.1

21 Set Portb.2

22 Set Portb.3

23 Set Portb.4

24 Set Portb.5

25 Set Portb.6

26 Set Portb.7

27

28 Tombol1 Alias Pinb.0

29 Tombol2 Alias Pinb.1

30 Tombol3 Alias Pinb.2

31 Tombol4 Alias Pinb.3

32 Tombol5 Alias Pinb.4

33 Tombol6 Alias Pinb.5

34 Tombol7 Alias Pinb.6

35 Tombol8 Alias Pinb.7

36

37 'servo di port.d 0,1,2,3

38

39 Config Servos = 4 , Servo1 = Portd.0 , Servo2 = Portd.1 ,

Servo3 = Portd.2 , Servo4 = Portd.3 , Reload = 10

40 Config Portd.0 = Output

41 Config Portd.1 = Output

42 Config Portd.2 = Output

43 Config Portd.3 = Output

44

45 Dim Sudut1 As Byte

46 Dim Sudut2 As Byte

47 Dim Sudut3 As Byte

48 Dim Sudut4 As Byte

49

50 Sudut1 = 100

51 Sudut2 = 150

52 Sudut3 = 100

53 Sudut4 = 100

Gambar 5.16 Kode Kendali Servo Bagian Deklarasi Awal

Page 67: intelegent dental light  system

54

Nilai sudut putar mula-mula yang diberikan pada servo masing-masing

yaitu 100, 150, 100, dan 100. Nilai ini disesuaikan ada di nilai tengah (antara 0-

255) sebagai posisi default dari lengan dental light. Papan kendali servo aktif

dengan metode active-low. Dan karena memanfaatkan fitur interupsi ATmega32,

maka dituliskan juga dalam program Enable Interrupts. Setelah deklarasi awal dan

pemberian nilai default, selanjutnya dilakukan loop terus menerus untuk

mengecek apakah ada input dari PowerSwitch atau tidak. Jika ada maka akan ada

increment nilai sudut putaran servo dengan alamat tertentu. Program kendali

gerakan servo ini mengatur 4 buah servo pada lengan dental light yang dapat

melakukan 8 gerakan. Pada Gambar 5.17 untuk lebih jelasnya mengenai kode

looping kendali servo.

55 Enable Interrupts 56 Do 57 If Tombol1 = 0 Then Decr Sudut1 58 If Sudut1 <= 2 Then Sudut1 = 2

59

60 If Tombol2 = 0 Then Incr Sudut1

61 If Sudut1 >= 253 Then Sudut1 = 253 62

63 If Tombol3 = 0 Then Decr Sudut2 64 If Sudut2 <= 2 Then Sudut2 = 2

65

66 If Tombol4 = 0 Then Incr Sudut2

67 If Sudut2 >= 253 Then Sudut2 = 253

68

69 If Tombol5 = 0 Then Decr Sudut3

70 If Sudut3 <= 2 Then Sudut3 = 2 71

72 If Tombol6 = 0 Then Incr Sudut3 73 If Sudut3 >= 253 Then Sudut3 = 253

74

75 If Tombol7 = 0 Then Decr Sudut4

76 If Sudut4 <= 2 Then Sudut4 = 2 77

78 If Tombol8 = 0 Then Incr Sudut4 79 If Sudut4 >= 253 Then Sudut4 = 253

80 Servo(1) = Sudut1 81 Servo(2) = Sudut2

82 Servo(3) = Sudut3

83 Servo(4) = Sudut4 84 Waitms 30

85 Loop

Gambar 5.17 Kode Kendali Servo Bagian Looping

Page 68: intelegent dental light  system

55

5.6 Implementasi Perangkat Keras

Perangkat keras yang digunakan pada penelitian ini terdiri dari beberapa

bagian. PowerSwitch termasuk bagian yang menghubungkan perangkat lunak

dengan perangkat keras. Ia berfungsi menerima perintah untuk menghidupkan

atau mematikan channel yang dimilikinya. PowerSwitch yang belum dimodifikasi

normalnya mengeluarkan output 5 volt untuk keadaan on dan 0 volt/GND jika off.

Namun karena kebutuhan untuk mengatur papan kendali servo yang bertipe

active-low, maka keluaran dari PowerSwitch di-invert. PowerSwitch merupakan

device sederhana yang menggunakan inti chip AVR untuk bisa berkomunikasi via

USB tanpa chip tambahan seperti FTDI. Yang membuatnya memiliki kemampuan

demikian karena di dalam AVR ditanam program/firmware V-USB atau virtual

USB yang dikembangkan tim Object Development. Untuk skema dari

PowerSwitch, tidak berbeda dengan skema perangkat keras V-USB biasa, namun

PowerSwitch memiliki 8 keluaran yang dapat diatur untuk on atau off.

Gambar 5.18 Bentuk Papan PowerSwitch yang Sudah Jadi

Untuk mengatur gerakan servo, digunakan rangkaian sistem minimum

ATmega32. Kebutuhan rangkaian ini standar saja, catu daya 5 volt yang diatur

dengan bantuan regulator 7805, sumber clock eksternal berupa xtal 12 MHz,

tombol untuk keperluan reset, 5 pin untuk ISP, 8 pin sebagai input, dan 8 lagi

untuk output ke servo. Selain itu di dalam rangkaian terdapat VCC dan GND

Page 69: intelegent dental light  system

56

untuk motor servo. Port B diposisikan menjadi input sedangkan port D menjadi

output. Pada Gambar 5.19 diperlihatkan bentuk jadinya.

Gambar 5.19 Bentuk Servo Controller yang Sudah Jadi

Empat Keluaran dari PowerSwitch diperbanyak variasinya menjadi 8

dengan relay 12 volt. Relay mempunyai 2 channel berbeda, pengaturan pemilihan

channel-nya dilakukan dengan pedal sebagai sakelar. Pada pedal, diberi indikator

berupa LED untuk menandai apakah sedang posisi on atau off. Antara

PowerSwitch, servo controller, relay, dan pedal GND-nya disambungkan semua.

Webcam dipasang di bagian atas laptop, hal ini agar pengambilan citra

stabil posisinya. Di sisi lain, lengan dental light tersusun atas 4 servo dengan daya

angkat maksimum 3 kg. Servo pada lengan robot dibentuk dengan plastik yang

dibengkokkan sedemikian rupa hingga menyerupai sendi. Perbandingan ukuran

lengan dental light tidak seperti aslinya, hal ini karena keterbatasan daya angkat

servo. Karena semakin panjang ukuran penghubung antar servo, maka torsi motor

yang dibutuhkan semakin besar. Walau tidak sama dengan perbandingan ukuran

asli, namun tidak mengurangi esensi gerakan dari lengan dental light. Untuk

Page 70: intelegent dental light  system

57

merepresentasikan lampu dental light, dipasang juga LED yang menyerupai senter

kecil. Pada Gambar 5.20 diperlihatkan gambar keseluruhan perangkat keras.

Gambar 5.20 Perangkat Keras Keseluruhan yang Telah Dibuat

Page 71: intelegent dental light  system

58

BAB VI

PENGUJIAN DAN PEMBAHASAN

6.1 Langkah-langkah Pengujian

Langkah-langkah yang perlu dilakukan untuk melakukan pengujian

deteksi isyarat jari, guna mengontrol gerakan lengan dental light, adalah sebagai

berikut :

1. Seluruh perangkat keras dipasang dengan catu daya yang dibutuhkan, papan

PowerSwitch dan webcam juga dihubungkan dengan USB laptop.

2. File “test.txt” diedit seperti di Gambar 6.1 jika ingin melakukan perubahan

terhadap warna sarung tangan yang akan dideteksi. File ini harus ada karena

akan dibaca nilainya oleh program deteksi isyarat sebagai batasan untuk nilai

HSV maksimum dan minimum. Pada penelitian ini, warna sarung tangannya

berwarna kuning, sehingga nilainya H : 20-30 S: 100-255 V: 100-255.

Gambar 6.1 Tampilan File test.txt untuk Penentuan Parameter Warna

Page 72: intelegent dental light  system

59

3. Program deteksi isyarat dijalankan melalui terminal command pada Linux

Ubuntu seperti ditampilkan pada Gambar 6.2 dengan terlebih dahulu mengubah

status user menjadi root dengan cara mengetik perintah “sudo su” kemudian

password administrator dimasukkan. Program diaktifkan dengan mengetik

“./hand_point” yang artinya jalankan hand_point di folder yang sedang

aktif lalu tombol Enter pada keyboard ditekan.

Gambar 6.2 Tampilan Terminal Mengubah Status User menjadi Root

4. Akan muncul jendela bernama “init” seperti di Gambar 6.3 yang

menampilkan citra asli hasil capture dari webcam. Setelah itu, sarung tangan

dikenakan oleh pengguna kemudian tombol Enter ditekan lagi untuk memulai

proses pengolahan citra.

Gambar 6.3 Tampilan Citra Asli Hasil Capture Webcam

Page 73: intelegent dental light  system

60

5. Akan muncul jendela “erode” yaitu hasil deteksi dan pemilahan objek dengan

warna tertentu, dalam hal ini sarung tangan. Hasilnya tampak pada Gambar

6.4. Ketika ada isyarat jari yang menunjuk ke arah tertentu, maka lengan robot

dental light akan bergerak mengikuti arah tersebut sampai isyarat tidak ada lagi

atau jaraknya terlalu jauh sehingga tidak masuk hitungan. Selain itu, di

terminal command akan muncul teks tentang arah yang terdeteksi.

Gambar 6.4 Tampilan Jendela Hasil Erosi Citra

6. Jika sudah selesai pemakaiannya, program dapat dimatikan dengan tombol

ESC.

6.2 Pengujian Warna Sarung Tangan

Di pasaran, sarung tangan tersedia dalam beberapa warna. Pada intinya

warna apapun tidak bermasalah untuk digunakan dokter gigi, asalkan bukan

berwarna merah karena itu warna darah. Dan dari hasil pencarian di pasaran,

warna sarung tangan yang biasa dipakai oleh dokter yang didapat, antara lain

Page 74: intelegent dental light  system

61

warna krem dan warna cyan. Namun, untuk menambah varian pengujian, didapat

juga warna kuning dan warna oranye meskipun yang didapat dari pasaran bukan

sarung tangan untuk dokter. Pada Gambar 6.5 diperlihatkan warna yang tersedia

di pasaran, namun tidak semuanya diuji.

Gambar 6.5 Warna Sarung Tangan di Pasaran (usamedicalgloves.com 2012)

Berikut pada Tabel 6.1 merupakan data percobaan warna sarung tangan yang

berhasil didapat penulis.

Tabel 6.1 Hasil Pengujian Warna Sarung Tangan

No. Warna Jumlah

Percobaan

Warna Keterangan

H S V

1. Kuning 5 20-30 100-255 100-255 Sangat baik

2. Cyan/biru 5 40-90 30-100 120-255 Kurang

3. Krem/clear 5 2-50 2-50 100-255 Kurang

4. Oranye 5 0-10 100-255 100-250 Baik

Warna yang baik untuk digunakan adalah warna yang memiliki saturasi atau

tingkat kemurnian yang tinggi ke warna primernya, dalam hal ini warna kuning

sebagai yang terbaik. Warna cyan hasilnya kurang baik karena warnanya kurang

pekat, sehingga ketika terkena cahaya warnanya bertambah cerah mendekati

putih, sehingga dalam pemilahan warna, objek tangan yang didapat seringkali

Page 75: intelegent dental light  system

62

tidak utuh. Warna krem hasilnya kurang baik karena warnanya mendekati putih,

sedangkan sering kali latar belakang dari citranya kebanyakan berwarna putih,

sehingga menyulitkan pemilahan warna untuk mendeteksi objek tangan.

6.3 Pengujian Pengaruh Intensitas Cahaya Ruangan

Dalam pengolahan citra, intensitas cahaya sangat berpengaruh. Cahaya

mempengaruhi hasil citra yang di-capture oleh kamera. Karena digunakan di

kedokteran gigi, maka pengujian dilakukan di dalam ruangan, dengan asumsi

praktik dokter gigi selalu di dalam ruangan.

Tabel 6.2 Hasil Pengujian Pengaruh Intensitas Cahaya

No. Kondisi Jumlah

Percobaan Keterangan

1. Gelap 5 Tidak bekerja

2. Cahaya matahari 5 Bekerja baik

3. Cahaya lampu 5 Bekerja baik

Pengujian dengan cahaya matahari dilakukan pada pukul 08.00 s.d. 12.00 di mana

sinar matahari sudah dirasa cukup terang. Sedangkan pada pengujian di dalam

ruangan dengan cahaya lampu dilakukan dengan lampu putih 15 watt, cukup

untuk menerangi sebuah kamar 3x3 m2. Hasil pengujian pada aneka variasi

intensitas cahaya menunjukkan asalkan ada cahaya dengan intensitas yang baik,

dalam arti tidak terlalu gelap dan tidak terlalu terang, maka sistem dapat bekerja.

Pengaruh intensitas cahaya sangat terasa kepada hasil capture kamera, jika

cahaya baik, maka warna dari sarung tangan dapat dideteksi juga dengan baik.

Cahaya yang terlalu terang akan membuat warna sarung tangan yang ditangkap

kamera menjadi lebih putih, sehingga malah dianggap bukan warna sarung

tangan. Sama halnya pada kondisi gelap, warna sarung tangan cenderung lebih

gelap dan banyak bayangan hitam, sehingga juga oleh program tidak dianggap

sebagai warna sarung tangan.

Page 76: intelegent dental light  system

63

6.4 Pengujian Jarak Tangan

Pengujian terhadap jarak tangan terhadap webcam perlu dilakukan karena

perlu diketahui seberapa batas maksimum dan minimum jarak tangan dengan

webcam yang masih bisa dideteksi sebagai isyarat. Jarak diuji dengan mendeteksi

seberapa jauh dan seberapa dekat isyarat jari yang berada di depan webcam untuk

bisa diproses. Hasil selengkapnya disajikan dalam Tabel 6.3.

Tabel 6.3 Hasil Pengujian Jarak

No. Jarak (cm) Jumlah

Pengujian Keterangan

1. > 75 5 0 terdeteksi, 5 error

2. 65-75 5 4 terdeteksi, 1 error

3. 55-65 5 5 terdeteksi, 0 error

4. 45-55 5 4 terdeteksi, 1 error

5. 35-45 5 4 terdeteksi, 1 error

6. 25-35 5 4 terdeteksi, 1 error

7. 15-25 5 0 terdeteksi, 5 error

Dari hasil pengujian jarak, terlihat bahwa jarak yang dapat dideteksi oleh program

pengolahan citra adalah antara 25-75 cm. Jarak optimal yang didapat dari

pengujian menunjukkan pada rentang 55-65 cm. Hal tersebut dipengaruhi oleh

pengaturan listing program pengolahan citra. Di dalam kode program, terdapat

batasan nilai panjang antara titik tengah tangan dengan ujung jari, yaitu ”r”.

Maka, semakin jauh jarak tangan dari webcam, maka meskipun terdeteksi

objeknya, jarak r dianggap terlalu kecil sehingga tidak dipedulikan. Sebaliknya,

ketika jarak tangan terlalu dekat, maka kamera tidak dapat menangkap citra

tangan secara utuh, yang tertangkap hanyalah telapak tangan, tapi ujung jari tidak.

Hal itu juga menyebabkan sistem tidak merespon apa-apa. Nilai r ini dapat diatur

dalam program sesuai kebutuhan. Adanya batasan jarak antara ujung jari dengan

titik tengah tangan juga mencegah adanya salah deteksi, sistem hanya mau

memproses warna sesuai yang ditentukan, tapi juga melihat apakah ada ujung jari

yang menunjuk ke suatu arah atau tidak, jadi tidak asal ada suatu warna.

Pengaturan ini sangat baik mengingat variasi warna pakaian dari pasien dokter

gigi sangat banyak.

Page 77: intelegent dental light  system

64

Adanya error dalam pendeteksian selain disebabkan jarak yang terlamapu

dekat atau jauh, disebabkan juga kesalahan pembacaan akibat gerakan mendadak

oleh tangan (yang sebelumnya di luar jangkauan capture kamera) masuk ke

daerah yang terjangkau kamera. Maka, pemrosesan dilakukan terlalu dini, padahal

tangan belum memberikan isyarat.

6.5 Pengujian Waktu Respon Gerakan

Pengujian terhadap waktu respon dimaksudkan untuk menguji seberapa

jeda waktu mulai dari deteksi isyarat sampai lengan dental light bergerak. Pada

Tabel 6.4 ditampilkan hasil dari pengujian respon menggunakan sarung tangan

kuning dan pada jarak 55-65cm.

Tabel 6.4 Hasil Pengujian Waktu Respon

No. Arah Jumlah

Pengujian Delay (sekon)

Waktu Rata-

rata

1. ↑ 5 kali 0,6 ; 1,0 ; 0,5 ; 0,4 ; 0,6 0,6 sekon

2. ↓ 5 kali 0,7 ; 0,5 ; 0,8 ; 0,3 ; 0,8 0,6 sekon

3. → 5 kali 0,4 ; 0,3 ; 0,4 ; 0,4 ; 0,5 0,4 sekon

4 ← 5 kali 0,4 ; 0,5 ; 0,6 ; 0,4 ; 0,5 0,5 sekon

Dibutuhkan 2 orang untuk melakukan pengujian ini, karena waktu yang perlu

diukur sangat cepat. Dilakukan pengujian sebanyak 5 kali untuk memperbaik

kevalidan data. Dari hasil uji, didapatkan bahwa jeda waktu respon gerak dari

lengan dental light terhitung singkat, dibawah 1 sekon. Hal ini nampak pada

semua arah tunjuk yang dilakukan tangan. Walaupun program pengolahan citra,

program PowerSwitch, dan program pada servo controller terpisah, memiliki

bahasa pemrograman yang berbeda dan meng-handle bagian masing-masing,

terbukti dari pengujian ini, program-program tersebut dapat berkomunikasi

dengan baik. Adanya jeda waktu ini disebabkan oleh proses pengolahan citra yang

memproses frame tiap waktu dan juga kecepatan fps kamera. Adanya proses

pengolahan dan deteksi memerlukan waktu untuk sampai pada kesimpulan

gerakan. Namun dengan hasil yang baik ini, dapat dikatakan proses pengolahan

Page 78: intelegent dental light  system

65

citra dengan bahasa pemrograman C++ dan pustaka pemrograman citra OpenCV

memiliki proses yang cepat dan hasil memuaskan.

6.6 Pengujian Ketepatan Gerakan

Ketepatan dalam gerakan sangatlah penting, karena memang itulah hasil

yang diharapkan dan paling esensial dalam penelitian ini. Pengujian ini

dilakukan menggunakan sarung tangan kuning dan pada jarak 55-65cm. Pengujian

dimaksudkan untuk mendapatkan data prosentase keberhasilan sistem kendali ini.

Tabel 6.5 Hasil Pengujian Ketepatan Gerakan

No. Arah Jumlah

Jari

Jumlah

Pengujian Keterangan

1. ↑ 1 5 5x tepat

2. ↓ 1 5 5x tepat

3. → 1 5 5x tepat

4. ← 1 5 5x tepat

5. ↑ 2 5 tidak stabil

6. ↓ 2 5 tidak stabil

7. → 2 5 tidak stabil

8. ← 2 5 tidak stabil

9. ↑ 3 5 tidak ada respon

10. ↓ 3 5 tidak ada respon

11. → 3 5 tidak ada respon

12. ← 3 5 tidak ada respon

13. ↑ 4 5 tidak ada respon

14. ↓ 4 5 tidak ada respon

15. → 4 5 tidak ada respon

16. ← 5 5 tidak ada respon

Proses pengujian dilakukan dengan cara :

1. Menggenggamkan tangan yang telah dipasang sarung tangan berwarna di depan

kamera.

2. Membuat isyarat dengan menunjuk ke satu arah.

3. Mengamati arah gerakan yang dilakukan lengan robot.

Pengujian dilakukan selama 1 jam, dengan asumsi praktik dokter gigi rata-

rata dilakukan dengan durasi seperti itu. Dari hasil pengujian ini nampak bahwa

ketepatan dari gerakan lengan robot sudah baik sekali. Pengujian ini memberi

Page 79: intelegent dental light  system

66

indikasi bahwa algoritma yang diterapkan untuk mengenali objek sampai dengan

mendeteksi arah tunjuk dari isyarat jari sudah berjalan dengan baik. Penghitungan

sudut cosinus dan metode lain dalam program membuahkan hasil, semakin

kompleks dan unik suatu cara pendeteksian, maka hasilnya juga akan semakin

tepat, tidak hanya berdasarkan warna dari sarung tangan, tapi juga pengaruh dari

arah tunjuk dan jarak antara tangan dengan kamera.

Selain dengan kondisi normal, dilakukan juga pengujian dengan kondisi

lain, misalkan ujung jari ada lebih dari 1. Hasil dari percobaan tersebut

didapatkan, maksimal ujung jari yang bisa untuk menggerakkan lengan adalah 2

ujung jari terdeteksi, itupun hasilnya kurang stabil. Jika jari yang terdeteksi lebih

dari 2, maka sistem tidak mengenalinya sebagai isyarat menggerakkan lengan

robot, hal ini karena sudut dari vektor-vektor di ujung jari nilainya terlalu besar.

Page 80: intelegent dental light  system

67

BAB VII

PENUTUP

7.1 Kesimpulan

Dari penelitian yang telah dilakukan, dapat diambil kesimpulan sebagai berikut:

1. Dengan purwarupa sistem kendali penelitian ini, dokter gigi tidak perlu

menyentuh langsung dental light dalam mengontrol gerakannya.

2. Metode yang diterapkan untuk mengenali objek dengan memilah warna dengan

latar belakangnya sudah berjalan dengan baik.

3. Semakin kompleks dan unik suatu cara pendeteksian, maka hasilnya juga akan

semakin tepat, tidak hanya berdasarkan warna dari sarung tangan, tapi juga

pengaruh dari arah tunjuk dan jarak antara tangan dengan kamera.

4. Metode erosi dan dilasi dapat digunakan untuk membuang derau berupa titik-

titik (salt and pepper noise).

5. Dari 4 warna sarung tangan yang diuji, warna kuning adalah warna terbaik.

6. Intensitas cahaya mempengaruhi baik buruknya kualitas citra yang dapat

ditangkap kamera. Kualitas citra yang baik didapat dari intensitas cahaya yang

tidak terlalu rendah atau terlalu tinggi.

7. Jarak tangan terhadap webcam yang terbaik adalah 55-65 cm.

8. Waktu respon dari lengan robot untuk bergerak setelah ada isyarat jari

terhitung baik, yaitu rata-rata antara 0,4 - 0,6 sekon.

9. Ketepatan dari gerakan lengan robot sudah baik sekali dan hasilnya maksimal

jika jari yang terdeteksi hanya 1.

Page 81: intelegent dental light  system

68

7.2 Saran

Beberapa saran dari penulis untuk pengembangan kendali lengan dental

light dengan isyarat jari ini antara lain :

1. Gerakan dari lengan robot dibuat agar bisa bergerak lebih dari satu motor

servo pada waktu yang sama. Karena sementara ini hanya bisa satu motor

servo tiap satu waktu.

2. Algoritma pengolahan citra dapat dibuat lebih efisien lagi dan diberi

pengalokasian memori yang dipakai, hal ini agar pengolahan citra dapat

dilakukan dengan cepat namun tidak memakai resource banyak dari

komputer/laptop.

3. Metode pendeteksian isyarat dibuat agar dapat bekerja dengan baik dengan

pengaruh intensitas cahaya beragam dan warna latar belakang yang sama

dengan warna objek yang ingin dikenali.

4. Sistem kendali dibuat dengan RTOS (real time operating system) agar

penggunaan chip-nya seifisien dan sesedikit mungkin.

5. Menggunakan komponen regulator tegangan yang relatif tahan panas agar

perangkat keras dapat bertahan bekerja dalam jangka waktu yang lama.

Page 82: intelegent dental light  system

69

DAFTAR PUSTAKA

A-dec Inc., 2011, InstructIons for use A-dec 371 and 372 Dental Light, http://id.a-

dec.com/en/~/media/Adec/Document%20Library/Product%20Information/

Support%20Information/Instructions%20for%20Use/86022000.pdf,

diakses pada 5 Maret 2012.

Agrawal, K., 2012, Final Project Snap,

http://golancourses.net/2012spring/05/10/kaushal-agrawal-final-project-

snap/, diakses pada 10 Juni 2012

Bradski, G. dan Kaehler, A., 2008, Learning OpenCV, O‟Reilly Media, Inc,

Gravenstein Highway North.

Davies, E.R., 2005, Machine Vision Theory Algorithms Practicalities, Morgan

Kaufmann, London.

Hamed, B., 2011. A Mimicking Human Arm with 5 DOF Controlled by LabVIEW.

IACSIT IJET. 3(1).

Ho, L., 2011, Finger Detection and Gesture Recognition,

http://code.google.com/p/finger-detection-and-gesture-recognition/,

diakses pada 4 Maret 2012.

CVonline, 1999, Lecture 12 Colour Image Processing,

http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/OWENS/L

ECT14/, diakses pada 23 Juli 2012.

Alain, 2011, ASCII TABLE -1,

http://www.cdrummond.qc.ca/cegep/informat/Professeurs/Alain/files/ascii.

htm, diakses pada 6 Maret 2012.

Sequin, C.H., 2011, Color Spaces,

http://www.cs.berkeley.edu/~sequin/CS184/TOPICS/ColorSpaces/Color_0

.html, diakses pada 23 Juli 2012.

Hu, Y. H., 2002a. Lecture 2. Introduction to Digital Image Processing.

Hu, Y. H., 2002b. Image Enhancement in Frequency Domain.

Huaman, A., 2011, Finding contours in your image,

http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/find_cont

ours/find_contours.html#find-contours, diakses pada 6 Maret 2011.

Iswanto, 2011, Belajar Mikrokontroler AT89S51 dengan bahasa C, Penerbit

Andi, Yogyakarta.

Jogjarobotika, 2011, Servo Hitec-311,http://jogjarobotika.com/toko/Produk/16-

hitec-hs-311-standard-servo-motor-nylon-gear.html, diakses pada 6 Maret

2012.

Page 83: intelegent dental light  system

70

Kabdental.com , 2011, Operatory Light, http://kabdental.com/small-dental-

equipment/lighting-reflectors-shields/beaverstate.htm, diakses pada 6

Maret 2012.

Learn2succeed.com Inc, 2008, Streaming Video and Audio for Business: New

Ways to Communicate with Your Customers, Employees and Shareholders

Over the Internet, Productive Publications, Toronto.

MCSelectronics, 2012. Bascom-AVR,

http://www.mcselec.com/index.php?option=com_content&task=view&id=

14&Itemid=41, diakses pada 6 Maret 2012.

Object Development, 2008, PowerSwitch,

www.obdev.at/products/vusb/powerswitch.html, diakses pada 6 Maret

2012.

Oliviera, V. A., 2009, Skin Detection using HSV Color Space.

Tanjung, M. R. dan Sulistijono, I. A., 2010, Kendali Visual Dual Arm Robot

Menggunakan Pendekatan Center Of Gravity. EEPIS Final Project.

usamedicalgloves.com, 2012, Gloves By Color,

http://www.usamedicalgloves.com/colored-medical-gloves, diakses pada

23 Juli 2012.

Willowgarage, 2012, OpenCV, http://opencv.willowgarage.com/wiki/, diakses

pada 6 Maret 2012.

Page 84: intelegent dental light  system

71

LAMPIRAN

Kode Program Pengolahan Citra yang Utuh

1 #include <iostream>

2 #include <cstdlib>

3 #include <stdio.h>

4 #include <stdlib.h>

5 #include <math.h>

6 #include <fstream>

7

8 #include "cv.h"

9 #include "cvaux.h"

10 #include "cxcore.h"

11 #include "highgui.h"

12 #include "cxmisc.h"

13 #include "tools.h"

14 //#include "parameter.h"

15

16 using namespace std;

17

18 int num1,num2,num3,num4,num5,num6; // variable for HSV

19 void parameter_warna()

20 {

21 ifstream indata; // indata is like cin

22 indata.open("test.txt"); // opens the file

23 if(!indata)

24 { // file couldn't be opened

25 cerr << "Error: file could not be opened" <<

endl;

26 exit(1);

27 }

28

29 indata >>num1>>num2>>num3>>num4>>num5>>num6;

//masukkan nilai ke variabel

30 indata.close();

31 }

32 int g_nFingers;

33 int g_direct = 0; // =0 ? //so ngon tay trong lan detect truoc

34 int cDirect = 0;

35 int main(int argc, char ** argv)

36

37 {

38 //int num1,num2,num3,num4,num5,num6;

39 int end = 0; int key = 0;

40 int minus2,minus1,present,final = 0;

41 CvCapture* capture = cvCaptureFromCAM(1);

42

43 if ( !capture )

Page 85: intelegent dental light  system

72

44 {

45 fprintf( stderr, "ERROR 1: CAPTURE is NULL \n" );

46 getchar();

47 return -1;

48 }

49

50 while(!end)

51 {

52 cvGrabFrame (capture);

53 IplImage* in0 = cvRetrieveFrame (capture);

54

55 if ( !in0 )

56 {

57 fprintf( stderr, "ERROR 2: FRAME is null...\n" );

//kamera tak dapat meng-capture citra

58 getchar();

59 break;

60 }

61

62 cvNamedWindow("init",CV_WINDOW_AUTOSIZE );

63

64

65 /*==================init phase=====================*/

66 if (key == 0)

67 {

68 IplImage* init = cvCloneImage(in0);

69 //cvNamedWindow("init",CV_WINDOW_AUTOSIZE );

70 cvShowImage("init",init);

71 if ( (cvWaitKey(10) & 255) == 10 ) // press enter to start

72 {

73 key = 1;

74 //cvDestroyWindow( "init" );

75 }

76 }

77 /*==================recognition phase=====================*/

78 if (key == 1)

79 {

80

81 int y_finger = 0;

82 //int cDirect = 0 ;// = 0;

83 CvPoint fVector,hand_center;

84 CvPoint horizontal=cvPoint(0,10);

85

86 int nFingers = 0;

87

88 //====================PROSES=========================================

89 parameter_warna();

90

91 CvScalar hsv_min = cvScalar(num1,num2,num3); //H,S,V

92 CvScalar hsv_max = cvScalar(num4,num5,num6);

93

94 //convert to hsv image

95 IplImage* in = cvCreateImage( cvSize( 640, 480 ), 8, 3 );

96 IplImage* hsv_image=cvCreateImage( cvSize(640,480),8, 3);

Page 86: intelegent dental light  system

73

97

98 IplImage* hsv_black=cvCreateImage(cvSize(640,480),8,1);

99

100

101 //IplImage* equal = doEqualHist(in0);

102

103 cvCvtColor(in0, hsv_image, CV_BGR2HSV);

104 cvInRangeS(hsv_image, hsv_min,hsv_max, hsv_black); //

deteksi warna kuning

105 IplImage* thres2 = doThresBinary(hsv_black,100);

106 IplImage* erode = doErode (thres2, 2 );

107 IplImage* dilate = doDilate (erode, 1 );

108 IplImage* smooth = doSmoothGaussian(dilate, 41,41);

//lebar, tinggi kernel Gaussian (harus angka ganjil)

109 //IplImage* smooth = doSmoothGaussian(invert, 41,41);

110

111 IplImage* contour = cvCloneImage(smooth);

112 CvMemStorage* storage = cvCreateMemStorage(0);

113 CvSeq* hand_contour = 0;

114

115 //fungsi di bawah cuma buat binary

116 cvFindContours

(contour,storage,&hand_contour,sizeof(CvContour),CV_R

ETR_TREE, CV_CHAIN_APPROX_NONE,cvPoint(0,0));

117

118 if (hand_contour)

119 {

120 //nyari titik tengah tangan

121 CvRect hand_box= cvBoundingRect

(hand_contour,0);

122 hand_center.x = cvRound(hand_box.x +

hand_box.width*0.5);

123 hand_center.y = cvRound(hand_box.y +

hand_box.height*0.5);

124

125 int i=0;

126 int r = 75; //jarak antara tengah tangan dan ujung jari

127 int step = 10; //n step kontur

128 for( i = 0; i < (hand_contour ? hand_contour-

>total : 0); i+= step )

129 {

130 CvPoint* r0 = (CvPoint*)cvGetSeqElem(

hand_contour, i );

131 CvPoint n0 = cvPoint (r0->x,r0->y);

132 double cos0 = curve (hand_contour, i, r);

//calculate the COS at point P

133 if (cos0 > 4)

134 {

135 final = g_nFingers;

136 break;

137 }

138 if (cos0 > 0.5)

139 {

140 double cos1 = curve (hand_contour, i -

Page 87: intelegent dental light  system

74

step, r); // calculate COS at point P1

141 double cos2 = curve (hand_contour, i +

step, r); // calculate COS at point P2

142 double max1 = max_3 (cos0, cos1, cos2);

// Find the Max of 3 Cos value

143 bool equal = IsEqual (max1 , cos0);

144 signed int z = zCrossProduct (hand_contour,

i, r); // Calculate cross product of 2 vector PP1 and PP2

145

146 if (equal == 1 && z<0)

147 {

148 nFingers += 1;

149 CvPoint* r0 =

(CvPoint*)cvGetSeqElem(

hand_contour, i );

150 CvPoint n0 = cvPoint (r0->x,r0->y);

151 y_finger = r0->x;

152 fVector = cvPoint(n0.x -

hand_center.x, n0.y -

hand_center.y);

153 cvCircle( in0,n0 , 8,

CV_RGB(255,0,0), 3, 8, 0 ); /ujung jari,

warna merah

154 cvCircle( in0,hand_center , 8,

CV_RGB(0,255,0), 3, 8, 0 ); //tengah

jari, warna kuning

155 cvLine (in0, n0,

hand_center,cvScalarAll(255), 1,8 );

156 cvDrawContours( in0, hand_contour,

CV_RGB(255,0,0), CV_RGB(0,255,0), 1,

2, 8, cvPoint(0,0));

157 }

158 }

159

160 minus2=minus1;

161 minus1=present;

162 present=nFingers;

163

164 if (minus2 == nFingers)

165 final = nFingers;

166 else

167 final = minus2;

168

169

170 }

171

172

173

174 }

175

176

177

178 if (final == 1)

179 {

Page 88: intelegent dental light  system

75

180 //if (final == 0)

181 //cout << "stop" << endl;

182

183 double cos_angle = cos_vector(fVector,

horizontal);

184 if (cos_angle < -0.7)

185 {

186 cDirect = 1; //up

187 }

188 else if (cos_angle > 0.7)

189 {

190 cDirect = 2; //down

191 }

192 else

193 {

194 if (y_finger > hand_center.x)

195 {

196 cDirect = 3; //right

197 }

198 else

199 {

200 cDirect = 4; //left

201 }

202 }

203 }

204 if (final != 1) // tidak ada arah yg terdeteksi, stop

205 cDirect = 0;

206

207 if (g_direct != cDirect )

208 {

209 g_direct = cDirect;

210 //cek g_nFingers

211 //cout << "g_nFingers : " << g_nFingers << "\n";

212 cout << "kondisi : " << g_direct << endl;

213

214 switch (g_direct)

215 {

216 case 0: cout << "stop" << endl;

217 system("for i in 0 1 2 3 4 5 6 7; do

powerSwitch off $i; done"); break;

218 case 1: cout << "up" << endl;

219 system("powerSwitch on 5"); break;

220 case 2: cout << "down" << endl;

221 system("powerSwitch on 4"); break;

222 case 3: cout << "left" << endl;

223 system("powerSwitch on 6"); break;

224 case 4: cout << "right" << endl;

225 system("powerSwitch on 7"); break;

226

227 }

228 }

229

230

231

Page 89: intelegent dental light  system

76

232 cvShowImage("init",in0);

233 //cvShowImage("contour",contour);

234 cvShowImage("dilate",dilate);

235 //cvShowImage( "hsv-black", hsv_black);

236

237 //fingers quantity stabilizer

238

239 if ( (cvWaitKey(10) & 255) == 27 ) //wait for esc key to stop

240 end = 1;

241

242 cvReleaseMemStorage( &storage );

243 cvReleaseImage(&in);

244 //cvClearSeq(CvSeq* hand_contour);

245 //cvReleaseMemStorage( &in );

246 cvReleaseImage(&smooth);

247 cvReleaseImage(&contour);

248 cvReleaseImage(&hsv_image);

249 cvReleaseImage(&hsv_black);

250 cvReleaseImage(&erode);

251 cvReleaseImage(&dilate);

252 cvReleaseImage(&thres2);

253

254 }

255

256

257 //cvDestroyWindow( "thres2" );

258

259 }

260

261 cvDestroyWindow( "in" );

262

263 cvReleaseCapture(&capture);

264 return 0;

265 }

266

267 //Alhamdulillah