Anda di halaman 1dari 100

ANALISIS PERBANDIGAN SISTEM PENDETEKSI WAJAH DAN

EKSPRESI MENGGUNAKAN WIDROW- HOFF DAN LEARNING


VECTOR QUANTIZATION

TESIS

MIFTAHUL JANNAH
157038078

PROGRAM STUDI S2 TEKNIK INFORMATIKA


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2018

Universitas Sumatera Utara


ANALISIS PERBANDIGAN SISTEM PENDETEKSI WAJAH DAN EKSPRESI
MENGGUNAKAN WIDROW- HOFF DAN LEARNING
VECTOR QUATIZATION

TESIS

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah


Magister Teknik Informatika

MIFTAHUL JANNAH
157038078

PROGRAM STUDI S2 TEKNIK INFORMATIKA


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2018

Universitas Sumatera Utara


ii

PERSETUJUAN

Judul :ANALISIS PERBANDINGAN SISTEM


PENDETEKSI WAJAH DAN EKSPRESI
MENGGUNAKAN WIDROW-HOFF DAN
LEARNING VECTOR QUATIZATION
Kategori : TESIS
Nama : MIFTAHUL JANNAH
Nomor Induk Mahasiswa : 157038078
Program Studi : Magister Teknik Informatika
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI UNIVERSITAS SUMATERA UTARA
Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Prof. Dr. Herman Mawengkang Prof. Dr. Muhammad Zarlis, M.Sc

Diketahui/disetujui oleh
Magister Teknik Informatika
Ketua,

Prof. Dr. Muhammad Zarlis, M.Sc


195707011986011003

Universitas Sumatera Utara


iii

PERNYATAAN

ANALISIS PERBANDIGA SISTEM PENDETEKSI WAJAH DAN EKSPRESI


MENGGUNAKAN WIDROW-HOFF DAN LEARNING VECTOR
QUANTIZATION

TESIS

Saya mengakui bahwa tesis ini adalah hasil karya saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, 22 Januari 2018

Miftahul jannah
157038078

Universitas Sumatera Utara


iv

PERNYATAAN PERSETUJUAN PUBLIKASI


KARYA ILMIAH UNTUK KEPENTINGAN
AKADEMIS

Sebagai sivitas akademika Universitas Sumatera Utara, saya yang bertanda tangan di
bawah ini :

Nama : Miftahul jannah


NIM : 157038078
Program Studi : Magister Teknik Informatika
Jenis Karya Ilmiah : Tesis

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada


Universitas Sumatera Utara Hak Bebas Royalti Non-Eksklusif (Non Exclusive Royalti
Free Right) atas tesis saya yang berjudul :

ANALISIS PERBANDINGAN SISTEM PENDETEKSI WAJAH DAN EKSPRESI


MENGGUNAKAN WIDROW-HOFF DAN LEARNING VECTOR
QUANTIZATION

Beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non
Eksklusif ini, Universitas Sumatera Utara berhak menyimpan, mengalih media,
memformat, mengelola dalam bentuk database, merawat dan mempublikasikan tesis
saya tanpa meminta izin dari saya selama tetap mencantumkan nama saya sebagai
penulis dan sebagai pemegang dan/atau sebagai pemilik hak cipta.

Demikian pernyataan ini dibuat dengan sebenarnya.

Medan, 22 Januari 2018

Miftahul jannah
157038078

Universitas Sumatera Utara


v

Telah diuji pada


Tanggal : 22 Januari 2018

PANITIA PENGUJI TESIS


Ketua : Prof. Dr. Muhammad Zarlis, M.Sc
Anggota : 1. Prof. Dr. Herman Mawengkang
2. Prof. Dr. Tulus
3. Dr. Syahril Efendi, S.Si, M.IT

Universitas Sumatera Utara


vi

RIWAYAT HIDUP

DATA PRIBADI

Nama Lengkap : Miftahul Jannah


Tempat dan Tanggal Lahir : Lhokseumawe, 18 April 1993
Alamat Rumah : Jl. Kenari II Banda Masen Kec. Banda Sakti
Kota Lhokseumawe, Provinsi Aceh
Telepon/Faks/HP : 082361322336
Email : miftahuljannah0077@gmail.com
Instansi Tempat Bekerja :-
Alamat Kantor :-

DATA PENDIDIKAN

SD : SD Negeri 13 Lhokseumawe TAMAT : 2005


SMP : MTsS Ulumuddin TAMAT : 2008
SMA : SMA Negeri 2 Lhokseumawe TAMAT : 2011
S1 : Universita Malikussaleh TAMAT : 2015
S2 : Teknik Informatika USU TAMAT :

Universitas Sumatera Utara


vii

UCAPAN TERIMA KASIH

Puji Syukur kehadirat Allah SWT sebagaimana Allah telah memberi kita beribu-ribu
nikmat, rahmat dah hidayahnya kepada kita sehingga penulis dapat menyelesaikan
Tesis dengan judul “ANALISI PERBANDINGAN SISTEM PENDETEKSI WAJAH
DAN EKPRESI MENGGUNAKAN ALGORITMA WIDROW HOFF DAN
LEARNING VECTOR QUANTIZATION”

Tesis ini merupakan salah satu syarat untuk memeperoleh gelar Master Teknik
Informatika pada program studi S-2 Teknik Informatika Universitas Sumatera Utara.

Pada kesempatan ini tak lupa penulis mengucapkan terima kasih sebesar-
besarnya kepada :
1. Bapak Prof. Dr. Runtung Sitepu, S.H., M.Hum., selaku Rektor Universitas
Sumatera Utara.
2. Bapak Prof. Dr. Opim Salim Sitompul., selaku Dekan Fakultas Ilmu Komputer
danTeknologi Informasi Universitas Sumatera Utara.
3. Bapak Prof. Dr. Muhammad Zarlis, M.Sc., selaku Ketua Program Studi
Pascasarjana Teknik Informatika Fakultas Ilmu Komputer dan Teknologi
Informasi Universitas Sumatera Utara Medan dan juga Selaku Dosen Pembimbing
I yang telah bersedia memberikan bimbingan serta arahan dengan sangat bijaksana
dan penuh kesabaran hingga selesainya penulisan tesis ini.
4. Bapak Prof. Dr. Herman Mawengkang., selaku pembimbing kedua yang tiada
henti memberikan motifasi dan saran serta ilmu yang sangat membantu penulis
sehingga penulis dapat menyelesaikan tugas akhir ini dengan tepat waktu.
5. Bapak Prof. Dr. Tulus Vor. Dipl, Math., M.Si.., selaku pembanding/ penguji 1
yang selama ini telah memberikan banyak saran, serta pembelajaran yang berharga
bagi penulis
6. Bapak Dr. Syahril Efendi, S.Si., M.IT., selaku Sekretaris program studi
Pascasarjana Teknik Informatika Fakultas Ilmu Komputer dan Teknologi
Informasi Universitas Sumatera Utara Medan dan juga Selaku
pembanding/penguji II yang telah memberikan bantuan serta arahan dalam proses
menyelesaikan penelitian tesis ini.

Universitas Sumatera Utara


viii

7. Bapak/ Ibu Dosen di Jurusan Teknik Informatika yang telah memberikan bekal
ilmu yang sangat berharga bagi penulis selama menjadi mahasiswa.
8. Seluruh civitas akademika, Staf, Pegawai, teman-teman, adik-adik, kakak-kakak di
Teknik Informatika yang telah mewarnai hari-hari indah penulis selama menjalani
masa kuliah.
9. Ayahanda Adib S.Sos dan Ibunda Nurmala wati yang tercinta, tesis ini merupakan
persembahan untuk mereka berdua, yang tak pernah henti memberikan cinta serta
kasih sayang serta doa pada penulis hingga detik akhir selesainya tesis ini.
10. Seluruh keluarga tersayang dan sangat berarti bagi penulis, Kakanda Yusuf Setia
Putra, Nurul Rezeki Putri, Filda Alfia Riska, Safara Tasya Nadila, Khairatul Ulfa,
Masri,Rosmawar, M. Dzakial Ridha dan Khalisa Adhra
11. Bapak Fadlisyah dan Ibu Nurlela Polem selaku orang tua terkasih dan tersayang
yang sangat membantu penulis dalam menyelesaikan tesis ini.
12. Ibu Ardiana selaku orang tua penulis serta Saudara M.Baihaqi Bestari, Intan
Nabila Bestari, M.Furqan Bestari
13. Sahabat-sahabat yang luar biasa, terkhusus kepada sahabat terbaik Kiki Riski
Ananti, Luayyun A rani, Yessi aprilia, Adnan Buyung, Rizky Phonna, Insidini,
Khairul Umam, Adli Abdillah, Safrina amanah, Reni Ramadani dan sahabat-
sahabat se-angkatan 2015, khususnya sahabat-sahabat Unit kom C.

Penulis menyadari bahwa tesis ini jauh dari kesempurnaan karena keterbatasan
pengetahuan, untuk itu kritik dan saran sangat diharapkan agar pada masa yang akan
datang penulis dapat melakukan perbaikan untuk penulisan ilmiah lainnya.

Akhirnya kepada Allah jualah kita menyerahkan segalanya semoga penulisan


ini dapat bermanfaat dan terima kasih.

Medan, 22 Januari 2018

Penulis

Universitas Sumatera Utara


ix

ABSTRAK

Sistem pendeteksian ekspresi wajah merupakan topik ynag terus menerus diteliti
karena merupakan penelitian yang sangat popular saat ini. Para peneliti telah banyak
melakukan usaha-usaha untuk membuat sistem pendeteksian wajah dan ekspresi
dengan algoritma yang kompleks, sehingga memerlukan waktu yang lama untuk
melakukan komputasi yang panjang. Sistem pendeteksian wajah dan ekspresi ini akan
dibuat dengan menggunakan dua algoritma yaitu Widrow-hoff dan Learning Vector
Quantization untuk diketahui unjuk kinerja dari kedua algoritma tersebut. Dalam
penelitian ini ada dua proses yaitu pelatihan dan pengujian. pada tahap pelatihan,
proses akan memberikan inputan sistem berupa citra video wajah, setelah itu
dilakukan proses perhitungan jarak dan bobot akhir yang kemudian nilai-nilai tersebut
disimpan kedalam memori. Setelah sistem mengenal beberapa citra video wajah,
sistem akan melakukan pengujian, dimana inputannya berupa citra video yang bersifat
real time dan akan memperoleh nilai neuron dengan jarak yang minimum. Sehingga
hasil penelitian menunjukkan bahwa sistem pendeteksian wajah dan ekspresi
menggunakan Widrow- Hoff memiliki true detection 85% dan Learning Vector
Quantization (LVQ) memiliki kisaran true detection sebesar 80%. Untuk
meningkatkan unjuk kerja dari sistem pendeteksi wajah dan eskpresi, dapat dilakukan
dengan memberikan pelatihan lebih lanjut dengan tambahan data training yang lebih
banyak dan lebih bervariasi.

Kata kunci: Sistem pendeteksian ekspresi wajah, Widrow hoff, Learning Vector
Quantization, Citra Video.

Universitas Sumatera Utara


x

COMPARATIVE ANALYSIS OF FACE AND EXPRESSION DETECTION


SYSTEM USING WIDROW HOFF AND LEARNING VECTOR
QUANTIZATION ALGORITHM

ABSTRACT

The facial expression detection system is a topic that is constantly being studied
because it is a very popular research for now. Researchers have made many attempts
to create facial expression detection systems with complex algorithms, so it takes a
long time to do long computations. The facial expression detection system will be
created using two algorithms namely Widrow-hoff and Learning Vector Quantization
to know the performance of these two algorithms. In this research there are two
processes namely training and testing. in the training phase, the process will provide
input system in the form of facial video image, after which the process of calculating
the distance and the final weight of the values then stored into memory. Once the
system recognizes some face video images, the system will perform the test, where the
input in the form of real time video images and will obtain the value of neurons with a
minimum distance. So the results showed that facial detection and expression system
using Widrow-Hoff has 85% true detection and Learning Vector Quantization (LVQ)
has a true detection range of 80%. To improve the performance of the face detection
and expression system, it can be done by providing further training with additional
and more varied training data.

Keywords: Facial Ekspression Detection System, Widrow-Hoff, Learning Vector


Quantization, Image Video.

Universitas Sumatera Utara


xi

DAFTAR ISI

Halaman
Persetujuan ii
Pernyataan iii
Persetujuan Publikasi iv
Panitia Penguji Tesis v
Riwayat Hidup vi
Ucapan Terima Kasih vii
Abstrak ix
Abstract x
Daftar Isi xi
Daftar Tabel xiii
Daftar Gambar xiv

Bab 1 Pendahuluan
1.1. Latar Belakang 1
1.2. Rumusan Masalah 2
1.3. Batasan Masalah 3
1.4. Tujuan dan Manfaat Penelitian 3
1.5. Manfaat Penelitian 3

Bab 2 Landasan Teori


2.1. Citra Digital 4
2.2. Jenis-Jenis Citra Digital 6
2.3. Deteksi Gerakan ( Video) 8
2.4. Deteksi Wajah 9
2.5. Deteksi Ekspresi 12
2.6. Widrow-Hoff 14
2.7. Learning Vector Quatization 19
2.8. Penelitian Sebelumnya 21

Bab 3 Metode Penelitian


3.1. Studi Kepustakaan dan Pegumpulan data 23
3.2. Analisa Kebutuhan Perangkat Keras da Lunak 23
3.3. Diagram Alur Kerja Penelitian 23
3.4. Skema Sistem 25
3.5. Grey-scale 25
3.6. Konvolusi 26
3.7. Jaringan Saraf Tiruan 27
3.8. Parameter pengukuran Evaluasi Unjuk Kerja Sistem 29

Bab 4 Hasil dan Pembahasan


4.1. Hasil 31

Universitas Sumatera Utara


xii

4.1.1. Sampel Pelatiha Citra 31


4.1.2. Hasil Vektor Pola Citra Wajah dan Ekspresi 31
4.1.3. Hasil Deteksi Wajah dan Ekspresi 31
4.1.4. Pegukuran Unjuk Kerja Sistem Pendeteksi wajah 31

Bab 5 Kesimpulan dan Saran


5.1. Kesimpulan 54
5.2. Saran 55

Daftar Pustaka
Lampiran

Universitas Sumatera Utara


xiii

DAFTAR TABEL

Halaman
Tabel 2.1. Metode yang terkait dengan deteksi wajah 11
Tabel 2.1. Penelitian Sebelumnya 21
Tabel 4.1. Hasil unjuk kerja sistem ekspresi wajah happy dengan
algoritma Widrow-Hoff 33
Tabel 4.2. Hasil unjuk kerja sistem ekspresi wajah unhappy dengan
algoritma Widrow-Hoff 33
Tabel 4.3. Hasil unjuk kerja sistem ekspresi wajah happy dan unhappy
dengan algoritma Widrow-Hoff 35
Tabel 4.4. Hasil unjuk kerja sistem ekspresi wajah happy dengan
algoritma LVQ 36
Tabel 4.5. Hasil unjuk kerja sistem ekspresi wajah unhappy
dengan algoritma LVQ 37
Tabel 4.6. Hasil unjuk kerja sistem ekspresi wajah happy dan unhappy
dengan algoritma LVQ 38
Tabel 4.7. Beberapa contoh pendeteksian ekspresi wajah dengan
algoritma Widrow-Hoff 39
Tabel 4.8. Beberapa contoh pendeteksian ekspresi wajah dengan
algoritma LVQ 42
Tabel 4.9. Contoh nilai Pixel Suatu Citra 47
Tabel 4.10. Hasil Nilai Citra Sobel 47
Tabel 4.11. Hasil Normalisasi Nilai Citra 47

Universitas Sumatera Utara


xiv

DAFTAR GAMBAR

Halaman
Gambar 2.1. Tingkat kecerahan yang kontinu 5
Gambar 2.2. Tingkat kecerahan setelah mengalami kuantisasi 16
tingkatan diskrit 5
Gambar 2.3. Contoh gambar derajar keabuan 6
Gambar 2.4. Komposisi Warna RGB 7
Gambar 2.5. Lokasi Fitur Ekspresi wajah 13
Gambar 2.6. Histogram Fitur Bentuk Mulut 14
Gambar 2.7. Arsitektur ADALINE 15
Gambar 2.8. Pola interkoneksi suatu memori asosiatif pengenalan
sepuluh pola wajah yang dibangun dari ciri utama 16
Gambar 2.9. Contoh Jaringan LVQ 19
Gambar 3.1. Alur kerja penelitian secara umum 24
Gambar 3.2. Skema sistem pendeteksi ekspresi wajah pada video 24
Gambar 3.3. Diagram alir Proses Grey-scale 25
Gambar 3.4. Diagram alir Proses Konvolusi 26
Gambar 3.5. Diagram alir Algoritma Widrow-Hoff 27
Gambar 3.6. Diagram alir Algoritma LVQ 29
Gambar 4.1. Beberapa Sampel Citra Wajah Dan Ekspresi yang digunakan 31
Gambar 4.2. Vektor pola citra yang mengandung ekpresi wajah hasil
koreksi dan pengamatan pada sejumlah citra wajah
yang digunakan sebagai pelatihan 32
Gambar 4.3. Beberapa Hasil True Detection Pada Citra Wajah dan Ekspresi 32
Gambar 4.4. Beberapa Hasil False Detection Pada Citra Wajah dan Ekspresi 33
Gambar 4.5. Grafik unjuk kerja sistem deteksi ekspresi Happy
menggunakan Widrow-hoff 34
Gambar 4.6. Grafik unjuk kerja sistem deteksi ekspresi Unhappy
menggunakan Widrow-hoff 35
Gambar 4.7. Grafik unjuk kerja sistem deteksi ekspresi Happy
menggunakan LVQ 37
Gambar 4.8. Grafik unjuk kerja sistem deteksi ekspresi Unhappy
menggunakan LVQ 38
Gambar 4.9. Grafik unjuk kerja sistem menggunakan Widrow Hoff 44
Gambar 4.10. Grafik unjuk kerja sistem menggunakan LVQ 44
Gambar 4.11. Beberapa contoh citra edge yang memuat lokasi
wajah yang berhasil dideteksi 45
Gambar 4.12. Beberapa contoh citra edge yang memuat lokasi
wajah yang tidak berhasil dideteksi 46
Gambar 4.13. Beberapa contoh citra konvolusi yang memuat lokasi wajah 48
Gambar 4.14. Contoh pengenalan bobot wajah dan ekpresi dengan algoritma WH 49
Gambar 4.15. Contoh pengenalan bobot wajah dan ekpresi dengan
algoritma LVQ 51

Universitas Sumatera Utara


BAB I

PENDAHULUAN

