Sistem Pengenalan Wajah Menggunakan Webcam Untuk Pintu Otomatis Dengan Menggunakan Metode Eigenface

(1)

SISTEM PENGENALAN WAJAH MENGGUNAKAN WEBCAM UNTUK PINTU OTOMATIS DENGAN MENGGUNAKAN METODE EIGENFACE

SKRIPSI

JULIANA S. SITUMEANG 110801042

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2015


(2)

SISTEM PENGENALAN WAJAH MENGGUNAKAN WEBCAM UNTUK PINTU OTOMATIS DENGAN MENGGUNAKAN METODE EIGENFACE

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

JULIANA SITUMEANG 110801042

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2015


(3)

PERSETUJUAN

Judul : SISTEM PENGENALAN WAJAH MENGGUNAKAN WEBCAM UNTUK PINTU OTOMATIS DENGAN

MENGGUNAKAN METODE

EIGENFACE

Kategori : Skripsi

Nama : Juliana S. Situmeang Nomor Induk Mahasiswa : 110801042

Program Studi : Sarjana (S1) Fisika Departemen : Fisika

Fakultas : Matematika Dan Ilmu Pengetahuan Alam Universitas Sumatera Utara

Disetujui di Medan, Agustus 2015

Komisi Pembimbing :

Pembimbing 1, Pembimbing 2,

Drs. Takdir Tamba, M.Eng.Sc Dr. Marhaposan Situmorang NIP.196006031986011002 NIP. 195510301980031003

Disetujui Oleh

Departemen Fisika FMIPA USU Ketua,

Dr. Marhaposan Situmorang NIP. 195510301980031003


(4)

PERNYATAAN

SISTEM PENGENALAN WAJAH MENGGUNAKAN WEBCAM UNTUK PINTU OTOMATIS DENGAN MENGGUNAKAN METODE EIGENFACE

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri. Kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Agustus 2015

JULIANA SITUMEANG 110801042


(5)

Sistem Pengenalan Wajah Menggunakan Webcam Untuk Pintu Otomatis Dengan Metode EigenFace

Abstrak

Wajah merupakan salah satu ciri biometrik manusia yang menarik digunakan sebagai salah satu bentuk pengenal identitas manusia. Perpaduan antara webcam dengan computer dapat dimanfaatkan sebagai alat pengaman ruangan. Dimana kemampuan webcam dapat menangkap wajah dan komputer dalam mengenali suatu objek. Maka dirancang sebuah sistem yang dapat mengenali sebuah wajah menggunakan metode Eigenface untuk mencocokkan foto wajah yang diinputkan dengan foto wajah yang disimpan di database.


(6)

Face recognition system using a webcam for automatic doors with methods Eigenface

Abstrac

Face is one of the interesting characteristic of human biometric is used as one of the forms identification of human identity. Blend between the webcam with the computer can be used as a device room securyti. Where the ability webcam can capture a face and a computer to recognize an object. Then designed a system that can recognize a face using a Eigenface method to match the images of faces than entered the facial image that is stored in a database.


(7)

DAFTAR ISI

Halaman

Persetujuan i

Pernyataan ii

Penghargaan iii

Abstrak v

Abstrack vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Daftar Lampiran xii

BAB I Pendahuluan

1.1Latar Belakang 1

1.2Rumusan Masalah 2

1.3Batasan Masalah 2

1.4Tujuan Penelitian 2

1.5Manfaat Penelitian 2

1.6 Sistematika Penulisan 3

BAB II Landasan Teori

2.1Pengertian citra 4

2.2Pengolahan citra digital 4

2.3Pengenalan pola 5

2.3.1 Komponen sistem pengenalan pola6

2.4 Pengenalan wajah (Face Recognition) 7

2.5 Eigenface 7

2.5.1 Eigenvalue dan Eigenvector 8

2.6 Mikrokontroler 11

2.6.1 Bahasa pemograman mikrokontroler ATMega8535 11

2.6.2 Arsitektur AVR ATMega8535 12

2.6.3 Konfigurasi pin Mikrokontroler ATMega 8535 14

2.7 Motor DC 15

2.7.1 Motor servo 17

2.7.1.1 Prinsip kerja motor servo 17

2.8 Webcam 18

2.8.1 Defenisi webcam 18

2.8.2 Cara kerja webcam 19


(8)

BAB III Perancangan dan Sistem Kerja Rangkaian

3.1 Diagram Blok 21

3.2 Perangkat keras (hardware) 22

3.2.1 Komputer 22

3.2.2 Webcam 22

3.2.3 Rangkaian Mikrokontoler 22

3.2.4 Rangkaian komunikasi data serial USB to TTL 24

3.2.5 Rangkaian Servo MG996R 24

3.3 Flowchart proses pelatihan 26

3.4 Flowchart proses pengenalan 27

3.5 Perancangan software 28

3.5.1 Komponen sistem 28

3.6 Perancangan antar muka 33

3.6.1 Rancangan tampilan Log in 34

3.6.2 Rancangan form pelatihan citra wajah 35 3.6.3 Rancangan tampilan proses pengenalan wajah 35

3.7 Rangkaian Lengkap 36

BAB VI Hasil dan Analisis

4.1 Pengujian Alat 37

4.1.1 Pengujian mikrokontroler 37

4.1.2 Pengujian Motor servo 38 4.1.3 Pengujian webcam 39

4.2 Implementasi software 40

4.2.1 Tampilan Log in 40

4.2.2 Tampilan halaman utama 41

4.2.3 Tampilan form input setting kemiripan 42 4.2.4 Tampilan proses pengambilan database citra wajah 42 4.2.5 Tampilan proses pengenalan citra wajah 44

4.3 Analisa Pengujian 45

BAB V Kesimpulan dan Saran

5.1 Kesimpulan 49

5.2 Saran 49

Daftar Pustaka 50


(9)

Sistem Pengenalan Wajah Menggunakan Webcam Untuk Pintu Otomatis Dengan Metode EigenFace

Abstrak

Wajah merupakan salah satu ciri biometrik manusia yang menarik digunakan sebagai salah satu bentuk pengenal identitas manusia. Perpaduan antara webcam dengan computer dapat dimanfaatkan sebagai alat pengaman ruangan. Dimana kemampuan webcam dapat menangkap wajah dan komputer dalam mengenali suatu objek. Maka dirancang sebuah sistem yang dapat mengenali sebuah wajah menggunakan metode Eigenface untuk mencocokkan foto wajah yang diinputkan dengan foto wajah yang disimpan di database.


(10)

Face recognition system using a webcam for automatic doors with methods Eigenface

Abstrac

Face is one of the interesting characteristic of human biometric is used as one of the forms identification of human identity. Blend between the webcam with the computer can be used as a device room securyti. Where the ability webcam can capture a face and a computer to recognize an object. Then designed a system that can recognize a face using a Eigenface method to match the images of faces than entered the facial image that is stored in a database.


(11)

BAB 1 PENDAHULUAN 1.1 Latar Belakang

Dengan semakin berkembangnya teknologi saat ini, sehingga mengakibatkan hampir disetiap kegiatan manusia membutuhkan bantuan dari teknologi. Banyak peralatan-peralatan elektronik yang bertujuan untuk membantu meringankan tugas manusia dalam menyelesaikan tugas-tugasnya. Seperti halnya dalam pengamanan pintu masuk dalam ruangan khusus, baik dalam ruang perkantoran, penelitian, dan ruangan yang memungkinkan tidak sembarangan orang masuk. Seseorang ataupun perusahaan pasti membutuhkan alat yang mampu membantunya dalam menyajikan data dan informasi dengan cepat dan efisien.

Seiring perkembangan teknologi tersebut maka dari ciri biometrik manusia dapat dijadikan suatu sistem keamanan. Dimana ciri biometrik merupakan suatu pembeda yang dimiliki setiap individu dan memiliki ciri khas yang khusus. Hal ini menjadi menarik digunakan sebagai salah satu bentuk pengenal identitas manusia, contohnya adalah wajah. Sistem pengenalan wajah sebagai verifikasi identitas telah dikembangkan dan menghasilkan bermacam algoritma untuk pemprosesan citra digital.

Sistem pengenalan wajah adalah salah satu bagian dari pengolahan citra yang mengidentifikasi individu berdasarkan data yang diinputkan berupa karakteristik fisiologis. Pengetahuan tersebut berdasarkan data yang diinputkan ke dalam database sehingga setiap orang yang diidentifikasi melalui sistem dapat diketahui datanya.

Dari latar belakang diatas maka penulis mengadakan sebuah penelitian berjudul “SISTEM PENGENALAN WAJAH MENGGUNAKAN WEBCAM UNTUK PINTU OTOMATIS DENGAN METODE EIGENFACE”. Dengan penelitian yang dilakukan oleh penulis kiranya dapat membantu masyarakat dalam pengamanan pintu, sekaligus untuk memenuhi tugas akhir sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains Pada Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sumatera Utara.


(12)

1.2 Rumusan Masalah

Berdasarkan latar belakang yang telah disampaikan sebelumnya, yang menjadi rumusan masalah antara lain :

1. Bagaimana merancang alat untuk dapat mendeteksi wajah sama atau tidaknya dengan database dengan menggunakan webcam.

2. Bagaimana merancang alat untuk mengendalikan pintu otomatis berdasarkan database.

1.3 Batasan Masalah

Untuk mendapatkan suatu hasil penelitian dari permasalahan yang ditentukan, maka perlu ada pembatasan masalah penelitian :

1. Pola wajah yang diidentifikasi adalah pola wajah dalam keadaan ekspresi normal, pencahayaan yang cukup dan tidak dihalangi oleh objek lain. 2. Pengenalan wajah dilakukan dalam PC yaitu dengan metode eigenface dan

data penunjang yang sesuai untuk mengatasi masalah diagnosis. 3. Aplikasi yang akan dibangun dengan menggunakan Visual Basic 6.0.

1.4 Tujuan Penelitian

Adapun tujuan penelitian ini dilakukan yaitu untuk mengimplementasikan metode eigenface untuk pengenalan wajah yang diaplikasikan pada pintu otomatis.

1.5 Manfaat Penelitian

Adapun manfaat yang diperoleh dari penelitian ini adalah :

1. Memanfaatkan webcam sebagai pengenalan wajah untuk keamanan pintu ruangan.


(13)

1.6 Sistematika Penulisan

Untuk mempermudah pembahasan dan pemahaman skripsi ini maka penulis membuat sistematika penulisan. Adapun sistematika penulisan skripsi ini adalah sebagai berikut:

BAB I. PENDAHULUAN

Bab ini berisikan pendahuluan yang menjelaskan mengenai latar belakang, rumusan masalah, tujuan penelitian, manfaat penelitian, batasan masalah dan sistematika penulisan.

BAB II. TINJAUAN PUSTAKA

Pada bab ini dijelaskan tentang teori pendukung yang digunakan untuk pembahasan system biometrika, wajah dan cara kerja dari software visual basic dan komponen pendukung lainnya.

BAB III. PERANCANGAN SISTEM

Bab ini membahas tentang perancangan sistem, diagram blog, flowchart (diagram alir), dan perancangan program.

BAB IV. PENGUJIAN SISTEM

Pada bab ini dibahas tentang pengujian dan uji coba aplikasi dari program yang telah dibuat dan pengolahan data dari hasil pengujian. BAB V. KESIMPULAN DAN SARAN

