i
PERANCANGAN PENDETEKSI KEDIPAN MATA UNTUK
FUNGSI KLIK PADA MOUSE MELALUI KAMERA WEB
Daniel / 0722020
Email : b_aso_1989@hotmail.com
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha Jalan Prof. drg. Suria Sumantri, MPH 65, Bandung 40164, Indonesia
ABSTRAK
Dalam penggunaan Personal Computer (PC) dibutuhkan beberapa
perangkat, salah satunya adalah mouse. Mouse merupakan perangkat penting bagi pemakai untuk memberikan perintah-perintah pada PC. Akan tetapi, bagi
pemakai yang mempunyai kekurangan fisik (cacat) sehingga pemakai tidak dapat menggerakkan atau mengendalikan anggota tubuhnya kecuali mata, maka pemakai tersebut tidak dapat menggerakkan mouse. Oleh karena itu dibutuhkan suatu aplikasi yang dapat membantu pemakai tersebut untuk mengendalikan
mouse.
ii
Dari hasil uji coba untuk pemakai dengan bentuk mata yang berbeda-beda, program aplikasi dapat berfungsi dengan baik dengan tingkat keberhasilan rata-rata 80%. Jarak optimal mata pemakai ke kamera web adalah 30-35cm.
iii
DESIGN OF EYE BLINK DETECTION FOR MOUSE CLICK
FUNCTION THROUGH WEBCAM
Daniel / 0722020
Email : b_aso_1989@hotmail.com
Electrical Engineering Departement, Faculty of Engineering, Maranatha Christian University
Prof. drg. Suria Sumantri, MPH 65 Street, Bandung 40164, Indonesia
ABSTRACT
In using Personal Computer (PC) need some set of device and one of them is mouse. Mouse is an important device for the user to give commands to the PC. However, for users who have a disability such as in which the users cannot move or control parts of the body except the eyes, so they cannot control the mouse. It is needed an application to help those users to control the mouse.
iv
From the test results to the user with a different eye, application programs can function well with an average success rate of 80%. Optimal distance between the eyes and webcam are 30-35cm.
vii
DAFTAR ISI
ABSTRAK ... i
ABSTRACT ... iii
KATA PENGANTAR ... v
DAFTAR ISI ... vii
DAFTAR TABEL ... x
DAFTAR GAMBAR ... xi
BABI PENDAHULUAN 1.1 Latar Belakang Masalah ... 1
1.2 Perumusan Masalah ... 2
1.3 Tujuan ... 2
1.4 Pembatasan Masalah... 2
1.5 Metodologi ... 2
1.6 Sistematika Penulisan ... 3
BABII LANDASANTEORI 2.1 Pengertian Citra ... 4
2.2 Dasar Warna ... 6
2.3 Konversi Citra Warna Ke Citra Biner ... 7
2.4 Kamera Web ... 9
2.5 Application Program Interface ... 10
2.6 Dynamic Link Library ... 11
2.6.1 Avicap32.dl ... 12
2.6.2 Kernel32.dll ... 13
2.6.3 User32.dll ... 13
2.6.3.1 Fungsi SendMessage... 14
viii
2.7 Class Module FastDrawing ... 16
2.7.1 Fungsi untuk mengambil data RGB ... 17
2.7.2 Fungsi untuk menyimpan data RGB pada suatu piksel ... 17
2.8 Class Module CMouseEvent ... 18
2.9 Visual Basic 6.0 Untuk Representasi Citra Digital ... 19
2.9.1 If…Then…Else Statement ... 20
2.9.1 For…Next Statement... 21
BABIII PERANCANGAN DAN REALISASI 3.1 Perancangan. ... 23
3.2 Setting Mata ... 26
3.3 Perbandingan Jumlah Piksel Hitam Citra ... 27
3.4 Form yang aplikasi dirancang ... 29
3.5 Klik Mouse ... 31
BABIV DATA PENGAMATAN DAN ANALISIS DATA 4.1 Setting Mata Untuk Referensi Terhadap Bentuk Mata Pemakai Yang Berbeda-beda. ... 32
4.1.1 Setting Mata Untuk Referensi Terhadap Pemakai Berkacamata dan Bermata Sedang. ... 34
4.1.2 Setting Mata Untuk Referensi Terhadap Pemakai Berkacamata dan Bermata Sipit. ... 34
4.1.3 Setting Mata Untuk Referensi Terhadap Pemakai Bermata Besar. ... 35
4.1.4 Setting Mata Untuk Referensi Terhadap Pemakai Bermata Sedang. ... 36
4.1.5 Setting Mata Untuk Referensi Terhadap Pemakai Bermata Sipit. ... 36
ix
4.3 Pengujian Jarak Mata Ke Kamera Web. ... 39 4.4 Pengujian Tingkat Keberhasilan Aplikasi ... 41 4.5 Analisa Data. ... 45
BABV KESIMPULAN DAN SARAN
5.1 Kesimpulan. ... 46 5.2 Saran. ... 46
DAFTAR PUSTAKA. ... 47
x
DAFTAR TABEL
Tabel 2.1 Tabel Fungsi mouse_event ... 15
Tabel 3.1 Keterangan-Keterangan Objek GUI Dalam Aplikasi ... 30
Tabel 4.1 Hubungan Nilai Variabel x Dengan Sentivitas ... 37
Tabel 4.2 Hubungan Nilai Variabel y Dengan Sensitivitas ... 38
Tabel 4.3 Pengaruh Jarak Mata Ke Kamera Web Terhadap Tingkat Keberhasilan ... 39
Tabel 4.4 Kode Mata dan Tipe Mata ... 41
Tabel 4.5 Hasil Pengujian dan Tingkat Keberhasilan Aplikasi (Normal / Default Settings) ... 42
xi
DAFTAR GAMBAR
Gambar 2.1 Citra Digital ... 5
Gambar 2.2 Ruang Warna RGB ... 7
Gambar 2.3 Citra Biner ... 8
Gambar 2.4 Kamera Web Logitech QuickCam Pro For Notebook... 9
Gambar 2.5 IDE Visual Basic ... 19
Gambar 3.1 Diagram Blok ... 22
Gambar 3.2 Diagram Alir Keseluruhan ... 23
Gambar 3.3 Kotak Panduan Pada Aplikasi ... 24
Gambar 3.4 Empat Citra Biner Yang Ditangkap Secara Real Time ... 24
Gambar 3.5 Aplikasi Kamera Web... 25
Gambar 3.6 Diagram Alir Subrutin Setting Mata ... 26
Gambar 3.7 Diagram Alir Subrutin Perbandingan Jumlah Piksel Hitam Citra ... 28
Gambar 3.8 Form Aplikasi Yang Dirancang ... 29
Gambar 4.1 Bentuk-Bentuk Mata Pemakai Pada Uji Coba ... 33
Gambar 4.2 Pemakai Berkacamata dan Bermata Sedang ... 34
Gambar 4.3 Pemakai Berkacamata dan Bermata Sipit ... 35
Gambar 4.4 Pemakai Bermata Besar ... 35
Gambar 4.5 Pemakai Bermata Sedang ... 36
Gambar 4.6 Pemakai Bermata Sipit ... 37
Gambar 4.7 Penggunaan aplikasi pada saat jarak 30cm ... 40
Gambar 4.8 Penggunaan aplikasi pada saat jarak 35cm ... 40
Gambar 4.9 Kamera Web Terkena Banyak Cahaya Dan Pengaturan Aplikasi Kamera Web Normal (Default Settings) ... 44
A-1 1. Listing Program Utama
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private mCapHwnd As Long
Private Const CONNECT As Long = 1034 Private Const DISCONNECT As Long = 1035 Private Const GET_FRAME As Long = 1084 Private Const COPY As Long = 1054
Dim continue As Boolean
Private m_Mouse As CMouseEvent
Dim i As Integer, j As Integer
Dim r As Integer, G As Integer, B As Integer, L As Long Dim X As Long, Y As Long
Dim hitam9 As Integer, hitam10 As Integer
Dim hitam1 As Integer, hitam2 As Integer, hitam3 As Integer, hitam4 As Integer, hitam5 As Integer, hitam6 As Integer, hitam7 As Integer, hitam8 As Integer Dim totalhitam As Long
Option Explicit
Dim fDraw As New FastDrawing Dim ImageData() As Byte
Dim Rb As Long, Gb As Long, Bb As Long Dim lebarFot As Long, tinggiFot As Long Dim QuickX As Long
Dim z As Integer
Sub STARTCAM() 'Memulai kamera untuk mengambil gambar
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hWnd, 0)
DoEvents
A-2
Sub STOPCAM() ' untuk memberhentikan kamera DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0 End Sub
TOMBOL STARTCAM
Private Sub cmdstart_Click() ' STARTCAM STARTCAM
Timer2.Enabled = False End Sub
TOMBOL CAPTURE
Private Sub cmdcapture_Click() ' CAPTURE Timer2.Enabled = True
A-3
TOMBOL TUTUP MATA PADA SETTING MATA Private Sub Command2_Click()
Set m_Mouse = New CMouseEvent 'z = 0
Text1.BackColor = &H8000000F End Sub
TIMER 1
Private Sub Timer1_Timer()
SendMessage mCapHwnd, GET_FRAME, 0, 0 SendMessage mCapHwnd, COPY, 0, 0 Picture1(0).Picture = Clipboard.GetData Image1(0).Picture = Picture1(0).Picture End Sub
TIMER 2
Private Sub Timer2_Timer()
A-4 For i = 1 To 4 Step 1
Dim ImageData() As Byte
Dim Rb As Long, Gb As Long, Bb As Long Dim lebarFot As Long, tinggiFot As Long Dim QuickX As Long
'Picture diambil nilai RGB nya
lebarFot = fDraw.GetImageWidth(Picture1(0))
'picture menjadi hitam putih (biner)
fDraw.SetImageData2D Picture1(0), lebarFot, tinggiFot, ImageData(), False Image1(0).Picture = Picture1(0).Picture
Picture1(i).Picture = Picture1(0).Picture Picture1(i).Height = shp1(0).Height Picture1(i).Width = shp1(0).Width Picture1(i).Refresh
Picture1(i).PaintPicture Picture1(0).Image, 0, 0, shp1(0).Width, shp1(0).Height, shp1(0).Left, shp1(0).Top, shp1(0).Width, shp1(0).Height, vbSrcCopy
lebarFot = fDraw.GetImageWidth(Picture1(i))
A-6
A-7
2. Listing Program Class Module CMouseEvent
Option Explicit
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dX As Long, ByVal dY As Long, ByVal dwData As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' Flags used with mouse_event
Private Const MOUSEEVENTF_ABSOLUTE = &H8000& ' absolute move Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down Private Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up Private Const MOUSEEVENTF_MOVE = &H1 ' mouse move
Private Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down Private Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up Private Const MOUSEEVENTF_WHEEL = &H800 ' wheel button rolled
' A few module level variables... Private m_ClickDelay As Long
' *********************************************************** ' Initialize
' *********************************************************** Private Sub Class_Initialize()
' Default duration for mousedown m_ClickDelay = 250 'milliseconds End Sub
' *********************************************************** ' Public Properties
' *********************************************************** Public Property Let ClickDelay(ByVal NewVal As Long)
A-8 End Property
Public Property Get ClickDelay() As Long ClickDelay = m_ClickDelay
End Property Public Sub Click()
' Click the mouse, with delay to simulate human timing. Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) If m_ClickDelay Then
DoEvents ' allow down position to paint Call Sleep(m_ClickDelay)
End If
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) End Sub
3. Listing Program ClassModule FastDrawing Option Explicit
'Call to transfer an object's properties into a custom variable
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, ByRef lpObject As Any) As Long
A-9
'Extended header for 8-bit images Private Type BITMAPINFO
bmHeader As BITMAPINFOHEADER bmColors(0 To 255) As RGBQUAD End Type
'Used to ensure quality stretching of color images
Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Long, ByVal nStretchMode As Long) As Long
'DIB section interfaces
Private Declare Function GetDIBits Lib "gdi32" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long Private Declare Function StretchDIBits Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal dX As Long, ByVal dY As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal SrcWidth As Long, ByVal SrcHeight As Long, lpBits As Any, lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long) As Long
'Get the image width (via API - always accurate, unlike PictureBox.ScaleWidth)
Public Function GetImageWidth(SrcPictureBox As PictureBox) As Long Dim bm As Bitmap
GetObject SrcPictureBox.Image, Len(bm), bm GetImageWidth = bm.bmWidth
End Function
'Get the image height (via API - always accurate)
Public Function GetImageHeight(SrcPictureBox As PictureBox) As Long Dim bm As Bitmap
GetObject SrcPictureBox.Image, Len(bm), bm GetImageHeight = bm.bmHeight
End Function
'Get the stream length of an image (via API - always accurate)
A-10 GetObject SrcPictureBox.Image, Len(bm), bm
GetImageStreamLength = (bm.bmWidth * (bm.bmHeight + 1)) * 3 End Function
'Get an image's pixel information into an array dimensioned (x * 3 + bgr, y), with the option to get it in its true orientation
Public Sub GetImageData2D(SrcPictureBox As PictureBox, ImageData() As Byte, Optional ByVal CorrectOrientation As Boolean = False)
Dim bm As Bitmap
'Get the picture box information
GetObject SrcPictureBox.Image, Len(bm), bm 'Build a correctly sized array
Erase ImageData()
'Generate a correctly-dimensioned array (for 2-dimensional access) Dim ArrayWidth As Long
ArrayWidth = (bm.bmWidth * 3) - 1
ArrayWidth = ArrayWidth + (bm.bmWidth Mod 4) '4-bit alignment ReDim ImageData(0 To ArrayWidth, 0 To bm.bmHeight) As Byte ReDim tmpData(0 To ArrayWidth, 0 To bm.bmHeight) As Byte
'Create a temporary header to pass to the GetDIBits call Dim bmi As BITMAPINFO
bmi.bmHeader.bmWidth = bm.bmWidth bmi.bmHeader.bmHeight = bm.bmHeight
bmi.bmHeader.bmSize = 40 'Size, in bytes, of the header
GetDIBits SrcPictureBox.hdc, SrcPictureBox.Image, 0, bm.bmHeight, ImageData(0, 0), bmi, 0
Else
GetDIBits SrcPictureBox.hdc, SrcPictureBox.Image, 0, bm.bmHeight, tmpData(0, 0), bmi, 0
End If
'This code is to orient the image data correctly in the array (i.e. (0,0) as top-left, (max,max) as bottom right)
' (if this option is enabled, we must set the DIB height to negative in the SetImageData routine below)
A-11
'Set an image's pixel information from an array dimensioned (x * 3 + bgr, y) Public Sub SetImageData2D(DstPictureBox As PictureBox, OriginalWidth As Long, OriginalHeight As Long, ImageData() As Byte, Optional ByVal CorrectOrientation As Boolean = False)
Dim bm As Bitmap
'Get the picture box information
GetObject DstPictureBox.Image, Len(bm), bm
'Create a temporary header to pass to the StretchDIBits call Dim bmi As BITMAPINFO
bmi.bmHeader.bmWidth = OriginalWidth If CorrectOrientation = False Then 'Assume color images and set the corresponding best stretch mode
SetStretchBltMode DstPictureBox.hdc, 3&
'Send the array to the picture box and draw it accordingly
A-12
'Since this doesn't automatically initialize AutoRedraw, we have to do it manually
If DstPictureBox.AutoRedraw = True Then DstPictureBox.Picture = DstPictureBox.Image DstPictureBox.Refresh
'Get an image's pixel information into an array dimensioned (r/g/b, x, y) Public Sub GetImageData(SrcPictureBox As PictureBox, ImageData() As Byte) Dim bm As Bitmap
'Get the picture box information
GetObject SrcPictureBox.Image, Len(bm), bm 'Build a correctly sized array
Erase ImageData()
ReDim ImageData(0 To 2, 0 To bm.bmWidth - 1, 0 To bm.bmHeight - 1) 'Create a temporary header to pass to the GetDIBits call
Dim bmi As BITMAPINFO
bmi.bmHeader.bmWidth = bm.bmWidth bmi.bmHeader.bmHeight = bm.bmHeight
bmi.bmHeader.bmSize = 40 'Size, in bytes, of the header
bmi.bmHeader.bmPlanes = 1 'Number of planes (always one for this instance)
bmi.bmHeader.bmBitCount = 24 'Bits per pixel (always 24 for this instance) bmi.bmHeader.bmCompression = 0 'Compression :standard/none or RLE
'Get the image data into our array
GetDIBits SrcPictureBox.hdc, SrcPictureBox.Image, 0, bm.bmHeight, ImageData(0, 0, 0), bmi, 0
End Sub
'Set an image's pixel information from an array dimensioned (r/g/b, x, y) Public Sub SetImageData(DstPictureBox As PictureBox, OriginalWidth As Long, OriginalHeight As Long, ImageData() As Byte)
Dim bm As Bitmap
'Get the picture box information
GetObject DstPictureBox.Image, Len(bm), bm
'Create a temporary header to pass to the StretchDIBits call Dim bmi As BITMAPINFO
bmi.bmHeader.bmWidth = OriginalWidth bmi.bmHeader.bmHeight = OriginalHeight
A-13
'Assume color images and set the corresponding best stretch mode SetStretchBltMode DstPictureBox.hdc, 3&
'Send the array to the picture box and draw it accordingly
StretchDIBits DstPictureBox.hdc, 0, 0, bm.bmWidth, bm.bmHeight, 0, 0, OriginalWidth, OriginalHeight, ImageData(0, 0, 0), bmi, 0, vbSrcCopy
'Since this doesn't automatically initialize AutoRedraw, we have to do it manually
If DstPictureBox.AutoRedraw = True Then DstPictureBox.Picture = DstPictureBox.Image DstPictureBox.Refresh
'Get an image's pixel data into a one-dimesional array (stream)
Public Sub GetImageDataStream(SrcPictureBox As PictureBox, ImageData() As Byte)
Dim bm As Bitmap
'Get the picture box information
GetObject SrcPictureBox.Image, Len(bm), bm
'Build a correctly sized array - in this case, designed as a stream Erase ImageData()
ReDim ImageData(0 To GetImageStreamLength(SrcPictureBox)) 'Create a temporary header to pass to the GetDIBits call Dim bmi As BITMAPINFO
bmi.bmHeader.bmWidth = bm.bmWidth bmi.bmHeader.bmHeight = bm.bmHeight
bmi.bmHeader.bmSize = 40 'Size, in bytes, of the header
GetDIBits SrcPictureBox.hdc, SrcPictureBox.Image, 0, bm.bmHeight, ImageData(0), bmi, 0
A-14
'Set an image's data from a one-dimensional array (stream)
Public Sub SetImageDataStream(DstPictureBox As PictureBox, OriginalWidth As Long, OriginalHeight As Long, ImageData() As Byte)
Dim bm As Bitmap
'Get the picture box information
GetObject DstPictureBox.Image, Len(bm), bm
'Create a temporary header to pass to the StretchDIBits call Dim bmi As BITMAPINFO
bmi.bmHeader.bmWidth = OriginalWidth bmi.bmHeader.bmHeight = OriginalHeight
bmi.bmHeader.bmSize = 40 'Size, in bytes, of the header
bmi.bmHeader.bmPlanes = 1 'Number of planes (always one for this instance)
bmi.bmHeader.bmBitCount = 24 'Bits per pixel (always 24 for this instance)
bmi.bmHeader.bmCompression = 0 'Compression :standard/none or RLE
'Send the array to the picture box and draw it accordingly
StretchDIBits DstPictureBox.hdc, 0, 0, bm.bmWidth, bm.bmHeight, 0, 0, OriginalWidth, OriginalHeight, ImageData(0), bmi, 0, vbSrcCopy
'Since this doesn't automatically initialize AutoRedraw, we have to do it manually
If DstPictureBox.AutoRedraw = True Then DstPictureBox.Picture = DstPictureBox.Image DstPictureBox.Refresh
End If
'Always good to manually halt for external processes after heavy API usage
1
Universitas Kristen Maranatha
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Dunia teknologi dan komputer sudah berkembang sangat pesat. Aplikasi komputer kini juga tidak hanya diterapkan dalam dunia industri tetapi juga dalam dunia hiburan, sosial, bisnis, politik dan keamanan. Salah satunya yang paling sering digunakan adalah Personal Computer (PC), terutama oleh masyarakat awam.
Pada Personal Computer, penghubung antara pengguna dengan mesin adalah bagian yang sangat penting. Mouse merupakan salah satunya yang berperan untuk menggerakkan kursor yang sangat dibutuhkan untuk memberikan perintah pada PC. Kebutuhan-kebutuhan akan penggerak kursor ini pun semakin beragam, antara lain untuk menggerakkan kursor dari jarak jauh misalnya untuk bermain game, menggunakan aplikasi-aplikasi dari PC (word, powerpoint, excel, dll). Untuk pemakai yang menyandang cacat ALS (Lou Gehrig’s disease) atau
multiple sclerosis dimana pemakai tidak dapat menggerakkan atau mengendalikan
anggota tubuhnya kecuali mata. Dengan demikian dibutuhkan aplikasi yang dapat membantu pemakai tersebut untuk mengendalikan kursor.
Kemajuan di bidang teknologi optikal khusunya webcam (kamera web) dapat dimanfaatkan sebagai sarana untuk fungsi klik pada mouse. Hal ini dikarenakan webcam (kamera web) dapat digunakan sebagai indera penglihatan untuk komputer karena bisa menangkap objek di depan kamera sebagai citra. Citra tersebut dapat diolah di dalam komputer dengan memanfaatkan teknologi pengolahan citra serta pemrograman aplikasi, sehingga dapat digunakan untuk melakukan fungsi klik pada mouse.
Bab I Pendahuluan 2
Universitas Kristen Maranatha
1.2 Perumusan Masalah
Permasalahan yang akan dibahas dalam Tugas Akhir ini meliput:
Bagaimana algoritma untuk mendeteksi kedipan mata yang digunakan untuk menggantikan fungsi klik pada mouse.
1.3 Tujuan
Membuat aplikasi untuk melakukan fungsi klik pada mouse dengan kedipan mata melalui kamera web.
1.4 Pembatasan Masalah
1. Aplikasi program ini hanya dapat digunakan untuk melakukan fungsi klik kiri pada tombol mouse.
2. Hanya dapat digunakan pada keadaan cahaya yang masuk ke kamera web cukup (tidak terlalu terang dan tidak terlalu gelap).
3. Jarak mata dengan kamera web dibatasi antara 25 cm sampai 35 cm. 4. Program ini direalisasikan dalam Visual Basic 6.0.
5. Masih memakai kotak panduan untuk mengetahui letak posisi mata. 6. Proses klik kiri mouse terjadi ketika sedang tutup mata.
1.5 Metodologi
Bab I Pendahuluan 3
Universitas Kristen Maranatha
1.6 Sistematika Penulisan
Penyusunan laporan Tugas Akhir terdiri dari lima bab sebagai berikut:
BAB I. PENDAHULUAN
Pada bab ini dibahas mengenai latar belakang, perumusan masalah, tujuan, pembatasan masalah, metodologi, dan sistematika penulisan.
BAB II. LANDASAN TEORI
Pada bab ini berisi teori dasar dari pengertian citra, dasar warna, pengolahan citra digital, mouse, kamera web, application program
interface, dynamic link library, Class Module FastDrawing, Class
Module CmouseEvent, serta Visual Basic 6.0 untuk representasi citra digital.
BAB III. PERANCANGAN dan REALISASI
Pada bab ini berisi perancangan, penjelasan, serta diagram alir dari program yang telah dibuat.
BAB IV. DATA PENGAMATAN dan ANALISA
Pada bab ini berisi pengujian program, data pengamatan serta analisis dari program yang telah dibuat.
BAB V. KESIMPULAN dan SARAN
46
Universitas Kristen Maranatha
BAB V
KESIMPULAN DAN SARAN
Bab ini merupakan bab penutup yang berisi kesimpulan analisa dari Tugas Akhir yang berjudul “Perancangan Pendeteksi Kedipan Mata Untuk Fungsi Klik Pada Mouse Melalui Kamera Web”.
5.1 KESIMPULAN
1. Pada Tugas Akhir ini, program aplikasi dapat direalisasikan dan berfungsi dengan baik dengan persentase keberhasilan rata-rata 80%. 2. Persentase keberhasilan melakukan fungsi klik dengan kedipan mata
lebih tinggi untuk pemakai program aplikasi ini yang mempunyai mata besar dibandingkan dengan yang berkacamata dan bermata sedang, berkacamata dan bermata sipit, bermata sedang, atau bermata sipit.
3. Jarak optimal dari mata ke kamera web adalah 35cm
5.2 SARAN.
1. Aplikasi ini dapat dikembangkan sehingga tidak memerlukan kotak panduan untuk mengetahui letak posisi mata.
47 Universitas Kristen Maranatha
DAFTAR PUSTAKA
1.
Hestiningsih,
Idhawati.
2009,
Pengolahan
Citra,
http://images.moedy9.multiply.multiplycontent.com/attachmen
t/0/SMuuNwoKCBkAAHPHjZk1/Pengolahan%20Citra.pdf?n
mid=115281461
2.
Munir, Rinaldi. 2004. Pengolahan Citra Digital dengan
Pendekatan Algoritmik. Bandung : Informatika.
3.
Pearson, Don. 1991. Image Processing. Singapore :
McGraw-Hill Book.
4.
http://en.wikipedia.org/wiki/Application_programming_interfa
ce
5.
http://en.wikipedia.org/wiki/Dynamic-link_library
6.
http://en.wikipedia.org/wiki/Webcam
7.
http://msdn.microsoft.com/en-us/library/default.aspx
8.
http://www.mvps.org/vb
9.