1.1. Latar Belakang


Era teknologi informasi semakin berkembang dengan cepat dan kompleks, kehandalan
sistem mengolah data dengan baik akan menghasilkan informasi yang baik pula.
Pengolahan data yang digunakan modern ini lebih mendekati kepada data gambar,
suara dan teks.
Dalam menyelesaikan masalah yang kompleks memerlukan metode cepat,
tepat dan akurat. Kecerdasan buatan merupakan salah satu bagian ilmu komputer yang
membuat agar mesin komputer dapat melakukan pekerjaan dengan metode cepat,
tepat dan akurat. Salah satunya adalah Jaringan Syaraf Tiruan (JST). Jaringan ini telah
menjadi obyek penelitian yang menarik dan banyak digunakan untuk menyelesaikan
permasalahan pada beberapa bidang kehidupan seperti pengenalan citra digital, pola
penyakit dan suara.
Wajah merupakan suatu penanda untuk mengenali seseorang. jika seseorang
berkenalan dengan seseorang lainnya, hal yang paling diingat adalah wajah seseorang
tersebut. Selain digunakan untuk mengenali seseorang, wajah juga digunakan untuk
hal lain seperti untuk keperluan pendataan penduduk, absensi dan sistem pengamanan
dengan menggunakan sistem pengenalan wajah. Karena wajah manusia
merepresentasikan sesuatu yang kompleks, maka pengembangan model komputasi
yang ideal untuk pengenalan wajah masih sesuatu hal yang sulit.
Pendetesian wajah (face detection) adalah salah satu tahap awal yang sangat
penting dalam pengenalan wajah (face recognition) yang digunakan dalam identifikasi
biometric. deteksi wajah juga dapat digunakan untuk pencarian atau pengindeksian
data wajah dari citra atau video yang berisi wajah dengan berbagai ukuran, posisi dan
latar belakang. Pendeteksian wajah (face detection) secara otomatis dengan bantuan
komputer merupakan permasalahan yang tidak mudah karena wajah manusia memiliki
tingkat variabilitas yang tinggi baik variabilitas intra–personal maupun ekstra-
personal.

Universitas Sumatera Utara


2

Pendeteksian wajah sebagai bagian dari sistem persepsi manusia sudah lama
menjadi topic yang terus menerus diteliti oleh para ahli di berbagai bidang antara lain
ilmu psikologi, teknik dan neuroscience dengan berbagai macam teknik penyelesaian
yang digunakan dalam melakukan penelitian tersebut. Banyak penelitian yang
dilakukan dalam mendeteksi wajah secara realtime, akan tetapi sistem tidak banyak
melakukan pendekatan yang lebih spesifik terhadap area wajah seperti ekspresi dan
lain sebagainya.
Mu-Chun et al (2014) membahas masalah pendeteksian wajah pada gambar,
ekstraski fitur ekspresi wajah dan klasifikasi ekpresi wajah menggunakan Self-
organizing feature maps ( SOM) dan memiliki keakuratan sebesar 90 %.
Ketaren (2016) membahas metode pendeteksian wajah yang dilakukan dengan
memasukkan karakteristik backpropagation yaitu hidden layer dan bobot acak yang
dinamakan Modified LVQ (MLVQ). Hasil penelitian ini adalah perbandingan antara
algoritma Backpropagation, LVQ dan MLVQ pada pengenalan wajah. Dengan
akurasi sebesar dengan tingkat akurasi untuk algoritma Backpropagation sebesar
49.25 %, algoritma LVQ sebesar 48.14 % sedangkan algoritma MLVQ sebesar
50.37%.
Dalam penelitian ini penulis tertarik untuk membandingkan dua algoritma
yang memiliki keunggulan masing-masing agar mendapat akurasi yang lebih baik dari
kedua metode tersebut. Untuk pendeteksian ekpresi wajah melalui kamera yang
cenderung lebih dinamis dan berubah secara lebih cepat dengan menggunakan
perbandingan metode widrow hoff ( WH) dan learning vector quantization (LVQ).
Berdasarkan uraian diatas penulis tertarik untuk mengambil judul : Analisis
perandingan Sistem Pendeteksian wajah dan ekpresi wajah dengan Menggunakan
Metode widrow hoff dan Learning Vektor Quantization.

1.2. Rumusan Masalah


Berdasarkan latar belakang masalah yang telah diuraikan, maka rumusan masalah
yang timbul adalah sistem pendeteksian wajah secara realtime yang telah dilakukan
oleh beberapa peneliti sebelumnya tidak mengarah kepada bagian yang lebih spesifik
dalam mendeteksi area wajah seperti ekspresi yang terkandung dalam wajah seseorang

Universitas Sumatera Utara


3

demikian pula adanya perbandingan antara metode Widrow hoff dan Learning Vector
Quantization ( LVQ).

1.3. Batasan Masalah


Beberapa Batasan masalah pada penelitian ini adalah sebagai berikut :
1. Citra yang di uji hanya mengandung wajah yang sempurna atau tidak terhalang
oleh benda apapun secara real time.
2. Citra yang diuji dengan posisi wajah tampak depan
3. Ekspresi yang dideteksi berupa senang dan sedih
4. Metode yang dipakai adalah Widrow hoff dan Learning Vector Quantization
(LVQ)
5. Format citra adalah video.Avi

1.4. Tujuan Penelitian


Tujuan penelitian ini adalah untuk mengukur perbandingan unjuk kerja kedua
algoritma yaitu algoritma Widrow-Hoff dan LVQ dalam mendeteksi wajah dan
ekspresi serta mampu menunjukkan lokasi (area) pada sebuah citra secara real time.

1.5. Manfaat Penelitian


Adapun manfaat yang diharapkan dalam penelitian ini adalah :
1. Memodifikasi penelitian sebelumnya
2. Memperoleh metode yang lebih efesien dalam mendeteksi wajah dan ekspresi
secara real time.
3. Terukurnya kinerja sistem Pendeteksian wajah dan ekspresi secara realtime.

Universitas Sumatera Utara


BAB 2
LANDASAN TEORI

2.1. Citra Digital

Menurut Darma Putra (2010) secara umum, pengolahan citra digital menunjuk pada
sebuah pemrosesan gambar dua dimensi menggunakan perangkat komputer. Dalam
konteks yang lebih luas, pengolahan citra digital mengacu pada pemrosesan setiap
data dua dimensi. Citra digital merupakan sebuah larik (array) yang berisi nilai-nilai
real maupun kompleks yang dipresentasikan dengan deretan bit tertentu.
Komputer dapat mengolah isyarat-isyarat elektronik digital yang merupakan
sinyal biner (bernilai dua: 0 dan 1). Untuk itu citra digital harus mempunyai format
tertentu yang sesuai sehingga dapat mempresentasikan objek pencitraan dalam bentuk
kombinasi data biner (Nugroho. 2012).
Komputer merupakan alat yang beroperasi dalam sistem digital yang
menggunakan bit atau byte dalam pengukuran datanya, dan yang terpenting dalam
sistem digital adalah sifatnya yang diskrit, bukan kontinu. Hal ini berlawanan
dengan citra digital yang sebenarnya merupakan representasi citra asal yang
bersifat kontinu. Untuk mengubah citra yang bersifat kontinu diperlukan sebuah
cara untuk mengubahnya dalam bentuk data digital. Komputer menggunakan
sistem bilangan biner dalam pemecahan masalah ini. Dengan penggunaan sistem
bilangan biner ini, citra dapat diproses dalam komputer dengan sebelumnya
mengekstrak informasi citra analog asli dan mengirimkannya ke komputer dalam
bentuk biner. Proses ini disebut dengan digitisasi. Digitisasi dapat dilakukan oleh alat
seperti kamera digital atau scanner. Kedua alat ini selain dapat mengambil atau
menangkap sebuah citra, juga dapat bertindak sebagai alat input (masukan) bagi
komputer. Alat penangkap citra digital ini dapat menyediakan aliran data biner
bagi komputer yang didapatkan dari pembacaan tingkat kecerahan pada sebuah
citra asli dalam interval sumbu x dan sumbu y. Citra digital merupakan citra yang
tersusun dari piksel diskrit dari tingkat kecerahan dan warna yang telah
terkuantisasi . Jadi, pada dasarnya adalah sebuah citra yang memiliki warna dan

Universitas Sumatera Utara


5

tingkat kecerahan yang kontinu perlu diubah dalam bentuk informasi warna, tingkat
kecerahan, dsb yang bersifat diskrit untuk dapat menjadi sebuah citra digital. Pada
Gambar 2.1 diperlihatkan kurva tingkat kecerahan yang kontinu dengan nilai hitam
dan putih yang tidak terbatas (a) dan kurva tingkat kecerahan setelah mengalami
kuantisasi dalam 16 tingkatan diskrit (b).Tingkat kecerahan pada Gambar 2.1 yang
bersifat kontinu dapat diubah menjadi tingkat kecerahan seperti Gambar 2.2
dengan pembacaan tingkat kecerahan menggunakan interval tertentu pada sumbu x
dan y seperti yang telah disebutkan di atas. Pembagian seperti pada pembagian
tingkat kecerahan ini juga berlaku untuk warna agar nilai warna dapat menjadi
diskrit.

Gambar 2.1 Tingkat kecerahan yang kontinu

Gambar 2.2 Tingkat kecerahan setelah mengalami kuantisasi 16 tingkatan diskrit.

2.1. Jenis-Jenis Citra Digital

Nilai suatu pixel memiliki nilai dalam rentang tertentu, dari nilai minimum sampai
nilai maksimum. Jangkauan yang digunakan berbeda-beda tergantung dari jenis
warnanya. Namun secara umum jangkauannya adalah 0 – 255. Citra dengan

Universitas Sumatera Utara


6

penggambaran seperti ini digolongkan ke dalam citra integer. Berikut adalah jenis-
jenis citra berdasarkan nilai pixel-nya.
a. Citra biner (monochrome) : citra digital yang.hanya memiliki dua kemungkinan
nilai pixel yaitu hitam dan putih. Citra biner juga disebut sebagai citra B & W
(black and white) atau citra monokrom. Hanya dibutuhkan 1 bit untuk mewakili
nilai setiap pixel dari citra biner. Citra biner sering kali muncul sebagai hasil dari
proses pengolahan seperti segmentasi, thresholding, morfologi, ataupun dithering.
b. Citra skala keabuan (grayscale) : citra digital yang hanya memiliki satu nilai kanal
pada setiap pixelnya, dengan kata lain nilai bagian red = green = blue. Nilai
tersebut digunakan untuk menunjukkan tingkat intensitas. Warna yang dimiliki
adalah warna dari hitam, keabuan, dan putih. Tingkatan keabuan disini merupakan
warna abu dengan berbagai tingkatan dari hitam hingga mendekati putih. Berikut
contoh grayscale :

Gambar 2.3 Contoh gambar derajar keabuan


c. Citra warna (24 bit) : citra warna terdiri atas 3 layer matrik, yaitu red layer, green
layer, blue layer. Sistem warna RGB (Red Green Blue) menggunakan sistem
tampilan grafik kualitas tinggi (high quality raster graphic) yaitu mode 24 bit.
Setiap komponen warna merah, hijau, biru masing-masing mendapatkan alokasi 8
bit untuk menampilkan warna. Pada sistem warna RGB, tiap pixel akan dinyatakan
dalam 3 parameter dan bukan nomor warna. Setiap warna mempunyai range nilai
0 - 255 atau mempunyai nilai derajat keabuan 256 = 28. Dengan demikian, range
warna yang digunakan adalah (28) (28) (28) = 224 (atau dikenal dengan istilah
true color pada Windows). Nilai warna yang digunakan merupakan gabungan
warna merah, hijau dan biru.

Universitas Sumatera Utara


7

Gambar 2.4 komposisi warna RGB

Citra digital mengandung sejumlah elemen-elemen dasar sebagai berikut.


a. Kecerahan (Brightness) : intensitas cahaya rata-rata dari suatu area yang
melingkupinya.
b. ontras (Contrast) : sebaran terang (lightness) dan gelap (darkness) di dalam
sebuah citra. Citra dengan kontras rendah komposisi citranya sebagian besar
terang atau sebagian besar gelap. Citra dengan kontras yang baik, komposisi
gelap dan terangnya tersebar merata.
c. Kontur (Contour) : keadaan yang ditimbulkan oleh perubahan intensitas pada
pixel-pixel tetangga, sehingga kita dapat mendeteksi tepi objek di dalam citra.
d. Warna (Color) : persepsi yang dirasakan oleh sistem visual manusia terhadap
panjang gelombang cahaya yang dipantulkan oleh objek. Warna-warna yang
dapat ditangkap oleh mata manusia merupakan kombinasi cahaya dengan
panjang yang berbeda. Kombinasi yang memberikan rentang warna paling lebar
adalah red (R), green (G), dan blue (B).
e. Bentuk (Shape) : properti intrinsik dari objek tiga dimensi, dengan pengertian
bahwa bentuk merupakan properti intrinsik utama untuk visual manusia.
Umumnya citra yang dibentuk oleh manusia merupakan 2-D, sedangkan objek
yang dilihat adalah 3-D.
f. Tekstur (Texture) : distribusi spasial dari derajat keabuan di dalam sekumpulan
pixel-pixel yang bertetangga.

Universitas Sumatera Utara


8

Piksel merupakan satuan komponen terkecil dari gambar yang menentukan


ukuran dari suatu gambar. Resolusi citra menyatakan ukuran bit dari suatu citra dalam
satuan piksel. Untuk citra biner, piksel gambar yang kecerahannya dibawah tingkat
tertentu diwakili oleh “0” sedangkan diatasnya diwakili oleh “1”, dengan demikian
semua citra didalam memory komputer dapat diwakili oleh logika “1” dan “0”.
Sekarang kita dapat menghitung jumlah memory yang dibutuhkan untuk menyimpan
citra tersebut. Sebagai contoh citra yang memiliki resolusi 256 x 256 piksel (jumlah
total 65536), karena setiap piksel diwakili oleh “1” dan “0” dan komputer
membutuhkan satu bit untuk menyimpan setiap piksel, sehingga dibutuhkan total bit
sekitar 64 Kb.
Dalam masalah pengolahan citra, hubungan antar piksel merupakan hal yang
sangat penting. Sebuah piksel p pada koordinat (x,y) mempunyai 4 tetangga horizontal
dan vertikal. Hubungan antar piksel merupakan suatu konsep yang sangat penting
yang digunakan untuk mendefinisikan batas-batas dari suatu objek serta bagian-bagian
daerah kecil dari suatu gambar. Sebagai pertimbangan apakah dua piksel dihubungkan
atau tidak, diperlukan beberapa kriteria. Diantaranya adalah apakah kedua piksel
tersebut mempunyai prinsip kedekatan yang sesuai dengan konsep yang telah
ditentukan, seperti konsep 4- neighbours atau 8-neighbours. Selain itu, apakah kedua
piksel tersebut memiliki gray level yang sesuai dengan kriteria yang diinginkan.
Sebagai contoh, jika dua piksel mempunyai nilai masing-masing 0 dan 1 dan
keduanya merupakan bagian dari 4- neighbours, maka dinyatakan bahwa kedua piksel
tersebut tidak ada hubungan, hal ini karena keduanya memiliki nilai yang berbeda

2.3. Deteksi Gerakan ( Video )

Dalam deteksi pergerakan objek terdapat suatu proses matching yang disebut Frame
Difference yaitu mengurangi frame satu dengan frame lainnya dan memberi label
pada frame berbeda yang lebih besar dari objek. Proses ini akan menangkap batas tepi
dari objek yang bergerak. Pertama-tama video image akan menampilkan
gambar/image yang ditangkap oleh webcam. Video image (berupa color image) yang
ditangkap ini kemudian diubah menjadi 16 grayscale image. Dengan tujuan untuk
memudahkan pemrosesan citra. Bila timbul suatu image baru yang ditangkap oleh

Universitas Sumatera Utara


9

webcam maka program akan menghitung perbedaan yang terjadi antara dua image
dengan cara melakukan penghitungan nilai rata-rata dari semua nilai gray value dalam
suatu gambar yang dapat disebut juga sebagai mean. Nilai mean yang didapat akan
dibandingkan dengan nilai threshold yang ditentukan oleh user. Semakin kecil batas
nilai threshold maka motion detection akan semakin sensitif.
Pada prinsipnya citra pada video atau citra secara real time adalah sama
dengan citra digital biasa, citra video merupakan sekumpulan citra-citra yang
digerakkan sepanjang durasi waktu tertentu, pergerakan citra-citra yang terdapat pada
video tersebut membentuk pergerakan dinamis sehingga mudah mengelabui mata
manusia. Pergerakan atau perubahan yang cepat tersebut yang menjadi tantangan kita
untuk mengimplementasikan algoritma yang tepat dalam situasi yang cepat dan
dinamis.
Video digital pada dasarnya tersusun atas serangkaian frame yang ditampilkan
dengan kecepatan tertentu (frame / detik). Jika laju frame cukup tinggi, maka mata
manusia melihatnya sebagai rangkaian yang kontinu sehingga tercipta ilusi gerak yang
halus, semakin besar nilai frame rate maka akan semakin halus pergerakan yang
ditampilkan.. Setiap frame merupakan gambar/ citra digital.
Kompresi video adalah adalah salah satu bentuk kompresi data yang bertujuan
untuk mengecilkan ukuran file audio/video. Di dalam video ada 2 hal yang dapat
dikompresi yaitu frame(image) dan audionya. Proses kompresi file menyebabkan
kualitas dari file video tersebut mengalami penurunan kualitas di berbagai frame yang
ada, seperti timbulnya noise pada bagian bagian tertentu, frame yang hilang dan juga
kualitas warna gambar yang berbeda dengan versi asli nya, hal itu disebabkan karena
adanya perubahan data ataupun data yang hilang karena proses kompresi data yang
dilakukan pada file yang asli.

2.4. Deteksi Wajah

Wajah merupakan sebuah model visual multidimensional yang kompleks dan untuk
menggambarkan pengenalan wajah secara komputasi itu sulit. Pengenalan wajah
adalah suatu kegiatan yang aktif di bidang biometric. Bagian terpenting dalam
pengenalan wajah adalah pendeteksian bagian – bagian dari wajah. Teknik pengenalan

Universitas Sumatera Utara


10

wajah secara garis besar dapat dibagi menjadi 3 kategori berdasarkan metodologi
akuisisi data wajah, diantaranya:
a. Metode yang beroperasi pada intensitas
b. Urutan dalam pengambilan gambar
c. Informasi 3D atau citra infra merah Pengenalan wajah ini, pada dasarnya digunakan
untuk mengidentifikasi orang dari gambar atau video (Yulius H,2014).

