BAB 2 LANDASAN TEORI 2.1
Tubuh Manusia Tubuh manusia merupakan salah satu objek pendeteksian yang sedang populer, hal
ini dapat dibuktikan dengan banyaknya jurnal mengenai perancangan program pendeteksian tubuh manusia seperti pendeteksian wajah yang dilakukan oleh Nugroho & Harjoko (2005), pendeteksian mata yang diakukan oleh Khairosfaizal & Nor'aini (2009), pendeteksian tubuh bagian atas yang dilakukan oleh M icilotta, Ong, & Bwoden (2006), pendeteksian telinga yang dilakukan oleh Chen & Bhanu (2004), dan pendeteksian tangan yang dilakukan oleh Kolsch & Turk (2004). Tubuh manusia yang akan dideteksi pada penelitian ini antara lain wajah, mata, hidung, telinga kiri, telinga kanan, tubuh bagian atas, dan tangan kiri. Hal ini dikarenakan bagian tersebut memiliki ciri yang cukup unik, dapat dilihat dari banyaknya penelitian dan perancangan program mengenai bagian-bagian tubuh tersebut seperti pada jurnal yang penulis tuliskan di atas. 2.2
Pornografi Pornografi merupakan salah satu masalah yang diangkat oleh penulis. Kata
pornografi itu sendiri menurut Kamus Besar Bahasa Indonesia (Pusat Bahasa, 2008) memiliki arti yaitu penggambaran tingkah laku secara erotis dengan lukisan atau tulisan untuk membangkitkan nafsu birahi. Tingkat pornografi di Indonesia sudah mencapai tingkat yang membahayakan, hal ini dapat dilihat dengan banyaknya berita yang terkait dengan pornografi pada mediamedia cetak seperti Kompas (2011), dan Pos Kota (2012). Oleh karena itu suatu program
aplikasi dekstop untuk filter pornografi sangatlah penting sekarang ini. Agar image yang dianggap porno bisa langsung dideteksi dan di sensor. 2.3
Pengolahan Image Pengolahan image merupakan dasar dari pendeteksian objek, hal ini dikarenakan
dengan kualitas image yang baik, maka pendeteksian suatu objek akan lebih mudah untuk dilakukan. Image itu sendiri memiliki beberapa definisi di antaranya adalah: ¾ M enurut Kamus Besar Bahasa Indonesia image adalah rupa;gambar;gambaran (Pusat Bahasa, 2008) ¾ M enurut Jain (1982) image adalah representasi dari suatu objek nyata baik dalam bentuk dua dimensi maupun tiga dimensi menjadi bentuk gambar digital yang dikenali oleh komputer. ¾ M enurut Schalkoff (1989) image adalah fungsi intensitas warna dua dimensi f(x,y) di mana x dan y mewakili koordinat lokasi suatu titik dan nilai dari fungsi yang merupakan tingkat intensitas warna atau tingkat keabu-abuan dari titik tersebut. Pengolahan image merupakan bidang yang berhubungan dengan proses transformasi image yang bertujuan untuk mendapatkan kualitas image yang lebih baik (Fairhurst, 1988). Image bisa diambil dengan menggunakan kamera dari kamera digital, kamera handphone, webcam, dan berbagai alat lainnya yang mampu mengambil suatu image, yang nantinya dapat menghasilkan suatu image digital. Image digital adalah image kontinu yang sudah didiskritkan baik koordinat, spasial, maupun kecerahannya. Image digital dianggap matrik dengan ukuran M xN, di mana baris dan kolom menunjukkan titik-titiknya. Image berwarna menggunakan metode
RGB. Adapun masing-masing warna dalam tabel memiliki tiga buah kombinasi angka yaitu R, G, dan B, yang menentukan proporsi warna merah, hijau, dan biru. RGB masing-masing memiliki range antara 0 hingga 63, sehingga jumlah warna yang dapat dipilih untuk mengisi warna pada sebuah cell ditabel ialah 63x63x63 = 16.000.000 warna. Tetapi seluruh tabel hanya dapat diisi dengan 256 pilihan warna. 2.4
Computer Vision Computer vision didefinisikan sebagai salah satu cabang ilmu pengetahuan yang
mempelajari bagaimana komputer dapat mengenali objek yang diamati atau diobservasi dari suatu image (Fairhurst, 1988). Cabang ilmu ini bersama dengan artificial inteligence akan mampu menghasilkan visual inteligence system. Computer vision merupakan kombinasi antara pengolahan image dan pengenalan pola. 2.5
Object Detection Object Detection atau Pendeteksian Objek merupakan suatu teknologi komputer
yang berkaitan dengan computer vision dan image processing (pengolahan image), yang berhubungan dengan mendeteksi suatu objek dalam image digital. M etode yang digunakan untuk object detection pada perancangan program ini adalah metode Violajones. 2.6
Haar Classifier Haar Classifier merupakan pengklasifikasian fitur yang digunakan dalam metode
Viola-jones. Haar Classifier merupakan suatu metode yang membangun sebuah boosted rejection cascade, yang akan membuang data training negatif, sehingga didapat suatu keputusan untuk menentukan data positif. Haar Classifier merupakan metode supervised learning, yaitu membutuhkan data training untuk dapat mendeteksi objek-objek tertentu.
Untuk itu, Haar Classifier membutuhkan dua data set yaitu data positif dan data negatif, di mana data positif merupakan data yang berisikan objek yang akan dideteksi, dan data negatif merupakan data yang berisikan objek yang akan tidak dideteksi 2.7
Metode Viola-Jones Saat ini telah banyak berkembang aplikasi-aplikasi yang menggunakan fitur deteksi
objek. Deteksi objek dapat dilakukan dengan berbagai cara, salah satunya menggunakan metode viola-jones. M etode viola-jones merupakan algoritma pendeteksi objek yang terdapat dalam EmguCV, metode ini merupakan metode yang paling banyak digunakan untuk mendeteksi objek hal ini dikarenakan metode viola-jones memiliki algoritma yang efisien, sehingga tidak memerlukan waktu lama dalam melakukan proses pendeteksian objek. Proses pendeteksian objek dilakukan dengan mengklasifikasikan sebuah image setelah sebelumnya sebuah pengklasifikasi dibentuk dari data training. Terdapat empat kontribusi utama dalam teori viola-jones, diantaranya yaitu:
2.7.1
•
Fitur
•
Integral image
•
Adaptive Boosting atau AdaBoost
•
Kombinasi Classifier of Cascade
Fitur Fitur merupakan tahap paling awal yang diperlukan dalam pendeteksian objek
dengan menggunakan metode viola-jones. Penggunaan fitur dilakukan karena
pemrosesan fitur berlangsung lebih cepat dibandingkan pemrosesan image per pixel. Beradasarkan penelitian yang dilakukan oleh Arihutomo (2010) fitur yang digunakan oleh viola-jones berdasarkan pada Wavelat Haar. Wavelat Haar merupakan gelombang tunggal bujur sangkar yang mempunyai satu interval tinggi dan satu interval rendah. Yang kemudian di kembangkan untuk pendeteksian objek visual yang lebih yang dikenal dengan nama fitur Haar, atau fitur Haarlike.
Gambar 2.1 Fitur Haar (Lienhart, Kuranove, & Pisarevsky, 2002)
Pada gambar 2.1 dapat dilihat bahwa gambar 1(a) – 1(d) terdiri dari dua persegei, gambar 2(a) – 2(h) terdiri dari tiga persegi, gambar 3(a) dan 3(b) terdiri dari dua persegi dengan salah satu persegi terletak di dalam center persegi lain, dan gambar 4 terdiri dari empat persegi. Pada tahun 2001 Viola & Jones menggunakan fitur 1(a), 1(b), 2(a), 2(c), dan 4, namun pada penilitan yang dilakukan oleh Viola & Jones (2002) fitur tersebut dikembangkan menjadi 15 fitur, seperti gambar 2.1. Pada penelitian ini penulis
menggunakan 15 fitur tersebut karena dengan menggunakan 15 fitur hasil yang diperoleh lebih baik dari menggunakan 5 fitur. Berdasarkan penelitian yang dilakukan oleh Dzulkamain, et al. (2011) nilai dari fitur ini dapat dihitung dengan mengurangkan nilai pixel pada area hitam dengan pixel pada area putih. Untuk mempermudah proses penghitungan nilai fitur, algoritma viola-jones menggunakan sebuah media berupa integral image.
2.7.2
Integral Image Integral image merupakan tahap kedua yang dilakukan dalam metode viola-
jones. Integral Image adalah sebuah image yang nilai tiap pixel-nya merupakan akumulasi dari nilai pixel atas dan kirinya. Sebagai contoh, pixel (a,b) memiliki nilai akumulatif untuk semua pixel (x,y) di mana x ≤ a dan y ≤ b.
Gambar 2.2 Nilai dari integral image pada titik(x,y) adalah jumlah dari semua pixel dari atas sampai kiri menurut Viola & Jones (2011) Integral image pada lokasi x,y, berisikan jumlah pixel dari atas sampai kiri dari x,y, perhitungannya dapat dicari dengan menggunakan rumus berikut:
Keterangan: = integral image adalah original image Dengan menggunakan pasangan rumus berikut ini: (1) (2) Keterangan: = penjumlahan kumulatif baris
Sehingga integral image bisa dihitung dengan mengabaikan original image. Contoh perhitungan integral image dapat dilihat pada gambar2.3:
Gambar 2.3 Contoh perhitungan integral image
Gambar 2.4 Perhitungan integral image (Viola & Jones, 2001) Dapat dilihat pada gambar 2.4 berdasarkan penelitian yang dilakukan oleh Viola & Jones (2001) perhitungan jumlah dari pixel dalam persegi panjang D, dapat dihitung dengan empat referensi array. Nilai dari integral image pada lokasi 1, adalah penjumalahan dari pixel dalam persegi panjang A. Nilai pada lokasi 2 adalah A+B, nilai pada lokasi 3 adalah A+C, dan pada lokasi 4 adalah A+B+C+D. Penjumlahan dalam D bisa dihitung seperti 4+1-(2+3) Proses pencarian nilai fitur ini dilakukan secara iteratif mulai dari ujung kiri atas image hingga ujung kanan bawah dengan pergeseran sebesar ∆x dan ∆y. Semakin kecil nilai ∆x dan ∆y, maka semakin akurat pula proses deteksi. Nilai ∆x dan ∆y yang sering digunakan adalah satu.
2.7.3
Adaptive Boosting atau AdaBoost AdaBoost merupakan tahap ke-tiga dalam metode Viola-jones. Algoritma
AdaBoost berfungsi untuk melakukan pemilihan fitur-fitur dalam jumlah banyak, dengan hanya memilih fitur-fitur tertentu. Boosting merupakan meta-algoritma dalam machine learning untuk melakukan supervised learning. Teori boosting dikenalkan berdasarkan pertanyaan yang diajukan Freund & Schapire (2001) dapatkah sekumpulan weak learner menciptakan satu kesatuan strong learner? Weak learner adalah classifier yang hanya memiliki sedikit korelasi dengan klasifikasi yang sebenarnya, sementara strong learner adalah classifier yang memiliki korelasi kuat dengan klasifikasi yang sebenarnya (Andoko, 2007). Kebanyakan algoritma boosting mengikuti sebuah rancangan. Secara umum boosting terjadi dalam iterasi, secara incremental menambahkan weak learner ke dalam satu strong learner. Pada setiap iterasi, satu weak learner belajar dari suatu data latihan. Kemudian, weak learner itu ditambahkan ke dalam strong learner. Setelah weak learner ditambahkan, data-data kemudian diubah masing-masing bobotnya. Data-data yang mengalami kesalahan klasifikasi akan mengalami penambahan bobot, dan data-data yang terklasifikasi dengan benar akan mengalami pengurangan bobot. Oleh karena itu, weak learner pada iterasi selanjutnya akan lebih terfokus pada data-data yang mengalami kesalahan klasifikasi oleh weak learner yang sebelumnya (Andoko, 2007). AdaBoost, singkatan dari Adaptive Boosing, diformulasikan oleh Yoav Freund dan Robert Schapire pada tahun 1995, terbukti mampu menyelesaikan banyak permasalahan sulit yang dihadapi oleh algoritma boosting sebelumnya. AdaBoost berfungsi untuk mencari fitur-fitur yang memiliki tingkat pembeda yang tinggi. Hal ini
dilakukan dengan mengevaluasi setiap fitur terhadap data latih dengan menggunakan nilai dari fitur tersebut. Fitur yang memiliki batas terbesar antara objek dan non-objek dianggap sebagai fitur terbaik. Dari banyak variasi algoritma boosting, AdaBoost merupakan yang paling terkenal dan dalam sejarah perkembangannya, merupakan algoritma pertama yang dapat beradaptasi dengan weak learner M enurut
Viola
&
Jones
(2011)
salah
satu
metode
praktis
untuk
menyelesaikannya yaitu dengan membatasi weak learner ke set klasifikasi fungsi, yang masing-masing bergantung pada fitur tunggal. Untuk mendukung tujuan ini, algoritma pembelajaran yang lemah dirancang untuk memilih fitur persegi panjang tunggal, di mana persegi panjang tunggal merupakan yang terbaik untuk memisahkan contoh positif dan negatif. Untuk masing-masing fitur weak learner menentukan ambang batas klasifikasi fungsi yang optimal, sehingga jumlah minimum kesalahan sebuah pengklasifikasian yang lemah kesamaan
terdiri dari fitur
, sebuah threshold
dan
menunjukkan arah dari ketidaksetaraan tanda: 1 0
di mana 2.7.4
adalah sebuah 24x24 pixel sub-window dari sebuah gambar.
Kombinasi Cascade of Classifier Kombinasi Cascade of Classifier merupakan tahap terakhir dalam metode Viola-
jones. Dengan mengkombinasikan pengklasifikasian dalam sebuah struktur cascade atau Cascade of Classifier, kecepatan dari proses pendeteksian dapat meningkat, yaitu
dengan cara memusatkan perhatian pada daerah-daerah dalam image yang berpeluang saja. Hal ini dilakukan untuk menentukan di mana letak objek yang dicari pada suatu image. Karakteristik dari algoritma Viola-jones adalah adanya klasifikasi bertingkat. Klasifikasi pada algoritmna ini terdiri dari tiga tingkatan di mana tiap tingkatan mengeluarkan subimage yang diyakini bukan objek. Hal ini dilakukan karena lebih mudah untuk menilai subimage tersebut bukan objek yang ingin dideteksi ketimbang menilai apakah subimage tersebut merupakan objek yang ingin dideteksi (Dzulkamain, et al. 2011). Di bawah ini adalah alur kerja dari klasifikasi bertingkat.
Gambar 2.5 Alur kerja klasifikasi bertingkat (Dzulkamain, et al. 2011) Pada klasifikasi tingkat pertama, tiap subimage akan diklasifikasi menggunakan satu fitur. Klasifikasi ini kira-kira akan menyisakan 50% subimage untuk diklasifikasi di tahap kedua. Seiring dengan bertambahnya tingkatan klasifikasi, maka diperlukan syarat yang lebih spesifik sehingga fitur yang digunakan menjadi lebih banyak. Jumlah subimage yang lolos klasifikasi pun akan berkurang hingga mencapai jumlah sekitar 2% (Dzulkamain, et al. 2011). Struktur cascade mencerminkan fakta bahwa dalam setiap gambar tunggal, mayoritas dari sub-window negatif. Dengan demikian, cascade berguna untuk menolak negatif sebanyak mungkin dan secepat mungkin di level yang memungkinkan.
Sementara contoh positif akan memicu evaluasi setiap classifier pada cascade (Viola & Jones, 2001). Sama menggunakan
seperti
pohon
contoh-contoh
keputusan, yang
pengklasifikasian
melewati
semua
selanjutnya tahap
dilatih
sebelumnya.
Akibatnya,classifier kedua menghadapi tugas yang lebih sulit dari yang pertama, dan begitu selanjutnya, classifiers yang lebih dalam memiliki korespondensi terhadap tingkat positif salah yang lebih tinggi. Untuk itu dibutuhkan suatu rumus untuk menghitung tingkat positif yang salah dari suatu cascade classifier, menurut penelitian yang telah dilakukan oleh Viola & Jones (2011) rumus untuk menghitung hal tersebut adalah: , Di mana: = tingkat positif yang salah dari cascaded classifier = jumlah classifier = adalah kesalahan tingkat positif dari classifier ke . Sedangkan rumus untuk menghitung tingkat deteksi adalah: , Di mana: = tingkat deteksi dari cascaded classifier = jumlah classifier = tingkat deteksi dari classifier ke Pemberian sub-window akan berlangsung turun melalui cascade, dari satu classifier pada suatu waktu, sampai diputuskan bahwa window tersebut negatif,
sedangkan window yang berhasil dalam masing-masing tes akan diberi label positif. M enurut Viola & Jones (2011) dibutuhkan suatu rumus untuk menghitung jumlah yang diharapkan dari fitur yang dievaluasi, yaitu:
di mana: = jumlah yang diharapkan dari fitur yang dievaluasi, = jumlah classifiers, = tingkat positif dari classifier ke , = jumlah fitur dalam classifier ke . Pembelajaran prosedur AdaBoost yang disajikan dalam bagian ini, berfungsi untuk meminimalkan kesalahan, dan tidak secara khusus dirancang untuk mencapai deteksi tingkat tinggi dengan mengorbankan besar tingkat kesalahan positif. Skema untuk perkiraan dari kesalahan ini adalah untuk menyesuaikan treshold dari perceptron yang di produksi oleh AdaBoost. M enurut Viola & Jones (2001) tresholds yang lebih tinggi menghasilkan classifiers dengan tingkat kesalahan positif yang lebih sedikit, dan tingkat deteksi yang lebih rendah. Sedangkan kebalikannya tresholds yang lebih rendah menghasilkan classifiers dengan tingkat kesalahan positif yang lebih tinggi M enurut Viola & Jones (2011) dari analisa di atas dapat di ambil kesimpulan, bahwa terdapat tiga faktor yang mempengaruh kecepatan dan tingkat akurasi dalam pendeteksian, faktor-faktor tersebut antara lain : 1. Jumlah dari tahapan classifier. 2. Jumlah dari feature
untuk setiap tahapan.
3. Treshold dari setiap tahapan. 2.8
EmguCV EmguCV berperan untuk menjembatani C# dan OpenCV, EmguCV adalah
warpper.Net untuk OpenCV. Dengan EmguCV, fungsi-fungsi dalam OpenCV bisa dipanggil melalui bahasa pemograman yang compatible dengan .NET seperti C#, VN, dan VC++. Keuntungan menggunakan EmguCV yang paling utama adalah library ini sepenuhnya ditulis dengan C#, yang mana tentunya lebih safe karena pembuatan objek ataupun reference di-manage oleh garbage collector. EmguCV memiliki dua layer, yaitu basic layer dan second layer. Basic layer mengandung fungsi, struktur, dan enumerasi yang secara langsung merefleksikan apa yang ada di OpenCV. Dengan adanya layer inilah fungsi-fungsi pada OpenCV dapat dipanggil dengan bahasa pemograman C#. Sedangkan second layer mengandung kelas-kelas yang memanfaatkan keunggulan teknologi .NET. Dalam skripsi ini penulis menggunakan versi terbaru EmguCV yaitu versi 2.3.0, yang mengikuti versi OpenCV yang sama yaitu 2.3.0. Fiturfitur pada EmguCV yang digunakan dalam skripsi ini yaitu fungsi untuk mendeteksi objek, dan juga beberapa haarcascade yang telah disediakan oleh EmguCV, untuk mendeteksi objek yang diinginkan. 2.9
Perancangan S oftware Di era informasi, jutaan software telah beredera di dunia, dan jutaan lainnya sedang
dalam pengembangan. M asing-masing pengembang, memiliki metode masing-masing dalam membuat software-nya, dan masing-masing metode memiliki dampak secara langsung maupun tidak langsung terhadap proses pengembangan software itu sendiri. Proses tersebut dinamakan rekayasa piranti lunak atau software enginering. Beberapa
definisi yang diberikan Pressman (2005) mengenai rekayasa piranti lunak tercantum di bawah:
Penggunaan
dan
pemanfaatan
prinsip-prinsip
teknik,
dalam upaya untuk
memperoleh software yang ekonomis namun dapat diandalkan dan bekerja secara efisien pada mesin nyata.
Pendekatan secara sistematis, disiplin, dan bertanggung jawab atas proses pengembangan, operasi, dan pemeliharaan dari sebuah software. Langkah-langkah yang perlu dilakukan dalam mengembangkan software, beserta
dengan prinsip-prinsip tekniknya tertuang dalam topik system development life cycle. 2.9.1
S ystem Development Life Cycle System Development Life Cycle (SDLC) adalah sekumpulan langkah-langkah,
prosedur, dan dokumen secara spesifik yang membimbing suatu proyek melalui pengembangan secara teknis. Fase-fase yang baisa terdapat dalam SDLC antara lain: initiation phase, planning phase, fucntional design phase, system design phase, development phase, integration and testing phase, installation and acceptance phase, dan maintenance phase. Dalam penerapannya, banyak model telah dibuat untuk mendukung SDLC, yaitu:waterfall, fountain, spiral build and fix, rapid prototyping, incremental, synchronize and stabilize. M etode yang paling awal dikembangkan, dan yang paling terkenal adalah waterfall. M odel ini disebut waterfall karena tahap demi tahap yang akan dilalui harus menunggu tahap sebelumnya selesai. Terdapat beberapa tahapan pada model waterfall. Berikut penjelasan dari tahapan-tahapan yang dilakukan dalam model ini beradasarkan Pressman (2005) :
•
Analisis Kebutuhan & Definisi: Tahap ini merupakan tahap pertama dari model waterfall. Pada tahap ini programer menganalisa program seperti apakah yang dibutuhkan oleh user yang nantinya akan menggunakn program ini
•
Sistem & Software Design Pada tahap ini programer merancang sistem dan software yang hendak dibuat. Hal ini dilakukan agar programer dapat menentukan hardware yang dibutuhkan, dan juga dapat membantu programer dalam menentukan aristektur sistem secara keseluruhan.
•
Pengkodean: Pada tahap ini programer membuat code dari program yang hendak di buat, menggunakan bahasa pemograman yang disesuaikan dengan kebutuhan. pekerjaan di bagi dalam beberapa modul atau unit. Sistem pertama kali dibuat dalam programprogram kecil yang disebut unit, yang akan terintegrasi pada tahap selanjutnya.
•
Integrasi & Pengujian Sistem Seperti disebutkan di atas, sistem ini pertama dibagi dalam unit yang dikembangkan dan diuji untuk fungsi mereka. Unit ini diintegrasikan ke dalam sistem yang lengkap selama fase Integrasi dan diuji untuk memeriksa apakah semua modul atau unit terkoordinasi antara satu sama lain dan sistem secara keseluruhan berperilaku sesuai spesifikasi. Setelah berhasil pengujian perangkat lunak, itu disampaikan kepada pelanggan.
•
Operasi & Pemeliharaan Tahap ini merupakan fase yang sangat panjang dari model waterfall. Hal ini dikarenakan umumnya masalah dengan sistem yang dikembangkan muncul secara perlahan dari waktu ke waktu setelah sistem digunkan oleh user, dan proses perbaikan sistem ini memerlukan waktu yang cukup lama, karena masalah yang ada tidak muncul sekaligus. Oleh karena itu proses ini disebut sebagai Pemeliharaan.
Gambar 2.6 M odel waterfall (Pressman, 2005) Dalam mengikuti model waterfall, pengembang software memulai SDLC dari tahap satu ke tahap yang lain murni secara berurutan. Oleh karena itu model waterfall menjaga agar proses pengembangan software bergerak ke tahap berikutnya hanya apabila tahap-tahap sebelumnya telah diselsaikan secara sempurna. Tahapan-tahapan itu pun harus diselsaikan secara berurutan, tidak boleh melompati urutan tahapan yang ada.