Bab ini merupakan penutup yang meliputi kesimpulan dari pembahasan dan tujuan penelitian beserta saran sebagai acuan untuk dikembangkan pada penelitian yang akan datang.


(14)

BAB 2

LANDASAN TEORI

2.1 Pengertian Citra

Pengertian citra dari beberapa ahli yaitu menurut Hornby, citra merupakan gambaran yang terekam oleh kamera atau oleh sensor lainnya. Sedangkan Simonett mengutarakan dua pengertian tentang citra yaitu : Pertama, gambaran obyek yang dibuahkan oleh pantulan atau pembiasan sinar yang difokuskan oleh sebuah lensa atau sebuah cermin. Kedua, gambaran rekaman suatu obyek (biasanya berupa gambaran pada foto) yang dibuahkan dengan cara optik, elektro-optik, optik mekanik, atau elektronik. Pada umumnya ia digunakan bila radiasi elektromagnetik yang dipancarkan atau dipantulkan dari suatu obyek tidak langsung direkam pada film.” (Sutanto, 1994:6)

Kata citra atau yang dikenal secara luas dengan kata “gambar” dapat diartikan sebagai suatu fungsi intensitas cahaya dua dimensi, yang dinyatakan oleh f(x,y), di mana nilai atau amplitudo dari f pada koordinat spasial (x,y) menyatakan intensitas (kecerahan) citra pada titik tersebut.

Citra dapat dikelompokkan menjadi dua bagian yaitu citra diam (still Images) dan citra bergerak (Imoving images). Citra diam adalah citra tunggal yang tidak bergerak. Sedangkan citra bergerak adalah rangkaian citra diam yang ditampilkan secara beruntun (sekuensial), sehingga member kesan pada mata sebagai gambar yang bergerak. Setiap citra didalam rangkaian itu disebut frame. Gambar-gambar yang tampak pada film layar lebar atau televise pada hakekeatnya terdiri dari ratusan sampai ribuan frame (Sitorus,Syahriol dkk,2006)

2.2 Pengolahan Citra Digital

Pengolahan citra digital adalah sebuah disiplin ilmu yang mempelajari hal-hal yang berkaitan dengan perbaikan kualitas gambar (peningkatan kontras, transformasi warna, restorasi citra), transformasi gambar (rotasi, translasi, skala, transformasi geometrik), melakukan pemilihan citra ciri (feature images) yang


(15)

optimal untuk tujuan analisis, melakukan proses penarikan informasi atau deskripsi objek atau pengenalan objek yang terkandung pada citra, melakukan kompresi atau reduksi data untuk tujuan penyimpanan data, transmisi data, dan waktu proses data. Input dari pengolahan citra adalah citra, sedangkan output-nya adalah citra hasil pengolahan.(T.Sutoyo,2009)

Pada pengenalan wajah proses capture sangat menentukan tingkat kesulitan dalam komputasinya, salah satunya bahwa dalam setiap proses capture ternyata cahaya, warna, posisi, skala, dan kemiringan menjadi suatu masalah yang perlu diperhatikan. Citra digital merupakan representatif dari citra yang diambil oleh mesin dengan bentuk pendekatan berdasarkan sampling dan kuantisasi. Sampling menyatakan besarnya kotak-kotak yang disusun dalam baris dan kolom. Dengan kata lain sampling pada citra menyatakan besar kecilnya ukuran pixel (titik) pada citra, dan kuantisasi menyatakan besarnya nilai tingkat kecerahan yang dinyatakan dalam nilai tingkat keabuan (grayscale) sesuai dengan jumlah bit biner yang digunakan oleh mesin dengan kata lain kuantisasi pada citra menyatakan jumlah warna yang ada pada citra.

2.3 Pengenalan Pola

Pola adalah entitas yang terdefinisi atau didefinisikan melalui ciri-cirinya (feature). Ciri-ciri tersebut digunakan untuk membedakan suatu pola dengan pola yang lainnya. Ciri yang baik adalah ciri yang memiliki daya pembeda yang tinngi, sehingga pengelompokan pola berdasarkan ciri yang dimiliki dapat dilakukan dengan keakuratan yang tinggi (Sitorus, Syahriol dkk, 2006).

Pengenalan pola merupakan cabang dari kecerdasan buatan yang saat ini berkembang pesat untuk mendukung aspek keamanan suatu sistem. Saat ini, aplikasi-aplikasi pengenalan pola juga sudah sangat beragam, di antaranya:

1. Voice recognition yang menggunakan pengenalan suara sebagai kunci bagi pengguna sistem.

2. Fingerprint identification yang menggunakan pengenalan sidik jari sebagi kunci telah dipakai secara luas sebagai pengganti password atau pinuntuk mengakses sistem tertentu.


(16)

3. Face identification yang menggunakan pengenalan wajah sebagai kunci bagi pengguna sistem, bahkan saat ini badan penegak hukum sedang mengembangkan sistem untuk mengidenfikasi para buronan dengan melakukan scanning pada wajah para pelaku kejahatan yang sudah di-database-kan berdasarkan foto pelaku kejahatan tersebut.

4. Handwriting identification yang menggunakan pengenalan tulisan yang telah secara luas digunakan oleh sistem perbankan untuk membuktikan pelaku transaksi adalah orang yang benar-benar berhak.

5. Optical Character Recognition (OCR) yang secara luas digunakan pada counter pengecekan barang.

6. Robot vision yang digunakan oleh aplikasi robotik dalam mengenali objek tertentu pada lingkungan yang unik.

2.3.1 Komponen Sistem Pengenalan Pola

Sistem pengenalan pola dasar terdiri dari (Al Fatta, Hanif, 2009): 1. Sensor

Sensor digunakan untuk menangkap objek yang ciri atau feature-nya akan diekstraksi.

2. Mekanisme Pre-processing

Mekanisme pengolahan objek yang ditangkap oleh sensor, bagian ini biasanya digunakan untuk mengurangi kompleksitas ciri yang akan dipakai untuk proses klasifikasi.

3. Mekanisme Pencari Feature

Bagian ini digunakan untuk mengekstraksi ciri yang telah melalui tahapan pre-processing untuk memisahkannya dari kumpulan ciri-ciri yang tidak diperlukan dalam proses klasifikasi dari suatu objek.

4. Algoritma Pemilah

Pada tahapan ini klasifikasi dilakukan dengan menggunakan algoritma klasifikasi tertentu. Hasil dari tahapan ini adalah klasifikasi dari objek yang ditangkap ke dalam kriteria-kriteria yang telah ditentukan.


(17)

2.4 Pengenalan Wajah (Face Recognition)

Secara umum sistem pengenalan citra wajah dibagi menjadi dua jenis, yaitu sistem feature-based dan sistem image-based. Pada sistem pertama digunakan ciri yang diekstraksi dari komponen citra wajah seperti mata,hidung, mulut, dan lain-lain yang kemudian dimodelkan secara geometris hubungan antara ciri-ciri tersebut. Sedangkan pada sistem ke dua menggunakan informasi mentah dari piksel citra yang kemudian direpresentasikan dalam metode tertentu, misalnya seperti Principal Component Analysis (PCA) atau transformasi wavelet yang digunakan untuk klasifikasi indentitas citra (Al Fatta, Hanif, 2009).

Alan Brooks pernah mengembangkan sebuah penelitian yang membandingkan dua algoritma yaitu Eigenface dan Fisherface. Penelitian ini difokuskan pada perubahan pose wajah apakah mempengaruhi akurasi pengenalan wajah. Diberikan database latih berupa foto wajah manusia, kemudian digunakan untuk melatih sebuah sistem pengenalan wajah, setelah proses latihan selesai, diberikan sebuah masukan image yang sebenarnya sama dengan salah satu image wajah pada fase latihan tetapi dengan pose yang berbeda. Sistem juga diharapkan punya sensitifitas minimal terhadap pencahayaan.

Sistem dikembangkan dengan dua algoritma yaitu Eigenface dan Fisherface, dan dibandingkan hasilnya. Kedua teknik menghasilkan hasil yang memuaskan tetapi ada beberapa perbedaan Pada Eigenface kompleksitas komputasi lebih sederhana daripada Fisherface. Dari segi efektifitas karena perubahan pose Fisherface memberikan hasil yang lebih baik, bahkan dengan data yang lebih terbatas. Teknik Eigenface juga lebih sensitif terhadap pencahayaan dibandingkan dengan Fisherface (Purwanto, Ari).

2.5 Eigenface

Salah satu arti perkataan “eigen” didalam bahasa Jerman adalah “asli”(“proper”); nilai eigen juga dikatakan nilai asli (proper value), nilai karateristik (characteristic value) atau akar laten (latent root) oleh beberapa penulis.

Eigenface adalah kumpulan dari eigenvektor yang digunakan untuk masalah computer vision pada pengenalan wajah manusia. Banyak penulis lebih


(18)

menyukai istilah eigenimage, dan teknik ini telah digunakan untuk pengenalan tulisan tangan, pembacaan bibir, pengenalan suara dan pencitraan medis.

Eigenface adalah sekumpulan standardize face ingredient yang diambil dari analisis statistik dari banyak gambar wajah (Layman dalam Al Fatta, Hanif, 2009).

Persamaan �� =�� ditemukan pada banyak aplikasi aljabar linear. Jika persaamaan tersebut mempunyai penyelesaian tak nol x, maka � disebut sebagai nilai eigen (eigenvalue) dari A dan x disebut sebagai vector eigen (eigenvector) yang memiliki oleh �. (Howard,A.1981)

Untuk mencari nilai eigen dan vector eigen pembahasannya lebih lanjut sebagai berikut:

2.5.1 Eigenvalue dan Eigenvector

Nilai eigenvalue dari suatu matriks bujursangkar merupakan polynomial karakteristik dari matriks tersebut; jika λ adalah eigenvalue dari A maka akan ekuivalen dengan persamaan linier (A – λI) v = 0 (dimana I adalah matriks identitas) yang memiliki pemecahan non-zero v (suatu eigenvector), sehingga akan ekuivalen dengan determinan

det (A – λI) = 0 (2.1) Fungsi p(λ) = det (A – λI) adalah sebuah polynomial dalam λ karena determinan dihitung dengan sum of product. Semua eigenvalue dari suatu matriks A dapat dihitung dengan menyelesaikan persamaan pA(λ) = 0. Jika A adalah matriks ukuran n x n, maka pA memiliki derajat n dan A akan memiliki paling banyak n buah eigenvalue.

Jika eigenvalue λ diketahui, eigenvector dapat dicari dengan memecahkan: (A – λI) v = 0 (2.2) Dalam beberapa kasus dapat dijumpai suatu matriks tanpa eigenvalue, misalnya:

01 10

dimana karakteristik bilangan polynomialnya adalah λ2 + 1 sehingga eigenvalue adalah bilangan kompleks i, -i. Eigenvector yang berasosiasi juga tidak riil. Jika diberikan matriks:


(19)

�= �2 1 1 3�

maka polynomial karakteristiknya dapat dicari sebagai berikut: ��� �(2− �) −1

0 3− ��=�

25+ 6 = 0

ini adalah persamaan kuadrat dengan akar-akarnya adalah λ = 2 dan λ = 3.

Adapun eigenvector yang didapat ada dua buah. Eigenvector pertama dicari dengan mensubtitusikan λ = 3 ke dalam persamaan. Misalnya �0 adalah eigenvector yang berasosiasi dengan eigenvalue λ = 3. Set �0 dengan nilai:

