BAB 2 LANDASAN TEORI 2.1
Teori Umum
2.1.1
Sistem Operasi Android Lee (2011:2-4) menyatakan bahwa Android adalah sistem operasi mobile yang didasari versi Linux yang telah dimodifikasi. Pada awalnya Android dikembangkan oleh sebuah perusahaan startup yang memiliki nama yang sama, Android, Inc. Pada tahun 2005, sebagai bagian dari rencana untuk masuk dalam dunia mobile, Google membeli Android dan mengambil alih pengembangannya (serta tim pengembangnya juga). Google ingin Android untuk terbuka dan gratis. Oleh karena itu, sebagian besar dari kode Android dirilis dibawah lisensi open-source Apache, yang berarti bahwa setiap orang yang ingin menggunakan Android juga dapat mengunduh source code Android itu secara lengkap. Selain itu, vendors/penjual (khususnya pengusaha pabrik hardware) dapat menambahkan hak miliknya sendiri ke Android dan menyesuaikan Android untuk membedakan produk mereka dengan yang lainnya. Keuntungan utama dalam mengadopsi Android adalah Android memberikan pendekatan lengkap kepada pengembangan aplikasinya. Para Developer hanya perlu mengembangkan untuk Android, dan aplikasi mereka dapat berjalan untuk beberapa perangkat/devices yang berbeda, selama perangkat tersebut masih menggunakan Android. Keuntungan lainnya adalah sistem operasi Android ini bersifat open source. Dengan demikian, developer-developer lain dapat turut serta mengembangkan perangkat lunak dalam sistem operasi android dan membuatnya lebih baik. Beberapa versi Android sampai saat ini serta penyebarannya dapat dilihat pada gambar 2.1 berikut: 20
21
Gambar 2.1 Gambar Penyebaran Beberapa Versi Android (Sumber : http://developer.android.com/about/dashboards/index.html, retrieved March 23rd 2013)
Gambar 2.1 menjelaskan tentang penggunaan berbagai macam versi dari Sistem Operasi Android. Sebagian besar device Android yang tercantum sampai Desember 2012 menggunakan Gingerbread versi 2.3.32.3.7. Karena Android merupakan open source dan tersedia bebas untuk perusahaan manufacturers untuk menyesuaikannya, maka tidak ada pengaturan hardware dan software yang tetap. Namun, Android sendiri mendukung fitur-fitur seperti berikut: -
Storage. Menggunakan SQLite, sebuah relational database yang ringan untuk penyimpanan data
-
Connectivity. Mendukung GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth (termasuk A2DP dan AVRCP), WiFi, LTE, dan WiMAX.
-
Messaging. Mendukung SMS dan MMS.
22
-
Web Browser. Berdasarkan pada open-source WebKit, dengan Chrome’s V8 JavaScript engine.
-
Media Support. Mendukung beberapa media seperti: H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, dan BMP.
-
Hardware Support. Accelerometer Sensor, Camera, Digital Compass, Proximity Sensor, dan GPS.
-
Multi-touch. Mendukung layar multi-touch.
-
Multi-tasking. Mendukung aplikasi-aplikasi multi-tasking.
-
Flash support. Untuk Android 2.3 mendukung Flash 10.1.
-
Tethering. Mendukung pembagian koneksi internet melalui hotspot kabel/nirkabel. Supaya dapat mengerti bagaimana Android bekerja, dapat dilihat
dari arsitektur Android. Arsitektur Android terdiri dari beberapa layer yang membentuk sistem operasi Android.
23
Gambar 2.2 Arsitektur Sistem Operasi Android (Sumber : Beginning AndroidTM Application Development, p3)
Pada gambar 2.2 menjelaskan bahwa Sistem operasi Android secara kasar dibagi menjadi lima bagian dalam empat layer utama: -
Linux Kernel. Ini adalah kernel dimana terdapat dasar dari Android. Layer ini mengandung semua driver perangkat level rendah untuk berbagai komponen hardware dari perangkat Android.
-
Libraries. Ini mengandung semua kode yang menyediakan fitur-fitur utama dari sistem operasi Android. Sebagai contoh, SQLite library menyediakan
layanan
database
sehingga
aplikasi
dapat
menggunakannya sebagai tempat penyimpanan data. WebKit library menyediakan fungsi-fungsi untuk web browsing. -
Android runtime. Pada layer yang sama dengan libraries, Android runtime menyediakan sekumpulan library inti yang memungkinkan para
developer
untuk
menulis/membuat
aplikasi
android
menggunakan bahasa pemrograman Java. Android runtime juga berisi
24
Dalvik virtual machine, yang memungkinkan setiap aplikasi Android untuk berjalan dalam prosesnya sendiri, dengan instansi dari Dalvik virtual machine sendiri (aplikasi Android di-compile menjadi Dalvik executeables). Dalvik adalah mesin virtual yang khusus didesain untuk Android dan dioptimasikan untuk perangkat mobile bertenaga baterai dengan keterbatasan memory dan CPU. -
Application framework. Membuka berbagai kemampuan dari sistem operasi Android untuk para developer sehingga mereka dapat menggunakannya dalam aplikasi mereka.
-
Applications. Pada layer atas ini, kita dapat menemukan aplikasi yang dikirimkan dengan perangkat Android (seperti Phone, Contacts, Browser, dan sebagainya), dan juga aplikasi yang telah diunduh dan dipasang dari Android Market. Aplikasi-aplikasi yang dikembangkan berada pada layer ini.
2.1.2
Kecerdasan Buatan (Artificial Intelligence) Kusumadewi
(2003:
2-5)
menyatakan
bahwa
pengertian
kecerdasan buatan dapat dipandang dari berbagai sudut pandang, antara lain: 1. Sudut pandang kecerdasan Kecerdasan buatan akan membuat mesin menjadi “cerdas”(mampu berbuat seperti apa yang dilakukan oleh manusia). 2. Sudut pandang penelitian. Kecerdasan buatan adalah suatu studi bagaimana membuat agar komputer dapat melakukan sesuatu sebaik yang dikerjakan oleh manusia. Domain yang sering dibahas oleh para peneliti meliputi: a. Mundane task -
Persepsi (vision & speech)
-
Bahasa alami (understanding, generation & translation)
25
-
Pemikiran yang bersifat commonsense.
-
Robot control.
b. Formals task o Permainan/games. o Matematika (geometri, logika, kalkulus integral, pembuktian). c. Expert task -
Analisis finansial.
-
Analisis medikal.
-
Analisis ilmu pengetahuan.
-
Rekayasa
(desain,
pencarian
kegagalan,
perencanaan
manufaktur). 3. Sudut pandang bisnis. Kecerdasan buatan adalah kumpulan peralatan yang sangat powerful dan metodologis dalam menyelesaikan masalah-masalah bisnis. 4. Sudut pandang pemrograman. Kecerdasan buatan meliputi studi tentang pemrograman simbolik, penyelesaian masalah (problem solving) dan pencarian (searching). Untuk melakukan aplikasi kecerdasan buatan ada 2 bagian utama yang sangat dibutuhkan, yaitu: a. Basis Pengetahuan (Knowledge Base), berisi fakta-fakta, teori, pemikiran dan hubungan antara satu dengan lainnya. b. Motor Inferensi (Inference Engine), yaitu kemampuan menarik kesimpulan berdasarkan pengalaman. Komputer Input: masalah, pertanyaan, dll
Basis Pengetahuan
Motor Inferensi
Output: jawaban, solusi.
Gambar 2.3 Penerapan Konsep Kecerdasan Buatan di Komputer (Sumber : Artificial Intelligence (Teknik dan Aplikasinya), p3)
26
Dari beberapa definisi yang ditampilkan pada gambar 2.3, maka definisi kecerdasan buatan dapat dikategorikan menjadi empat kategori, yaitu: -
Sistem yang berpikir seperti manusia
-
Sistem yang bertindak seperti manusia
-
Sistem yang berpikir secara rasional
-
Sistem yang bertindak secara rasional Jika dibandingkan dengan kecerdasan alami (kecerdasan yang
dimiliki oleh manusia), kecerdasan buatan memiliki beberapa keuntungan secara komersial antara lain: a. Kecerdasan buatan lebih bersifat permanen. Kecerdasan alami akan cepat mengalami perubahan. Hal ini dimungkinkan karena sifat manusia yang pelupa. Kecerasan buatan tidak akan berubah sepanjang sistem kompiter & program tidak mengubahnya. b. Kecerdasan
buatan
lebih
mudah
diduplikasi
&
disebarkan.
Memindahkan pengetahuan manusia dari satu orang ke orang lain membutuhkan proses yang sangat lama; dan juga suatu keahlian itu tidak akan pernah dapat diduplikasi dengan lengkap. Oleh karena itu, jika pengetahuan terletak pada suatu sistem komputer, pengetahuan tersebut dapat disalin dari komputer tersebut dan dapat dipindahkan dengan mudah ke komputer yang lain. c. Kecerdasan buatan lebih murah dibanding dengan kecerdasan alami. Menyediakan layanan komputer akan lebih mudah & lebih murah dibandingkan
dengan
harus
mendatangkan
seseorang
untuk
mengerjakan pekerjaan dalam jangka waktu yang sangat lama. d. Kecerdasan buatan bersifat konsisten. Hal ini disebabkan karena kecerdasan buatan adalah bagian dari teknologi komputer. Sedangkan kecerdasan alami akan senantiasa berubah-ubah.
27
e. Kecerdasan buatan dapat didokumentasi. Keputusan yang dibuat oleh komputer dapat didokumentasi dengan mudah dengan cara melacak setiap aktivitas dari sistem tersebut. Kecerdasan alami sangat sulit untuk direproduksi. f. Kecerdasan buatan dapat mengerjakan pekerjaan lebih cepat dibanding dengan kecerdasan alami. g. Kecerdasan buatan dapat mengerjakan pekerjaan lebih baik dibanding dengan kecerdasan alami. Sedangkan keuntungan dari kecerdasan alami adalah: a. Kreatif.
Kemampuan
untuk
menambah
ataupun
memenuhi
pengetahuan itu sangat melekat pada jiwa manusia. Pada kecerdasan buatan, untuk menambah pengetahuan harus dilakukan melalui sistem yang dibangun. b. Kecerdasan alami memungkinkan orang untuk menggunakan pengalaman secara langsung. Sedangkan pada kecerdasan buatan harus bekerja dengan input-input simbolik. c. Pemikiran manusia dapat digunakan secara luas, sedangkan kecerdasan buatan sangat terbatas. Pada
awal
diciptakannya
komputer,
komputer
hanya
diperuntukkan sebagai alat hitung (komputasi konvensional). Untuk itu, ada beberapa perbedaan antara komputasi yang dilakukan pada kecerdasan buatan dengan komputasi konvensional tersebut. Perbedaan komputasi kecerdasan buatan dengan komputasi konvensional dapat dilihat pada tabel berikut:
Tabel 2.1 Kecerdasan Buatan Vs. Pemrograman Konvensional Dimensi
Kecerdasan Buatan
Pemrograman Konvensional
Pemrosesan
Mengandung
konsep- Algoritmik
konsep simbolik
28
Sifat Input
Bisa tidak lengkap
Pencarian
Kebanyakan
Keterangan
Harus lengkap
bersifat Biasanya
didasarkan
heuristik
pada algoritma
Disediakan
Biasanya
tidak
disediakan Fokus
Pengetahuan
Data & informasi
Struktur
Kontrol dipisahkan dari Kontrol
terintegrasi
pengetahuan
dengan informasi (data)
Sifat output
Kuantitatif
Kualitatif
Pemeliharaan & update
Relatif mudah
Sulit
Kemampuan menalar
Ya
Tidak
Ada tiga tujuan kecerdasan buatan, yaitu: membuat komputer lebih cerdas, mengerti tentang kecerdasan, dan membuat mesin yang lebih berguna. Yang dimaksud kecerdasan adalah kemampuan untuk belajar dan mengerti dari pengalaman, memahami pesan yang kontradiktif dan ambigu, menanggapi dengan cepat dan baik atas situasi yang baru, menggunakan penalaran dalam memecahkan masalah serta menyelesaikannya dengan efektif. Adapun lingkup utama dalam kecerdasan buatan adalah: -
Sistem Pakar (Expert System) Komputer digunakan sebagai sarana untuk menyimpan pengetahuan para pakar. Dengan demikian komputer akan memiliki keahlian untuk menyelesaikan permasalahan dengan meniru keahlian yang dimiliki oleh pakar.
-
Pengolahan Bahasa Alami (Natural Language Processing) Dengan adanya pengolahan bahasa alami diharapkan user dapat berkomunikasi dengan komputer menggunakan bahasa sehari-hari.
-
Pengenalan Ucapan (Speech Recognition)
29
Melalui pengenalan ucapan diharapkan manusia dapat berkomunikasi dengan komputer menggunakan suara. -
Robotika dan Sistem Sensor (Robotics and Sensory Systems)
-
Computer Vision Computer Vision mencoba untuk dapat menginterpretasikan gambar atau objek-objek tampak melalui komputer.
-
Intelligent Computer-aided Instruction Komputer dapat digunakan sebagai tutor yang dapat melatih dan mengajar.
-
2.1.3
Game Playing
Computer Vision Budiharto (2012:49) menyatakan bahwa Computer Vision merupakan bidang pengetahuan yang berfokus pada bidang sistem kecerdasan buatan dan berhubungan dengan akuisisi dan pemrosesan citra. Contoh penerapan computer vision pada dunia riset dan industri adalah sebagai berikut: -
Interaksi manusia dan robot (human robot interaction)
-
Pengontrolan proses industri
-
Pendeteksi nomor pelat kendaraan
-
Pembangunan model 3D (fotogrametri)
-
Organisasi informasi dan pengindeksan basis data
-
Pengawasan (monitor penyusup, analisis lalu lintas jalan tol, dan lainnya)
-
2.1.4
Pemodelan objek atau lingkungan.
Pemrosesan Citra Digital Budiharto (2012: 54-56) menyatakan bahwa Citra adalah sebuah larik atau matriks dari piksel persegi yang disusun dalam format kolom dan baris. Pada citra grayscale (8 bit), tiap elemen gambar memiliki
30
intensitas antara 0-255, sedangkan citra true color terdiri atas 24 bit (8x8x8 = 16 juta warna). Pemrosesan citra digital umumnya digunakan pada proses berikut: -
Klasifikasi,
-
ekstraksi fitur,
-
pengenalan pola,
-
proyeksi,
-
analisis sinyal multiskala. Beberapa teknik yang digunakan pada pemrosesan citra digital
adalah sebagai berikut: -
pikselisasi,
-
penyaringan linear,
-
analisis komponen utama,
-
analisis komponen bebas,
-
model markov tersembunyi,
-
difusi anisotropik,
-
persamaan diferensial parsial.
2.1.4.1
Grayscale Budiharto (2012:58) menyatakan Citra standar dikenal sebagai citra RGB (terdiri atas komponen merah, hijau, dan biru) dan memiliki sistem warna 24 bit yang masing-masing terdiri atas 8 bit. Representasi warna bertipe integer bervariasi dari 0-255, sedangkan untuk tipe float berkisar antara 0-1. Nilai warna tersebut disimpan pada matriks 3 dimensi yang dilambangkan dengan intensitas I (X,Y,channel). Nilai warna RGB dapat dinormalisasi dengan persamaan berikut:
(1) (2)
31
(3)
sedangkan untuk grayscale, menggunakan persamaan
(4)
Kadang citra yang kita miliki perlu diolah untuk tujuan tertentu,
istilahnya
pengolahan
citra,
misalnya
proses
penjumlahan nilai RGB pada citra. Pemrosesan citra digital memungkinkan
penggunaan
algoritma
kompleks
untuk
pemrosesan citra sehingga menghasilkan performa sistem yang teguh dan berbiaya murah.
2.1.4.2 Thresholding PENS-ITS (2012:20-21) menyatakan bahwa thresholding digunakan untuk mengatur jumlah derajat keabuan yang ada pada citra. Dengan menggunakan thresholding maka derajat keabuan bisa diubah sesuai keinginan, misalkan diinginkan menggunakan derajat keabuan 16, maka tinggal membagi nilai derajat keabuan dengan 16. Proses thresholding ini pada dasarnya adalah proses pengubahan kuantisasi pada citra, sehingga untuk melakukan thresholding dengan derajat keabuan dapat digunakan rumus:
(5) dimana: w adalah nilai derajat keabuan sebelum thresholding x adalah nilai derajat keabuan setelah thresholding (6)
32
Gambar 2.4 Contoh Thresholding (Sumber : http://www.scribd.com/doc/26219931/34/ retrieved December 13rd, 2012)
Pada gambar 2.4 menjelaskan 4 macam thersholding yaitu 256, 16, 4, dan 2.
2.1.4.3
Histogram PENS-ITS (2012:29) menyatakan bahwa banyak sekali proses pengolahan citra yang melibatkan distribusi data, seperti pada contoh konversi biner di atas. Bahkan dalam image enhancement (perbaikan citra),distribusi dari nilai derajat keabuan pada citra menjadi suatu acuan dasar. Untuk menyatakan distribusi data dari nilai derajat keabuan ini dapat digunakan nilai histogram. Histogram adalah suatu fungsi yang menyatakan jumlah kemunculan dari setiap nilai. Misalkan diketahui data sebagai berikut: x=132530212423 Maka histogramnya adalah munculnya setiap nilai, yaitu: nilai 0 muncul 1 kali, nilai 1 muncul 2 kali, nilai 2 muncul 4 kali, nilai 3
33
muncul 3 kali, nilai 4 muncul 1 kali dan nilai 5 muncul 1 kali. Karena citra mempunyai derajat keabuan 256 yaitu (0-255) maka histogram menyatakan jumlan kemunculan setiap nilai 0-255.
2.1.4.4 Brightness PENS-ITS (2012:29) menyatakan bahwa brightness adalah proses penambahan kecerahan dari nilai derajat keabuan. Proses brightness ini dilakukan dengan menambahkan nilai derajat keabuan dengan suatu nilai penambah. xb = x + b
(7)
dimana x = adalah nilai derajat keabuan b = nilai penambah xb = hasil brightness
2.1.4.5 Kontras PENS-ITS (2012:30) menyatakan bahwa mengubah kontras dari suatu citra adalah proses pengaturan nilai range interval pada setiap nilai derajat keabuan, dan didefinisikan dengan: xk = k x
(8)
dimana x = nilai derajat keabuan k = nilai kontras xk = nilai setelah pengaturan kontras
2.1.4.6
Inversi Citra PENS-ITS (2012:37) menyatakan bahwa Inversi citra adalah proses negatif pada citra, misalkan pada photo, dimana setiap nilai citra dibalik dengan acuan threshold yang diberikan.
34
Proses ini banyak digunakan pada citra-citra medis seperti USG dan X-Ray. Untuk citra dengan derajat keabuan 256,proses inversi citra didefinisikan dengan: xn = 255 – x
(9)
dimana x = nilai derajat keabuan xn = nilai setelah inversi. (http://www.scribd.com/doc/26219931/34/, retrieved December 13rd, 2012)
2.1.4.7
Histogram Equalization PENS-ITS (2012:37-39) menyatakan bahwa Histogram Equalization adalah suatu proses perataan histogram, dimana distribusinilai derajat keabuan pada suatu citra dibuat rata. Untuk dapat melakukan histogramequalization ini diperlukan suatu fungsi distribusi kumulatif yang merupakan kumulatif dari histogram. Misalkan diketahui data sebagai berikut: 243136431032 Maka histogram dari data di atas adalah:
Gambar 2.5 Contoh Histogram (Sumber
:
http://www.scribd.com/doc/26219931/34,
December 13rd, 2012)
retrieved
35
Proses perhitungan distribusi kumulatif dapat dijelaskan dengan tabel berikut:
Tabel 2.2 Tabel Perhitungan Distribusi Kumulatif Nilai
Histogram
Distribusi kumulatif
0
1
1
1
2
1+2=3
2
2
3+2=5
3
4
5+4=9
4
2
9+2=11
5
0
11+0=11
6
1
11+1=12
Dan diperoleh histogram kumulatif sebagai berikut:
Gambar 2.6 Histogram Kumulatif (Sumber : http://www.scribd.com/doc/26219931/34/, retrieved December 13rd, 2012)
36
Histogram equalization (perataan histogram) adalah suatu proses dimana histogram diratakan berdasarkan suatu fungsi linier (garis lurus) seperti terlihat pada gambar 2.6. Teknik perataan histogram adalah sebagai berikut:
Tabel 2.3 Tabel Perhitungan Histogram Equalization Nilai asal
Histogram Kumulatif
Nilai hasil
0
1
½ -> 0
1
3
3/2 -> 1
2
5
5/2 -> 2
3
9
9/2 -> 4
4
11
11/2 -> 5
5
11
11/2 -> 5
6
12
12/2 -> 6
Nilai hasil histogram equilization adalah sebagai berikut:
(10) dimana w
=
nilai
keabuan
hasil
histogram
equalization Cw = histogram kumulatif dari w th = threshold derajat keabuan (256) nx dan ny = ukuran gambar Hasil setelah histogram equalization adalah sebagai berikut: 254146541042 Histogram dari hasil histogram equalization:
37
Gambar 2.7 Hasil dari Histogram Equalization (Sumber : http://www.scribd.com/doc/26219931/34, retrieved December 13rd, 2012)
2.1.5
OpenCV (Open Source Computer Vision Library) OpenCV.org (2012) menyatakan bahwa OpenCV (Open Source Computer Vision Library) adalah program sumber terbuka computer vision dan machine learning. OpenCV dibuat untuk menyediakan infrastruktur umum untuk aplikasi computer vision dan mempercepat penggunaan persepsi mesin di produk komersial. Menjadi produk berlisensi
BSD,
OpenCV
mempermudah
perusahaan
untuk
memanfaatkan dan memodifikasi kode. Library OpenCV telah memiliki lebih dari 2500 algoritma yang sudah teroptimasi, yang terdiri dari sekumpulan algoritma klasik dan algoritma computer vision. Algoritma ini bisa digunakan untuk mendeteksi dan mengenal wajah, mengidentifikasi objek, mengklasifikasi tindakan manusia dalam video, melacak pergerakan kamera, melacak pergerakan objek, mengekstraksi model 3D dari objek, memproduksi poin 3D dari stereo camera, menggabungkan gambar untuk memproduksi gambar yang memiliki resolusi tinggi, mencari gambar yang sama dari database gambar, menghilangkan mata merah dari gambar yang diambil menggunakan flash, mengikuti pergerakan mata, mengenal pemandangan dan membangun penanda untuk augmented reality, dll.
38
OpenCV memiliki antarmuka C++, C, Python dan Java dan mendukung Windows, Linux, Android, dan Mac OS. OpenCV bersandar menuju aplikasi vision yang real-time dan mengambil keuntungan dari MMX dan instruksi SSE bila tersedia. Sebuah fitur lengkap antarmuka CUDA sedang aktif dikembangkan sekarang. Ada lebih dari 500 algoritma dan sekitar 10 kali lebih banyak fungsi yang membentuk atau mendukung algoritma-algoritma tersebut. OpenCV ditulis dalam native C++ dan memiliki template antarmuka yang bekerja mulus dengan STL containers.
2.1.6
OpenCV for Android OpenCV telah menyediakan Software Development Kit (SDK) untuk
Android
yang
diberi
nama
OpenCV4Android
SDK.
OpenCV4Android SDK Package ini memungkinkan pengembangan aplikasi Android mengunakan library dari OpenCV. (http://docs.opencv.org/doc/tutorials/introduction/ android_binary_ package/O4A_SDK.html, retrieved November 7th 2012)
Struktur dari isi package OpenCV4Android SDK adalah sebagai berikut:
39
Gambar 2.8 Isi Package OpenCV4Android SDK (Sumber: http://docs.opencv.org/doc/tutorials/introduction/android_binary _package/O4A_SDK.html, retrieved November 7th 2012)
Gambar
2.8
menjelaskan
tentang
isi
folder-folder
Package
OpenCV4Android SDK yaitu sebagai berikut : -
Folder sdk berisi library dan API dari OpenCV for Android.
-
Folder sdk/java berisi proyek Eclipse dari Android library yang menyediakan OpenCV Java API yang bisa digunakan(import) kedalam workspace.
-
Folder sdk/native berisi OpenCV C++ headers (untuk kode JNI) dan native Android libraries (*.so dan *.a) untuk arsitektur ARM-v5, ARM-v7a, dan x86.
-
Folder sdk/etc berisi Haar dan LBP cascades yang didistribusikan dengan OpenCV
-
Folder apk berisi Android packages yang diinstall ke device Android untuk memungkinkan akses ke OpenCV library via OpenCV Manager API.
40
-
Folder samples berisi contoh proyek aplikasi dan prebuilt pacakges(APK)nya.
-
2.1.7
Folder doc berisi berbagai dokumentasi OpenCV dalam format PDF.
Teori Viola-Jones Classifier Bradski (2008: 508) menyatakan bahwa Viola-Jones Classifier menggunakan AdaBoost di setiap node dalam cascade untuk mempelajari tingkat deteksi yang tinggi dengan tingkat penolakan multitree classifier di setiap node dalam cascade. Algoritma ini menggabungkan beberapa fitur yang inovatif, seperti: 1. Menggunakan
fitur
input
Haar-like,
yaitu
threshold
yang
diaplikasikan untuk menjumlahkan dan membedakan daerah-daerah persegi dari gambar. 2. Teknik integral image yang memungkinkan komputasi yang cepat untuk daerah-daerah persegi atau daerah-daerah yang dirotasi 45 derajat. Struktur data ini digunakan untuk mempercepat komputasi dari fitur input haar-like. 3. Menggunakan
Statistical
Boosting
untuk
menciptakan
node
klasifikasi binary (ya/tidak) yang dikarakterisasikan dengan tingkat deteksi yang tinggi dan tingkat penolakan yang lemah. 4. Mengorganisir node classifier yang lemah dari sebuah rejection cascade. Dengan kata lain: grup pertama dari classifiers dipilih sehingga pendeteksian terbaik pada daerah gambar mengandung sebuah objek walaupun memungkinkan banyak kesalahan dalam pendeteksian; grup classifier berikutnya adalah pendeteksian terbaik kedua dengan tingkat penolakan yang lemah; dan seterusnya. Dalam pengujian, sebuah objek dapat dikenali hanya jika objek tersebut melalui semua cascade. Fitur input haar-like yang digunakan oleh classifier adalah sebagai berikut:
41
Gambar 2.9 Fitur Input Haar-like yang Digunakan oleh Classifier (Sumber : http://morph.cs.st-andrews.ac.uk/fof/haarDemo/index.html, retrieved November 7th 2012)
2.1.8
Penentuan Keadaan Mata Untuk menentukan keadaan mata, terlebih dahulu kita harus menentukan posisi dari kelopak mata. Kelopak mata terletak diantara posisi perubahan intensitas pertama dengan posisi perubahan intensitas kedua pada representasi grafik perubahan intensitas.
Gambar 2.10 Grafik Perubahan Intensitas (Sumber: Drowsy Driver Detection System Design Project, p27)
42
Maka dari itu, untuk menentukan apakah mata sedang terbuka atau tertutup dapat dilakukan dengan mengitung jarak antara dua perubahan intensitas(valley). Ketika mata sedang dalam keadaan tertutup, jarak antara kedua valleys akan lebih besar dibandingkan ketika mata sedang dalam keadaan terbuka (normal).
Gambar 2.11 Perbandingan Mata Terbuka dan Tertutup (Sumber: Drowsy Driver Detection System Design Project, p28)
2.2 Teori Khusus 2.2.1
Development Tools untuk Android Beberapa
Development
Tools
yang
diperlukan
untuk
mengembangkan perangkat lunak Android adalah: -
Eclipse Langkah pertama dalam pengembangan aplikasi-aplikasi adalah memperoleh integrated development environtment (IDE). Dalam kasus Android, IDE yang direkomendasikan adalah Eclipse, sebuah perangkat lunak development yang multi-language dengan berbagai fitur plugin yang tersedia di dalam sistem. Eclipse dapat digunakan
43
untuk mengembangkan beberapa tipe aplikasi, menggunakan bahasa seperti Java, Ada, C, C++, COBOL, Phyton, dan sebagainya. -
Android SDK Perangkat lunak penting berikutnya yang diperlukan adalah Android SDK. Android SDK memiliki debugger, libraries, emulator, dokumentasi, contoh kode dan tutorials,
-
Android Development Tools (ADT) Plugin Android Development Tools(ADT) adalah ekstensi untuk Eclipse IDE yang mendukung pembuatan dan debugging dari aplikasi-aplikasi android. Menggunakan ADT, maka kita akan dapat melakukan beberapa hal seperti: •
Membuat proyek aplikasi Android yang baru
•
Mengakses alat-alat yang digunakan untuk mengakses Emulator dan perangkat Android
2.2.2
•
Compile dan debug aplikasi-aplikasi Android
•
Export aplikasi Android menjadi Android Packages(APK).
•
Membuat sertifikat digital untuk APK yang telah dibuat.
Parameter Kantuk Mandeep (2012) menyatakan bahwa rata-rata durasi kedipan mata adalah 400ms dan durasi minimumnya adalah 75ms. Maka dari itu, apabila kedipan mata melebihi 400ms, maka orang tersebut akan dikatakan sedang dalam kondisi mengantuk.
Tabel 2.4 Keadaan Mengantuk Berdasarkan Durasi Kedipan Drowsiness Awake (sadar/normal)
Deskripsi Durasi kedipan < Tkantuk
44
Drowsy (mengantuk)
Durasi kedipan > Tkantuk dan durasi kedipan < Ttidur
Sleeping (tertidur)
Durasi kedipan >= Ttidur