• Tidak ada hasil yang ditemukan

BAB III PERANCANGAN SISTEM

3.3. Perancangan Perangkat Lunak

3.3.3. Pengenalan Wajah

Sub bab ini membahas bagaimana proses pengenalan wajah yang dilakukan namun tidak secara mendetail. Secara tidak langsung algoritma untuk pengenalan wajah yang dilakukan mengacu pada flowchart pengenalan wajah gambar 3.6

#Setting GPIO

GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(14, GPIO.OUT) GPIO.setup(18, GPIO.OUT)

#Menyalakan dan mematikan Relay dan Buzzer GPIO.output(14, GPIO.HIGH)

GPIO.output(18, GPIO.HIGH)

time.sleep(1) #Mengatur waktu mengaktifkan GPIO.output(14, GPIO.LOW)

GPIO.output(18, GPIO.LOW)

39 Gambar 3.6 Flowchart pengenalan wajah

3.3.3.1.Deteksi Wajah

Ketika WebCam telah menyala selanjutnya dilakukan proses deteksi wajah.

Deteksi wajah ini bertujuan agar kamera berperan sebagai sensor selain sebagai pengambil citra. Deteksi wajah menggunakan metode Viola-Jones. Adapun peranan dari algoritma Viola-Jones dalam pembuatan aplikasi ini adalah sebagai pendeteksian wajah pada citra. Untuk mendeteksi adanya fitur wajah pada sebuah

40 citra maka terlebih dahulu merubah citra RGB menjadi Grayscale hal ini dikarena algoritma ini mendeteksi wajah dengan cara membedakan warna hitam dan putih.

Setelah citra telah diubah maka dilanjutkan dengan beberapa proses yang dilakukan sebelum akhirnya akan menghasilkan sebuah output wajah yang terdeteksi pada sebuah citra. Pada gambar 3.7 dapat dilihat hasil dari penggunaan Metode Viola-Jones sebagai pendeteksi wajah.

Gambar 3.7 Hasil deteksi wajah

Adapun potongan script program pendeteksian wajah sebagai berikut:

Dalam algoritma Viola-Jones terdapat dua parameter yang dimainkan untuk mendeteksi wajah. Parameter pertama scale_factor, parameter ini berfungsi untuk menentukan seberapa banyak citra dikurangkan untuk setiap skala gambar.

Parameter kedua minNeighbors, parameter ini berfungsi untuk menentukan nilai

# Import the Haar cascades for face

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# Mengubah citra RGB menjadi grayscale

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for(x,y,w,h) in faces:

# Create rectangle around the face

cv2.rectangle(image,(x, y), (x+w, y+h), (255, 255, 0), 2)

41 minimal dari fitur haar agar nilainya tetap dipertahankan. Penggunaan nilai parameter ini berdasarkan metode heuristik dengan mencari keadaan yang terbaik.

Telah dilakukan percobaan dengan mengganti nilai parameter scale factor dan minNeighbors.

Pada nilai parameter scale factor mencoba dengan mengganti nilai dari range 1.0 hingga 1.5, ternyata pengaruh dari mengganti parameter tersebut membuat algoritma Viola-Jones ini dalam mendeteksi wajah menjadi sangat lebih detail. Ketika nilai 1.5 dan 1.4 maka sebuah benda yang berwarna hitam putih akan terdeteksi sebagai wajah. Ketika nilai yang digunakan 1.0 sampai 1.2 dengan sample citra gambar yang terdapat beberapa wajah, didapatkan algoritma tidak mendeteksi beberapa wajah secara tidak tepat atau dalam membuat kotak pada wajah terdapat bagian tubuh lain yang dideteksi sebagai wajah. Namun ketika nilai digunakan 1.3 maka didapatkan sistem mampu mendeteksi wajah pada suatu citra dengan tepat.

3.3.3.2. Ekstraksi Ciri

Pada tahap ekstraksi ciri baik citra wajah sample dan citra wajah dari database dilakukan proses pencarian ciri. Dalam kasus ini ciri khusus yang dicari yaitu titik penting (keypoint). Pencarian ciri ini dilakukan sebanyak dua kali.

Pertama pada saat sistem mulai maka terlebih dahulu dilakukan ekstraksi ciri citra database, hal ini dilakukan untuk melakukan training pada sistem sehingga hasil dari training database didapatkan data keypoint dari tiap data agar nantinya data ini yang akan dicari pada tahap pencocokan ciri. Untuk mencari keypoint dari citra digunakan algoritma SURF (Speeded-Up Robust Features). SURF cocok untuk

42 menangani gambar dengan kualitas kabur dan rotasi pada gambar. Karena citra wajah yang disimpan dari proses deteksi wajah boleh jadi mendapatkan hasil yang kabur dan mengalami perubahan posisi. Sehingga nantinya pada proses selanjutnya dapat dikenali mesti dalam citra yang kualitas kabur.

Hasil konversi RGB ke grayscale kemudian dilanjutkan dengan pendeteksian keypoint. Fitur gelembung (blob-like feature) digunakan untuk mendeteksi keypoint. Langkah yang dilakukan adalah membentuk piramida citra dengan menggunakan box filter sebagai aproksimasi dari turunan parsial kedua dari Gaussian. Ketika membentuk scale space, citra asli dikonvolusikan pada kotak filter dengan mengubah ukuran kotak filter sesuai dengan citra dan membentuk scale space image. Langkah berikutnya adalah mencari ekstrema dari determinan matriks Hessian dibandingkan dengan tetangga-tetangganya. Lokalisasi calon fitur kemudian dilakukan pada setiap ruang skala (scale space) dengan menggunakan non-maximum suppression terhadap eksterma dari determinan matriks Hessian.

