Tahapan Deteksi Tahap Pembangunan Aplikasi

Gambar 3.5 Proses pada Tahap Deteksi Load File Training Haar Cascade Output dari tahap sebelumnya yang merupakan citra grayscale yang diambil dari webcam. Citra tersebut masih berisi informasi lingkungan dan wajah, sehingga diperlukan sebuah metode untuk mengambil citra wajah dari citra webcam yang telah diproses sebelumnya. Metode yang digunakan pada aplikasi ini adalah metode haar cascade classifier sebagai metode untuk pengenalan pola wajah. Library EmguCV telah menyediakan sebuah class untuk mendeteksi objek melalui citra. Class ini bernama HaarCascade, dimana class ini berfungsi untuk mendeteksi objek, baik itu wajah maupun benda lainnya. Class Haar Cascade memerlukan sebuah file data training untuk deteksi wajah. File ini telah disediakan oleh library EmguCV bernama haarcascade.frontalface_default.xml digunakan sebagai media training haar cascade classifer dimana pengembang aplikasi tidak perlu melakukan kembali training untuk mendeteksi wajah manusia. File training haarcascade.frontalface_default.xml adalah file training bawaan default. Proses pemanggilan file pada Library Emgu CV ini adalah sebagai berikut : Private HaarCascade haarCascade = new HaarCascade haarcascade_frontalface_default.xml; Berikut ini adalah isi dari file training haarcascade.frontalface_default.xml : opencv_storage haarcascade_frontalface_default type_id=opencv-haar-classifier size20 20size stages _ -- stage 0 -- trees _ -- tree 0 -- _ -- root node -- feature rects _3 7 14 4 -1._ _3 9 14 2 2._rects tilted0tiltedfeature threshold4.0141958743333817e-003threshold left_val0.0337941907346249left_val right_val0.8378106951713562right_val__ _ -- tree 1 -- _ -- root node -- feature rects _1 2 18 4 -1._ _7 2 6 4 3._rects tilted0tiltedfeature threshold0.0151513395830989threshold left_val0.1514132022857666left_val right_val0.7488812208175659right_val__ _ -- tree 2 -- ... stage_threshold0.8226894140243530stage_threshold parent-1parent next-1next_ _ -- stage 1 -- ... -- stage 21 -- trees _ -- tree 0 -- … -- tree 212 -- stage_threshold105.7611007690429700stage_threshold parent20parent next-1next_stageshaarcascade_frontalface_default opencv_storage Training memiliki isi yang berbeda baik dari segi jumlah stage, jumlah tree, model segi empat dari fitur rectangle maupun nilai treshold nya. Stage melambangkan banyaknya tingkatan dalam cascade of classifier, dalam training ini digunakan 22 tingkatan stage 0 sampai stage 21. Tingkatan ini digunakan untuk mengurangi jumlah sub window citra yang perlu diperiksa. Di tingkatan pertama dilakukan pengklasifikasian terhadap seluruh sub window citra, lalu di tingkatan kedua dilakukan pengklasifikasian terhadap sub window yang berasal dari hasil pengklarifikasian tingkatan pertama. Maka semakin tinggi tingkatanya semakin sedikit jumlah sub window yang harus diperiksa. Di tiap tingkatan terdiri dari beberapa tree, biasanya semakin tinggi tingkatan maka tree yang terdapat didalamnya pun semakin banyak. Pada stage 0 terdapat 2 tree dan pada stage 21 terdapat 212 tree. Pencarian Fitur Wajah Setelah file training dipanggil, training dilakukan terlebih dahulu untuk mendapatkan suatu pohon keputusan dengan nama cascade classifier sebagai penentu apakah ada obyek atau tidak dalam tiap frame yang di proses. Pencarian posisi wajah dilakukan dengan cara 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 wajah dan bukan wajah dianggap sebagai fitur terbaik. Contoh dari pencarian fitur wajah dapat dilihat pada Gambar 3.6. Gambar 3.6 Contoh pencarian fitur wajah dengan haar cascade Haar-like feature mempunyai sifat learner dan classifier yang lemah. Jika ingin mendapatkan hasil yang lebih akurat maka harus dilakukan proses haar-like feature secara massal, semakin banyak proses haar-like feature yang dilakukan maka akan semakin akurat hasil yang dicapai. Oleh karena itu pemrosesan haar- like feature yang banyak terebut diorganisir di dalam cascade classifier. Pada Gambar 3.7 adalah alur kerja dari klasifikasi bertingkat. Gambar 3.7 Proses Cascade Classifier Pada klasifikasi filter pertama, tiap subcitra akan diklasifikasi menggunakan satu fitur. Jika hasil nilai fitur dari filter tidak memenuhi kriteria yang diinginkan, hasil ditolak. Algoritma kemudian bergerak ke sub window selanjutnya dan menghitung nilai fitur kembali. Jika didapat hasil sesuai dengan threshold yang diinginkan, maka dilanjutkan ke tahap filter selanjutnya. Hingga jumlah sub window yang lolos klasifikasi pun akan berkurang hingga mendekati citra yang ada pada sampel. Seperti pada Gambar 3.7, dapat dijelaskan secara keseluruhan proses cascade classifier-nya sebagai berikut : 1. Filter pertama first classifier  1 fitur  Detection rate : 100, false positive rate : 50 2. Filter kedua second classifier  5 fitur  Detection rate : 100, false positive rate : 80 3. Filter ketiga dan keempat third and fourth classifiers  20 fitur Pencarian fitur wajah sendiri dalam library EmguCV telah dideklarasi dalam class HaarCascade. Fungsi pencarian fitur wajah dalam Class HaarCascade dari library EmguCV adalah sebagai berikut: public DetectHaarCascade imagegray , haarCascade, scaleFactor , minNeighbors , HAAR_DETECTION_TYPE, minSize, maxSize Fungsi DetectHaarCascade akan memberikan nilai balikan berupa array citra. yaitu array khusus pada library EmguCV untuk menyimpan array hasil deteksi objek. imagegray merupakan citra grayscale yang akan dideteksi, dimana citra ini adalah citra hasil dari proses tahap kamera. haarCascade adalah file training yang telah dipanggil pada tahap sebelumnya untuk menguji deteksi wajah. ScaleFactor adalah faktor skala ketika pencarian fitur wajah, dimana jika slaka diisi 1.1 maka akan membuat skala windows lebih besar sebesar 10. minNeighbors adalah jumlah minimum minus 1 dari persegi tetangga yang membentuk sebuah objek. minSize dan maxSize adalah ukuran minimum dan maksimum dari ukuran aplikasi windows. HAAR_DETECTION_TYPE adalah tipe-tipe dari pendeteksi Haar Cascade, dimana tipe-tipe tersebut adalah sebagai berikut : 1. DEFAULT Jenis default di mana tidak ada optimasi dilakukan. Biasanya digunakan ketika mendeteksi objek. 2. DO_CANNY_PRUNING Jika menggunakan tipe ini, fungsi deteksi akan menggunakan detektor tepi Canny untuk menolak beberapa daerah gambar yang mengandung terlalu sedikit atau terlalu banyak tepi atau objek yang bukan dicari. Nilai ambang batas tertentu akan disetel untuk deteksi wajah dan dalam hal ini mempercepat pemangkasan sampai pengolahan citra. 3. SCALE_IMAGE Untuk setiap faktor skala yang digunakan pada fungsi akan diturunkan skala gambarnya daripada melakukan zoom fitur koordinat pada cascade classifier. 4. FIND_BIGGEST_OBJECT Fungsi ini untuk mencari objek terbesar dalam sebuah citra yang dideteksi. 5. DO_ROUGH_SEARCH Fungsi ini akan aktif ketika fungsi FIND_BIGGEST_OBJECT dipanggil, sehingga fungsi tidak akan mencari hasil deteksi dari ukuran yang lebih kecil segera setelah menemukan objek yang lebih besar pada skala tertentu. DO_CANNY_PRUNING merupakan salah satu tipe pendeteksi Haar Cascade, dimana tipe ini menggunakan algoritma deteksi tepi Canny. Detektor tepi Canny adalah operator deteksi tepi yang menggunakan algoritma multi-tahap untuk mendeteksi berbagai macam tepi dalam gambar. Ini dikembangkan oleh John F. Canny pada tahun 1986. Operator Canny merupakan pendeteksi tepi hasil pengembangan pendekatan gradien. Dalam algoritma Canny, deteksi tepi ditemukan dengan melihat maksimum lokal pada gradien citra. Gradien dihitung dengan menggunakan turunan dari filter Gaussian. Dalam algoritma ini digunakan dua nilai threshold ambang, untuk mendeteksi tepi yang kuat dan tepi yang lemah dan memasukkan tepi yang lemah dalam output hanya jika terhubung pada tepi yang kuat. Penjelasan algoritma deteksi tepi Canny adalah sebagai berikut : 1. Penghalusan citra dengan filter Gaussian 2. Menghitung besar dan arah gradien untuk turunan parsial 3. Memakai nonmakisma suppression untuk besar gradien 4. Menggunakan double thresholding untuk mendeteksi dan menghubungkan sisi dari deteksi tepi 5. Melacak tepi dengan hysteresis: Finalisasi deteksi tepi dengan menekan semua tepi lain yang lemah dan tidak terhubung ke tepi yang kuat Algoritma Canny bertujuan untuk memenuhi tiga kriteria utama: 1. Low error rate: deteksi yang baik hanya wujud tepi yang ada 2. Good localization : jarak antara tepi piksel terdeteksi dan tepi piksel nyata harus diminimalkan 3. Minimal response: satu detektor respons per tepi Pada library EmguCV, algortima deteksi tepi Canny ini digunakan sebagai tipe deteksi Haar Cascade untuk membuang sejumlah tepi gambar yang bukan merupakan tepi dari lingkar wajah. Ini membuat pencarian fitur wajah menjadi jauh lebih cepat sehingga wajah akan terdeteksi tanpa harus melakukan pencarian secara menyeluruh terhadap gambar hasil capture dari webcam. Algortima Canny menggunakan citra grayscale sebagai citra masukan untuk mendeteksi tepi dari citra. Algoritma Canny yang digunakan pada EmguCV merupakan salah satu algortima yang diturunkan dari OpenCV. Pada library OpenCV, algoritma Canny yang digunakan disebut Canny Edge Detection. Pemberian Kotak Wajah Terdeteksi Pada tahapan ini, class Haar Cascade pada library EmguCV yang telah menghasilkan pola wajah diposisikan pada citra asli secara real-time melalui webcam. Hasil deteksi wajah yang telah dilakukan pada proses sebelumnya akan ditampilkan pada citra real-time dengan menampilkan sebuah kotak dimana posisi kotak tersebut adalah hasil deteksi lokasi wajah setelah dilakukan pencarian citra wajah pada tahap sebelumnya. Fungsi DetectHaarCascade yang pada proses sebelumnya menghasilkan citra array citra akan disimpan ke dalam citra array lain, dimana array citra ini selanjutnya akan dibuat sebuah kotak ke frame-frame hasil citra dari webcam. Fungsi untuk membuat kotak pada wajah yang telah dideteksi adalah sebagai berikut : foreach array face in DetectHaarCascade { frame.Drawface.rect, Color, thickness; } Array face adalah array citra khusus pada library EmguCV untuk menyimpan array hasil deteksi objek. DetectHaarCascade adalah fungsi pencarian wajah dari tahap sebelumnya. Fungsi Draw adalah fungsi turunan dari frame yang telah dipanggil pada tahap kamera, fungsi ini akan menggambar kotak pada citra dari webcam. Fungsi Draw sendiri terdiri dari face.rect, dimana array citra face menghasilkan fungsi rectangle untuk menggambar sebuah kotak untuk objek yang berhasil terdeteksi, Color sebagai warna kotak, dan thickness sebagai ketebalan garis kotak. Pada fungsi tersebut, setiap kali frame video dari webcam dideteksi sebagai wajah, maka kotak hasil deteksi akan muncul. Hasil pada proses ini dapat dilihat pada Gambar 3.8. Gambar 3.8 Hasil deteksi wajah Estimasi Lokasi dan Posisi Wajah Pada proses ini aplikasi akan mengestimasi lokasi dan juga posisi dari wajah berdasarkan lokasi hasil deteksi wajah dari proses sebelumnya. Lokasi wajah ditentukan dari nilai vector x, vector y, panjang dan lebar dari kotak deteksi wajah. Berikut fungsi dari penentuan lokasi kotak deteksi wajah : foreach array face in DetectHaarCascade { frame.Drawface.rect, White, 2; int X = face.rect.X; int Y = face.rect.Y; int height = face.rect.Height; int width = face.rect.Width; } Nilai dari setiap vector tersebut dikalkulasi menjadi nilai tengah dimana nilai tengah tersebut akan menjadi posisi dari objek 3 dimensi yang akan dimunculkan. Berikut adalah fungsi nilai tengah dari vector-vector tersebut : Point center = new PointX + height 2,Y + width 2;

3.4.3. Tahap Augmented

Tahapan ini merupakan tahapan terakhir dalam algoritma dimana pada tahapan ini aplikasi akan melihat apakah marker wajah berhasil ditemukan atau tidak, apabila wajah berhasil dideteksi maka aplikasi akan memunculkan objek 3 dimensi berdasarkan lokasi wajah. Proses-proses yang ada dalam tahap ini dapat dilihat pada gambar 3.9. Gambar 3.9 Proses dalam Tahapan Augmented Deteksi Marker Wajah