Menurut Hemalatha & Sumathi (2014) Langkah pertama dalam deteksi wajah
adalah preprocessing dengan alasan untuk mendapatkan gambar wajah murni dengan
Intensitas normal, ukuran dan bentuk seragam. Langkah-langkah yang terlibat dalam
mengubah gambar menjadi gambar wajah normal untuk ekstraksi fitur adalah
mendeteksi titik fitur, berputar hingga berbaris. Pada pendekatan ini, para peneliti
mencoba menemukan fitur-fitur yang tidak berubah (invariant) pada wajah. Asumsi
ini didasarkan pada observasi bahwa manusia dapat dengan mudah mendeteksi wajah
dengan berbagai pose dan kondisi cahaya, sehingga disimpulkan bahwa pasti ada
sifat-sifat atau fitur-fitur yang bersifat invariant. Fitur wajah seperti alis, mata, hidung,
mulut, biasanya diekstraksi dengan edge detector. Selanjutnya dibentuk suatu model
statistik yang mendeskripsikan hubungan antara fitur-fitur tersebut untuk menentukan
ada tidaknya wajah. Warna kulit manusia juga dapat digunakan untuk membantu
memperkirakan area wajah.
Metode deteksi wajah dikembangkan berdasar pada aturan (rule) yang didapat
dari pengetahuan para peneliti tentang wajah manusia. Sebagai contoh, suatu wajah di
dalam citra biasanya memiliki dua buah mata yang simetris, sebuah hidung, dan
sebuah mulut. Relasi antara fitur-fitur tersebut dapat direpresentasikan sebagai jarak
atau posisi. Lokasi dan tanam daerah wajah menggunakan persegi panjang, sesuai
dengan model wajah. Mendeteksi wajah dalam satu gambar melibatkan empat metode
Berbasis pengetahuan, Invarian wajah, Pencocokan template dimana pada metode ini
akan disimpan beberapa pola wajah standar untuk mendeskripsikan wajah secara
keseluruhan maupun bagian-bagiannya. Pada saat pendeteksian akan dihitung korelasi
antara citra input dengan citra pola wajah yang tersimpan sebelumnya. Penampilan
berdasarkan menurut penulis Ming-Hsuan disebut dalam tabel berikut:

Universitas Sumatera Utara


11

Tabel 2.1 Metode yang terkait dengan deteksi wajah


Metode Related Works
Knowledge based Metode berbasis aturan multi resolusi
Fitur invariant
Fitur wajah Pengelompokan tepi
Tekstur Space gray-level Dependence matrix
Warna kulit (SGLD) dari pola wajah
Beberapa Fitu Campuran Gaussian
Integrasi warna kulit, bentuk dan
ukuran
Template Matching
Template wajah yang ditentukan Template bentuk
sebelumnya Model bentuk aktif (ASM)
Template cacat
Appearance Based Dekomposisi dan pengelompokan
Eigenface vektor Eigen
Distribution based Persepsi Gaussian dan persepsi
Neural Network multilayer
Support Vector Machine(SVM) Ensemble jaringan syaraf tiruan dan
Naive Bayes classifier arbitrasi
Hidden markov Model(HMM) SVM dengan kernel polinomial
Information-Theoretical approach Statistik gabungan penampilan dan
posisi lokal
Statistik pesanan lebih tinggi dengan
HMM
Informasi Kullback relatif

Menurut safwandi (2015) Tantangan yang dihadapi pada masalah deteksi


wajah disebabkan oleh adanya faktor-faktor berikut
1. Posisi wajah. Posisi wajah didalam citra dapat bervariasi karena posisinya bisa
tegak, miring, menoleh, atau dilihat dari samping.
2. Komponen-komponen pada wajah yang bisa ada atau tidak ada, misalnya kumis,
jenggot dan kaca mata.
3. Terhalang objek lain. Citra wajah dapat terhalangi sebagian oleh objek atau wajah
lain, misalnya pada citra berisi sekelompok orang.

Universitas Sumatera Utara


12

4. Kondisi pengambilan citra. Citra yang diperoleh sangat dipengaruhi oleh faktor-
faktor seperti intensitas cahaya, arah sumber cahaya, dan karakteristik sensor dan
kualitas kamera.
Deteksi wajah dianggap sebagai kasus yang spesifik dari deteksi kelas objek
yang mempunyai ukuran dan lokasi objek, tercantum di kelas, di dalam gambar
masukan. Dalam langkah ini wajah terdeteksi dengan mengidentifikasi fitur wajah
sembari mengabaikan semua elemen non-wajah. Lakukan deteksi wajah terlebih
dahulu lalu diubah menjadi bentuk biner dan pindai gambar untuk area dahi,
kemudian cari lebar maksimum piksel putih kontinu sampai mencapai alis mata.
Setelah itu potong area wajah sedemikian rupa sehingga tingginya 1,5 kali lipat dari
lebarnya (P. M. Chavan et al, 2013 ).

2.5. Deteksi Ekspresi

Ekspresi atau mimik adalah salah satu bentuk komunikasi nonverbal yang merupakan
hasil dari satu atau lebih gerakan atau posisi otot pada wajah serta dapat
menyampaikan keadaan emosi dari seseorang kepada orang yang mengamatinya.
Melalui ekspresi wajah, maka dapat dipahami emosi yang sedang bergejolak pada diri
individu. Ekspresi wajah merupakan salah satu karakteristik perilaku. Penggunaan
sistem teknologi biometrika dengan karakteristik ekspresi wajah memungkinkan untuk
mengenali mood atau emosi seseorang. Komponen dasar sistem analisis ekspresi
wajah adalah deteksi wajah, ekstraksi data wajah, dan pengenalan ekspresi wajah.
Menurut Friska et al (2015) Pengenalan ekspresi wajah merupakan salah satu
cara untuk mengenali emosi. Karena ekspresi wajah merupakan hal yang paling kuat,
alami dan cepat untuk menyampaikan emosi atau perasaan seseorang. Banyak hal
dapat diketahui hanya dengan melihat ekspresi seseorang seperti niat, kepribadian,
hubungan sosial dan benda-benda yang ada di lingkungan. Otot-otot yang membentuk
ekspresi wajah dikenal sebagai musculi facialis yang merupakan otot-otot penggerak
wajah, sebagai contoh musculi zigomaticus major dan minor berorigo pada tulang
zigomaticus dan berinsersio pada sudut mulut berfungsi menarik sudut mulut ke atas
dan keluar.

Universitas Sumatera Utara


13

Ekspresi wajah telah terbukti menjadi alat yang kuat dalam mengidentifikasi
manusia. Keadaan emosional dan tanggapan yang baik terhadap keadaan atau
menjadi sesuatu yang baru (produk) . Analisis dan pengukuran ekspresi wajah yang
efektif dilakukan di beberapa bidang aplikasi: obat-obatan, bidang keamanan, sistem
video surveillance, permainan, hiburan, identifikasi biometrik, tetapi juga dalam
banyak ilmu perilaku, antropologi, dan psikoanalisis (Reda & Shikun 2015).
Sarbani Ghosh (2015) Pendeteksian ekpresi wajah berhubungan dengan
masalah klasifikasi citra terhadap ekpresi manusia ( senang, sedih, normal dan marah).
Pola ekpresi berhungan dengan bermacam subjek seperti pengenalan pola perceptual,
kompurasi yang efektiv dan pembelajaran mesin.
Dalam proses pendeteksian ekpsresi dan wajah terdapat tahapan ekstaksi ciri
atau Fitur extraction. Ekstraksi ciri digunakan untuk mengambil cirri atau fitur yang
penting dari ekspresi wajah. Dalam teknik ini berdasarkan lokasi fitur dan
bentuk fitur. Ada 6 lokasi fitur penting yaitu 2 lokasi di pusat mata, 2 lokasi di
ujung alis dalam dan 2 lokasi di ujung mulut seperti gambar yang ditunjukkan
berikut:

Gambar 2.5 Lokasi fitur ekspresi wajah

Pertama dilakukan pencarian titik pusat mata dan ujung alis dalam
dengan metode pencarian berdasarkan titik hitam dari suatu daerah menggunakan
iterasi thresholding. Untuk mendapatkan fitur 2 lokasi di ujung mulut
menggunakan teknik integral projection melalui proses deteksi tepi. Teknik yang
digunakan untuk mendapatkan bentuk fitur adalah dengan mengektrak bentuk
fitur daerah mulut dengan histogram seperti pada gambar berikut :

Universitas Sumatera Utara


14

Gambar 2.6 histogram fitur bentuk mulut

2.6. Widrow Hoff

ADALINE (Adaptive Linear Neuron) dikembangkan oleh Widrow dan Hoff pada
tahun 1960. Adaline dilatih dengan menggunakan aturan delta, yang juga dikenal
sebagai aturan least mean squares (LMS) atau Widrow-Hoff. Jaringan lapis tunggal
Jaringan terdiri dari satu atau lebih unit masukan dan satu unit keluaran. Mempunyai
sebuah bias yang berperilaku seperti bobot yang bisa disesuaikan yang terletak pada
koneksi dari sebuah unit yang selalu mengeluarkan sinyal +1 agar bobot bias bisa
dilatih seperti bobot lainnya dengan proses yang sama dalam algoritma pelatihan.
Beberapa jaringan Adaline yang menerima sinyal dari unit masukan yang sama dalam
dikombinasikan menjadi sebuah jaringan lapis tunggal seperti perceptron. Beberapa
Adaline juga bisa dikombinasikan sehingga keluaran dari sebagian Adaline menjadi
masukan untuk Adaline yang lain.
ADALINE menggunakan threshold dalam melakukan proses penjumlahan
linier seluruh masukan pada jaringannya. Pengaturan bobot interkoneksi pada jaringan
ADALINE dilakukan menggunakan Persamaan :
𝑊 +
̂𝑘)
= 𝑊 + 𝜇 (−∇ (1)
Keterangan :
µ adalah konstanta belajar.
εk adalah error pada iterasi ke-k.
𝜂 adalah konstanta belajar yang bernilai 2 µ.

Universitas Sumatera Utara


15

Menurut Saranya & Kuppusamy (2016 ) Adaline (Adaptive Linear Neuron)


adalah model linier sederhana dua lapisan jaringan syaraf tiruan. Satu lapisan
mengacu pada input dan lapisan lain mengacu pada lapisan keluaran yang memiliki
neuron output tunggal. Semua neuron masukan mengirimkan data ke neuron output
tunggal dan latihan jaringan hasilnya dengan algoritma Least Mean Squares (LMS)
untuk pembelajaran. Lingkup jaringan Adaline mengenali pola, penyaringan data, atau
mendekati fungsi linier
Arsitektur jaringan Adaline ditunjukkan pada gambar berikut. Pada jaringan
ini, terdapat n unit masukan, yaitu X1, …, Xi, …, Xn dengan bobot w1, …, wi, …,
wn, dan sebuah unit keluaran, yaitu Y. Selain itu, terdapat sebuah unit yang selalu
memberikan sinyal +1 dimana bobotnya diberi nama bias (b).

Gambar 2.7 Arsitektur ADALINE

Langkah dalam Adaline adalah sebagi berikut :

W[ ] = [ ]

Langkah 1: Pola pertama disimpan dalammemori dengan memodifikasi nilai bobot


interkoneksi menurut aturan Hebbian berdasarkan persamaan
𝑟𝑢
= 𝑊 +

+
= + 𝑇
=[ ]+[ + ] × [+ + + − ]
+

Universitas Sumatera Utara


16

+ + + −
=[+ + + − ]
+ + + −
− − − +

Dengan memperhatikan matriks bobot yang diperoleh, pola pertama


menunjukkan bahwa setiap dua ciri utama yang memiliki nilai yang sama baik +1 atau
-1, akan memiliki kekuatan hubungan antara dua elemen memori yang berhubungan
dengan ciri, sama dengan +1, sebaliknya, setiap dua ciri utama mempunyai nilai
berbeda, baik +1 dan -1 atau -1 dan +1, akan memiliki kekuatan hubungan antara dua
elemen memori yang berhubungan dengan ciri, sama dengan -1. Dengan kata lain,
bobot matriks akan sebanding dengan kovariansi antar ciri utama.
𝑇
Langkah 2: Misalkan, pola kedua yang dicirikan dengan = [− − − + ]

+ + + − +
= + 𝑇
=[+ + + − ]+[ + ] × [− − + − ]
+ + + − +
− − − + −

+ +
=[ + + ]
+ −
− +

langkah dilanjutkan hingga misalkan langkah sepuluh, sehingga diperoleh matriks


interkoneksi pola dalammemori asosiatif.

Gambar 2.8 Pola interkoneksi suatu memori asosiatif pengenalan sepuluh pola wajah
yang dibangun dari ciri utama.

Universitas Sumatera Utara


17

Pada Gambar 2.8, bobot interkoneksi antara elemen pemroses 1 dan 2, 1 dan 3,
dan 2 dan 3 mempunyai nilai 2, hal ini mencerminkan bahwa nilai-nilai ciri utama
yang berhubungan dengan elemen pemroses adalah sama, +1 dan +1 atau -1 dan -1,
dalam enam pola, tetapi berbeda untuk empat pola, 6 x (+1)+4 x (-1)=2. Bobot
interkoneksi antara elemen pemroses 1 dan 4 mempunyai nilai 6, yang menunjukkan
bahwa nilai-nilai ciri utama1 dan 4 sama dalam delapan pola dan berbeda dalam 2
pola, 8 x (+1)+2 x (-1)=6. Bobot interkoneksi antara elemen pemroses 2 dan 4, dan 3
dan 4 mempunyai nilai -2, yang menunjukkan nilai-nilai ciri utama yang berhubungan
dengan elemen pemroses adalah sama, +1 dan +1 atau -1 dan -1, dalam empat pola,
tetapi berbeda untuk enam pola, 4 x (+1)+6 x (-1)= -2.
Tinjau kembali hasil dari Gambar 2.6, ambil vektor masukan 2 dan 4 yang
menghasilkan keluaran yang tidak kuat (karena tidak ortogonal). Selanjutnya kita
mencoba membuat matriks bobot dengan algoritma belajar Widrow-Hoff. Jaringan
ADALINE terdiri dari kriteria sebagai berikut :
1. Memiliki satu atau lebih unit masukan dan satu unit keluaran.
2. Mempunyai sebuah bias yang berperilaku seperti bobot yang bisa disesuaikan
yang terletak pada koneksi dari sebuah unit yang selalu mengeluarkan sinyal +1
agar bobot bias bisa dilatih seperti bobot lainnya dengan proses yang sama dalam
algoritma pelatihan.
3. Beberapa jaringan Adaline yang menerima sinyal dari unit masukan yang sama
dalam dikombinasi kan menjadi sebuah jaringan lapis tunggal seperti perceptron.
4. Beberapa Adaline juga bisa dikombinasikan sehingga keluaran dari sebagian
Adaline menjadi masukan untuk Adaline yang lain, dan akan membentukan
jaringan lapis banyak yang disebut Madaline (Many Adaptive Linear Neuron).
5. Fungsi aktivasi yang digunakan adalah fungsi tangga

1 if yin > 0
Y=
(2)
-1 if yin < 0

6. Algoritma Pembelajaran
Langkah 0. Inisialisasi bobot
(biasanya digunakan bilangan acak yang kecil)

Universitas Sumatera Utara


18

Set laju pembelajaran a


(0,1 = na = 1, dimana n adalah jumlah unit masukan)
Langkah 1. Selama syarat henti salah, lakukan langkah 2- 6
Langkah 2. Untuk setiap pasangan pelatihan (masukan dan target) bipolar s:t,
lakukukan langkah 3- 5
Langkah 3. Set nilai aktifasi dari unit masukan, i = 1, …., n
x i= si (3)
Langkah 4. Hitung total masukan ke unit keluaran
Y_in = ∑ xiwi + b (4)
Langkah 5. Perbarui bobot dan bias, i = 1, …., n
b(new) = b(old) + a (t –y_in) (5)
wi(new) =wi (old) + a (t –y_in) xi (6)
Langkah 6. Uji syarat henti :
Jika perubahan bobot (a (t –y_in)) terbesar yang terjadi dalam langkah
2 adalah lebih kecil dari toleransi (e) yang telah ditentukan, maka
selesai; jika tidak maka kembali ke langkah 1. Nilai toleransi (e) yang
digunakan adalah 1 < e = 0. Dalam menentukan nilai laju pembelajaran
(a), umumnya digunakan nilai yang kecil (misalkan a = 0.1). Apabila
nilai a terlalu besar, proses pembelajaran tidak akan konvergen. Jika
terlalu kecil nilai yang dipilih,pembelajaran akan menjadi terlalu
lambat. Agar praktis, kisaran nilai a yang bisa dipilih adalah 0,1 = n a
= 1 dimana n adalah jumlah unit masukan.
7. Algoritma Pengujian
Setelah pelatihan, sebuah jaringan Adaline bisa digunakan untuk mengklasifikasi
pola ma sukan. Bila nilai target adalah bivalen (biner atau bipolar), fungsi tangga
bisa digunakan sebagai fungsi aktivasi dari unit keluaran. Prosedur umum ini
adalah langkah - langkah yang digunakan apabila target adalah bipolar :
Langkah 0. Inisialisasi bobot
(d igunakan nilai bobot yang diperoleh dari algoritma pelatihan)
Langkah 1. Untuk setiap vektor masukan x, lakukan langkah 2- 4
Langkah 2. Set nilai aktifasi dari unit masukan, i = 1, …., n
x i= si (7)

Universitas Sumatera Utara


19

Langkah 3. Hitung total masukan ke unit keluaran


Y_in = ∑ xiwi + b (8)
Langkah 4. Gunakan fungsi aktifasi

1 jika yin > 0


Y=
(9)
-1 jika yin < 0

2.7. Learning Vector Quatization

Menurut Ezat & Maleke Ashtar ( 2014) Learning Vektor Quantization (LVQ) adalah
suatu metode jaringan syaraf tiruan untuk melakukan pembelajaran pada lapisan
kompetitif yang terawasi. Suatu lapisan kompetitif akan secara otomatis belajar untuk
mengklasifikasikan vector-vektor input. Kelas-kelas yang didapatkan sebagai hasil
dari lapisan kompetitif ini hanya tergantung pada jarak antara vector-vektor input. Jika
kedua vector input mendekati sama, maka lapisan kompetitif akan meletakkan kedua
vector input tersebut kedalam kelas yang sama.
Jaringan LVQ memiliki lapisan kompetitif pertama dan lapisan linier kedua.
Lapisan kompetitif belajar untuk mengklasifikasikan vektor input dengan cara yang
sama seperti lapisan kompetitif dari Self Organizing Feature Maps. Lapisan linier
mengubah kelas lapisan kompetitif menjadi klasifikasi target yang ditentukan oleh
pengguna. Kelas yang dipelajari oleh lapisan kompetitif disebut sebagai subclass dan
kelas dari lapisan linier sebagai kelas sasaran
Arsitektur jaringan LVQ ini terdiri dari input, lapisan kohonen, dan lapisan
output. Arsitektur LVQ ini dapat digambarkan seperti gambar berikut:

Gambar 2.9 Contoh jaringan LVQ

Universitas Sumatera Utara


20

Pada beberapa literatur mungkin ditemui beberapa algoritma tentang LVQ


yang berbeda. Secara garis besar, algoritma LVQ adalah sebagai berikut.
1. Langkah pertama adalah menetukan masing-masing kelas output, menggunakan
bobot, dan menetapkan learning rate α .
2. Bandingkan masing-masing input dengan masing-masing bobot yang telah
ditetapkan dengan melakukan pengukuran jarak antara masing-masing bobot 0 dan
input . persamaannya adalah seperti berikut.
∥ 𝑝− 0∥ (10)
3. Nilai minimum dari hasil perbandingan itu akan menetukan kelas dari vektor input
dan perubahan bobot dari kelas tersebut. Perubahan untuk bobot baru ( 0′ ) dapat
dihitung dengan persamaan berikut.
1. Untuk input dan bobot yang memiliki kelas yang sama:
0′ = 0 + ( − 0) (11)
2. Untuk input dan bobot yang memiliki kelas yang bebeda:
0′ = 0 − ( − 0) (12)

Pada dasarnya perhitungan diatas akan dilakukan terus-menerus sampai nilai


bobot tidak berubah jika ada input baru. Hal ini tentu saja membutuhkan keperluan
memori yang sangat besar untuk melakukan perhitungan. Untuk itu, dalam melakukan
perhitungan LVQ bisa ditentukan maksimal perulangan (epoch) (Darma Putra, 2010).
Menurut Risky, Oni dan Dwi ( 2016) Algoritma LVQ bertujuan akhir mencari
nilai bobot yang sesuai untuk mengelompokkan vektor – vektor kedalam kelas tujuan
yang telah di inisialisasi pada saat pembentukan jaringan LVQ. Sedangkan algoritma
pengujiannya adalah menghitung nilai output (kelas vektor) yang terdekat dengan
vektor input, atau dapat disamakan dengan proses pengklasifikasian (pengelompokan).
Keterangan yang kita gunakan adalah sebagai berikut:
x : vektor pelatihan (input) (x1,…...,xi,…….,xn)
T : kategori yang tepat atau kelas untuk vektor pelatihan
Wj : bobot vektor untuk unit output ke-j (w1j,…….,wij,........,wnj)
Cj : kategori atau kelas yang ditampilkan oleh unit output ke-j

Universitas Sumatera Utara


21

∥ − j∥: jarak Euclidean antara vektor input dan bobot vektor untuk layer output ke-j
Berikut ini adalah algoritma pembelajaran LVQ:
langkah 0 : inisialisasi vektor referensi ; inisialisasi rating pembelajaran α (0)
langkah 1 : ketika kondisi berhenti adalah false, lakukan langkah 2 sampai 6
langkah 2 : untuk setiap input pelatihan vektor x lakukan langkah 3 – 4
langkah 3 : temukan j hingga ||x – wj|| minimum
langkah 4 : perbaharui wj sebagai berikut :
Wj(baru) = Wj(lama) + α[x – wj(lama)];
jika T ≠ Cj, maka
Wj(baru) = Wj(lama) - α[x – wj(lama)];
langkah 5 : kurang rating pelatihan
langkah 6 :tes kondisi berhenti: yaitu kondisi yang mungkin menetapkan sebuah
jumlah tetap dari iterasi atau rating pembelajaran mencapai nilai kecil
yang cukup.
Setelah proses pembelajaran Learning Vector Quantization (LVQ) maka langkah
selanjutnya adalah proses pengambilan hasil output Learning Vector Quantization
(LVQ). Pengambilan hasil dilakukan hanya pada proses Testing(pengujian). Pada
dasarnya, tahapan ini hanya memasukkan input bobot akhir kemudian mencari jarak
terdekat dengan perhitungan Euclidian (jarak terdekat).

2.8. Penelitian Sebelumnya


Algortima yang telah digunakan dapat dijabarkan dalam tabel berikut ini :

Tabel 2.2 Penelitian sebelumnya

No Nama Tahun Judul Penelitian Hasil dan Kesimpulan


Dilakukan pada pada citra
Analisa Sistem video untuk medetesi wajah
Pendeteksian Warna Kulit dan warna kulit dan
Dan Wajah Senyum menghasilkan akurasi Hasil
1 Safwandi 2016 Dengan Mengunakan penelitian yang diperoleh
Metode Learning Vector dalam penelitian ini
Quantization menunjukkan false positif
rate sebesar 60% dan
Detection Rate sebesar 40%.

Universitas Sumatera Utara


22

Dilakukan pada pada


pengenalan wajah dengan
cara memasukkan
karakteristik
Backpropagation yaitu
hidden layer dan bobot acak
yang dinamakan Modified
LVQ (MLVQ). Hasil
Modifikasi Jaringan Syaraf penelitian ini adalah
Eliasta Tiruan Learning Vector perbandingan antara
2 2016
ketaren Quantization Pada algoritma Backpropagation,
Pengenalan Wajah LVQ dan MLVQ pada
pengenalan wajah. Dengan
akurasi sebesar dengan
tingkat akurasi untuk
algoritma Backpropagation
sebesar 49.25 %, algoritma
LVQ sebesar 48.14 %
sedangkan algoritma MLVQ
sebesar 50.37 %.

Dari tabel diatas setiap algoritma memiliki kelebihan dan kelemahan. Oleh
karena itu peneliti akan mencoba mengimplementasikan algoritma Widrof Hoff dan
Learning vector Quantization dengan memandingkan kedua algoritma untuk
menganalisis akurasi pendeteksian wajah dan ekspresi sehingga didapatkan hasilnya
manakah yang lebih efektif dalam mendeteksi wajah dan ekspresi.

Universitas Sumatera Utara


BAB 3
METODELOGI PENELITIAN

3.1. Studi Kepustakaan dan Pengumpulan Data


Studi kepustakaan dilakukan dengan cara mengumpulkan dan membaca serta
memahami referensi yang terkait dengan sistem pendeteksian wajah dan ekpresi
menggunakan Widrow-hoff dan Learning Vector Quantization.
Data yang digunakan dalam penelitian ini terdiri dari sekumpulan citra video
untuk pelatihan (training data set) dan sekumpulan citra video untuk pengujian
(testing data set). Citra video untuk pelatihan maupun untuk pengujian diperoleh dari
berbagai sumber seperti hasil tangkapan kamera yang mengadung ekspresi sedang dan
sedih. Citra video yang digunakan hanya dibatasi pada citra video 24 bit dengan
ekstensi AVI. Alasan pemilihan video .AVI adalah dikarenakan format video .AVI
merupakan standar default dalam pemrosesan video pada sistem operasi Windows.

3.2. Analisis Kebutuhan Perangkat Keras dan Perngkat Lunak


Perangkat keras yang digunakan pada penelitian ini berupa laptop dengan spesifikasi
processor Intel Core i5 2.3 GHz, RAM 1 GB, kapasitas hardisk 250 GB, dan webcam.
Perangkat lunak yang dibutuhkan dalam penelitian ini adalah sistem operasi Microsoft
Windows 7 Ultimate dan menggunakan bahasa pemograman Delphi 7

3.3. Diagram Alur Kerja Penelitian


Diagram alur kerja penelitian secara umum dimulai dengan tahapan mengidentifikasi
sebuah masalah yang akan diteliti, kemudian tahapan menetapkan tujuan penelitian
agar tidak menyebar keruang lingkup yang lain dan dilanjutkan tahapan
mengumpulkan data atau sampel yang akan diteliti yaitu data wajah real-time yang
mengandung unsur ekspresi, selanjutnya tahapan merancang dan mengimplemtasikan
sistem yang dibangun sesuai dengan tujuan yang telah ditetapkan, selanjutnya proses
menguji coba metode yang telah diimplementasikan tersebut sehingga mendapatkan
kesimpulan terhadap penelitian yang dikerjakan. Diagram alur kerja yang akan
dilakukan pada penelitian ini diilustrasikan pada Gambar 3.1

Universitas Sumatera Utara


24

Identifikasi masalah

Menetapkan tujuan
Penelitian

Desain Sistem

Pengumpulan Data
Sampel

Implementasi Sistem

Ujicoba
Tidak
Sistem

ya

Pengukuran kinerja

Kesimpulan

Gambar 3.1 Alur kerja penelitian secara umum

3.4. Skema Sistem


Skema sistem pendeteksi wajah yang dibangun dalam penelitian ini diilustrasikan
pada Gambar 3.2.

Gambar 3.2 Skema sistem pendeteksi ekspresi wajah pada video.

Adapun tahapan yang dilakukan setelah sistem menerima input video adalah
tahapan grey-scale, konvolusi, dan uji pengenalan pola wajah dan ekspresi melalui
metode Widrow-Hoff dengan pendekatan jaringan ADALINE dan LVQ. Pada tahap
pre-processing, video sumber yang menjadi inputan akan di-resize terlebih dahulu
untuk menghemat waktu dan jumlah iterasi saat komputasi. Setelah resizing, video
akan direpresentasikan dalam bentuk satu kanal, dan diakhiri dengan pendeteksian

Universitas Sumatera Utara


25

tepi melalui proses konvolusi. Pada proses utama, komputasi menggunakan jaringan
ADALINE dan LVQ, vektor pola wajah akan dilatih untuk mendapatkan sebuah
matriks bobot, yang selanjutnya digunakan sebagai matriks pengujian.

3.5. Grey-scale
Diagram alir untuk proses grey-scale dibangun berdasarkan Gambar 3.3:
Mulai

X = 0
Y= 0

Tentukan panjang dan


tinggi image

Red : pilih merah pada pixel x, y


Green : pilih hijau pada pixel x, y
Blue : pilih biru pada pixel x, y

Grayscale: Red +Green + Blue ) / 3