�0 =��0 0�

Kemudian subtitusikan �0dengan v pada persamaan: ( A – λI) v = 0

sehingga diperoleh:

�(2−3)�0 + (−�0) = 0

0 + (3−3)�0 = 0

dapat disederhanakan menjadi:

−�0− �0 = 0 �����0 = −�0

sehingga eigenvector untuk eigenvalue λ = 3 adalah: �0 =��0

0�=� � 0

−�0�=�0�

1 −1�

Hubungan antara eigenvalue dan eigenvector dari suatu matriks digambarkan oleh persamaan :

�.� =�.� (2.3)

dimana v adalah eigenvector dari matriks M dan λ adalah eigenvalue. Terdapat n buah eigenvector dan eigenvalue dalam sebuah nxn matriks.


(20)

Prinsip dasar dari pengenalan wajah adalah dengan mengutip informasi unik wajah tersebut kemudian di-encode dan dibandingkan dengan hasil decode yang sebelumnya dilakukan. Dalam metode eigenface, decoding dilakukan dengan menghitung eigenvector kemudian direpresentasikan dalam sebuah matriks yang berukuran besar.

Algoritma Eigenface secara keseluruhan cukup sederhana. Image Matriks (Γ)

direpresentasikan ke dalam sebuah himpunan matriks (Γ1,Γ2, … ,Γ�). Cari nilai

rata-rata (Ψ) dan gunakan untuk mengekstraksi eigenvector (v) dan eigenvalue (λ) dari

himpunan matriks. Gunakan nilai eigenvector untuk mendapatkan nilai eigenface dari image. Apabila ada sebuah image baru atau test face ���) yang ingin dikenali,

proses yang sama juga diberlakukan untuk image ���), untuk mengekstraksi

eigenvector (v) dan eigenvalue (λ), kemudian cari nilai eigenface dari image test face

���). Setelah itu barulah image baru ���) memasuki tahapan pengenalan dengan

menggunakan metode euclidean distance. Tahapan selengkapnya yaitu: Tahapan Perhitungan Eigenface:

1. Langkah pertama adalah menyiapkan data dengan membuat suatu himpunan S yang terdiri dari seluruh training image Γ1,Γ2, … ,Γ� .

S = {Γ1,Γ2, … ,Γ�}

2. Langkah kedua adalah ambil nilai tengah atau mean (Ψ)

Ψ= 1∑�=1Γ (2.4)

