BAB 3 ANALISIS DAN PERANCANGAN PROGRAM 3.1 Perancangan Program Aplikasi 3.1.1 Analisis dan Gambaran Umum Program Aplikasi Nama program yang hendak di kembangkan adalah Pendeteksian Bagian Tubuh Manusia. Berdasarkan pencarian berita yang penulis lakukan melalui media internet ternyata dampak dari pornografi dapat memberikan efek yang tidak baik untuk psikologis seseorang. Oleh sebab itu penulis bertujuan melakukan perancangan program ini untuk melakukan simulasi proses pembelajaran dan pendeteksian bagian-bagian tubuh manusia dari sembarang image digital, sebagai simulasi dari program filter pornografi. Secara umum, aplikasi terdiri dari pendeteksian dari file gambar yang tidak bergerak. Format yang didukung oleh program ini untuk file gambar tidak bergerak antara lain: bitmap (bmp), jpeg, dan jpg 3.1.2 Software Design Program yang dikembangkan memiliki satu form utama. di mana didalam form utama tersebut terdapat suatu combo box yang didalamnya berisikan pilihan bagian tubuh manusia yang ingin dideteksi. Proses deteksi menggunakan cascade classifier, yang akan dijalankan pada image digital yang telah dipilih kemudian bagian-bagian tubuh yang terdeteksi akan ditandai dan disensor dengan kotak berwarna abu-abu.
3.1.3 Spesifikasi Algoritma Dalam program ini terdapat beberapa algoritma yang diterapkan yaitu algoritma gentle adaboost dan algoritma training cascade of classifier. Berikut algoritma Gentle AdaBoost : Diberikan contoh gambar,, di mana, 1,1 untuk masing contoh negatif dan positif. inisialisasi bobot 1, 1,, Ulangi For 1,, 1. Isi regresi fungsi dengan bobot kuadrat terkecil dari sampai dengan bobot 2. Set.exp., 1,,. dan menormalisasi kembali berat, sehingga 1 Output dari Classifier Dan berikut algoritma training cascade of classifier : Pengguna memilih nilai untuk, nilai maksimum yang dapat diterima per tahap, dan, sebagai nilai minim yang dapat diterima untuk deteksi per tahap. Pengguna memilih target keseluruhan dari tingkat kesalahan positif, sebagai contoh positif sebagai contoh negative tingkat positif awal yang salah dari cascade classifier tingkat deteksi awal dari cascade classifier
1,0; 1,0 0 while o 1 o 0; o while 1 Gunakan dan untuk melatih sebuah classifier dengan features menggunakan AdaBoost Kurangi threshold untuk classifier ke sampai cascaded classifier yang sedang berjalan memili tingkat deteksi minimal o o jika maka evaluasi cascaded yang sedang berjalan saat ini pada set gambar non-wajah, dan menempatkan setiap deteksi kesalahan kedalam.
3.1.4 Use-Case Diagram Program ini memiliki sebuah form utama di mana di dalamnya terdapat combobox yang berisikan bagian-bagian tubuh manusia yang ingin dideteksi. Gambar 3.1 Use-Case Diagram Program Pendeteksian Tubuh Manusia
3.1.5 Flowchart Diagram Flowchart diagram berikut ini akan menjelaskan alur pada program ini Gambar 3.2 Flowchart Diagram Program Aplikasi Pendeteksian Tubuh Manusia
3.2 Perancangan Modul 3.2.1 Perancangan Menu Program terdiri dari satu form utama. Form ini terdiri 1 buah tombol browse yang berfungsi untuk memilih image yang akan dideteksi, 1 buah label yang akan menampilkan nama file atau alamat image, 1 buah combo box yang berisikan jenis-jenis deteksi yang dinginkan, dan 1 buah tombol detect untuk memanggil fungsi deteksi. Gambar 3.3 Rancangan Program 3.3 Haar Training Dalam proses pembuatan program aplikasi pendeteksian tubuh manusia ini, penulis melakukan proses haar training dengan menggunakan sejumlah data training yang digunakan untuk membuat haarcascade tangan. Hal ini dikarenakan haarcascade untuk bagian tubuh tersebut belum tersedia di EmguCV. Cara pembuatan haarcascade adalah sebagai berikut:
a. Persiapan DataSet Dataset terdiri dari 2 buah sample. Sample positif adalah gambar yang mengandung objek yang akan dideteksi. Dalam hal ini tangan. Sample negatif adalah gambar yang tidak mengandung objek yang akan dideteksi. Seperti gambar pegunungan, mobil, dan sebagainya. Masukkan sample positif pada satu direktori, misalnya Desktop/positiveSample/rawdata. Sedangkan sample negatif, dimasukkan pada Desktop/negativeSample. Sample paling minimal sepuluh buah untuk satu objek dalam berbagai pose. Catatan: file gambar untuk sample positif harus file bmp. b. Membuat infofile.txt untuk Sample Negative Infofile.txt berisi daftar nama dari gambar gambar yan terdapat dalam folder negativesample, hal in bisa di tulis secara manual dengan menggunakan notepad atau dapat dilakukan dengan menggunakan create_list.bat yang bisa di download melalui media internet. Letakkan infofile.txt didalam folder negativesample c. Membuat info.txt untuk Sample Positive Tahap selanjutnya yaitu membuat info.txt untuk sample positive. Hal ini dilakukan dengan menggunakan program objectmarker.exe (program dapat didownload melalui internet), di mana ketika program dijalankan, maka akan muncul gambar satu persatu dari folder positivesample, kemudian tandai objek yang ingin dideteksi dari gambar tersebut dengan menggerakkan kursor mouse membentuk sebuah box persegi panjang, seperti gambar 3.4
Gambar 3.4 Pembuatan info.txt dengan objectmarker Kemudian tekan spasi untuk menambahkan objek tersbut, dan tekan enter untuk melanjutkan ke gambar berikutnya. Jika berhasil maka didalam folder positivesample akan diperoleh info.txt yang berisikan data gambar. Dalam satu gambar bisa dibuat duat atau lebih persegi, apabila dalam gambar tersebut tedapat objek yang ingin dideteksi lebih dari satu objek
d. Membuat file vector.vec dari Sample Positive Selanjutnya untuk mengubah objek gambar ke file.vec digunakan tool opencv_createsamples.exe, tools ini terdapat didalam direktori bin pada opencv. Tool ini harus dijalankan melalui perintah dos seperti gambar berikut Gambar 3.5 Menjalankan opencv_createsamples.exe dari dos command Keterangan parameter tersebut dapat dilihat pada tabel 3.1 Tabel 3.1 Keterangan Parameter dari Createsamples.exe Parameter info <collection of filename> num <number of samples> w <sample_width> h <sample_height> vec <vec_file_name> Explanation Lokasi tempat image berada Jumlah positive image yang di training Panjang dari image Lebar dari image Binary file yang menampung hasil olahan data positive image
Maka bila hal ini telah berhasil dijalankan maka akan muncul pada folder data, file yang bernama vector.vec e. Memulai HaarTraining Tahap selanjutnya yang merupakan tahap terakhir, setelah memiliki vector.vec sekarang kita akan memulai haartraining dengan menggunakan tools opencv_haartraining.exe. Sama halnya dengan opencv_createsamples.exe, tools ini juga terdapat pada direktori bin opencv, dan tools ini juga harus dijlankan melalui dos command seperti gambar berikut: Gambar 3.6 Menjalankan opencv_haartraining.exe dengan dos command
Keterangan parameter tersebut dapat dilihat pada tabel 3.2 Tabel 3.2 Keterangan parameter Parameter Explanation data <dir_name> Tempat folder cascade of classifier akan disimpan voo <voo_filename> bg <background_filename> Infomasi nama image Mengandung informasi negative image nneg <number_negative_samples> Menunjukkan banyaknya jumlah negative image npos<number_positive_samples> Menunjukkan banyaknya jumlah positive image men <memory_in_mb> Banyaknya memori yang dipakai selama proses pembuatan cascade of classifier Nonsym Untuk memastikan datanya bukan simterik mode ALL Untuk memastikan parameter yang tidak ditulis dalam kondisi default w <sample_width> Tinggi dan lebar image h <sample_height>
Selama proses pembuatan berlangsung maka akan muncul pada dos command seperti gambar berikut Gambar 3.1 Pembuatan haarcascade lalu pada folder Desktop/data/cascade maka akan muncul folder mulai dari 0 sampai N. dan pada folder Desktop/data terdapat file cascade.xml, di mana file tersebut merupakan haarcascade hasil dari haartraining yang di lakukan. 3.4 Data Training Data training dalam program aplikasi ini dibutuhkan untuk melakukan haar training guna membuat haarcascade untuk tangan. Data training yang berupa image ini dibagi menjadi dua yaitu: 1. Sample image positif. 2. Sample image negatif
Untuk data training sample image positif penulis mengumpulkannya secara manual dengan memfoto objek menggunakan kamera handphone blackberry 9760 5 mega pixel, dengan jarak 20-30 cm, dan cahaya 250 lux. Sample image positif yang penulis kumpulkan sebanyak 100 sample. Sedangkan untuk sample image negatif diambil melalui google.com sebanyak 200 sample. 3.5 Spesifikasi Program Berikut ini akan dijelaskan cara kerja program menggunakan pseudocode. Penjelasan akan dibagi berdasarkan jenis deteksi yang dipilih. 3.5.1 Perancangan Spesifikasi Proses Upper Body Detection Berikut ini merupakan pseudocode untuk Upper Body Detection: IF input_image NOT Chosen Then Show ERROR_MESSAGE ELSE SHOW input_image ON canvas END IF DO UPPER_BODY_DETECTION ON input_image FOR EACH result READ upper_body_position IN result DRAW RECTANGLE ON canvas AT upper_body_position END FOR 3.5.2 Perancangan Spesifikasi Proses Face Detection Berikut ini merupakan pseudocode untuk Face Detection: IF input_image NOT Chosen Then
Show ERROR_MESSAGE ELSE SHOW input_image ON canvas END IF DO FACE_DETECTION ON input_image FOR EACH result READ face_position IN result DRAW RECTANGLE ON canvas AT face_position END FOR 3.5.3 Perancangan Spesifikasi Proses Eye Detection Berikut ini merupakan pseudocode untuk Eye Detection: IF input_image NOT Chosen Then Show ERROR_MESSAGE ELSE SHOW input_image ON canvas END IF DO EYE_DETECTION ON input_image FOR EACH result READ eye_position IN result DRAW RECTANGLE ON canvas AT eye_position END FOR 3.5.4 Perancangan Spesifikasi Proses Nose Detection Berikut ini merupakan pseudocode untuk Nose Detection:
IF input_image NOT Chosen Then Show ERROR_MESSAGE ELSE SHOW input_image ON canvas END IF DO NOSE_DETECTION ON input_image FOR EACH result READ nose_position IN result DRAW RECTANGLE ON canvas AT nose_position END FOR 3.5.5 Perancangan Spesifikasi Proses Right Ear Detection Berikut ini merupakan pseudocode untuk Right Ear Detection: IF input_image NOT Chosen Then Show ERROR_MESSAGE ELSE SHOW input_image ON canvas END IF DO RIGHT_EAR_DETECTION ON input_image FOR EACH result READ rigt_ear_position IN result DRAW RECTANGLE ON canvas AT right_ear_position END FOR 3.5.6 Perancangan Spesifikasi Proses Left Ear Detection Berikut ini merupakan pseudocode untuk Left Ear Detection:
IF input_image NOT Chosen Then Show ERROR_MESSAGE ELSE SHOW input_image ON canvas END IF DO LEFT_EAR_DETECTION ON input_image FOR EACH result READ left_ear_position IN result DRAW RECTANGLE ON canvas AT left_ear_position END FOR 3.5.7 Perancangan Spesifikasi Proses Hand Detection Berikut ini merupakan pseudocode untuk Upper Body Detection: IF input_image NOT Chosen Then Show ERROR_MESSAGE ELSE SHOW input_image ON canvas END IF DO HAND_DETECTION ON input_image FOR EACH result READ hand_position IN result DRAW RECTANGLE ON canvas AT hand_position END FOR
3.6 Data Testing Dalam pengambilan data testing untuk program aplikasi ini perlu di perhatikan beberapa hal meliputi: Pencahayaan Jarak Pengambilan gambar Kualitas kamera Penulis menggunakan sepuluh orang yang di foto menggunakan kamera handphone blackberry bold 9760 dengan kualitas 5mega pixel, dalam ruangan dengan cahaya yang terangnya 250 lux, jarak 10-30 cm untuk wajah, mata, hidung, telinga kiri&kanan, tangan dan jarak 100 cm untuk tubuh bagian atas. Hal ini dilakukan agar dapat menangkap objek yang akan dideteksi dengan cukup jelas.