Ya Ubah pixel warna x, y dengan


grayscale

Ya X = X + 1

X > panjang ?

Tidak
Y = Y + 1

Y > Tinggi ?

Tidak

Selesai

Gambar 3.3 Diagram alir proses grey-scale


Tahapan grey-scale bertujuan untuk meratakan nilai intensitas ketiga kanal
yang terdapat pada video 24 bit. Berturut-turut nilai-nilai intensitas yang terdapat pada
kanal R, kanal G, dan kanal B dijumlahkan dan dibagi dengan jumlah kanal, sehingga
nilai-nilai kanal sekarang diperbaharui. Proses grey-scale video sangat membantu
percepatan dalam komputasi selanjutnya, karena blok sistem proses hanya cukup
mengambil nilai dari salah satu kanal saja sebagai presentasi nilai-nilai intensitas

Universitas Sumatera Utara


26

lainnya yang terdapat video.Adapun tahapan-tahapan proses grey-scale pada 3.3


adalah sebagai berikut:
1. Melakukan inisialisasi untuk x = 0 dan y = 0
2. Menentukan panjang dan tinggi image
3. Mengambil nilai Red [x,y], Green [x,y] dan Blue [x,y] pada image
4. Melakukan konversi gambar menjadi grayscale dengan menggunakan rumus
grayscale = Red [x,y] + Green [x,y] + Blue [x,y] / 3
5. Melakukan perubahanwarna pada pixel [ x,y] dengan RGB
6. Setelah melakukan perubahan nilai [x] maka nilai x = [x] + 1
7. Setelah melakukan proses memasukkan gambar akan dilakukan pengecekan
apakah x > panjang ?, jika ya maka akan dilakukan pengambilan nilai Red, Green,
Blue (proses 2), jika tidak maka akan dicek nilai [y]
8. Setelah melakukan perubahan nilai [y] maka nilai x = [y] + 1
9. Setelah melakukan proses memasukkan gambar akan dilakukan pengecekan
apakah y > tinggi ?, jika ya maka akan dilakukan pengambilan nilai Red, Green,
Blue (proses 2), jika tidak maka proses selesai.

3.6. Konvolusi
Diagram alir untuk proses konvolusi dibangun berdasarkan Gambar 3.4:

Mulai

Video Grey-scale

 (x,y)  (x  n,y) 
      kernel
 
(x,y  n)  (x  n,y  n)
Tidak

Apakah semua pixel (nilai


intensitas) video sudah di
kalkulasi

Ya

Stop
Gambar 3.4 Diagram alir proses konvolusi

Universitas Sumatera Utara


27

Konvolusi yang dilakukan dalam blok diagram sistem menggunakan dua


operator sobel. Proses konvolusi dilibatkan untuk mentransformasi nilai-nilai
intensitas yang telah terkondisi dari tahapan sebelumnya, menjadi nilai-nilai intensitas
yang merepresentasikan tepi objek (wajah). Adapun tahapan-tahapanya :
1. Input nilai citra grayscale yang sudah dikalkulasikan.
2. Pada saat sistem menerima inputan citra grayscle, akan dipartisipasikan menjadi
matriks 3x3 dan dikonvolusikan dengan sebuah kernel yaitu sobel.
3. Apabila semua pixel citra sudah dikalkulasi, maka akan dilanjutkan ke tahapan
berikutnya, dan apabila semua pixel belum dikalkulasi maka sistem akan kembali
pada tahapan ke-2.

3.7. Jaringan Syaraf Tiruan


Model Jaringan syaraf yang digunakan pada sistem ini adalah jenis Widrow-Hoff Dan
LVQ. diagram alir dari algoritma belajar Widrow-Hoff ditunjukkan pada Gambar 3.5
Mulai

Input vektor pola

Hitung error
 n   X [t ]  X t 1

Hitung matriks koreksi


w[ n]     n  X [Tt]

Perbaharui matriks bobot


W[ n ]  Wn 1  wn 1

Tidak Apakah  n  <0,1 atau


epoch > maks_epoch

Ya
Stop

Gambar 3.5 Diagram alir algoritma belajar Widrow-Hoff

Universitas Sumatera Utara


28

Adapun langkah-langkah algoritma Widdrow-Hoff pada penelitian ini adalah


sebagai berikut :
Langkah 1 : Jaringan menerima inputan struktur pola dari nilai konvolusi yaitu
Struktur pola inputan merupakan sebarisan pola tepi-tepi objek yang mungkin
mengandung wajah atau bukan wajah dan ekspresi
Langkah 2 : setelah vektor pola didapat selanjutnya jaringan melakukan perhitungan
error
 n   X [t ]  X t 1

Langkah 3 : jaringan melakukan perhitungan matriks koreksi


w[ n]     n  X [Tt]

Langkah 4 : Pembaharuan matriks bobot


W[ n ]  Wn 1  wn 1
Langkah 5 : pengulangan hingga tercapai error minimum atau telah memenuhi batas
iterasi maksimum.
Apakah  n  <0,1 ?

Langkah di atas berlaku untuk tahapan pelatihan dan pegujian sistem yang di
bangun. Pertama sistem akan melakukan proses pelatihan untuk mendapatkan bobot
nilai yang akan dijadikan referensi saat pegujian. Saat proses pengujian algorima
akan menyimpan bobot nilai yang mengandung ekpresi senang dan sedih pada area
wajah.
Adapun Skema untuk metode LVQ Dalam proses ini inputan sistem berupa citra
video wajah yang telah dikonvolusi, setelah itu dilakukan proses perhitungan jarak
menggunakan rumus Ecludian Distance dan mendapatkan nilai bobot akhir yang
kemudian nilai-nilai tersebut disimpan kedalam memori unyuk digunkan sebagai nilai
referensi pada saat proses pengujian. Adapun kema pelatihan pada metode LVQ
digambarkan pada gambar 3.6 :

Universitas Sumatera Utara


29

Gambar 3.6 Diagram alir Algoritma LVQ

Pada tahap ini, Langkah awal adalah melakukan pengenalan terhadap pola
masukkan terlebih dahulu yang disajikan dalam bentuk vector yang terdiri dari vector
target atau variable input. Setiap neuron keluaran menyatakan kelas atau katagori
tertentu, maka pola masukkan dapat dikenali kelasnya berdasarkan neuron keluaran
yang diperoleh. Metode LVQ mengenali pola masukkan berdasarkan pada kedekatan
jarak antara dua vector yaitu vector dari unit masukkan dan bobot. Adapun langkah-
langkahnya adalah :
Langkah 1 : Inisialisasi vector pola, learning rate dan bobot
Langkah 2: input nilai vector pola dan target

Universitas Sumatera Utara


30

Langkah 3 : inisialisasi epoch dan tetapkan error


Langkah 4 : penentuan apakah elearning rate lebih besar dari maksimum iterasi, jika
ya aka lanjut ke tahap 5 jika tidak, maka proses selesai
Langkah 5 : inisialisasi data 1 sampai n
i = 1 sampai n
Langkah 6 : tentukan satu variable baru
Langkah 7 : cari nilai bobot yang minimum
Langkah 8 : apakah target = variable baru ? jika ya maka bobot baru akan di update :
W (baru) = w (lama) + α ( x – w (lama) ) jika tidak W (baru) = w (lama) - α ( x – w (lama) )

Langkah 9 : kurangkan nilai learning rate


Langkah di atas berlaku untuk tahapan pelatihan dan pegujian sistem yang di
bangun. Pertama sistem akan melakukan proses pelatihan untuk mendapatkan bobot
nilai yang akan dijadikan referensi saat pegujian. Saat proses pengujian algorima
akan menyimpan bobot nilai yang mengandung ekpresi senang dan sedih pada area
wajah.

3.8. Parameter Pengukuran Evaluasi Unjuk Kerja Sistem


Pengukuran evaluasi unjuk kerja sistem pendeteksi wajah pada umumnya
menggunakan dua parameter, yaitu detection rate dan false positive rate . Detection
rate merupakan perbandingan atau prosentase jumlah ekspresi wajah yang berhasil
dideteksi per seluruh jumlah wajah yang diuji, sedangkan false positive rate adalah
jumlah objek bukan wajah yang dideteksi sebagai wajah.

Universitas Sumatera Utara


BAB 4

HASIL DAN PEMBAHASAN

4.1. Hasil

Hasil yang dibahas meliputi pemilihan sampel pelatihan citra, vektor pola citra,
pengujian sistem dan pengukuran unjuk kerja sistem.

4.1.1. Sampel pelatihan citra