3. Langkah ketiga kemudian cari selisih (Ф) antara training image ) ( dengan nilai tengah (Ψ)

Φi = Γ� − Ψ (2.5)

4. Langkah keempat adalah menghitung nilai matriks kovarian (C) � = 1

�∑��=1Φ�Φ�� = ��� (2.6)

�=��� �=Φ�Φ

5. Langkah kelima menghitung eigenvalue (λ) dan eigenvector (v) dari matriks kovarian (C)


(21)

� ×� = � × � (2.7)

6. Langkah keenam, setelah eigenvector (v) diperoleh, maka eigenface (µ) dapat dicari dengan :

μi =∑�=1v���� (2.8)

�= 1, … ,� Tahap pengenalan :

1. Sebuah image wajah baru atau test face (���) akan dicoba untuk dikenali, pertama terapkan cara pada tahapan pertama perhitungan eigenface untuk mendapatkan nilai eigenface dari image tersebut.

���� = �. ( Γ��� − Ψ) (2.9)

Ω = [�1,�2, . . ,�′]

2. Gunakan metode Eucladien Distance untuk mencari jarak (distance) terpendek antara nilai eigenface dari training image dalam database dengan eigenface dari image test face.

�� = ||Ω − Ω�|| (2.10)

2.6 Mikrokontroler

Mikrokontroler adalah suatu sistem komputer lengkap dalam satu chip. Lengkap dalam artian memiliki unit CPU, port I/O (paralel dan serial), timer, counter, memori RAM untuk penyimpanan data saat eksekusi program, dan memori ROM tempat dari mana perintah yang akan dieksekusi. Dan merupakan suatu komponen elektronik kecil yang mengendalikan operasi komponen elektronik lain pada suatu sirkuit elektronik.

2.6.1 Bahasa Pemrograman Mikrokontroler ATMega8535

Pemrograman mikrokontroler ATMega8535 dapat menggunakan low level language (assembly) dan high level language (C, Basic, Pascal, Java, dll) tergantung compiler yang digunakan. Bahasa Assembler mikrokontroler AVR memiliki kesamaan instruksi, sehingga jika pemrograman satu jenis


(22)

mikrokontroler AVR sudah dikuasai, maka akan dengan mudah menguasai pemrograman keseluruhan mikrokontroler jenis mikrokontroler AVR. Namun bahasa assembler relatif lebih sulit dipelajari dari pada bahasa C. Untuk pembuatan suatu proyek yang besar akan memakan waktu yang lama serta penulisan programnya akan panjang. Sedangkan bahasa C memiliki keunggulan dibanding bahasa assembler yaitu independent terhadap hardware serta lebih mudah untuk menangani project yang besar.

Bahasa C memiliki keuntungan-keuntungan yang dimiliki bahasa assembler (bahasa mesin), hampir semua operasi yang dapat dilakukan oleh bahasa mesin, dapat dilakukan dengan bahasa C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C terletak diantara bahasa pemrograman tingkat tinggi dan assembly.

2.6.2 Arsitektur AVR ATMega 8535

Mikrokontroler AVR memiliki arsitektur RISC 8 bit, dimana semua intruksi dikemas dalam kode 16-bit dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock, berbeda dengan instruksi MCS51 yang membutuhkan 12 siklus clock. Selain itu AVR berteknologi RISC (Reduced Instruction Set Computing).

Secara garis besar arsitektur mikrokontroler ATMega8535 memiliki bagian sebagai berikut :

1. Port I/O 32 bit, yang dikelompokkan dalam Port A, Port B, Port C dan Port D.

2. Analog to Digital Converter 10-bit sebanyak 8 input. 3. Timer/counter sebanyak 3 buah dengan compare mode. 4. CPU 8 bit yang terdiri dari 32 register.

5. SRAM sebesar 512 byte.

6. Memory Flash sebesar 8 Kbyte dengan kemampuan read while write. 7. Interupsi Internal maupun eksternal.

8. Port Komunikasi SPI.

9. EEPROM sebesar 512 byte yang dapat diprogram saat operasi. 10.Analog Comparator.


(23)

Frekuensi clock maksimum 16 MHz. 12.PORT USART untuk komunikasi serial.


(24)

Media penyimpan program berupa flash memory, sedangkan penyimpan data berupa SRAM (Static Random Acces Memory) dan EEPROM (Electrical Erasable Programmable Read Only Memory). Untuk komunikai data tersedia fasilitas SPI (Serial Peripheral Interface), USART (Universal Shynchronous and Asyncrhonous Serial Receiver and Transmitter), serta TWI (Two-wire Serial Interface). Di samping itu terdapat fitur tambahan, antara lain AC (Analog Comparator), 8 kanal 10-bit ADC (Analog to Digital Converter), 3 buah Timer/Counter, WDT (Watchdog Timer), manajemen penghematan daya (Sleep Mode), serta osilator internal 8 Mhz. seluruh fitur terhubung ke bus 8 bi. Unit interupsi menyediakan sumber interupsi hingga 21 macam.

2.6.3 Konfigurasi pin Mikrokontroler ATmega 8535

Di bawah merupakan konfigurasi pin mikrokontroler AVR ATmega 8535 yaitu : 1. VCC : merupakan pin yang berfungsi sebagai masukan pin catu daya. 2. GND : merupakan pin ground.

3. Port A (PA0..PA7 : merupakan pin I/O dua arah dan pin masukan ADC. 4. Port B (PB0..PB7) : merupakan pin I/O dua arah dan pin fungsi khusus,

yaitu timer/counter, komparator analog dan SPI.

5. Port C (PC0..PC7) : merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI, komparator analog, input ADC dan Timer Oscilator.

6. Port D (PD0..PD7) : merupakan pin I/O dua arah dan pin fungsi khusus yaitu komparator analog, interupsi eksternal dan komunikasi serial. 7. RESET : merupakan pin yang digunakan untuk mereset mikrokontroler. 8. XTAL1 dan XTAL2 : merupakan pin masukan clock eksternal.

9. AVCC : merupakan pin masukan tegangan untuk ADC. 10.AREF : merupakan pin masukan tegangan referensi ADC.


(25)

Gambar 2.2 Konfigurasi Pin Mikrokontroler ATmega8535

2.7 Motor DC

Peranti mikroprosesor pada umumnya sangat terbatas dalam kemampuan mancatu daya pada keluarnya, tidak lebih 20mA. Ini tentunya tidak mencukupi untuk menggerakkan peralatan seperti motor, pemanas, lampu, atau lain-lainnya, sehingga dibutuhkan rangkaian penggerak berupa penguat daya (power amplifier) atau saklar daya. Dalam sistem kontrol juga dibutuhkan penginderaan keluaraan sistem sebagai umpan balik, yang dalam banyak hal berupa kecepatan. Sinyal masukan bagi pengontrol ini dapat berupa sinyal analog maupun sinyal diskrit (sederhana pulsa).

Salah satu komponen yang sangat banyak digunakan dalam sistem tertanam adalah motor, baik motor dc (arus searah), maupun motor ac (arus bolak-balik) atau motor stepper. Pengontrolan motor DC meliputi pengendalian mati-hidup, daya (torsi), arah putaran dan kecepatan. Pengontrolan mati-hidup tentuny dapat dilakukan dengan menggunakan sakelar elektronik yang dikendalikan dari bandar keluaran. Pengontrolan lainnya pada umumnya membutuhkan umpan


(26)

balikk dari keluaran yang diidera/diukur dengan sensor arus, posisi rotor, kecepatan putaran, atau arah putaran.

Motor dc dapat berfungsi sebagai motor apabila didalam motor listrik tersebut terjadi proses konversi dari energi listrik menjadi energi mekanik. Motor dc itu sendiri memerlukan suplai tegangan yang searah pada kumparan jangkar dan kumparan medan untuk diubah menjadi energi mekanik. Pada motor dc kumparan medan disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian yang berputar).

Gambar 2.3 Bagian-Bagian Motor DC

Bagian – bagian motor dc secara umum, yaitu : 1. Badan Mesin

Badan mesin ini berfungsi sebagai tempat mengalirnya fluks magnet yang dihasilkan kutub magnet, sehingga harus terbuat dari bahan ferromagnetik. Fungsi lainnnya adalah untuk meletakkan alat-alat tertentu dan mengelilingi bagian-bagian dari mesin, sehingga harus terbuat dari bahan yang benar-benar kuat, seperti dari besi tuang dan plat campuran baja.

2. Inti kutub magnet dan belitan penguat magnet

Inti kutub magnet dan belitan penguat magnet ini berfungsi untuk mengalirkan arus listrik agar dapat terjadi proses elektromagnetik. Adapun aliran fluks magnet dari kutub utara melalui celah udara yang melewati badan mesin.


(27)

Sikat-sikat ini berfungsi sebagai jembatan bagi aliran arus jangkar dengan bebas, dan juga memegang peranan penting untuk terjadinya proses komutasi.

4. Komutator

Komutator ini berfungsi sebagai penyearah mekanik yang akan dipakai bersama-sama dengan sikat. Sikat-sikat ditempatkan sedemikian rupa sehingga komutasi terjadi pada saat sisi kumparan berbeda.

5. Jangkar

Jangkar dibuat dari bahan ferromagnetik dengan maksud agar kumparan jangkar terletak dalam daerah yang induksi magnetiknya besar, agar ggl induksi yang dihasilkan dapat bertambah besar.

6. Belitan jangkar

Belitan jangkar merupakan bagian yang terpenting pada mesin arus searah, berfungsi untuk tempat timbulnya tenaga putar motor.

2.7.1 Motor servo

Motor servo adalah sebuah motor DC dengan sistem umpan balik tertutup di mana posisi rotor-nya akan diinformasikan kembali ke rangkaian kontrol yang ada di

dalam

potensiometer, dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan batas sudut dari putaran servo. Sedangkan sudut dari sum berdasarkan lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor servo.


(28)

2.7.1.1 Prinsip kerja motor servo

Motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan menentukan posisi sudut putaran dari poros motor servo. Sebagai contoh, lebar pulsa dengan waktu 1,5 ms (mili detik) akan memutar poros motor servo ke posisi sudut 90⁰. Bila pulsa lebih pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰ atau ke kiri (berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah posisi 180⁰ atau ke kanan (searah jarum jam).

Gambar 2.5 Sinyal Lebar pulsa motor servo

Ketika lebar pulsa kendali telah diberikan, maka poros motor servo akan bergerak atau berputar ke posisi yang telah diperintahkan, dan berhenti pada posisi tersebut dan akan tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal yang mencoba memutar atau mengubah posisi tersebut, maka motor servo akan mencoba menahan atau melawan dengan besarnya kekuatan torsi yang dimilikinya (rating torsi servo). Namun motor servo tidak akan mempertahankan posisinya untuk selamanya, sinyal lebar pulsa kendali harus diulang setiap 20 ms (mili detik) untuk menginstruksikan agar posisi poros motor servo tetap bertahan pada posisinya.

2.8 Webcam

2.8.1 Defenisi webcam

Webcam (web camera) adalah sebutan bagi kamera real-time (bermakna keadaan pada saat ini juga) yang gambarnya bias diakses atau dilohat melalui


(29)

world Wide Web, rogram instant messaging atau aplikasi video call. Webcam atau webcamera adalah sebuah kamera video digital kecil yang dihubungkan ke computer melalui port USB ataupun port COM.

Sekarang ini web camera yang ada dipasaran pada umumnya erbagi kedalam dua tipe : web camera permanen (fixed)dan revolving web camera. Pada web camera permanen terdapat pengapit untuk mengapit lensa standart di posisi yang diinginkan untuk menangkap gambar pengguna. Sedangkan pada revoling web camera terdapat landasan dan lensa standart dipasang di landasan tersebut sehingga dapat disesuaikan ke sudut pandang yang terbaik untuk menangkap gambar pengguna. Berikut contoh webcam laptop.

Gambar 2.6 webcam Laptop

2.8.2 Cara Kerja Webcam

Cara kerja webcam adalah sebuah web camera yang sederhana terdiri dari sebuah lensa standart, dipasang disebuah papan sirkuit untuk menangkap sinyal gambar, casing (cover), termasuk casing depan dan casing samping untuk menutupi lensa stadart dan memiliki sebuah lubang lensa di casing depan yang berguna untuk memasukkan gambar; kabel support, yang dibuat dari bahan yang fleksibel, salah satu ujungnya dihubungkan dengan papan sirkuit dan ujung satu lagi memiliki connector, kabel ini dkontrol untuk menyesuaikan ketinggian, arah dan sudut pandang web camera.


(30)

Sebuah web camera biasanya dilengkapi dengan software, software ini mengambil gambar-gambar dari kamera digital secara terus menerus ataupun dalam interval waktu tertentu dan menyiarkannya melalui koneksi internet.

2.9 USB to TTL sebagai Komunikasi Data Serial

Untuk dapat berkomunikasi antara mikrokontroler dengan PC, maka diperlukan suatu penyetaraan level tegangan. Besarnya level tegangan komunikasi serial untuk mikrokontroler diantara 0 – 3,3volt. Akan tetapi untuk tegangan komunikasi serial computer sekitar -15 sampai 15volt. Agar kedua piranti dapat berkomunikasi satu sama lain maka diperlukan sebuah converter agar level tegangannya setara. Salah satu converter yang dapat digunakan adalah dengan menggunakan kabel USB to serial converter yaitu USB TTL yang dihubungkan dengan komputer.

Mikrokontroler terhubunng langsung dengan USB to TTL melalui pin 14 (RXD), pin 15(TXD) dan pin 11 (GND). USB to TTL, menggunakan PL2303 ditunjukkan pada gambar berikut.


(31)

BAB 3

METODE PENELITIAN

3.1 Diagram Blok

Adapun diagram blok perancangan alat sistem pengenalan wajah menggunakan webcam untuk pintu otomatis adalah sebagai berikut:

Wajah Webcam

Servo Microcontroller

Atmega 8535 PC / Database

USB TTL

Gambar 3.1 Diagram Blok Penelitian

Keterangan diagram blok diatas adalah wajah merupakan objek yang akan diambil citra wajahnya, dan webcam merupakan kamera yang akan mengambil citra wajah. Pada PC terdapat sistem yang akan melakukan proses pengenalan wajah. Sistem tersebut akan menentukan apakah user yang bersangkutan memiliki akses untuk dapat membuka pintu atau tidak. Setelah diproses dalam PC kemudian dikirim sinyal ke mikrokontroler melalui komunikasi serial USB TTL, jika data sesuai atau user dikenali, maka servo membuka pintu. Sebaliknya, ketika user tidak dikenali maka pintu akan tetap tertutup.


(32)

3.2 Perangkat Keras (hardware) 3.2.1 Komputer

Pada tugas akhir ini dibutuhkan seperangkat computer, dimana computer digunakan untuk pengolahan data. Pengolahan data dalam hal ini yaitu mulai dari pengambilan citra wajah dari webcam, penyimpanan citra wajah, sampai pada proses pengenalan citra wajah dengan algoritma eigenface, dan pengiriman sinyal pada mikrokontroler untuk membuka pintu.

3.2.2 Webcam

Karakteristik webcam yang digunakan sangat berpengaruh terhadap hasil yang diperoleh dalam proses perhitungan eigenvalue dari citra yang hendak dikenali. Salah satu syarat yang harus diperhatikan adalah resolusi image hasil capture wajah. Webcam yang digunakan adalah kamera jenis webcam laptop dengan resolusi 2 mega pixel. Kamera mampu menangkap citra warna dengan dimensi citra maksimum 1280 x 1024, frame rate 30fps. Kamera ini digunakan sebagai media penangkap citra yang selanjutnya diolah dengan PC.

Untuk aplikasi ini mode dengan resolusi 160 x 120 sudak cukup untuk menghasilkan citra wajah yang digunnakan sebagai input. Sebelum digunakan, driver untuk webcam harus diinstal karena intinya aplikasi ini akan melakuka koneksi ke driver webcam untuk memfungsikan sebagai media input. Jika driver sudah diinstalasi maka untuk selanjutnya hanya menghubungkan webcam ke port USB dan webcam siap digunakan sebagai media input system verifikasi.

3.2.3 Rangkaian Mikrokontroller Atmega 8535

Pada perancangan alat ini akan digunakan mikrokontroler ATmega 8535 yang berfungsi untuk menerima input dari PC dengan menggunakan microsoft visual basic yang telah diprogram dan di implementasikan pada pemrograman mikrokontroler AVR ATmega 8535.

Mikrokontroler ini memiliki 32 port I/O, yaitu port A, port B, port C dan port D. Pin 33 sampai 40 adalah port A yang merupakan port ADC, dimana port ini dapat menerima data analog. Pin 1 sampai 8 adalah port B. Pin 22 sampai 29 adalah port C. Sedangkan Pin 14 sampai 21 adalah port D. Pin 10 dihubungkan ke


(33)

sumber tegangan 5 Volt. Pin 11 dihubungkan ke ground. Rangkaian mikrokontroler ini menggunakan komponen kristal sebagai sumber clocknya. Nilai kristal ini akan mempengaruhi kecepatan mikrokontroler dalam mengeksekusi suatu perintah tertentu. Pada pin 9 dihubungkan dengan sebuah kapasitor dan sebuah resistor. Kedua komponen ini berfungsi agar program pada mikrokontroler dijalankan beberapa saat setelah power aktif. Lamanya waktu antara aktifnya power pada IC mikrokontroler dan aktifnyapower sebesar perkalian antara kapasitor dan resistor tersebut. Dalam perancangan alat ini, sistem minimum mikrokontroler ATmega 8535 terdiri dari :

1. Chip IC Mikrokontroler ATmega 8535 2. Kristal 4MHz

3. Kapasitor 4. Resistor

Pada IC inilah program diisikan program, sehingga rangkaian dapat berjalan sesuai dengan yang diinginkan. Rangkaian mikrokontroler ATMega8535 ditunjukkan pada gambar berikut :

Motor Servo

USB TTL


(34)

3.2.4 Rangkaian komunikasi data Serial USB to TTL

Kabel USB to TTL merupakan salah satu jenis kabel untuk menghubungkan mikrokontroler ke komputer. USB to TTL sebagai converter dalam komunikasi data antara mikrokontoler dengan komputer. Berikut rangkaian sistematik pada USB to TTL.

Gambar 3.3 Rangkaian USB to TTL

3.2.5 Servo MG996R

Motor servo terhubung pada PortB.0 pada rangkaian mikrokontroler. Motor servo mempunyai tiga masukan yaitu input, Vcc dan Ground. Jika mikrokontroller di berikan logika 1 ( high) pada salah satu inputan motor servo maka motor servo tidak berkerja sedangkan jika mikrokontroler diberikan logika 0 (low) maka servo berkerja sesuai fungsi yang dibutuhkan.


(35)

Spesifikasi motor servo :

• Dimensi: 40.7 x 19.7 x 42.9 mm approx.

• Kekeatan putaran: 9.4 kgf·cm (4.8 V ), 11 kgf· cm (6 V) • Kecepatan pengoperasian: 0.17 s/60º (4.8 V), 0.14 s/60º (6 V) • tegangan volt: 4.8 V a 7.2 V

Motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan menentukan posisi sudut putaran dari poros motor servo. Sebagai contoh, lebar pulsa dengan waktu 1,5 ms (mili detik) akan memutar poros motor servo ke posisi sudut 90⁰. Bila pulsa lebih pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰ atau ke kiri (berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah posisi 180⁰ atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan gambar dibawah ini.


(36)

3.3 Flowchart proses pelatihan

Start

Melakukan proses Perhitungan Eigenface Mengaktifkan webcam untuk menampilkan

gambar yang berada di depan webcam tersebut

Menampilkan citra wajah yang berhasil diambil dari webcam

Simpan citra wajah ?

END

YA

TIDAK

Menyimpan citra wajah, nilai eigen dan Nama.


(37)

3.4 Flowchart proses pengenalan

Start

Mengaktifkan webcam untuk menampilkan gambar yang berada di depan webcam tersebut

Menampilkan citra wajah yang berhasil diambil dari webcam

END

YA

Melakukan proses perhitungan Eigenface

Menghitung jarak Euclidean antara citra wajah tersebut dengan citra wajah yang terdapat di

dalam database

Jarak Euclidean terkecil ? TIDAK

Data Cocok

Pintu di buka


(38)

3.5 Perancangan software 3.5.1 Komponen Sistem

Sistem pengenalan wajah ini terdiri dari beberapa komponen yang dapat digambarkan dalam suatu model seperti gambar berikut:

Image capturing

User

interface Sub system

Pengenalan wajah

Database File wajah

Gambar 3.8 Hubungan antar subsistem Keterangan :

a. Komponen Image Capturing berfungsi untuk melakukan mekanisme pengambilan citra wajah dengan media webcam, baik saat proses penyimpanan file citra wajah maupun saat proses pengenalan wajah. b. Komponen Interface berfungsi untuk menghubungkan komunikasi antara

system dengan user, baik saat proses penyimpanan file citra wajah maupun saat proses pengenalan wajah.

c. Subsistem Pengenalan wajah merupakan pengenalan wajah dilakukan dengan mencocokan citra wajah yang dicapture pada saat verifikasi

Database Citra wajah

Webcam Normalisasi

image

Kalkulasi Eigen

Proses Matching

Jarak eucladian

terkecil Kalkulasi eigen

vector

Eigen value Eigen

Vector


(39)

Keterangan bagan :

a. Citra wajah di-capture menggunakan webcam. Hasil dari capturing ini hasil file gambar yang bertipe.jpg

b. Citra wajah ini kemudian dinormalisasi dengan beberapa tahap. Pertama, citra diturunkan kualitas warnanya menjadi grayscale. Ukuran dari citra wajah juga diseragamkan, menjadi berukuran 80x80 pixel.

c. Setelah didapatkan citra wajah yang ternormalisasi hitung nilai eigen dari citra wajah tersebut, misalnya dipeoleh nilai µ.

d. Dari koleksi citra wajah yang ada di database, masing-masing citra dikalkulasi nilai eigennya dan dikumpulkan dalam vector yang dinamakan eigenvector. Misalkan kita mendapatkan nilai (�1,�2,�3, …��).

e. Proses matching dilakukan dengan mencocokaan nlai x dengan nilai-nilai pada eigenvector dan mencari nilai yang paling mendekati.

f. Jika nilai yang paling mendekati sudah ditemukan, cari data user yang bersesuaian dengan nilai tadi.

Untuk proses perhitungan eigenface dari image pada langkah tiga, penjelasannya sebagai berikut:

1. Buat Himpunan image (S) dari total M training_image, dimana setiap image adalah p x q piksel.

Misal di dalam himpunan image terdapat tiga image ukuran 3 x 3 piksel maka:

Image 1 Image 2 Image 3

�01 44 32 0 0 0

� �

2 2 1 3 2 4 0 0 0

� �

1 4 2 2 3 0 0 0 0 �


(40)

2. Cari nilai tengah atau mean (Ψ)

Ψ= 1

3� � = 1 3��

0 4 3 1 4 2 0 0 0

�+�

2 2 1 3 2 4 0 0 0

�+�

1 4 2 2 3 0 0 0 0

��

3

�=1

Ψ= 1 3�

1 3 2 2 3 2 0 0 0 �

3. Cari selisih (Ф) antara training image i) dengan nilai tengah (Ψ), apabila ditemukan nilai dibawah nol ganti nilainya dengan nol.

Φ1 =Γ1− Ψ= �

0 4 3 1 4 2 0 0 0

� − �12 33 22 0 0 0

�= �

0 1 1 0 1 0 0 0 0 � Φ2 = Γ2− Ψ= �

2 2 1 3 2 4 0 0 0

� − �12 33 22 0 0 0

� = �

1 0 0 1 0 1 0 0 0 � Φ3 = Γ3− Ψ= �

1 4 2 2 3 0 0 0 0

� − �12 33 22 0 0 0

� = �

0 1 0 0 0 0 0 0 0 � 4. Hitung nilai matriks kovarian (C)

� = 1

� � ���

� �=1

� =��� � = [Φ1,Φ2, … ,ΦM]

�=���, dimana �, = ΦΦ

�= ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛

�00 11 10 0 0 0

1 0 0 1 0 1 0 0 0

0 1 0 0 0 0 0 0 0 � ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢

⎡01 01 00 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0⎦

⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ⎞


(41)

�=�

4 2 1 2 3 1 1 1 1 �

5. Cari nilai eigenvalue (λ) dan eigenvector (v) ���= ���

���= ����

(� − ��) = 0 ���� (�� − �) = 0

maka eigenvalue (λ) dapat dihitung, det (�� − �) = 0

= � �

1 0 0 0 1 0 0 0 1

� − �42 23 11 1 1 1

�= �� −

4 2 1

2 � −3 1

1 1 � −1

akan dihasilkan nilai �= 1,���� = 4 �= �

�1

�2

�3

eigenvector (v) dihasilkan dengan mensubtitusikan nilai eigenvalue (λ) kedalam persamaan (�� − �)�= 0

untuk �= 4, maka �

4−2 2 1

2 4−3 1

1 1 4−1

� ���12

�3 �= � 0 0 0 �

�22 21 11 1 1 3

� ���12

�3

� =�

2�1 2�2 1�3

2�1 1�2 1�3

1�1 1�2 3�3 �= �

0 0 0 �

dihasilkan eigenvector � 1 −1

0

� ��� �−03 1

untuk �= 1, maka �

1−2 2 1

2 1−3 1

1 1 1−1

� ���12

�3 �=� 0 0 0 �


(42)

�−21 −22 11

1 1 0

� ���12

�3

�= �

−�1 2�2 �3

2�1 −2�2 �3

�1 �2 0

�=� 0 0 0

Dihasilkan eigenvector � 1 1 0 �

sehingga eigenvector yang dihasilkan dari matriks L adalah

1 −3 1

−1 0 1

0 1 0

6. Cari nilai eigenface (µ)

�� = � ���� �

�=1

�1 =�.Φ1 =�

1 −3 1

−1 0 1

0 1 0

� �00 11 10 0 0 0

�= �

0 −2 1 0 −1 −1

0 1 0

� �2 = �.Φ2 =�

1 −3 1

−1 0 1

0 1 0

� �11 00 01 0 0 0

�= �−

2 0 −3 −1 0 0

1 0 1

� �3 = �.Φ3 =�

1 −3 1

−1 0 1

0 1 0

� �00 10 00 0 0 0

�= �

0 1 0

0 −1 0

0 0 0

Untuk proses matching image pada langkah lima, penjelasannya sebagai berikut:

1. Cari nilai eigenface image baru ���) yang akan dikenali

a. Cari selisih (Ф) antara test face ���) dengan nilai tengah (Ψ), apabila ditemukan nilai dibawah nol ganti nilainya dengan nol.