Hasil akhir dari tahap ini adalah titik-titik acuan atau keypoint yang menunjukkan adanya fitur gelembung (blob-like feature). Gambar 3.8 menunjukkan hasil akhir pendeteksian fitur dengan SURF.

Gambar 3.8 Gambar hasil pendeteksian fitur

43 Adapun potongan script program untuk pendetksian fitur sebagai berikut:

Pada algoritma SURF terdapat parameter-parameter yang dapat diatur sedemikian rupa untuk mencari keypoint dari citra yang digunakan. Parameter pertama adalah hessian threshold atau ambang batas nilai hessian untuk mendeteksi sebuah keypoint dimana apabila nilai hessian yang lebih besar dari threshold yang digunakan maka akan dipertahankan oleh SURF. Parameter kedua adalah nOctaves atau nilai yang diatur untuk menciptakan banyaknya piramida citra. Parameter ketiga adalah nOctavesLayers atau nilai yang diatur untuk menentukan jumlah citra dari setiap octaves yang telah diatur sebelumnya. Parameter yang terakhir adalah extended atau pengaturan untuk nilai element yang digunakan. Untuk nilai yang digunakan dalam perancangan perangkat lunak ini diambil dengan menggunakan metode heuristik.

Pada parameter hessian threshold dilakukan beberapa kali penggantian nilai dari 300, 400, dan 500, hal ini karena dari beberapa refrensi pada range 300 hingga 500 merupakan nilai terbaik dari SURF. Begitu pun telah dilakukan mengganti nilai hessianthreshold dan disimpulkan SURF untuk mendeteksi keypoint pada nilai paramater 400 didapatkan jumlah keypoint yang tidak rentang terhadap cahaya dari sebuah citra sample.

Pada parameter nOctaves dan nOctavesLayer dilakukan beberapa kali penggantian nilai dan didapatkan pada saat nilai parameter 3 dan 4 SURF mampu membuat keypoint pada citra jauh lebih stabil dibandingkan saat diatur pada nilai 4

#Mengatur parameter SURF

hessianThreshold = 400; nOctaves = 3; nOctaveLayers = 4; extended = 1;

#Memanggil fungsi SURF dengan parameter

surf = cv2.xfeatures2d.SURF_create(hessianThreshold, nOctaves, nOctaveLayers, extended)

#Mencari keypoint dan descriptor pada gambar kp2, des2 = surf.detectAndCompute(img2, None)

44 dan 5. Dapat disimpulkan hal itu dapat terjadi karena citra yang menjadi database memiliki resolusi yang kecil yang mengakibatkan ketika SURF membuat paramida citra maka citra yang resolusi kecil ketik dibuat semakin blur hanya membuat resolusi citra semakin rendah sehingga apabila nilai parameter diperbesar SURF akan membuat lebih sedikit keypoint pada citra database. Hal ini akan membuat untuk proses pencocokan nantinya hanya akan didapatkan kecocokan yang minim.

Pada parameter extended ini digunakan nilai satu, hal itu karena parameter ini membuat SURF untuk memberi orientasi matriks pada citra semakin besar yang 128, sehingga jumlah keypoint pada citra bisa bertambah. Selain itu dengan citra yang resolusi kecil nilai ini sangat membantu untuk SURF dalam menentukan jumlah keypointnya.

3.3.3.3. Pencocokan Ciri

Pada proses pencocokan ciri menggunakan metode Fast Library Approximated Nearest Neighbor (FLANN) pustaka untuk melakukan pencarian cepat dan perkiraan neighborhood. FLANN merupakan kumpulan algoritma yang bekerja untuk menemukan nilai tetangga terdekat, sementara untuk hasil parameter yang optimal, tergantung pada kumpulan data yang digunakan. Fitur SURF terdiri dari keypoint, deskriptor, dan berupa vektor. Satu citra di basis data memiliki banyak klaster untuk fitur SURF. Klaster ini dibuat. otomatis dengan menggunakan KNN (K-Nearest Neighbor) dengan tipe indeks KD tree, dimana KNN ini akan mencari jarak yang paling kecil antara vektor fitur dengan vektor pada klaster.

Proses pencocokkan fitur pada citra sample dan fitur pada citra dalam database, vektor keypoint, dan deskriptor pada gambar sample akan dicocokkan

45 nilainya menggunakan KNN search. KNN search akan mencari klaster pada database yang nilai vektor descriptor paling dekat jaraknya dengan vektor descriptor pada citra sample. Setelah klaster didapat, kemudian akan dicari nilai vektor descriptor pada klaster tersebut yang sama atau paling dekat dengan vektor descriptor pada citra sample. Jika ada yang sama maka ada satu keypoint yang cocok antara kedua citra tersebut. Semakin banyak jumlah keypoint yang cocok, maka dianggap paling baik dalam mendeteksi titik fitur.

Adapun potongan script program untuk proses FLANN sebagai berikut:

Pada gambar 3.9 dapat dilihat hasil dari FLANN dalam mencocokkan keypoint pada citra sample dan citra database yang dianggap paling mendekati dengan citra database yang ada.

Gambar 3.9 Hasil proses FLANN

Dokumen terkait