Sampel pelatihan citra wajah yang mengandung unsur ekspresi yang digunakan dalam
penelitian ini 30 citra wajah yang mewakili karakteristik vektor wajah dan ekspresi
yang berbeda. Pelatihan dilakukan menggunakan algoritma Widrow-Hoff dan
Learning Vector Quantization dengan konstanta belajar,  =0,1. Gambar 4.1
menunjukkan beberapa sampel citra wajah dan ekspresi yang digunakan sebagai
pelatihan.

Gambar 4.1. Beberapa sampel citra wajah dan ekpresi yang digunakan

4.1.2. Hasil vektor pola citra wajah dan ekspresi


Setiap citra wajah memiliki vektor pola yang spesifik atau berbeda antara satu wajah
dengan wajah lainnya. Pada jaringan ADALINE yang menggunakan algoritma belajar
Widrow-Hoff dan metode LVQ vektor pola wajah referensi sudah harus ditentukan
sebelum dilakukan pengujian. Gambar 4.2 menunjukkan vektor pola wajah referensi

Universitas Sumatera Utara


32

yang dihasilkan dari pengamatan pada citra wajah dan ekspresi pelatihan. Vektor pola
ekpresi wajah referensi terkait dengan kemunculan nilai-nilai 0 atau 1 pada sejumlah
video wajah pelatihan. Nilai 0 pada vektor mewakili nilai yang bukan termasuk fitur
ekspresi wajah tetapi di dalam wilayah wajah, sebaliknya nilai 1 mewakili nilai yang
termasuk di dalam fitur ekspresi wajah

Gambar 4.2. Vektor pola citra yang mengandung ekpresi wajah hasil koreksi dan pengamatan
pada sejumlah citra wajah yang digunakan sebagai pelatihan.

4.1.3. Hasil deteksi wajah dan ekspresi


Didalam hasil deteksi wajah dan ekspresi dilakukan tehadap 2 karakteristik citra yaitu
unsure citra yang mengandung ekpresi senang dan sedih. Gambar 4.3 menunjukkan
beberapa hasil pendeteksian citra wajah dan ekspresi secara benar (true detection),
sedangkan gambar 4.4 menunjukkan beberapa hasil pendeteksian citra wajah dan
ekspresi yang salah (false detection).

Gambar 4.3. Beberapa hasil true detection pada citra wajah dan ekspresi

Universitas Sumatera Utara


33

Gambar 4.4. Beberapa hasil false detection pada citra wajah dan ekspresi

4.1.4. Pengukuran unjuk kerja sistem pendeteksi ekspresi wajah


Pengukuran unjuk kerja sistem dilakukan secara pertahap. Pada citra yang memuat
ekspresi wajah senang dan sedih menggunakan Algoritma Widrow-Hoff. Berikut
hasil unjuk kerja sistem deteksi wajah dan ekspresi ”happy” atau k1  . yang akan di

jelaskan pada pada tabel 4.1 dan ”unhappy” atau k 2  yang akan di jelaskan pada
pada tabel 4.2 dimana nilai persentase di dapat dari rumus berikut :

𝑟 𝑒 𝑒 𝑒𝑐
Persentase = x 100 %
𝐽 𝑎ℎ 𝑟𝑎

Tabel 4.1. Hasil unjuk kerja sistem ekspresi wajah happy dengan algoritma Widrow-Hoff

Jumlah data Jumlah data True False


NO persentase
Pelatihan Pengujian Detection Rate
25 20 5 80 %
50 41 9 82%
1 5
75 63 12 84%
100 74 26 74%
25 22 3 88 %

2 50 46 4 92 %
10
75 69 6 92 %
100 80 20 80%

Universitas Sumatera Utara


34

Berdasarkan table di atas maka hasil unjuk kerja true detection untuk
ekpspresi happy yang diperoleh ditunjukkan oleh gambar 4.5 sebagai berikut :

Hasil Unjuk Kerja Sistem Ekspresi Wajah


"Happy" Algoritma Widrow-Hoff
88% 92%
80% 82% 84% 83% 80%
74%

25 50 75 100

Data Training 5 Data Training 10

Gambar 4.5. Grafik unjuk kerja sistem deteksi ekspresi Happy menggunakan Widrow-hoff

Tabel 4.2. Hasil unjuk kerja sistem ekspresi wajah unhappy dengan algoritma Widrow-Hoff

Jumlah data Jumlah data True False


NO persentase
Pelatihan Pengujian Detection Rate
25 19 6 76 %
50 42 8 84%
5
75 65 10 86%
100 70 30 70%
25 22 3 88 %

2 50 45 5 90 %
10
75 69 6 92 %
100 85 15 85%

Berdasarkan table di atas maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan oleh gambar 4.6 sebagai berikut :

Universitas Sumatera Utara


35

Hasil Unjuk Kerja Sistem Ekspresi Wajah


"Unhappy" Algoritma Widrow-Hoff
88% 90% 86% 83%
84% 83%
76%
70%

25 50 75 100

Data Training 5 Data Training 10

Gambar 4.6. Grafik unjuk kerja sistem deteksi ekspresi Unhappy menggunakan Widrow-hoff

Secara keseluruhan kedua nilai persentase ekpresi senang dan sedih dapat
dirangkum dalam tabel 4.3 sebagai berikut

Tabel 4.3. Hasil unjuk kerja sistem ekspresi wajah happy dan unhappy dengan
algoritma Widrow-Hoff

Jumlah data Jumlah data Happy unhappy


NO
Pelatihan Pengujian k1  k2 
25 80 % 76 %
50 82% 84%
1 5
75 84% 86%
100 74% 70%
25 88 % 88 %

2 50 92 % 90 %
10
75 92 % 92 %
100 80% 85%

Berdasarkan tabel diatas jumlah citra pengujian dalam penelitian ini adalah
sebanyak 100 vektor pola wajah dalam video. Untuk tahap pelatihan dengan jumlah 5

Universitas Sumatera Utara


36

sampel pada data pengujian 25 sampel maka diperoleh true detection untuk k1 = 0,80

atau 80% dan k 2 = 0,76 atau 76%, pada data pengujian 50 sampel maka diperoleh true

detection untuk k1 = 0,82 atau 82% dan k 2 = 0,84 atau 84%, pada data pengujian 75

sampel maka diperoleh true detection untuk k1 = 0,84 atau 84% dan k 2 = 0,86 atau

86%, pada data pengujian 100 sampel maka diperoleh true detection untuk k1 = 0,74

atau 74% dan k 2 = 0,70 atau 70%. Pada tahap kedua proses pelatihan data sebanyak

10 sampel maka pada data pengujian 25 sampel diperoleh true detection untuk k1 =

0,88 atau 88% dan k 2 = 0,88 atau 88%, pada data pengujian 50 sampel maka diperoleh

true detection untuk k1 = 0,92 atau 92% dan k 2 = 0,90 atau 90%, pada data pengujian

75 sampel maka diperoleh true detection untuk k1 = 0,92 atau 92% dan k 2 = 0,92 atau

92%, pada data pengujian 100 sampel maka diperoleh true detection untuk k1 = 0,80

atau 80% dan k 2 = 0,85 atau 85%.


Selanjutnya pada citra yang memuat ekspresi wajah senang dan sedih
menggunakan algoritma learning vector quantization ( LVQ). Hasil unjuk kerja
sistem deteksi wajah dan ekspresi ”happy” atau k1  yang akan di jelaskan pada pada

tabel 4.4 dan ”unhappy” atau k 2  . yang akan di jelaskan pada pada tabel 4.5 dimana
nilai persentase di dapat dari rumus pada algoritma Widrow-hoff sebelumnya.

Tabel 4.4. Hasil unjuk kerja sistem ekspresi wajah happy dengan algoritma LVQ

Jumlah data Jumlah data True False


NO persentase
Pelatihan Pengujian Detection Rate
25 18 7 72%
50 38 12 76%
1 5
75 60 15 80%
100 74 26 74%
25 20 3 80%

2 50 42 8 84 %
10
75 62 13 82 %
100 77 23 77%

Universitas Sumatera Utara


37

Berdasarkan table di atas maka hasil unjuk kerja true detection untuk
ekpspresi happy yang diperoleh ditunjukkan oleh gambar 4.7 sebagai berikut :

Hasil Unjuk Kerja Sistem Ekspresi Wajah


"Happy" Algoritma LVQ
88% 86% 84% 83%
76% 80% 80%
68%

25 50 75 100

Data Training 5 Data Training 10

Gambar 4.7. Grafik unjuk kerja sistem deteksi ekspresi Happy menggunakan LVQ

Tabel 4.5 Hasil unjuk kerja sistem ekspresi wajah unhappy dengan algoritma LVQ

Jumlah data Jumlah data True False


NO persentase
Pelatihan Pengujian Detection Rate
25 19 6 76 %
50 40 10 80%
1 5
75 63 12 84%
100 68 32 68%
25 22 3 88 %

2 50 43 7 86 %
10
75 69 6 83 %
100 80 20 80%

Berdasarkan table di atas maka hasil unjuk kerja true detection untuk
ekpspresi happy yang diperoleh ditunjukkan oleh gambar 4.8 sebagai berikut :

Universitas Sumatera Utara


38

Hasil Unjuk Kerja Sistem Ekspresi Wajah


"Unhappy" Algoritma LVQ
88% 86% 84% 83%
80% 80%
76%
68%

25 50 75 100

Data Training 5 Data Training 10

Gambar 4.8. Grafik unjuk kerja sistem deteksi ekspresi unhappy menggunakan LVQ

Secara keseluruhan kedua nilai persentase ekpresi senang dan sedih dapat
dirangkum dalam tabel 4.3 sebagai berikut

Tabel 4.6. Hasil unjuk kerja sistem ekspresi happy dan unhappy dengan algoritma LVQ

Jumlah data Jumlah data Happy unhappy


NO
Pelatihan Pengujian k1  k2 
25 72% 76 %
50 76% 80%
1 5
75 80% 84%
100 74% 68%
25 80% 88 %

2 50 84 % 86 %
10
75 82 % 83 %
100 77% 80%

Berdasarkan tabel diatas jumlah citra pengujian dalam penelitian ini adalah
sebanyak 100 vektor pola wajah dalam video. Untuk tahap pelatihan dengan jumlah 5

Universitas Sumatera Utara


39

sampel pada data pengujian 25 sampel maka diperoleh true detection untuk k1 = 0,72

atau 72% dan k 2 = 0,76 atau 76%, pada data pengujian 50 sampel maka diperoleh true

detection untuk k1 = 0,76 atau 76% dan k 2 = 0,80 atau 80%, pada data pengujian 75

sampel maka diperoleh true detection untuk k1 = 0,80 atau 80% dan k 2 = 0,84 atau

84%, pada data pengujian 100 sampel maka diperoleh true detection untuk k1 = 0,74

atau 74% dan k 2 = 0,68 atau 68%. Pada tahap kedua proses pelatihan data sebanyak

10 sampel maka pada data pengujian 25 sampel diperoleh true detection untuk k1 =

0,80 atau 80% dan k 2 = 0,88 atau 88%, pada data pengujian 50 sampel maka diperoleh

true detection untuk k1 = 0,84 atau 84% dan k 2 = 0,86 atau 86%, pada data pengujian

75 sampel maka diperoleh true detection untuk k1 = 0,82 atau 82% dan k 2 = 0,83 atau

83%, pada data pengujian 100 sampel maka diperoleh true detection untuk k1 = 0,77

atau 77% dan k 2 = 0,80 atau 80%.


Sistem pendeteksi ekspresi wajah memiliki true detection rate berkisar 74%
hingga 85% untuk algoritma Widrow-hoff dan sistem pendeteksi ekspresi wajah
memiliki Detection rate sebesar 74% hingga 80% untuk algoritma LVQ. Hal ini
menunjukkan bahwa kinerja algoritma Widrow-hoff lebih efektif dibandingkan
dengan algoritma LVQ. Tabel 4.7 mengilustrasikan beberapa contoh pendeteksian
happy dan unhappy yang ada didalam sistem untuk mendeteksi wajah dan ekspresi
yang terkandung menggunakan algoritma Widrow-hoff dan tabel 4.8 mengilustrasikan
beberapa contoh pendeteksian happy dan unhappy yang ada didalam sistem untuk
mendeteksi wajah dan ekspresi yang terkandung menggunakan algorima LVQ .

Tabel 4.7. beberapa contoh pendeteksian ekspresi wajah dengan algoritma Widrow-Hoff
Citra yang True False
No Hasil citra
digunakan detection detection

2
1 0

Universitas Sumatera Utara


40

Citra yang True False


No Hasil citra
digunakan detection detection

2 2 0

3 2 0

4 2 0

5 2 0

6 1 1

7 2 0

8 1 1

9 2 0

Universitas Sumatera Utara


41

Citra yang True False


No Hasil citra
digunakan detection detection

10 2 0

11 2 0

12 1 1

13 1 1

14 0 2

15 2 0

16 2 0

17 2 0

Universitas Sumatera Utara


42

Tabel 4.8. beberpa contoh pemdeteksian ekspresi wajah dengan algoritma LVQ
Citra yang True False
No Hasil citra
digunakan detection detection

1 2 0

2 2 0

3 2 0

4 2 0

5 2 0

6 1 1

7 1 1

8 2 0

Universitas Sumatera Utara


43

Citra yang True False


No Hasil citra
digunakan detection detection

9 2 0

10 2 0

11 2 0

12 2 0

13 1 1

14 0 2

15 0 2

16 1 1

Universitas Sumatera Utara


44

Hasil pengujian pada tabel 4.6 dan tabel 4.7 menunjukkan bahwa true
detection sangat dipengaruhi oleh citra pelatihan. Maka hasil unjuk kerja true
detection yang diperoleh ditunjukkan oleh gambar 4.7 untuk algoritma Widrow-Hoff
dan gambar 4.8 untuk algoritma LVQ.

Grafik unjuk kerja sistem menggunakan algoritma


2.5
Widrow-Hoff
2

1.5
true detection
1 false detection

0.5

0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Citra yang digunakan

Gambar 4.9. Grafik unjuk kerja sistem menggunakan algoritma Widrow-Hoff

Grafik diatas menunjukkan bahwa jumlah true detection lebih dominan


dibandingkan dengan nilai false detection. Hal ini membuktikan bahwa algorimatma
Widrow-hoff efektif digunakan dalam mendeteksi citra wajah dan ekspresi yang
terdapat pada video dan memiliki kinerja yang lebih akurat dibandingkan algoritma
LVQ

Grafik unjuk kerja sistem menggunakan algoritma


2.5
LVQ
2

1.5
true detection
1 false detection

0.5

0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Citra yang digunakan

Gambar 4.10. Grafik unjuk kerja sistem menggunakan algoritma LVQ

Universitas Sumatera Utara


45

Berdasarkan Grafik diatas menunjukkan bahwa jumlah true detection lebih


dominan dibandingkan dengan nilai false detection. Hal ini membuktikan bahwa
algoritma LVQ efektif digunakan dalam mendeteksi citra wajah dan ekspresi yang
terdapat pada video.

4.2. Pembahasan
Pembahasan yang dibahas meliputi proses mendapatkan vector pola citra wajah dan
ekspresi dan pengukuran unjuk kerja sistem

4.2.1. Pembahasan vektor pola citra wajah dan ekspresi


Berdasarkan hasil penelitian yang dilakukan, hasil unjuk kerja sistem pendeteksian
wajah dan ekspres sangat dipengaruhi oleh keempat pola yang dilatih, pengamatan
terhadap vektor pola acuan untuk pengujian, kekompleksitasan objek-objek yang
terdapat dalam citra, dan tingkat keberhasilan sistem dalam memetakan vektor vektor
pola wajah masukan menjadi vektor pola wajah. edge Lokasi wajah pada citra dalam
video dapat dideteksi oleh sistem jika vektor pola wajah edge atau citra edge betul-
betul mengandung peta fitur wajah. Gambar 4.7 mengilustrasikan keadaan citra wajah
dan ekspresi edge pada citra dalam video yang memuat lokasi wajah yang berhasil
dideteksi, dan Gambar 4.7 memuat beberapa contoh citra wajah dan ekspresi edge
pada citra dalam video yang memuat lokasi wajah yang tidak berhasil dideteksi.

Gambar 4.11. Beberapa contoh citra edge yang memuat lokasi wajah yang berhasil dideteksi

Universitas Sumatera Utara


46

Gambar 4.12. Beberapa contoh citra edge yang memuat lokasi wajah yang tidak berhasil
dideteksi

Didalam sistem yang dibangun, pada proses pembelajaran sistem akan


mengubah citra wajah dan ekpresi kedalam citra grayscale, hal ini dilakukan untuk
menyederhanakan model citra. Citra berwarna terdiri dari tiga layer matriks yaitu R-
layer, G-layer, B-layer. Sehingga untuk melakukan proses-proses selanjutnya tetap
diperhatikan ketiga layer tersebut. Bila setiap proses perhitungan dilakukan
menggunakan tiga layer, berarti dilakukan tiga perhitungan yang sama. Sehingga
konsep itu diubah dengan mengubah tiga layer tersebut menjadi satu layer matriks
grayscale dan hasilnya adalah citra grayscale.

Selanjutnya akan dilakukan proses tresholding, proses tresholding ini pada


dasarnya adalah proses pengubahan kuantisasi pada citra. Proses digunakan untuk
mengatur jumlah derajat keabuan yang ada pada citra. Dengan menggunakan
tresholding maka derajat keabuan bisa diubah sesuai keinginan.
Kemudian akan dilakukan proses konvolusi, hal ini bertujuan untuk
menyederhanakan bentuk citra kedalam bentuk tepi. Setelah itu akan dilakukan proses
pendeteksian tepi menggunakan operator sobel. Operasi pendeteksian tepi ini
digunakan untuk menentukan lokasi titik-titik yang merupakan tepi objek citra. Secara
umum, tepi suatu objek dalam citra dinyatakan sebagai titik yang nilai warnanya
berbeda cukup besar dengan titik yang ada disebelahnya. Berikut adalah matriks dari
operator sobel:
1. Operator sobel horizontal 2. Operator sobel vertikal
− − − −

Kombinasi antar kedua hasil operasi dengan mask tersebut bisa dilakukan
dengan mengambil hasil penjumlahan.
|𝐺| = |𝐺 | + |𝐺 |

Universitas Sumatera Utara


47

Contoh perhitungan horizontal dan vertikal menggunakan operator sobel.


Tabel 4.9. Contoh nilai suatu pixel citra

22 10 15 28 11 19 13 10
13 17 24 23 17 25 24 18
65 17 25 23 17 24 22 17
25 24 18 25 24 17 25 24
15 22 17 25 22 17 25 21

Sx = (22)(-1) + (13)(-2) + (65)(-1) + 10(0) + 17(0) +17(0) +(15)(1) + (24)(2) +