Misal test (���) terdiri dari matriks 3x3 :

�20 61 53

1 0 0


(43)

��� = �

2 6 5 0 1 3 1 0 0

� − �12 33 22 0 0 0

�= �

1 3 3 0 0 1 1 0 0 �

b. Cari nilai eigenface dari test face ���)

(����) =�. (���)

(����) =�

1 −3 1

−1 0 1

0 1 0

� �10 30 31 1 0 0

�= �

2 3 0

2 −3 −3

0 0 1

2. Gunakan Euclidean Distance untuk mencari selisih terkecil antara eigenface training image ) dalam database dengan eigenface test face ���).

�� = ||Ω − Ω���||

�1 =�|Ω1− Ω���|�= ��

0 −2 1 0 −1 −1

0 1 0

� − �22 −33 −03

0 0 1

��= 16 �2 = �|Ω2− Ω���|�= ��

−2 0 −3 −1 0 0

1 0 1

� − �22 −33 −03

0 0 1

��= 20 �3 = �|Ω3− Ω���|�= ��

0 1 0

0 −1 0

0 0 0

� − �22 −33 −03

0 0 1

��= 12

karena jarak (distance) eigenface image 3 dengan eigenface test face yang paling kecil, maka hasil identifikasi menyimpulkan bahwa test face lebih mirip dengan image 3 daripada image 1 atau image 2.

3.6 Perancangan antar muka

Tujuan akhir dari perancangan sistem adalah pembuatan program yang dapat dijalankan dan sesuai dengan yang dibutuhkan oleh sistem. Dalam perancangan program, perancangan antarmuka merupakan hal yang sangat penting agar memudahkan perancang menyelesaikan programnya.


(44)

3.6.1 Rancangan tampilan Log in

Dalam Sistem Pengenalan Wajah yang dirancang, sebelum user diarahkan ke form utama, terlebih dahulu sistem akan melakukan loading semua eigenface wajah yang ada dalam database wajah, manfaat dari proses loading image wajah dari database adalah untuk mengurangi beban sistem saat proses matching image berlangsung. Rancangan tampilan untuk form dimana sistem melakukan loading eigenface wajah dapat dilihat pada Gambar 3.10

Image

User name Password

OK Cancel

Welcome to Security Face

Recognition

Gambar 3.10 Loading image

3.6.2 Rancangan Form Pelatihan citra wajah

Rancangan yang diperlihatkan selanjutnya adalah rancangan halaman untuk proses pelatihan citra wajah. Rancangan halaman proses pelatihan wajah menampilkan objek yang ditangkap oleh webcam dan selanjutnya sistem akan mendeteksi dan mengambil bagian wajah dan selanjutnya mencari nilai-nilai yang akan dibutuhkan dalam proses pengenalan. Setiap hasil pelatihan citra wajah tersebut akan disimpan ke dalam database beserta identitas diri dari citra wajah yang bersangkutan. Rancangan halaman proses pelatihan wajah dapat dilihat pada Gambar 3.11.


(45)

Nama

Tambah Hapus Nama

Save

Capture Kamera

Daftar Pengguna Data Pengguna

Foto Pengguna

Pengguna

Gambar 3.11 Pelatihan citra wajah

3.6.3 Rancangan tampilan proses pengenalan wajah

Rancangan halaman selanjutnya adalah rancangan halaman yang digunakan untuk proses pengenalan wajah. Rancangan halaman proses pengenalan wajah menampilkan objek yang ditangkap oleh webcam dan kemudian sistem mengambil bagian wajah dari objek tersebut dan mencari nilai-nilai yang diperlukan untuk mengenali wajah tersebut. Rancangan halaman proses pengenalan wajah dapat dilihat pada Gambar 3.12

Kamera Data Pegguna

Foto Pengguna

Capture Batal

Deteksi Wajah X


(46)

3.7 Rangkaian lengkap

Motor servo MG966R

+5v

in

USB TTL

1

2

.3 .2 .1 USB

PC Monitor

webcam RecognizingFace


(47)

BAB 4

HASIL DAN PEMBAHASAN 4.1 Pengujian Alat

Rangkaian pengujian alat secara keseluruhan dimuat pada lampiran 3.

4.1.1 Pengujian mikrokontroler

Pengujian pada rangkaian mikrokontroler bertujuan untuk memastikn mikrokontroler berfungsi dengan baik. Pegujian dilakukan pada port PA0 (ADC0) yang digunakan sebagai masukan tegangan dari rangkaian penguat sinyal, PD0 (RXD) dan PD1 (TXD) masing-masing sebagai jalur komunikasi data serial dengan PC melalui USB to TTL dengan percobaan menghidupkan LED pada port yang digunakan . Pengujian dilakukan dengan menginput Listing program berikut ke mikrokontroler ATMega 8535.