(25)(1) = -25
Sy = (23)(1) + (10)(2) + (15)(1) + 13 (0 ) + 17(0) + 24(0) + (65)(-1) +
( 17)(-2) + (25)(-1) = - 67
𝑀 = √− 2 + − 2 = √− 2 + √− 2 = (-25)+(-62) = -92

Sehingga didapatkan nilai dalam tabel sebagai berikut:

Tabel 4.10. Hasil Nilai Citra Sobel


-92 14 -32 -16 -4 -60

-96 22 -22 -12 26 -14

-4 20 8 -28 16 8

Sebagai catatan, jika hasil konvolusi menghasilkan nilai pixel negatif, maka nilai
tersebut dijadikan 0, sebaliknya jika hasil konvolusi menghasilkan nilai pixel lebih
besar dari nilai keabuan maksimum, maka nilai tersebut dijadikan ke nilai keabuan
maksimum sehingga Normalisasi nilai pixel dapat di tulis:
Jika M >= 0 maka M=1, Jika M<0 maka M=0
Tabel 4.11. Hasil Normalisasi Nilai Pixel

0 1 0 0 0 0

0 1 0 0 1 0

0 1 1 0 1 1

Universitas Sumatera Utara


48

Beikut beberapa contoh konvolusi yang memuat wajah yang mengandung


ekpresi :

Gambar 4.13. Beberapa contoh citra konvolusi yang memuat lokasi wajah

Berdasarkan gambar diatas dapat kita lihat, setiap citra memiliki bobot nilai
yang berbeda-beda. Hal ini di karenakan setiap gambar memiliki tepian yang berbeda-
beda. Nilai yang didapatkan pada vector pola setiap ekspresi berbeda antara algoritma
Widrow-hoff dan LVQ. Untuk nilai vector pola wajah yang dominan senang, akan
mengandung vector pola yang sangat mirip antara nilai koefisien senang dan sedih.
Demikian pula terhadap wajah yang dominan murung, maka akan mengandung nilai
vector yang mirip sehingga membuat sistem akan sulit membedakan antara bobot nilai
senang dan sedih.

4.2.2. Pembahsan dalam unjuk kerja sistem pendeteksi ekspresi wajah


Selanjutnya sistem akan melakukan pelatihan terhadap citra wajah yang telah
dideteksi tepi dengan cara menggeser bagian detektor ke dalam posisi area wajah yang
mengandung fitur-fitur ekspresi. Kemudian akan dilakukan perekaman peta wajah.
Yang dimaksudkan disini adalah, posisi wajah yang akan direkam dalam detektor
yang nantinya akan disimpan kedalam file notepad bernama “peta.txt” atau
“peta2.txt”. Selanjutnya sistem akan menggunakan metode yang telah ditentukan,
yaitu Widrrow-hoff dan Learning Vector Quatization.
Untuk proses mendeteksi ekspresi “senang” menggunakan Widrow-Hoff memiliki true
detection yang tinggi dibandingkan dengan algoritma Learning vector Quantization.
Proses yang dilakukan adalah dengan melatih terlebih dahulu citra yang digunakan
untuk proses pelatihan. Dalam sistem nilai dari proses pelatihan akan disimpan

Universitas Sumatera Utara


49

kedalam file “petavertikal.txt” untuk nilai yang menyatakan citra yang mengandung
ekpresi senang dan “petavertikal2.txt” untuk nilai yang mengadung ekpresi sedih.
selanjutnya sistem akan membaca nilai dari bobot citra yang diujikan. Berikut
beberapa set data yang menjadi citra latih :

Gambar 4.14. contoh pengenalan bobot wajah dan ekpresi dengan algoritma WH

Berdasarkan gambar diatas, proses pengenalan ekpresi pada wajah didapat dari
nilai citra latih yang mengandung ekspresi senang dan bobot nilai yang telah di
lakukan perhitungan dengan algoritma widrow-Hoff yang akan disimpan kedalam file
yang dijelaskan sebelumnya untuk dijadikan nilai acuan yang digunkan untuk proses
pengujian. Untuk bobot nilai citra latih yang mengandung nilai ekpresi sedih disimpan
dalam file yang dijelaskan sebelumnya untuk dijadikan nilai acuan yang digunkan
untuk proses pengujian pula. Selanjutkan sistem akan melakukan proses pengujian
dengan citra yang baru yang dijadikan sebagai citra uji dan mengandung unsur wajah
dan ekspresi. Jika bobot citra yang di uji mendekati nilai vector pada file citra latih
senang, maka citra uji dikenali sebagai citra senang atau sistem akan mendeteksi
sebagai “Happy” namun Jika bobot citra yang di uji mendekati nilai vector pada file
citra latih sedih, maka citra uji dikenali sebagai citra senang atau sistem akan
mendeteksi sebagai “UnHappy”

Universitas Sumatera Utara


50

Pada metode Widrow-Hoff dilakukan pendekatan ADALINE sembarang nilai sebagai


berikut:
( x1 x 2 1 ) = ( 1 1 1 )
( w1 w2 b ) = ( 0 0 0 )
Net = ∑ xiwi + b = 1 (0) + 1 (0) + 0
=0
Y = F (net) = net = 0
Dengan α = 0.1 batas toleransi = 0,05 maka perubahan bobot ∆wi = α (t-y) xi,
sehingga didapat :
∆w1 = 0.1 *(1- 0 ) 1 = 0.1
∆w2 = 0.1 * (1- 0 ) 1 = 0.1
∆b = 0.1 * (1- 0 ) 1 = 0.1
untuk bobot baru wbaru = w lama + ∆w dan bbaru = b lama + α (t-y) sehingga didapat
w1 = 0 + 0,1 = 0.1
w2 = 0 + 0.1 = 0.1
b = 0 + 0.1 = 0.1

Maksimum ∆w1 dari keempat masukkan adalah = 0.07 > toleransi, maka iterasi
dilanjutkan untuk epoch selanjutnya sehingga mendapatkan nilai yang paling kecil
dalam jumlah bobotnya. Table 4.4 menunjukkan hasil untuk epoch 1 dan tabel 4.5
menunjukkan hasil untuk epoch ke 2.
Pada Algoritma Learning Vector Quantization, sistem akan melakukan
pelatihan terhadap wajah yang telah dideteksi tepi dengan cara menggeser bagian
detektor ke dalam posisi area wajah yang mengandung fitur-fitur wajah. Kemudian
akan dilakukan perekaman peta wajah. Yang dimaksudkan disini adalah, posisi
wajah yang akan direkam dalam detektor yang nantinya akan disimpan kedalam file
notepad bernama “peta.txt”. Selanjutnya sistem akan menggunakan metode yang
telah ditentukan, yaitu Learning Vector Quantization. Didalam metode ini, epoch
akan diatur menjadi nol dan akan dilakukan untuk pencarian jarak menggunakan
Euclidian distance yang nantinya akan disimpan dalam file notepad bernama
“jarak.txt”.

Universitas Sumatera Utara


51

Gambar 4.15. contoh pengenalan bobot wajah dan ekpresi dengan algoritma LVQ

Berdasarkan gambar diatas, proses pengenalan ekpresi pada wajah didapat dari
nilai citra latih yang mengandung ekspresi senang dan bobot nilai yang telah di
lakukan perhitungan dengan algoritma widrow-Hoff yang akan disimpan kedalam file
yang dijelaskan sebelumnya untuk dijadikan nilai acuan yang digunkan untuk proses
pengujian. Untuk bobot nilai citra latih yang mengandung nilai ekpresi sedih disimpan
dalam file yang dijelaskan sebelumnya untuk dijadikan nilai acuan yang digunkan
untuk proses pengujian pula. Selanjutkan sistem akan melakukan proses pengujian
dengan citra yang baru yang dijadikan sebagai citra uji dan mengandung unsur wajah
dan ekspresi. Jika bobot citra yang di uji mendekati nilai vector pada file citra latih
senang, maka citra uji dikenali sebagai citra senang atau sistem akan mendeteksi
sebagai “Happy” namun Jika bobot citra yang di uji mendekati nilai vector pada file
citra latih sedih, maka citra uji dikenali sebagai citra senang atau sistem akan
mendeteksi sebagai “Sad”.
Contoh perhitungan sederhana jarak menggunakan Euclidian distance yang
diambil dari nilai sembarang vektor fitur.
A : 0.32 0.24 0.2 0.16
B : 0.24 0.36 0.2 0.32

Universitas Sumatera Utara


52

Euclidian distance dari vektor A dan B adalah:


𝑑 =√ . − . 2 + . − . 2 + . − . 2 + . − . 2

=√ . + . + + .
=√ . = 0.215

Selanjutnya akan dipilih jarak yang terpendek untuk menentukan kelas dari
vektor input dan perubahan bobot dari kelas tersebut. Kemudian dilakukan pencarian
bobot baru sesuai dengan iterasi yang nantinya akan disimpan dalam file notepad
bernama “bobotbaru.txt”. Pencarian bobot baru ini dapat digunakan dengan
persamaan 2 dan 3 yang telah dijelaskan sebelumnya pada bab 2. Berikut akan
dijelaskan contoh perhitungan sederhana Metode LVQ dimana data yang lain sebagai
data yang akan dilatih α = 0.05, dan maksimum epoch = 10, penurunan α=0,1 .
α(lama):
Data ke -1 = menggunakan Eucludian Distance
Bobot ke-1
= √ − 2 + − 2 + − 2 + − 2 =1
Bobot ke-2
= √ − 2 + − 2 + − 2 + − 2 = 1,73
Jarak terkecil pada bobot ke-1
Target data ke-1=1
Bobot ke-1 baru:
W11(baru)=w11(lama)+ α*x11-w11(lama)]=1+0,05*(0-1)= 0,95
W12(baru)=w12(lama)+ α*x12-w12(lama)]=1+0,05*(1-1)= 1
W13(baru)=w13(lama)+ α*x13-w13(lama)]=1+0,05*(1-1)= 1
W14(baru)=w14(lama)+ α*x14-w14(lama)]=0+0,05*(0-0)= 0
Sehingga w1=(0,95 1 1 0) W2=(1011)
Sampai dengan epoh maximum =10 Misalnya setelah epoh ke-10 di dapat bobot-
bobot:
w2=(0,953 0 0,95 1) w1=(0,95 1 1 0,05
Kemudian perekaman peta wajah akan diubah menjadi vertikal, hal ini dilakukan
untuk mencegah terjadinya kesalahan pengambilan nilai matriks yang telah disimpan

Universitas Sumatera Utara


53

sebelumnya kedalam file notepad bernama ”peta.txt”. Maka peta wajah akan disimpan
kembali secara vertikal kedalam file notepad bernama ”petavertikal.txt”. Hal yang
sama juga akan dilakukan kedalam bobot baru yang telah disimpan sebelumnya
kedalam file notepad bernama “bobotbaru.txt”. Sehingga bobot baru yang disimpan
kembali secara vertikal kedalam file notepad akan menjadi “bobotbaruvertikal.txt”.
Setelah semua proses itu selesai, barulah dilakukan perekaman untuk bibir
dimana ekspresi yang akan direkam dalam detektor adalah senyum dan nantinya akan
disimpan kedalam file notepad bernama “ekspresi”. File tersebut juga akan diubah
menjadi vertikal, sehingga file notepad bernama “Ekspresivertikal”.
Setelah melakukan proses pembelajaran, sistem juga akan melakukan proses
pengujian. Hal ini dilakukan untuk mengetahui apakah wajah senyum yang telah
dilatih sebelumnya dapat terdeteksi atau tidak. Didalam proses ini akan dilakukan
pengujian terhadap sampel yang akan diuji dengan melihat kesesuaian yang ada dalam
file notepad bernama “petavertikal.txt”, “jarak.txt”, “bobotbaruvertikal.txt”,
“happy.txt”, yang nantinya akan disimpan kedalam “happyform2.txt”. Jika kita
melakukan reupdate maka file notepad bernama “jarakacuform2.txt” dan
“bobotform2.txt” akan terperbaharui.
Selanjutnya akan dilakukan pengecekan kesesuaian peta dan jarak peta lokasi
terhadap target dengan cara mencari jarak antara bobot citra uji dan citra acuan. Jarak
bobot terpendek dengan citra acuan merupakan kelas dari citra uji. Berikut akan
dijelaskan contoh perhitungan sederhana, pencarian jarak terpendek yang diambil dari
sembarang vektor fitur.
Pada penelitian ini, proses pelatihan yang dilakukan sebelumnya secara
bertahap, dimulai dari 5 sampel data latih yang diujikan terhadap 25, 50, 75 dan 100
sampel data uji, selanjutkan dari 10 sampel data latih yang diujikan terhadap 25, 50,
75 dan 100 sampel data uji dan hal ini menunjukkan bahwa semakin sering sistem
dilatih maka semakin akurat pula pendeteksian yang di dapat, hal ini dikarenakan,
update bobot yang yang terdapat dalam sistem membuat sistem akan lebih fleksibel
dalam mencari pedekatan bobot nilai yang terdapat dalam proses pengujian citra. Hal
ini dibuktikan dengan semkin tinggi nilai true detection yang didapat dengan adanya
proses pelatihan yang digunakan.

Universitas Sumatera Utara


BAB 5
PENUTUP

5.1 Kesimpulan
Dari analisa dan pembahasan yang telah dibahas, dapat disimpulkan bahwa:
1. Hasil penelitian menunjukkan bahwa pendeteksian ekpresi wajah menggunakan
algoritma Widrow-Hoff 74% hingga 85% dan sistem pendeteksi ekspresi wajah
memiliki Detection rate sebesar 74% hingga 80% untuk algoritma Learning
Vector Quantization (LVQ)
2. Persentase detection rate tersebut menunjukkan bahwa metode Widrow-Hoff
dan Learning Vector Quantization (LVQ) sama-sama efektif digunakan sebagai
salah satu pendekatan untuk pendeteksian wajah dan ekspresi pada video ( Real-
time) , hanya saja algoritma Widrow-hoff lsedikit lebih akurat dalam mendeteksi
ekspresi.
3. Didalam pendeteksian wajah dan ekspresi yang dibangun, terdapat beberapa
sampel yang sedikit sulit untuk dibedakan antara senang dan sedih, hal ini
dikarenakan kemiripan vector pola wajah dan ekpresi yang terdapat dalam
sampel.
4. Selain itu, faktor cahaya juga menjadi salah satu kelemahan pada saat
pendeteksian. Karena jika cahaya yang diterima tidak normal, terlalu terang atau
terlalu gelap, maka proses konvolusi sering mengalami kegagalan dalam
memetakan fitur-fitur wajah pada video.
5. Pendeteksian wajah dan ekpresi menggunakan Widrow-Hoff dan Learning
Vector Quantization (LVQ) dapat bekerja dengan baik pada citra yang memiliki
latar belakang yang tidak kompleks, sebaliknya pada citra yang memuat latar
belakang yang kompleks dengan orientasi wajah yang beragam
6. Pendeteksian wajah dan ekspresi menggunakan metode widrow-hoff memiliki
false positive rate yang lebih rendah yaitu 24 %. Dan sistem pendeteksian wajah
menggunakan LVQ memiliki false positive rate LVQ berkisar 28% yang lebih
tinggi dibandingkan widrow-hoff

Universitas Sumatera Utara


55

7. Sistem akan sulit mendeteksi ekpresi seseorang yang cenderung memiliki wajah
murung, dan dominan senang, hal ini dikarenakan kemiripan vector bobot yang
dimiliki oleh wajah tersebut.
8. Keunggulan Widrow-hoff dan algoritma LVQ adalah kemampuan pengenalan
pola wajah dengan jumlah data pelatihan yang tidak terlalu besar, sangat tepat
untuk diterapkan pada sistem biometrics seperti pengenalan wajah, pengenalan
ekspresi, klasifikasi kecantikan, dan lain-lain.

5.2 Saran
1. Untuk meningkatkan unjuk kerja dari pendeteksi wajah dan ekspresi dapat
dilakukan dengan memberikan pelatihan lebih lanjut dengan tambahan data
training yang lebih banyak dan lebih bervariasi.
2. Didalam kasus pendeteksian wajah dan ekspresi, akurasi dapat ditingkatkan
dengan mengkombinasikan sistem pendeteksi wajah dan ekpresi dengan sistem
pendeteksi warna kulit.
3. Kecepatan deteksi juga dapat ditingkatkan dengan bantuan pendeteksi warna
kulit, karena dengan demikian deteksi jaringan syaraf tiruan hanya perlu
dilakukan pada area yang mengandung warna kulit.
4. Teknologi deteksi wajah senyum adalah salah satu bidang penelitian yang masih
terus berkembang. Hasil dari deteksi wajah dan ekspresi ini dapat dimanfaatkan
lebih lanjut untuk membangun sistem pengenalan wajah senyum.

Universitas Sumatera Utara


DAFTAR PUSTAKA

Batoteng,F.G, Pasiak, T.F & Ticoalu, S.H. 2015. “Gambaran Musculi Facialis
Pada Ekspresi Wajah Dan Emosi Dengan Menggunakan Facial Action
Coding System Pada Calon Presiden Jokowi”. 1 : 281

Chavan, P. M., Manan C .Jadhav, Jinal B. Mashruwala, Aditi K. Nehete & Pooja
A. Panjari. 2013. Real Time Emotion Recognition through Facial
Expressions for Desktop Devices”. International Journal of Emerging
Science and Engineering (IJESE) :104

Ghosh, S & Samir K. Bandyopadhyay. 2015 “A Method for Human Emotion


Recognition System” “ British Journal of Mathematics & Computer
Science 11(5): 1-27

Harjoseputro, Y, Suyoto & Dwiandiyanta, B.Y. 2014. Pengenalan Wajah Secara


Real Time Dengan Smartphone Android : 25

Hemalatha, G & Sumanthi,C.P. 2014. Study of Techniques for Facial Detection


and Expression Classification.3 (2): 27-28.

Heranurweni, S. 2010. Pengenalan Wajah Menggunakan Learning Vector


Quantization (LVQ). Prosiding Seminar Sains dan Teknologi.

Huang, 2009. “ Yu-Hao & Chiou-Shann Fuh. Face Detection and Smile
Detection. Proceedings of IPPR Conference Computer on Vision,
Graphics and Image Processing”. Shitou. Taiwan, 5-6, 108

Ketaren, E. 2016. Modifikasi Jaringan Syaraf Tiruan Learning Vector


Quantization Pada Pengenalan Wajah. Medan.Universitas Sumatera Utara

Ahmad M. Sarhan, and Omar I. Al Helalat.2007. Arabic Character Recognition


using Artificial Neural Networks and Statistical Analysi. International
Journal of Computer and Information Engineering. 3: 506-507

Universitas Sumatera Utara


Mahmoud, E S & Maleke, A .2014. Using Learning Vector Quantization (LVQ)
in Intrusion Detection Systems. “International Journal of Innovative
Research in Advanced Engineering (IJIRAE)” : 15

Meliawati R, Oni S & Dwi Kartini.2016. Penerapan Metode Learning Vector


Quantization (Lvq) Pada Prediksi Jurusan Di Sma Pgri 1 Banjarbaru.
Kumpulan jurnaL Ilmu Komputer (KLIK). 1 :13-14

Mu-Chun Su, Chun-Kai Yang, Shih-Chieh Lin, De-Yuan Huang, Yi-Zeng Hsieh,
& Pa-Chun Wang. 2014 “An SOM-based Automatic Facial Expression
Recognition System”, International Journal on Soft Computing, Artificial
Intelligence and Applications (IJSCAI).45.

Nugroho, S & Agus H. 2005. Penerapan Jaringan Syaraf Tiruan Untuk


Mendeteksi Posisi Wajah Manusia Pada Citra Digital. Seminar Nasional
Aplikasi Teknologi Informasi Yogyakarta, 18 Juli 2005.

Putra, Darma. 2010. Pengolahan Citra Digital. Yogyakarta : Andi.

Royce, Eduard, et.al.2012. Sistem Pendeteksi Senyum Berdasarkan Metode Edge


Detection, Histogram Equalization, dan Nearest Neighbor. Techne Jurnal
Ilmiah Elektroteknika Vol. 11.

Sarany, R & K.Kuppusamy. 2016. “Performance analysis of ADALINE and


MADALINE Network in classification of Thyroid Disease”. International
Journal of Advanced Research Trends in Engineering and Technology
(IJARTET): 117.

Shbib, Reda &Shikun Zhou. 2015. “Facial Expression Analysis using Active
Shape Model”. International Journal of Signal Processing, Image
Processing and Pattern Recognitio. 1 : 9

Sigit, R, Dadet, P & Rully Sulaiman.2005. “Sistem Pengenalan Ekspresi Wajah


Secara Real Time. Seminar Nasional Aplikasi Teknologi Informasi : 28-29

Chen, N, Bernardete, R, Armando, V, Joao, D & Joao C. N.2011. Extension of


Learning Vector Quantization to Cost-sensitive Learning. International
Journal of Computer Theory and Engineering : 352

Universitas Sumatera Utara


LAMPIRAN

Listing Form Pelatihan algoritma Widrow-Hoff

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, LPComponent, SLComponentCollection, VLCommonDisplay,
VLImageDisplay, VLDSCapture, VLCommonFilter, VLResize,
VLGrayScale,
VLBasicGenericFilter, VLGenericFilter,VLBitmap, StdCtrls,
Menus,
ExtCtrls;

type
TForm1 = class(TForm)
VLDSCapture1: TVLDSCapture;
VLResize1: TVLResize;
VLGrayScale1: TVLGrayScale;
VLGenericFilter1: TVLGenericFilter;
VLImageDisplay1: TVLImageDisplay;
VLImageDisplay3: TVLImageDisplay;
VLGenericFilter2: TVLGenericFilter;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
VLGenericFilter3: TVLGenericFilter;
GroupBox2: TGroupBox;
Button5: TButton;
MainMenu1: TMainMenu;
Konfigurasi1: TMenuItem;
SetConClear1: TMenuItem;
GroupBox4: TGroupBox;
Button7: TButton;
Button8: TButton;
Button9: TButton;

Universitas Sumatera Utara


Button10: TButton;
Button6: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Edit5: TEdit;
procedure VLGenericFilter1ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter2ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter2Start(Sender: TObject; var AWidth,
AHeight: Integer; AFrameDelay: Real);
procedure VLGenericFilter2Stop(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure VLGenericFilter3ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure Button5Click(Sender: TObject);
procedure SetConClear1Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button13Click(Sender: TObject);

private
{ Private declarations }
FBitmap : TVLBitmap;
public
{ Public declarations }
end;

var
Form1: TForm1;
x_atas, x_baw, y_atas, y_baw,sm : byte;
peta, bobot, bxp, se, bobaru : array [0..90,
0..90] of real;
Fi : Textfile;

Universitas Sumatera Utara


NamaArsip : String;
konstanta_belajar,sel_err : real;
kondisi : boolean;
jarak : array [0..90] of real;

implementation

{$R *.dfm}

procedure TForm1.VLGenericFilter1ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var X, Y, Sobelx, Sobely, Sobelxy: Integer;
begin
for X:= 2 to OutBuffer.Width - 2 do
for Y:= 2 to OutBuffer.Height - 2 do
//if outbuffer.Red[X,Y]>=90 then
begin
//-101
//-202
//-101
Sobelx:=(-inbuffer.Red[X,Y])+(inbuffer.Red[X+2,Y])-
(2*inbuffer.Red[X,Y+1])+(2*inbuffer.Red[X+2,Y+1])
-inbuffer.Red[X,Y+2]+inbuffer.Red[X+2,Y+2];
//121
//000
//-1-2-1
Sobely:=(inbuffer.Red[X,Y])+(2*inbuffer.Red[X+1,Y])+inbuffer.Red[X
+2,Y]-inbuffer.Red[X,Y+2]
-(2*inbuffer.Red[X+1,Y+2])-inbuffer.Red[X+2,Y+2];
Sobelxy:=Sobelx+Sobely;
if Sobelxy>30 then Sobelxy:=255 else Sobelxy:=0;
Outbuffer.Red[X,Y]:=Sobelxy;
Outbuffer.Green[X,Y]:=Sobelxy;
Outbuffer.Blue[X,Y]:=Sobelxy;
end;
end;

procedure TForm1.VLGenericFilter2ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
begin
// Convert to Bitmap.
InBuffer.ToBitmap( FBitmap );

FBitmap.Canvas.Brush.Style := bsClear;
FBitmap.Canvas.Pen.Width := 2;
FBitmap.Canvas.Pen.Color := clBlue;
FBitmap.Canvas.Rectangle( x_atas, y_atas, x_baw, y_baw );

Universitas Sumatera Utara


// Convert to Buffer.
OutBuffer.FromBitmap( FBitmap );
end;

procedure TForm1.VLGenericFilter2Start(Sender: TObject; var


AWidth,
AHeight: Integer; AFrameDelay: Real);
begin
FBitmap := TVLBitmap.Create();
end;

procedure TForm1.VLGenericFilter2Stop(Sender: TObject);


begin
FBitmap.Free();
end;

procedure TForm1.FormActivate(Sender: TObject);


begin
x_atas:=25;
y_atas:=15;
x_baw:=55;
y_baw:=45;

kondisi:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin
x_atas:=x_atas+1; x_baw:=x_baw+1;
edit1.Text:=inttostr(x_atas);
edit2.Text:=inttostr(x_baw);
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
x_atas:=x_atas-1; x_baw:=x_baw-1;
edit1.Text:=inttostr(x_atas);
edit2.Text:=inttostr(x_baw);
end;

procedure TForm1.Button3Click(Sender: TObject);


begin
y_atas:=y_atas+1; y_baw:=y_baw+1;
edit3.Text:=inttostr(y_atas);
edit4.Text:=inttostr(y_baw);
end;

procedure TForm1.Button4Click(Sender: TObject);

Universitas Sumatera Utara


begin
y_atas:=y_atas-1; y_baw:=y_baw-1;
edit3.Text:=inttostr(y_atas);
edit4.Text:=inttostr(y_baw);
end;

procedure TForm1.VLGenericFilter3ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var X,Y : integer;
begin
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
if kondisi=true then
if inbuffer.Red[X,Y]=255 then
peta[X,Y]:=1 else peta[X,Y]:=0;
end;

procedure TForm1.Button5Click(Sender: TObject);


var X,Y : integer;

begin
kondisi:=false;
//----------------------------------
NamaArsip:='peta.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------
for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
begin
write(Fi,floattostr(peta[X,Y])+' ');

end;
writeln(Fi);
end;
CloseFile(Fi);

end;

procedure TForm1.SetConClear1Click(Sender: TObject);


begin
kondisi:=true;
end;

procedure TForm1.Button7Click(Sender: TObject);


begin
x_atas:=x_atas-2;x_baw:=x_baw+2;

Universitas Sumatera Utara


y_atas:=x_atas-2;y_baw:=x_baw+2;
end;

procedure TForm1.Button8Click(Sender: TObject);


begin
x_atas:=x_atas+2;x_baw:=x_baw-2;
y_atas:=x_atas+2;y_baw:=x_baw-2;
end;

procedure TForm1.Button9Click(Sender: TObject);


var X,Y : integer;
begin
//----------------------------------
NamaArsip:='petavertikal.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
writeln(Fi,floattostr(x_baw-x_atas));
writeln(Fi,floattostr(y_baw-y_atas));
//------------------------------------
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
writeln(Fi,floattostr(peta[X,Y]));
CloseFile(Fi);

end;

procedure TForm1.Button6Click(Sender: TObject);


var X,Y : integer;
begin
kondisi:=false;
//----------------------------------
NamaArsip:='peta2.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------
for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
begin
write(Fi,floattostr(peta[X,Y])+' ');

end;
writeln(Fi);
end;
CloseFile(Fi);
end;

procedure TForm1.Button12Click(Sender: TObject);


var X,Y : integer;

Universitas Sumatera Utara


begin
//----------------------------------
NamaArsip:='petavertikal2.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
writeln(Fi,floattostr(x_baw-x_atas));
writeln(Fi,floattostr(y_baw-y_atas));
//------------------------------------
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
writeln(Fi,floattostr(peta[X,Y]));
CloseFile(Fi);

end;

procedure TForm1.Button13Click(Sender: TObject);


var cacahmatriks : byte;
X,Y,epoch : integer;
cac_err, sen_cac : byte;

begin
cac_err:=0;
epoch:=0;
repeat // wh
//------------------------------------
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do bxp[X,Y]:=0;
//----------------------------------
NamaArsip:='petabxp.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------

//---(1) bobot * peta wajah linier -->


for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
begin
for cacahmatriks:=0 to (x_baw-x_atas-1) do

bxp[X,Y]:=bxp[X,Y]+bobot[X+cacahmatriks,Y]*peta[Y,X+cacahmatriks];
write(Fi,floattostr(bxp[X,Y])+' ');

end;
writeln(Fi);
end;
CloseFile(Fi);
//-----------------akhir langkah 1
//----langkah 2 hitung selisih error

Universitas Sumatera Utara


//----------------------------------
NamaArsip:='selisiherror.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------
for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
begin
se[X,Y]:=abs(peta[X,Y]-bxp[X,Y]);
write(Fi,floattostr(se[X,Y])+' ');

end;
writeln(Fi);
end;
CloseFile(Fi);
//----akhir langkah 2
//--langkah 3 updated bobotbaru
// bobotbaru--> se*konstanta belajar +bobot sebelumnya
//----------------------------------
NamaArsip:='bobotbaru.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------
for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
begin

bobaru[X,Y]:=(konstanta_belajar*se[X,Y])+bobot[X,Y];
write(Fi,floattostr(bobaru[X,Y])+' ');

end;
writeln(Fi);
end;
CloseFile(Fi);

//--------------
//semua elemen bobot baru set ke bobot
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
bobot[X,Y]:=bobaru[X,Y];

// cacah error jelajah elemen


for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
if peta[X,Y]<>0 then
if (peta[X,Y]-bxp[X,Y])<sel_err then
cac_err:=cac_err+1;

Universitas Sumatera Utara


inc(epoch,1);
until (epoch>10000) OR (cac_err>sen_cac);
edit5.Text:=inttostr(epoch);

end;

Listing Form Pengujian algoritma Widrow-Hoff


unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls, LPComponent, SLComponentCollection,
VLCommonDisplay,
VLImageDisplay, VLGrayScale, VLCommonFilter, VLResize,
VLDSCapture,
VLBasicGenericFilter, VLGenericFilter, VLBitmap;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
VLDSCapture1: TVLDSCapture;
VLResize1: TVLResize;
VLGrayScale1: TVLGrayScale;
VLImageDisplay1: TVLImageDisplay;
VLGenericFilter1: TVLGenericFilter;
VLImageDisplay2: TVLImageDisplay;
VLGenericFilter2: TVLGenericFilter;
Edit3: TEdit;
VLImageDisplay3: TVLImageDisplay;
VLGenericFilter3: TVLGenericFilter;
Edit4: TEdit;
Edit5: TEdit;
GroupBox1: TGroupBox;
Edit7: TEdit;
Button4: TButton;
Button5: TButton;
procedure FormActivate(Sender: TObject);
procedure VLGenericFilter1ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter2ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter3ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;

Universitas Sumatera Utara


var SendOutputData: Boolean);
procedure VLGenericFilter3Start(Sender: TObject; var AWidth,
AHeight: Integer; AFrameDelay: Real);
procedure VLGenericFilter3Stop(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
FBitmap : TVLBitmap;
public
{ Public declarations }
end;

var
Form1: TForm1;
Fi : Textfile;
NamaArsip : String;
peta,peta_2,peta2,templatepeta : array [0..90,
0..90] of real;
X,Y, Max_x, Max_y : integer;
tampung : string;
treshold_B : integer;
x_atas, x_baw, y_atas, y_baw : byte;
face, poci : Boolean;
penghilang : byte;
implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);


begin
//---------------------------------- PETA
NamaArsip:='petavertikal.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
Readln(Fi,tampung);
Edit1.text:=(tampung);
Readln(Fi,tampung);
Edit2.text:=(tampung);
Max_x:=strtoint(Edit1.Text);
Max_y:=strtoint(Edit2.Text);
//--------------------------------
while not Eof(Fi) do
begin
for X:=0 to Max_x-1 do
for Y:=0 to Max_y-1 do
begin
Readln(Fi,tampung);
peta[X,Y]:=strtofloat(tampung);

Universitas Sumatera Utara


end;

end;
CloseFile(Fi);
//---------------------------------- PETA 2
NamaArsip:='petavertikal2.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
Readln(Fi,tampung);
Edit1.text:=(tampung);
Readln(Fi,tampung);
Edit2.text:=(tampung);
Max_x:=strtoint(Edit1.Text);
Max_y:=strtoint(Edit2.Text);
//--------------------------------
while not Eof(Fi) do
begin
for X:=0 to Max_x-1 do
for Y:=0 to Max_y-1 do
begin
Readln(Fi,tampung);
peta_2[X,Y]:=strtofloat(tampung);

end;

end;
CloseFile(Fi);

face:=FALSE;
treshold_B:=710;
penghilang:=0;

edit7.Text:=inttostr(treshold_B);

end;

procedure TForm1.VLGenericFilter1ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var Xa, Ya, Sobelx, Sobely, Sobelxy: Integer;
begin
for Xa:= 5 to OutBuffer.Width - 10 do
for Ya:= 5 to OutBuffer.Height - 10 do
//if outbuffer.Red[X,Y]>=90 then
begin
//-101
//-202

Universitas Sumatera Utara


//-101
Sobelx:=(-inbuffer.Red[Xa,Ya])+(inbuffer.Red[Xa+2,Ya])-
(2*inbuffer.Red[Xa,Ya+1])+(2*inbuffer.Red[Xa+2,Ya+1])
-inbuffer.Red[Xa,Ya+2]+inbuffer.Red[Xa+2,Ya+2];
//121
//000
//-1-2-1
Sobely:=(inbuffer.Red[Xa,Ya])+(2*inbuffer.Red[Xa+1,Ya])+inbuffer.R
ed[Xa+2,Ya]-inbuffer.Red[Xa,Ya+2]
-(2*inbuffer.Red[Xa+1,Ya+2])-inbuffer.Red[Xa+2,Ya+2];
Sobelxy:=Sobelx+Sobely;
//if Sobelxy<0 then Sobelxy:=0;
if Sobelxy>30 then Sobelxy:=255 else Sobelxy:=0;
Outbuffer.Red[Xa,Ya]:=Sobelxy;
Outbuffer.Green[Xa,Ya]:=Sobelxy;
Outbuffer.Blue[Xa,Ya]:=Sobelxy;
if Outbuffer.Red[Xa,Ya]=255 then templatepeta[Xa,Ya]:=1 else
templatepeta[Xa,Ya]:=0;
end;

end;

procedure TForm1.VLGenericFilter2ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var Xa, Ya : Integer;
jelajah2, Hamming2: Integer;
SAD2, SAD : Real;
jelajah, Hamming : Integer;

begin

//kurangi bobot dengan lokasi video, jumlah, kuadrat, totalnya


diakar
for Xa:= 5 to OutBuffer.Width -Max_x-10 do
for Ya:= 5 to OutBuffer.Height - Max_y-10 do
{if Xa mod 3=0 then
if Ya mod 3=0 then }
begin //*
jelajah:=0;
SAD:=0;
Hamming:=0;
jelajah2:=0;
SAD2:=0;
Hamming2:=0;

for X:=0 to Max_x-1 do


for Y:=0 to Max_y-1 do begin //**

Universitas Sumatera Utara


peta2[X,Y]:=Templatepeta[Xa+X,Ya+Y];
//ukur Hamming Distance
if peta[X,Y]=peta2[X,Y] then
inc(jelajah,1)
else inc(Hamming,1);
//Template SAD
SAD:=SAD+abs(peta[X,Y]-peta2[X,Y]);
//ukur Hamming Distance 2
if peta_2[X,Y]=peta2[X,Y] then
inc(jelajah2,1)
else inc(Hamming2,1);
//Template SAD 2
SAD2:=SAD2+abs(peta_2[X,Y]-
peta2[X,Y]);
end; //**

//kesesuaian peta dan jarak peta lokasi thd peta target


if Hamming<Hamming2 then
if SAD<SAD2 then
if jelajah>treshold_B then
begin
poci:=TRUE;
x_atas:=Xa;
y_atas:=Ya;
x_baw:=Xa+Max_x;
y_baw:=Ya+Max_y;
face:=TRUE;

//edit3.Text:=floattostr(SAD);
end; //end else
if Hamming>Hamming2 then
if SAD>SAD2 then
if jelajah2>treshold_B then
begin
poci:=FALSE;

x_atas:=Xa;
y_atas:=Ya;
x_baw:=Xa+Max_x;
y_baw:=Ya+Max_y;
face:=TRUE;

end;

end; //*
end;

Universitas Sumatera Utara


procedure TForm1.VLGenericFilter3ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var hitungwajah : byte;

begin
// Convert to Bitmap.
InBuffer.ToBitmap( FBitmap );
FBitmap.Canvas.TextOut( 1, 1, '.......' );
FBitmap.Canvas.Brush.Style := bsClear;
FBitmap.Canvas.Pen.Width := 2;
if poci=TRUE then
BEGIN
FBitmap.Canvas.Pen.Color := clRed ;
FBitmap.Canvas.TextOut( 1, 1, 'UNHAPPY' );
END;
if poci=FALSE then
BEGIN
FBitmap.Canvas.TextOut( 1, 1, 'HAPPY' );
FBitmap.Canvas.Pen.Color := clYellow;
END;
inc(penghilang,1);
if penghilang > 5 then begin
penghilang:=0;
face:=FALSE
end;
if face=TRUE then
FBitmap.Canvas.Rectangle( x_atas, y_atas, x_baw, y_baw );

// Convert to Buffer.
OutBuffer.FromBitmap( FBitmap );
end;

procedure TForm1.VLGenericFilter3Start(Sender: TObject; var


AWidth,
AHeight: Integer; AFrameDelay: Real);
begin
FBitmap := TVLBitmap.Create();
end;

procedure TForm1.VLGenericFilter3Stop(Sender: TObject);


begin
FBitmap.Free();
end;

procedure TForm1.Button4Click(Sender: TObject);


begin

Universitas Sumatera Utara


treshold_B:=treshold_B-1;
edit7.Text:=inttostr(treshold_B);
end;

procedure TForm1.Button5Click(Sender: TObject);


begin
treshold_B:=treshold_B+1;
edit7.Text:=inttostr(treshold_B);
end;

end.

Listing Form Pelatihan algoritma Learning Vector Quantization


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, LPComponent, SLComponentCollection, VLCommonDisplay,
VLImageDisplay, VLDSCapture, VLCommonFilter, VLResize,
VLGrayScale,
VLBasicGenericFilter, VLGenericFilter,VLBitmap, StdCtrls,
Menus,
ExtCtrls;

type
TForm1 = class(TForm)
VLDSCapture1: TVLDSCapture;
VLResize1: TVLResize;
VLGrayScale1: TVLGrayScale;
VLGenericFilter1: TVLGenericFilter;
VLImageDisplay1: TVLImageDisplay;
VLImageDisplay3: TVLImageDisplay;
VLGenericFilter2: TVLGenericFilter;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
VLGenericFilter3: TVLGenericFilter;
GroupBox2: TGroupBox;
Button5: TButton;

Universitas Sumatera Utara


MainMenu1: TMainMenu;
Konfigurasi1: TMenuItem;
SetConClear1: TMenuItem;
GroupBox4: TGroupBox;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button6: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Edit5: TEdit;
procedure VLGenericFilter1ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter2ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter2Start(Sender: TObject; var AWidth,
AHeight: Integer; AFrameDelay: Real);
procedure VLGenericFilter2Stop(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure VLGenericFilter3ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure Button5Click(Sender: TObject);
procedure SetConClear1Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button13Click(Sender: TObject);

private
{ Private declarations }
FBitmap : TVLBitmap;
public
{ Public declarations }
end;

Universitas Sumatera Utara


var
Form1: TForm1;
x_atas, x_baw, y_atas, y_baw,sm : byte;
peta, bobot, bobaru : array [0..90, 0..90] of
real;
Fi : Textfile;
NamaArsip : String;
konstanta_belajar : real;
kondisi : boolean;
jarak : array [0..90] of real;

implementation

{$R *.dfm}

procedure TForm1.VLGenericFilter1ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var X, Y, Sobelx, Sobely, Sobelxy: Integer;
begin
for X:= 2 to OutBuffer.Width - 2 do
for Y:= 2 to OutBuffer.Height - 2 do
//if outbuffer.Red[X,Y]>=90 then
begin
//-101
//-202
//-101
Sobelx:=(-inbuffer.Red[X,Y])+(inbuffer.Red[X+2,Y])-
(2*inbuffer.Red[X,Y+1])+(2*inbuffer.Red[X+2,Y+1])
-inbuffer.Red[X,Y+2]+inbuffer.Red[X+2,Y+2];
//121
//000
//-1-2-1
Sobely:=(inbuffer.Red[X,Y])+(2*inbuffer.Red[X+1,Y])+inbuffer.Red[X
+2,Y]-inbuffer.Red[X,Y+2]
-(2*inbuffer.Red[X+1,Y+2])-inbuffer.Red[X+2,Y+2];
Sobelxy:=Sobelx+Sobely;
if Sobelxy>30 then Sobelxy:=255 else Sobelxy:=0;
Outbuffer.Red[X,Y]:=Sobelxy;
Outbuffer.Green[X,Y]:=Sobelxy;
Outbuffer.Blue[X,Y]:=Sobelxy;
end;
end;

procedure TForm1.VLGenericFilter2ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
begin

Universitas Sumatera Utara


// Convert to Bitmap.
InBuffer.ToBitmap( FBitmap );

FBitmap.Canvas.Brush.Style := bsClear;
FBitmap.Canvas.Pen.Width := 2;
FBitmap.Canvas.Pen.Color := clBlue;
FBitmap.Canvas.Rectangle( x_atas, y_atas, x_baw, y_baw );

// Convert to Buffer.
OutBuffer.FromBitmap( FBitmap );
end;

procedure TForm1.VLGenericFilter2Start(Sender: TObject; var


AWidth,
AHeight: Integer; AFrameDelay: Real);
begin
FBitmap := TVLBitmap.Create();
end;

procedure TForm1.VLGenericFilter2Stop(Sender: TObject);


begin
FBitmap.Free();
end;

procedure TForm1.FormActivate(Sender: TObject);


begin
x_atas:=25;
y_atas:=15;
x_baw:=55;
y_baw:=45;

kondisi:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin
x_atas:=x_atas+1; x_baw:=x_baw+1;
edit1.Text:=inttostr(x_atas);
edit2.Text:=inttostr(x_baw);
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
x_atas:=x_atas-1; x_baw:=x_baw-1;
edit1.Text:=inttostr(x_atas);
edit2.Text:=inttostr(x_baw);
end;

procedure TForm1.Button3Click(Sender: TObject);

Universitas Sumatera Utara


begin
y_atas:=y_atas+1; y_baw:=y_baw+1;
edit3.Text:=inttostr(y_atas);
edit4.Text:=inttostr(y_baw);
end;

procedure TForm1.Button4Click(Sender: TObject);


begin
y_atas:=y_atas-1; y_baw:=y_baw-1;
edit3.Text:=inttostr(y_atas);
edit4.Text:=inttostr(y_baw);
end;

procedure TForm1.VLGenericFilter3ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var X,Y : integer;
begin
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
if kondisi=true then
if inbuffer.Red[X,Y]=255 then
peta[X,Y]:=1 else peta[X,Y]:=0;
end;

procedure TForm1.Button5Click(Sender: TObject);


var X,Y : integer;

begin
kondisi:=false;
//----------------------------------
NamaArsip:='peta.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------
for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
begin
write(Fi,floattostr(peta[X,Y])+' ');

end;
writeln(Fi);
end;
CloseFile(Fi);

end;

procedure TForm1.SetConClear1Click(Sender: TObject);

Universitas Sumatera Utara


begin
kondisi:=true;
end;

procedure TForm1.Button7Click(Sender: TObject);


begin
x_atas:=x_atas-2;x_baw:=x_baw+2;
y_atas:=x_atas-2;y_baw:=x_baw+2;
end;

procedure TForm1.Button8Click(Sender: TObject);


begin
x_atas:=x_atas+2;x_baw:=x_baw-2;
y_atas:=x_atas+2;y_baw:=x_baw-2;
end;

procedure TForm1.Button9Click(Sender: TObject);


var X,Y : integer;
begin
//----------------------------------
NamaArsip:='petavertikal.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
writeln(Fi,floattostr(x_baw-x_atas));
writeln(Fi,floattostr(y_baw-y_atas));
//------------------------------------
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
writeln(Fi,floattostr(peta[X,Y]));
CloseFile(Fi);

end;

procedure TForm1.Button6Click(Sender: TObject);


var X,Y : integer;
begin
kondisi:=false;
//----------------------------------
NamaArsip:='peta2.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------
for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
begin
write(Fi,floattostr(peta[X,Y])+' ');

end;

Universitas Sumatera Utara


writeln(Fi);
end;
CloseFile(Fi);
end;

procedure TForm1.Button12Click(Sender: TObject);


var X,Y : integer;
begin
//----------------------------------
NamaArsip:='petavertikal2.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
writeln(Fi,floattostr(x_baw-x_atas));
writeln(Fi,floattostr(y_baw-y_atas));
//------------------------------------
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
writeln(Fi,floattostr(peta[X,Y]));
CloseFile(Fi);

end;

procedure TForm1.Button13Click(Sender: TObject);


var X,Y,epoch : integer;

begin
epoch:=0;
repeat // LVQ LINEAR VECTOR QUANTIZATION
//--set jarak menjadi 0----------------------------------
for X := x_atas to x_baw-1 do jarak[X]:=0;
//----------------------------------
NamaArsip:='jarak.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//-(1) bobot - peta wajah linier lalu dikuadrat dan diakar
secara VERTIKAL-->
for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
jarak[X]:=jarak[X]+(sqr(bobot[X,Y]-peta[X,Y]));
jarak[X]:=sqrt(jarak[X]);
write(Fi,floattostr(jarak[X])+' ');

writeln(Fi);
end;
CloseFile(Fi);

Universitas Sumatera Utara


//----------------------------------
NamaArsip:='bobotbaru.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
//------------------------------------
for X := x_atas to x_baw-1 do
begin
for Y := y_atas to y_baw-1 do
begin
if jarak[X]<jarak[X+1] then
bobaru[X,Y]:=(konstanta_belajar*abs(peta[X,Y]-
bobot[X,Y]))+bobot[X,Y]
else bobaru[X+1,Y]:=(konstanta_belajar*abs(peta[X+1,Y]-
bobot[X+1,Y]))+bobot[X+1,Y];
write(Fi,floattostr(bobaru[X,Y])+' ');

end;
writeln(Fi);
end;
CloseFile(Fi);

//--------------
//semua elemen bobot baru set ke bobot
for X := x_atas to x_baw-1 do
for Y := y_atas to y_baw-1 do
bobot[X,Y]:=bobaru[X,Y];

inc(epoch,1);
until (epoch>100);
edit5.Text:=inttostr(epoch);

end;

end.
procedure TForm1.Button17Click(Sender: TObject);
begin

end;

Listing Form Pengujian algoritma Learning Vector Quantization


unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,

Universitas Sumatera Utara


Dialogs, StdCtrls, LPComponent, SLComponentCollection,
VLCommonDisplay,
VLImageDisplay, VLGrayScale, VLCommonFilter, VLResize,
VLDSCapture,
VLBasicGenericFilter, VLGenericFilter, VLBitmap;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
VLDSCapture1: TVLDSCapture;
VLResize1: TVLResize;
VLGrayScale1: TVLGrayScale;
VLImageDisplay1: TVLImageDisplay;
VLGenericFilter1: TVLGenericFilter;
VLImageDisplay2: TVLImageDisplay;
VLGenericFilter2: TVLGenericFilter;
Edit3: TEdit;
VLImageDisplay3: TVLImageDisplay;
VLGenericFilter3: TVLGenericFilter;
Edit4: TEdit;
Edit5: TEdit;
GroupBox1: TGroupBox;
Edit7: TEdit;
Button4: TButton;
Button5: TButton;
procedure FormActivate(Sender: TObject);
procedure VLGenericFilter1ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter2ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter3ProcessData(Sender: TObject;
InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
procedure VLGenericFilter3Start(Sender: TObject; var AWidth,
AHeight: Integer; AFrameDelay: Real);
procedure VLGenericFilter3Stop(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
FBitmap : TVLBitmap;
public
{ Public declarations }
end;

var

Universitas Sumatera Utara


Form1: TForm1;
Fi : Textfile;
NamaArsip : String;
peta,peta_2,peta2,templatepeta : array [0..90,
0..90] of real;
X,Y, Max_x, Max_y : integer;
tampung : string;
treshold_B : integer;
x_atas, x_baw, y_atas, y_baw : byte;
face, poci : Boolean;
penghilang : byte;
implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);


begin
//---------------------------------- PETA
NamaArsip:='petavertikal.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
Readln(Fi,tampung);
Edit1.text:=(tampung);
Readln(Fi,tampung);
Edit2.text:=(tampung);
Max_x:=strtoint(Edit1.Text);
Max_y:=strtoint(Edit2.Text);
//--------------------------------
while not Eof(Fi) do
begin
for X:=0 to Max_x-1 do
for Y:=0 to Max_y-1 do
begin
Readln(Fi,tampung);
peta[X,Y]:=strtofloat(tampung);

end;

end;
CloseFile(Fi);
//---------------------------------- PETA 2
NamaArsip:='petavertikal2.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
Readln(Fi,tampung);
Edit1.text:=(tampung);
Readln(Fi,tampung);
Edit2.text:=(tampung);
Max_x:=strtoint(Edit1.Text);

Universitas Sumatera Utara


Max_y:=strtoint(Edit2.Text);
//--------------------------------
while not Eof(Fi) do
begin
for X:=0 to Max_x-1 do
for Y:=0 to Max_y-1 do
begin
Readln(Fi,tampung);
peta_2[X,Y]:=strtofloat(tampung);

end;

end;
CloseFile(Fi);

face:=FALSE;
treshold_B:=710;
penghilang:=0;

edit7.Text:=inttostr(treshold_B);

end;

procedure TForm1.VLGenericFilter1ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var Xa, Ya, Sobelx, Sobely, Sobelxy: Integer;
begin
for Xa:= 5 to OutBuffer.Width - 10 do
for Ya:= 5 to OutBuffer.Height - 10 do
//if outbuffer.Red[X,Y]>=90 then
begin
//-101
//-202
//-101
Sobelx:=(-inbuffer.Red[Xa,Ya])+(inbuffer.Red[Xa+2,Ya])-
(2*inbuffer.Red[Xa,Ya+1])+(2*inbuffer.Red[Xa+2,Ya+1])
-inbuffer.Red[Xa,Ya+2]+inbuffer.Red[Xa+2,Ya+2];
//121
//000
//-1-2-1
Sobely:=(inbuffer.Red[Xa,Ya])+(2*inbuffer.Red[Xa+1,Ya])+inbuffer.R
ed[Xa+2,Ya]-inbuffer.Red[Xa,Ya+2]
-(2*inbuffer.Red[Xa+1,Ya+2])-inbuffer.Red[Xa+2,Ya+2];
Sobelxy:=Sobelx+Sobely;
//if Sobelxy<0 then Sobelxy:=0;
if Sobelxy>30 then Sobelxy:=255 else Sobelxy:=0;

Universitas Sumatera Utara


Outbuffer.Red[Xa,Ya]:=Sobelxy;
Outbuffer.Green[Xa,Ya]:=Sobelxy;
Outbuffer.Blue[Xa,Ya]:=Sobelxy;
if Outbuffer.Red[Xa,Ya]=255 then templatepeta[Xa,Ya]:=1 else
templatepeta[Xa,Ya]:=0;
end;

end;

procedure TForm1.VLGenericFilter2ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var Xa, Ya : Integer;
jelajah2, Hamming2: Integer;
SAD2, SAD : Real;
jelajah, Hamming : Integer;

begin

//kurangi bobot dengan lokasi video, jumlah, kuadrat, totalnya


diakar
for Xa:= 5 to OutBuffer.Width -Max_x-10 do
for Ya:= 5 to OutBuffer.Height - Max_y-10 do
{if Xa mod 3=0 then
if Ya mod 3=0 then }
begin //*
jelajah:=0;
SAD:=0;
Hamming:=0;
jelajah2:=0;
SAD2:=0;
Hamming2:=0;

for X:=0 to Max_x-1 do


for Y:=0 to Max_y-1 do begin //**

peta2[X,Y]:=Templatepeta[Xa+X,Ya+Y];
//ukur Hamming Distance
if peta[X,Y]=peta2[X,Y] then
inc(jelajah,1)
else inc(Hamming,1);
//Template SAD
SAD:=SAD+abs(peta[X,Y]-peta2[X,Y]);
//ukur Hamming Distance 2
if peta_2[X,Y]=peta2[X,Y] then
inc(jelajah2,1)
else inc(Hamming2,1);
//Template SAD 2

Universitas Sumatera Utara


SAD2:=SAD2+abs(peta_2[X,Y]-
peta2[X,Y]);
end; //**

//kesesuaian peta dan jarak peta lokasi thd peta target


if Hamming<Hamming2 then
if SAD<SAD2 then
if jelajah>treshold_B then
begin
poci:=TRUE;
x_atas:=Xa;
y_atas:=Ya;
x_baw:=Xa+Max_x;
y_baw:=Ya+Max_y;
face:=TRUE;

//edit3.Text:=floattostr(SAD);
end; //end else
if Hamming>Hamming2 then
if SAD>SAD2 then
if jelajah2>treshold_B then
begin
poci:=FALSE;

x_atas:=Xa;
y_atas:=Ya;
x_baw:=Xa+Max_x;
y_baw:=Ya+Max_y;
face:=TRUE;

end;

end; //*
end;

procedure TForm1.VLGenericFilter3ProcessData(Sender: TObject;


InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer;
var SendOutputData: Boolean);
var hitungwajah : byte;

begin
// Convert to Bitmap.
InBuffer.ToBitmap( FBitmap );

FBitmap.Canvas.Brush.Style := bsClear;
FBitmap.Canvas.Pen.Width := 2;
if poci=TRUE then

Universitas Sumatera Utara


BEGIN
FBitmap.Canvas.Pen.Color := clRed ;
FBitmap.Canvas.TextOut( 1, 1, 'SAD' );
END;
if poci=FALSE then
BEGIN
FBitmap.Canvas.TextOut( 1, 1, 'HAPPY' );
FBitmap.Canvas.Pen.Color := clYellow;
END;
inc(penghilang,1);
if penghilang > 5 then begin
penghilang:=0;
face:=FALSE
end;
if face=TRUE then
FBitmap.Canvas.Rectangle( x_atas, y_atas, x_baw, y_baw );

// Convert to Buffer.
OutBuffer.FromBitmap( FBitmap );
end;

procedure TForm1.VLGenericFilter3Start(Sender: TObject; var


AWidth,
AHeight: Integer; AFrameDelay: Real);
begin
FBitmap := TVLBitmap.Create();
end;

procedure TForm1.VLGenericFilter3Stop(Sender: TObject);


begin
FBitmap.Free();
end;

procedure TForm1.Button4Click(Sender: TObject);


begin
treshold_B:=treshold_B-1;
edit7.Text:=inttostr(treshold_B);
end;

procedure TForm1.Button5Click(Sender: TObject);


begin
treshold_B:=treshold_B+1;
edit7.Text:=inttostr(treshold_B);
end;

end.

Universitas Sumatera Utara

Anda mungkin juga menyukai