#include <mega8535 h> // masukkan mikro ATMega yang digunakan #include<delay h> // masukkan waktu tunda

Void main{void} {

PORTA-0x00; DDRA-0x00; PORTD-0x00; DDRD-0x00; While (I) {

PORTA-1x01; PORTD-0x03;

delay_ms(500); // delay 500msec }


(48)

4.1.2 Pengujian Motor servo

Pengujian Motor servo dengan memberikan tegangan 5v pada motor servo, dimana kutub (+) dihubungkan ke VCC dan kutub (-) pada gound. Dengan percobaan ini kita sudah dapat mengetahui apakah servo dapat digunakan atau tidak.

Gambar 4.1 Kaki servo yang dihubungkan ke tegangan 5v

Dapat juga dengan menggunakan mikrokontroler, yaitu dengan mengontrol servo bergerak dari tengah (0derajat) kekanan/CW (90derajat) ke tengah (0 derajat) ke kii (90derajat) secara berulang-ulang. Pengujian dilakukan servo terhubung dengan POTRC.7 dengan menginput Listing program berikut:

#include<mega8535 h> #include <servo>

#difine TeganganServo PORTC.7

unsigned int i = 0;

unsigned char dataServo=0;

interrupt [TIMO_OVF] void timer0_ovf_isr(void) {

If (i>312) i=0; else i++;

if (i<dataServo) TeganganServo=1; Else

TeganganServo=0; }

void main(void) {


(49)

PORTC=0x00; DDRC=0x80;

TCCR0=0x01; TCNT0=0x00; OCR0=0x00;

MCUCR=0x00; MCUCSR=0x00;

TIMSK=0x00; #asm(“sei”) While (1) {

dataServo=23; delay_ms(200); dataServo=33; delay_ms(200); dataServo=23; delay_ms(200); dataServo=14; delay_ms(200); }

}

4.1.3 Pengujian webcam

Pada penelitian ini digunakan webcam dari kamera laptop. Dimana pada saat pengoperasian program terdapat pilihan untuk menentukan webcam mana yang akan digunakan. Apabila webcam sudah ada dalam pilihan seperti ditunjukkan pada gambar 4.2, maka webcam tersebut sudah aktif dan dapat digunakan.


(50)

Gambar 4.2 Tampilan pemilihan webcam

4.2 Implementasi Software

Setelah perangkat lunak Sistem Pengenalan Wajah Menggunakan webcam Untuk Pintu Otomatis Dengan Metode Eigenface selesai dibangun, tahap selanjutnya adalah tahap uji coba tampilan. Tahap uji coba tampilan adalah tahap pengujian pemasukan data wajah citra, data User serta menjalankan program pengenalan wajah untuk mendapatkan hasil pintu otomatis.

4.2.1 Tampilan Log in

Sebelum user diarahkan ke halaman utama, terlebih dahulu sistem akan melakukan loading semua eigenface wajah yang ada dalam database wajah. Pada form ini, sistem akan meminta input username dan password dari user. Setelah pemasukan nama admin dan password, sistem akan melakukan pembacaan database wajah dan database User . Tampilan Form Log in Wajah dapat dilihat pada Gambar 4.3.


(51)

Gambar 4.3 Tampilan Log in

4.2.2 Tampilan Halaman Utama

Diperlihatkan tampilan halaman awal ketika aplikasi pertama kali dijalankan. Pada halaman tersebut terdapat beberapa menu pilihan yang berkaitan dengan sistem pengenalan wajah. Tampilan setiap menu pada halaman utama diperlihatkan pada Gambar 4.4. Terdapat tiga menu yang terdapat pada halaman utama. Menu-menu tersebut adalah menu file, master data, dan operasi. Pada menu file adalah menu untuk exit , sedangkan menu yang berhubungan dengan pengambilan database, penambahan user adalah master data, dan untuk pengenalan wajah adalah menu operasi.


(52)

4.2.3 Tampilan Form Input Setting Kemiripan

Pada gambar 4.5 diperlihatkan tampilan untuk menentukan persen kemiripan citra wajah di database dengan citra wajah yang baru di ambil oleh webcam.

Gambar 4.5 Tampilan Setting Kemiripan

4.2.4 Tampilan Proses Pegambilan Database Citra Wajah

Pada Gambar 4.6 diperlihatkan tampilan awal dari proses pengambilan database. Pada tampilan tersebut diperlihatkan hasil objek yang berhasil diambil oleh webcam, tampilan user mengisi nama dari citra wajah yang bersangkutan. Nama yang diisikan tersebut bertujuan untuk menunjukkan identitas diri dari citra wajah yang bersangkutan. Tombol “Tambah” dan “Update/save” digunakan untuk penambahan anggota didatabase, sedangkan tombol “Capture” digunakan untuk mengambil citra wajah melalui webcam, dan memulai proses perhitungan PCA untuk mendapatkan nilai-nilai yang berguna dalam proses pengenalan wajah. Nilai yang didapatkan tersebut selanjutnya akan disimpan ke dalam database bersama dengan nama dari citra wajah yang bersangkutan beserta citra wajah tersebut.


(53)

Gambar 4.6 Tampilan Proses pengambilan database

Pada Gambar 4.7 ditampilkan konfirmasi sebelum proses pelatihan citra wajah dimulai. Jika user memilih tombol “yes” maka sistem akan memulai proses perhitungan tersebut. Demikian sebaliknya, jika user memilih “No” maka sistem akan menutup halaman konfirmasi dan tidak melakukan proses perhitungan.

Gambar 4.7 Tampilan Konfirmasi Awal Proses pengisian data

Pada Gambar 4.8 diperlihatkan pesan bahwa proses perhitungan telah berhasil mendapatkan nilai-nilai yang dibutuhkan dalam proses pengenalan dan telah berhasil menyimpan citra wajah, nilai dan nama tersebut ke dalam database.


(54)

Gambar 4.8 Tampilan Konfirmasi Akhir Proses database

4.2.5 Tampilan Proses Pengenalan Citra Wajah

Pada Gambar 4.10 diperlihatkan tampilan hasil akhir dari proses pengenalan citra wajah. Untuk memulai proses pengenalan wajah, user mengeksekusi tombol “Capture”. Sistem selanjutnya memulai proses pengenalan wajah dengan melakukan perhitungan PCA untuk mendapatkan nilai seperti halnya pada proses pengambilan database citra wajah sebelumnya. Proses selanjutnya dari pengenalan wajah adalah mencari jarak Euclidean antara citra wajah dengan setiap citra wajah yang terdapat di dalam database. Proses terakhir dari proses pengenalan wajah adalah mengambil jarak Euclidean terkecil dan menampilkan citra wajah tersebut beserta identitas diri dari citra wajah yang bersangkutan pada kolom yang tersedia.


(55)

Gambar 4.9 Tampilan Hasil Pengenalan Wajah

Jika hasil capture cocok dengan data wajah pada database, maka proses pengenalan citra wajah berhasil dan pintu otomatis akan terbuka dan jika sebaliknya, maka akan dinyatakan gagal pintu akan tetap tertutup.

4.3 Analisa Pengujian

Dalam pengujian Sistem Pengenalan Wajah Menggunakan Webcam Untuk Pintu Otomatis yang dibuat terdiri dari lima faktor, yaitu:

1. Jarak user dengan kamera. 2. Pencahayaan.

3. Distorsi pose wajah.

4. Perubahan pose wajah ekspresif. 5. Perubahan latar (background).

Lima faktor yang akan diuji dipilih berdasarkan pertimbangan bahwa kualitas pengenalan wajah pada saat user melakukan log in kedalam sistem sangat dipengaruhi oleh ke lima faktor di atas.


(56)

1. Pengujian dilakukan setelah sebelumnya sistem diuji pada kondisi ternormalisasi.

2. Pengujian dilakukan dengan database yang terdiri dari tujuh image wajah yang telah dinormalisasi sebelum dilakukan pengujian.

3. Masing-masing kondisi image diuji sebanyak duapuluh kali. 4. Adapun kondisi image yang akan diuji adalah:

a. Kondisi yang sudah di normalisasi. b. Jarak user dengan kamera ≤ 20 cm. c. Jarak user dengan kamera ≥ 40 cm. d. Distorsi pose mengarah ke kanan. e. Distorsi pose mengarah ke kiri. f. Pose wajah ekspresif.

g. Pencahayaan redup. h. Pencahayaan terang.

i. Perubahan latar (background).

Hasil pengujian dapat dilihat pada Tabel 4.1. Tabel 4.1 Hasil Pengujian sistem

Kondisi Image Jumlah Pengujian Hasil Pengenalan

A sudah di normalisasi 20 20

B Jarak ≤ 20cm 20 16

C Jarak ≥40cm 20 10

D Distorsi pose mengarah ke kanan

20 15

E Distorsi pose mengarah ke kiri 20 16

F Pose wajah ekspresif 20 14

G Pencahayaan redup 20 12

H Pencahayaan terang 20 16


(57)

Grafik 4.10 Grafik Hasil Pengujian Sistem

Penjelasan dari tabel dan grafik diatas sebagai berikut:

1. Jarak yang tidak konstan antara user dengan kamera dapat mengurangi kualitas pengenalan wajah. Hasil pengujian untuk jarak ≤ 20 cm diperoleh enambelas dari duapuluh kali pengujian image wajah dapat dikenal, sedangkan untuk jarak ≥ 40 cm diperoleh sepuluh dari duapuluh pengujian image wajah dapat dikenal.

2. Pencahayaan yang terlalu tinggi atau terlalu rendah dapat mengurangi kualitas pengenalan wajah. Hasil pengujian untuk pencahayaan redup diperoleh duabelas dari duapuluh kali pengujian image wajah dapat dikenal, sedangkan untuk pencahayaan terang diperoleh enambelas dari duapuluh kali pengujian image wajah dapat dikenal.

3. Distorsi pose wajah (mengarah ke kiri atau ke kanan) dapat mengurangi kualitas pengenalan wajah. Hasil pengujian untuk distorsi pose wajah mengarah ke kanan diperoleh limabelas dari duapuluh kali pengujian image wajah dapat dikenal, sedangkan untuk distorsi pose wajah

0 5 10 15 20 25


(58)

mengarah ke kiri diperoleh enambelas dari duapuluh kali pengujian image wajah dapat dikenal.

4. Perubahan pose wajah dari diam menjadi ekspresif tidak terlalu mempengaruhi proses pengenalan wajah. Hasil pengujian untuk perubahan pose wajah dari diam menjadi ekspresif diperoleh empatbelas dari duapuluh kali pengujian image wajah dapat dikenal.

5. Perubahan latar (background) dapat mengurangi kualitas pengenalan wajah. Hasil pengujian untuk perubahan latar (background) diperoleh delapan dari duapuluh kali pengujian image wajah dapat dikenal.


(59)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan pengujian dan analisa yang dilakukan, dapat disimpulkan bahwa : 1. Dengan menggunakan metode eigenface pada proses pengenalan wajah dapat berjalan dengan baik. Dimana pengenalan wajah diambil dari nilai jarak euclidean terkecil. Nilai jarak euclidean yang semakin kecil

menandakan bahwa citra wajah yang hendak dikenali mirip dengan citra wajah yang terdapat di dalam database.

2. Dari percobaan yang dilakukan sebanyak 20 kali pengujian tiap masing-masing kondisi image yang berbeda, maka pada kondisi jarak ≤20cm dan pencahayaan yang cukup, wajah dapat dikenali dengan cukup baik.

5.2 Saran

1. Sebaiknya penelitian ini dapat dikembangkan dengan menambahkan metode lain yang mendukung metode eigenface dalam pengenalan wajah seperti metode Quickprop pada jaringan syaraf tiruan.

2. Sebaiknya penelitian ini dapat dikembangkan dengan menambahkan kata sandi cadangan menggunakan suara user sehingga saling mendukung dalam hal Face Recognition dan Speech Recognition.


(60)

DAFTAR PUSTAKA

Anton,Howard.1981.Aljabar Linier Elementer.Edisi ketiga. Jakarta: Erlangga. Basuki, Achmad. Dkk.2005. Pengolahan Citra Digital menggunakan Visual

Basic. Yogyakarta: Graha Ilmu.

Rahman, Mohammad Aditya.2010. Sistem Pengenalan Wajah Menggunakan Webcam Untuk Absensi Dengan Metode Template Matching. Politeknik Elektronika Negri. Surabaya.

Sihombing, Poltak.2011. Pemograman Visual Basic 6.0. USU Pers. Medan.

Sigit, Riyanto.2005. Step by Step Pengolahan Citra Digital. Yogyakarta : Andi Sitorus, Syahriol. 2006. Pengolahan Citra Digital. Ilmu komputer.USU. Medan. Sutanto. 1994. Penginderaan Jauh Jilid 1. Yogyakarta: Gadjah Mada University

Press.

Sutoyo.2009.Teori Pengolahan Citra Digital.Semarang : Penerbit Andi. Tarigan, Pernanti. 2011. Sistem Tertanam (Embedded System). Yogyakarta :

Penerbit Graha Ilmu.

Wardhana,Lingga.2006.Mikrokontroler AVR seri ATMega8535.Yogyakarta:Andi

Diakses : 29 Juni 2015

Diakses : 31 Juni 2015


(61)

LAMPIRAN 1

PROGRAM PADA MIKROKONTROLER ATMEGA 8535 /******************************************************* Chip type : ATmega8535

Program type : Application Clock frequency : 11,059200 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 128

*****************************************************/ #include <mega8535.h>

#include <stdio.h> //tambahkan library stdio.h #include <delay.h> // tambahkan library delay disini #define fosc 4000000

#define baud 19200

#define ubrr_val (fosc/(16*baud))-1 #define RXEN 4

#define TXEN 3 #define USBS 3 #define UCSZ0 1 #define USEL 7 #define RXC 7

void usart_init(unsigned int baudr) { //set baud rate

UBRRH=((unsigned char) (baudr>>8)) & (0x7f); UBRRL=(unsigned char) (baudr);

//--- UCSRA=0x00; //aktifkan tx

UCSRB=((1<<RXEN) | (1<<TXEN)); //set frame format: 8 bit, 2 stop bit

UCSRC=(1<<USBS) | (3<<UCSZ0) | (1<<USEL); }

unsigned char Data;

unsigned int i; void main(void)


(62)

{

PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x3C;

UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x0C; usart_init(ubrr_val); while (1)

{

if ((UCSRA & (1<<RXC))){ Data = UDR;

if (Data == 49) {for (i=0;i<10;i++){PORTB.0 = 1; delay_ms(2);PORTB.0 = 0;delay_ms(20); }

delay_ms(5000);

for (i=0;i<10;i++){PORTB.0 = 1; delay_ms(1);PORTB.0 = 0;delay_ms(20); }}

} }


(63)

LAMPIRAN 2

PROGRAM PADA VISUAL BASIC Class face recognizer

Public imageWidth As Integer Public imageHeight As Integer Public NoOfFaces As Integer

Dim Face(1000) As classImageProcessing Dim EigenFace(1000) As classImageProcessing Dim NameOfFace(1000) As String

Dim faceTemplate() As Single

Dim testFace As classImageProcessing Dim testEigenFace As classImageProcessing Public Identity As classImageProcessing

Public Sub init(image_Width As Integer, image_Height As Integer) imageWidth = image_Width

imageHeight = image_Height

ReDim faceTemplate(imageWidth, imageHeight) End Sub

Public Sub addFace(facePicture As PictureBox, faceName As String) Set Face(NoOfFaces) = New classImageProcessing

Set EigenFace(NoOfFaces) = New classImageProcessing Set testFace = New classImageProcessing

Set testEigenFace = New classImageProcessing Call Face(NoOfFaces).init(imageWidth, imageHeight) Call EigenFace(NoOfFaces).init(imageWidth, imageHeight) Call testFace.init(imageWidth, imageHeight)

Call testEigenFace.init(imageWidth, imageHeight)

Call Face(NoOfFaces).update(facePicture) NameOfFace(NoOfFaces) = faceName NoOfFaces = NoOfFaces + 1


(64)

Call updateFaceTemplate Call updateEigenFaces End Sub

Private Sub updateFaceTemplate() 'calculates an average face template Dim i As Integer

Dim x As Integer Dim y As Integer

For i = 0 To NoOfFaces - 1 For x = 0 To imageWidth - 1 For y = 0 To imageHeight - 1 If (i > 0) Then

faceTemplate(x, y) = faceTemplate(x, y) + Face(i).getPoint(x, y) Else

faceTemplate(x, y) = Face(i).getPoint(x, y) End If

Next Next Next

For x = 0 To imageWidth - 1 For y = 0 To imageHeight - 1

faceTemplate(x, y) = Int(faceTemplate(x, y) / NoOfFaces) Next

Next End Sub

Private Sub updateEigenFaces() 'updates all the eigenfaces Dim i As Integer

Dim x As Integer Dim y As Integer Dim df As Integer

For i = 0 To NoOfFaces - 1 For x = 0 To imageWidth - 1 For y = 0 To imageHeight - 1


(65)

If (df < 0) Then df = 0

End If

Call EigenFace(i).setPoint(x, y, CByte(df)) Next

Next Next End Sub

Public Function Identify(facePicture As PictureBox) As String 'identifies the given image

Dim i As Integer Dim x As Integer Dim y As Integer Dim df As Integer Dim Distance As Long Dim minDistance As Long Dim retval As String Dim a As Integer Dim b As Integer

retval = ""

Call testFace.update(facePicture)

'calculate the eigenface For x = 0 To imageWidth - 1 For y = 0 To imageHeight - 1

df = testFace.getPoint(x, y) - faceTemplate(x, y) If (df < 0) Then

df = 0 End If

Call testEigenFace.setPoint(x, y, CByte(df)) Next

Next

'compare it to other eigenfaces

minDistance = ((100 - MinimumEigen) * 5000#)


(66)

'Form1.Text1.Text = Form1.Text1.Text & "mindistance" & minDistance & vbCrLf

For i = 0 To NoOfFaces - 1 Distance = 0

For x = 0 To imageWidth - 1 For y = 0 To imageHeight - 1 a = EigenFace(i).getPoint(x, y) b = testEigenFace.getPoint(x, y) df = Abs(a - b)

Distance = Distance + df Next

Next

If (Distance < minDistance) Then minDistance = Distance

retval = NameOfFace(i) Set Identity = Face(i)

' Form1.Text1.Text = Form1.Text1.Text & Distance & " redval " & retval & " " & vbCrLf

End If Next

'Form1.Text1.Text = Form1.Text1.Text & vbCrLf Identify = retval

End Function

Class Image Processing Option Explicit

Public width As Integer Public height As Integer Dim image() As Byte

Dim edgeTraced() As Boolean Dim temp() As Boolean

Public TraceEdgesThresh As Integer Public minEdgeLength As Integer Dim traceDirection As Single Dim traceRadius As Integer Dim traceX As Single Dim traceY As Single


(67)

Dim angleHistogram(18) As Integer Public edgesWidth As Integer Public edgesHeight As Integer Dim Edges() As Byte

Public processType As Integer Public EdgeThreshold As Single Dim averageContrast As Double Const IMAGE_RAW = 0

Const IMAGE_RED = 1 Const IMAGE_GREEN = 2 Const IMAGE_BLUE = 3 Const IMAGE_EDGES = 4 Const IMAGE_MOVEMENT = 5

'masks used for edge detection Const NO_OF_EDGE_MASKS = 14 Dim EdgeMask(NO_OF_EDGE_MASKS) Const NO_OF_EDGE_TYPES = 5

Dim EdgeHistogram(NO_OF_EDGE_TYPES) As Integer Const EDGE_VECTOR_LENGTH = 200

Dim EdgeVector(5, EDGE_VECTOR_LENGTH) As Single Dim currEdgeVector As Integer

Dim maxEdgeVectorIntensity As Integer

Private Function traceSearch(Optional beginSearch As Boolean) As Boolean 'move the trace point in a curcular motion until a new feature is found

'returns TRUE when a new feature is located

Dim tx As Integer Dim ty As Integer

traceSearch = False


(68)

If (beginSearch) Then traceDirection = 0 traceRadius = 90 End If

traceX = traceX + Cos((traceDirection / 180) * 3.14) traceY = traceY + Sin((traceDirection / 180) * 3.14) traceDirection = traceDirection + traceRadius If (traceDirection > 360) Then

traceDirection = 0

traceRadius = traceRadius - 1 If (traceRadius < 0) Then traceRadius = 0

End If End If

If (traceX < 0) Then traceX = 0

End If

If (traceX >= width) Then traceX = width - 1 End If

If (traceY < 0) Then traceY = 0

End If

If (traceY >= height) Then traceY = height - 1 End If

tx = Int(traceX) ty = Int(traceY)

If ((image(tx, ty) > TraceEdgesThresh) And (Not edgeTraced(tx, ty))) Then traceSearch = True

End If End Function

Private Sub calcAngleHistogram()

'calculates a histogram from the angles of edge traces Dim i As Integer


(69)

Dim dy As Integer Dim length As Integer Dim angle As Single Dim intensity As Single

For i = 0 To 17

angleHistogram(i) = 0 Next

For i = 0 To currEdgeVector - 1

dx = EdgeVector(0, i) - EdgeVector(2, i) dy = Abs(EdgeVector(1, i) - EdgeVector(3, i)) length = Sqr((dx * dx) + (dy * dy))

If (length > 0) Then

angle = (Cos(dy / length) / 3.14) * 180 If (dx < 0) Then

angle = 180 - angle End If

angle = Int(angle / 10)

intensity = 1 'EdgeVector(4, i) / 255

angleHistogram(angle) = angleHistogram(angle) + (length * intensity) End If

Next End Sub

Private Sub initEdgeMasks() Dim mask

Dim i As Integer Dim mstr As String

'Lines -

EdgeMask(0) = Array(1, 1, 1, _ 0, 0, 0, _ 0, 0, 0, _ 1)

EdgeMask(1) = Array(0, 0, 0, _ 1, 1, 1, _ 0, 0, 0, _ 1)


(70)

0, 0, 0, _ 1, 1, 1, _ 1) 'Lines |

EdgeMask(3) = Array(1, 0, 0, _ 1, 0, 0, _ 1, 0, 0, _ 2)

EdgeMask(4) = Array(0, 1, 0, _ 0, 1, 0, _ 0, 1, 0, _ 2)

EdgeMask(5) = Array(0, 0, 1, _ 0, 0, 1, _ 0, 0, 1, _ 2) 'Diagonals

EdgeMask(6) = Array(0, 0, 1, _ 0, 1, 0, _ 1, 0, 0, _ 3)

EdgeMask(7) = Array(0, 1, 0, _ 1, 0, 0, _ 0, 0, 0, _ 3)

EdgeMask(8) = Array(0, 0, 0, _ 0, 0, 1, _ 0, 1, 0, _ 3)

EdgeMask(9) = Array(1, 0, 0, _ 0, 1, 0, _ 0, 0, 1, _ 4)

EdgeMask(10) = Array(0, 1, 0, _ 0, 0, 1, _ 0, 0, 0, _ 4)

EdgeMask(11) = Array(0, 0, 0, _ 1, 0, 0, _ 0, 1, 0, _ 4) 'Crosses


(71)

EdgeMask(12) = Array(1, 0, 1, _ 0, 1, 0, _ 1, 0, 1, _ 5)

EdgeMask(13) = Array(0, 1, 0, _ 1, 1, 1, _ 0, 1, 0, _ 5)

Dim mask Dim i As Integer Dim mstr As String

'Lines -

EdgeMask(0) = Array(1, 1, 1, _ 0, 0, 0, _ 0, 0, 0, _ 1)

EdgeMask(1) = Array(0, 0, 0, _ 1, 1, 1, _ 0, 0, 0, _ 1)

EdgeMask(2) = Array(0, 0, 0, _ 0, 0, 0, _ 1, 1, 1, _ 1) 'Lines double -

EdgeMask(3) = Array(1, 1, 1, _ 1, 1, 1, _ 0, 0, 0, _ 1)

EdgeMask(4) = Array(0, 0, 0, _ 1, 1, 1, _ 1, 1, 1, _ 1) 'Lines |

EdgeMask(5) = Array(1, 0, 0, _ 1, 0, 0, _ 1, 0, 0, _ 2)

EdgeMask(6) = Array(0, 1, 0, _ 0, 1, 0, _


(72)

0, 1, 0, _ 2)

EdgeMask(7) = Array(0, 0, 1, _ 0, 0, 1, _ 0, 0, 1, _ 2)

EdgeMask(8) = Array(1, 1, 0, _ 1, 1, 0, _ 1, 1, 0, _ 2)

EdgeMask(9) = Array(0, 1, 1, _ 0, 1, 1, _ 0, 1, 1, _ 2) 'Diagonals

EdgeMask(10) = Array(0, 0, 1, _ 0, 1, 0, _ 1, 0, 0, _ 3)

EdgeMask(11) = Array(0, 0, 1, _ 0, 1, 1, _ 1, 1, 0, _ 3)

EdgeMask(12) = Array(0, 1, 1, _ 1, 1, 0, _ 1, 0, 0, _ 3) EdgeMask(13) = Array(1, 0, 0, _ 0, 1, 0, _ 0, 0, 1, _ 4)

EdgeMask(14) = Array(1, 1, 0, _ 0, 1, 1, _ 0, 0, 1, _ 4)

EdgeMask(15) = Array(1, 0, 0, _ 1, 1, 0, _ 0, 1, 1, _ 4) 'Crosses

EdgeMask(16) = Array(1, 0, 1, _ 0, 1, 0, _


(73)

1, 0, 1, _ 5)

EdgeMask(17) = Array(0, 1, 0, _ 1, 1, 1, _ 0, 1, 0, _ 5) 'nothing

EdgeMask(18) = Array(0, 0, 0, _ 0, 0, 0, _ 0, 0, 0, _

0) 'last number indicates edge type EdgeMask(19) = Array(1, 1, 1, _

1, 1, 1, _ 1, 1, 1, _ 0) End Sub

Public Sub traceEdges() 'traces edges within the image Dim finished As Boolean Dim x As Integer

Dim y As Integer Dim traced As Boolean

finished = False traced = False x = 0

y = 0

While (Not finished) x = x + 1

If (x = width) Then y = y + 1

x = 0 End If

If (y < height) Then

If ((edgeTraced(x, y) = False) And (image(x, y) > TraceEdgesThresh)) Then traced = traceEdgesFromPoint(x, y, 0)

End If Else x = 0 y = 0


(74)

If (Not traced) Then finished = True End If

traced = False End If

Wend

Call sortEdgeVector Call calcAngleHistogram

End Sub

Public Sub traceEdges_old() 'traces edges within the image

Dim x As Integer Dim y As Integer

traceX = 0 traceY = 0

Call traceSearch(True) While (traceRadius > 0) If (traceSearch()) Then traceRadius = 90 x = Int(traceX) y = Int(traceY)

If (traceEdgesFromPoint(x, y, 0)) Then traceX = x

traceY = y End If End If Wend

'Call sortEdgeVector Call calcAngleHistogram

End Sub

Private Sub diffuseEdges() 'diffuses edges information


(75)

'this allows edge tracing to be more noise tollerant Dim x As Integer

Dim y As Integer Dim i As Integer Dim value As Integer

For i = 0 To 1

For x = 1 To width - 2 For y = 1 To height - 2

If (image(x, y) > TraceEdgesThresh) Then image(x, y) = 255

End If Next Next Next

End Sub

Public Function traceEdgesFromPoint(ByRef x As Integer, ByRef y As Integer, ByRef edgeLength As Integer) As Boolean

'traces along edges starting at the given point Dim i As Integer

Dim j As Integer Dim sx As Integer Dim sy As Integer Dim xx As Integer Dim yy As Integer

Dim pathFound As Boolean Dim initialEdgeLength As Integer Dim mindirection As Single Dim maxdirection As Single Dim initialX As Integer Dim initialY As Integer Dim max As Integer Dim value As Integer Dim intensity As Single Dim direction As Integer

Static averagedirection As Single Dim directionDifference As Integer Dim thresh As Integer


(76)

initialX = x initialY = y xx = initialX yy = initialY

initialEdgeLength = edgeLength intensity = 0

thresh = 0 ' TraceEdgesThresh / 2

If (initialEdgeLength = 0) Then For i = 0 To width - 1

For j = 0 To height - 1 temp(i, j) = False Next

Next End If

averagedirection = 0

traceEdgesFromPoint = False

While ((image(xx, yy) > thresh) And (temp(xx, yy) = False)) sx = xx

sy = yy

temp(xx, yy) = True

edgeLength = edgeLength + 1

If (edgeTraced(xx, yy) = False) And (edgeLength > minEdgeLength) Then traceEdgesFromPoint = True

End If

pathFound = False max = 0

If (sy > 0) Then

value = image(sx, sy - 1)

If ((value > thresh) And (temp(sx, sy - 1) = False)) Then

If (value > max) And ((averagedirection > 270) Or (averagedirection < 90)) Then

max = value xx = sx yy = sy - 1 direction = 0 End If

End If End If


(77)

If (sx < width - 1) Then

If (sy > 0) Then

value = image(sx + 1, sy - 1)

If ((value > thresh) And (temp(sx + 1, sy - 1) = False)) Then

If (value > max) And ((averagedirection > 315) And (averagedirection < 135)) Then

max = value xx = sx yy = sy - 1 direction = 45 End If

End If End If

value = image(sx + 1, sy)

If ((value > thresh) And (temp(sx + 1, sy) = False)) Then

If (value > max) And ((averagedirection > 0) And (averagedirection < 180)) Then

max = value xx = sx + 1 yy = sy direction = 90 End If

End If

If (sy < height - 1) Then value = image(sx + 1, sy + 1)

If ((value > thresh) And (temp(sx + 1, sy + 1) = False)) Then

If (value > max) And ((averagedirection > 45) And (averagedirection < 225)) Then

max = value xx = sx yy = sy + 1 direction = 135 End If

End If End If

End If


(1)

Dim i As Integer Dim radius As Integer

'canvas.Cls

canvas.FillStyle = 0 canvas.DrawWidth = 1

radius = (canvas.ScaleWidth / width) / 2 For i = 0 To currEdgeVector - 1

x1 = EdgeVector(0, i) y1 = EdgeVector(1, i) x2 = EdgeVector(2, i) y2 = EdgeVector(3, i)

'c = RGB((EdgeVector(4, i) / maxEdgeVectorIntensity) * 255, 0, 0) c = RGB(i, 0, 0)

canvas.FillColor = c

screenX(0) = (x1 / width) * canvas.ScaleWidth screenY(0) = (y1 / height) * canvas.ScaleHeight screenX(1) = (x2 / width) * canvas.ScaleWidth screenY(1) = (y2 / height) * canvas.ScaleHeight If (i > 0) Then

canvas.Line -(screenX(0), screenY(0)), c End If

canvas.Line (screenX(0), screenY(0))-(screenX(1), screenY(1)), c 'canvas.Circle (screenX(0), screenY(0)), radius, c

'canvas.Circle (screenX(1), screenY(1)), radius, c Next

End Sub

Public Sub showEdges(canvas As PictureBox) Dim x As Integer

Dim y As Integer

Dim screenX(2) As Single Dim screenY(2) As Single Dim edgeType As Byte Dim c As Long

Dim i As Integer


(2)

canvas.FillStyle = 0 c = RGB(0, 0, 0)

For x = 0 To edgesWidth - 1 For y = 0 To edgesHeight - 1

screenX(0) = (x / edgesWidth) * canvas.ScaleWidth screenY(0) = (y / edgesHeight) * canvas.ScaleHeight screenX(1) = ((x + 1) / edgesWidth) * canvas.ScaleWidth screenY(1) = ((y + 1) / edgesHeight) * canvas.ScaleHeight

edgeType = Edges(x, y) Select Case edgeType Case 1 'horizontal line

canvas.Line (screenX(0), screenY(0))-(screenX(1), screenY(0)), c Case 2 'vertical line

canvas.Line (screenX(0), screenY(0))-(screenX(0), screenY(1)), c Case 3 'diagonal /

canvas.Line (screenX(0), screenY(1))-(screenX(1), screenY(0)), c Case 4 'diagonal \

canvas.Line (screenX(0), screenY(0))-(screenX(1), screenY(1)), c Case 5 'cross

canvas.Line (screenX(0), screenY(0))-(screenX(1), screenY(0)), c canvas.Line (screenX(0), screenY(0))-(screenX(0), screenY(1)), c End Select

Next Next

End Sub

Public Sub showEdgeHistogram(chart As Object) 'displays edge histogram using MS chart control

Dim i As Integer Dim estr As String

chart.chartType = 7

chart.RowCount = NO_OF_EDGE_TYPES chart.ColumnCount = 1

estr = ""


(3)

chart.Row = i + 1

chart.Data = EdgeHistogram(i) estr = estr & EdgeHistogram(i) & ", " Next

chart.Refresh 'MsgBox estr

End Sub

Public Sub showAngleHistogram(chart As Object) 'displays angle histogram using MS chart control

Dim i As Integer Dim estr As String

chart.chartType = 7 chart.RowCount = 18 chart.ColumnCount = 1

estr = ""

For i = 0 To chart.RowCount - 1 chart.Row = i + 1

chart.Data = angleHistogram(i) estr = estr & angleHistogram(i) & ", " Next

chart.Refresh 'MsgBox estr


(4)

LAMPIRAN 3

GAMBAR SISTEM PERALATAN

Foto Alat :

Pintu Otomatis Motor

servo

Rangkaian Microkontoler ATMega 8535


(5)

Rangkaian Mikrokontroler ATMega 8535


(6)

Pintu Otomatis Mikrokontroler

ATMega8535

PC

Motor Servo