PENGENALAN WAJAH BERDASARKAN PENGOLAHAN CITRA DIGITAL DENGAN METODE GABOR WAVELET
SKRIPSI
LESTYA DILA RAHMA 051401001
PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA MEDAN 2009
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
PENGENALAN WAJAH BERDASARKAN PENGOLAHAN CITRA DIGITAL DENGAN METODE GABOR WAVELET SKRIPSI Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer
LESTYA DILA RAHMA 051401001
PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA MEDAN 2009
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
ii
PERSETUJUAN
Judul
Kategori Nama Nomor Induk Mahasiswa Program Studi Departemen Fakultas
: PENGENALAN WAJAH BERDASARKAN PENGOLAHAN CITRA DIGITLA DENGAN METODE GABOR WAVELET : SKRIPSI : LESTYA DILA RAHMA : 051401001 : SARJANA (S1) ILMU KOMPUTER : ILMU KOMPUTER : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA Diluluskan di Medan, Desember 2009
Komisi Pembimbing
:
Pembimbing 2
Pembimbing 1
Drs. James P. Marbun,M.Kom NIP. 131 639 804
Drs. Suyanto,M.Kom NIP. 131 572 440
Diketahui/Disetujui oleh Program Studi S1 Ilmu Komputer Ketua,
Prof. Dr. Muhammad Zarlis NIP. 195707011986011003
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
iii
PERNYATAAN
PENGENALAN WAJAH BERDASARKAN PENGOLAHAN CITRA DIGITAL DENGAN METODE GABOR WAVELET
SKRIPSI
Saya mengakui bahwa SKRIPSI ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Desember 2009
Lestya Dila Rahma 051401001
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
iv
PENGHARGAAN
Puji dan syukur penulis panjatkan kepada Allah SWT Yang Maha Pemurah dan Maha Penyayang, dengan limpah karunia-Nya skripsi ini berhasil diselesaikan dalam waktu yang ditetapkan. Ucapan terima kasih saya sampaikan kepada Bapak Drs. Suyanto, M.Kom dan Drs. James Piter Marbun, M.Kom, selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan dan penuh kepercayaan kepada penulis untuk menyempurnakan skripsi ini. Panduan ringkas, padat dan profesional telah diberikan kepada penulis sehingga tugas ini dapat terselesaikan dengan tepat waktu. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Ilmu Komputer Prof. Dr. Muhammad Zarlis dan Syahriol Sitorus, S.Si, MIT, Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen dan pegawai pada Departemen Ilmu Komputer FMIPA USU. Teristimewa kepada kedua orang tua, ayahanda H. Mad Kusni dan ibunda Hj. Asridawati Lubis dan keluarga besar penulis yang telah memberikan doa, dukungan, perhatian dan kasih sayang yang tulus serta pengorbanan yang tidak ternilai harganya. Kepada kekasih penulis Zulhamsyah Fachrurrazi Nasution dan sahabat-sahabat penulis, Maya, Fitra, Lia, Afnisah, Dwi, Titin, Indra, Adi,, Ikhsan, Rido, serta seluruh teman kuliah angkatan ’05 yang tidak dapat penulis sebutkan satu persatu yang selalu memberikan semangat dan dukungan. Semoga Allah SWT memberikan limpahan karunia kepada semua pihak yang telah memberikan bantuan, perhatian, serta kerja samanya kepada penulis dalam menyelesaikan tugas akhir ini. Akhirnya penulis berharap bahwa tugas akhir ini bermanfaat terutama kepada penulis maupun para pembaca serta semua pihak yang berhubungan dengannya. Penulis menyadari sepenuhnya bahwa kajian ini masih jauh dari sempurna. Oleh karena itu kritik dan saran yang membangun sangat diharapkan demi perbaikan.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
v
ABSTRAK
Pengenalan wajah manusia merupakan salah satu bidang penelitian yang penting, dan dewasa ini banyak aplikasi yang dapat menerapkannya, baik dibidang komersial maupun bidang penegakan hukum. Teknik pengenalan wajah pada saat ini telah mengalami kemajuan yang sangat berarti. Melalui pengembangan suatu teknik seperti Gabor Wavelet, komputer sekarang dapat menyerupai kemampuan otak manusia dalam berbagai tugas pengenalan wajah, terutama tugas-tugas yang membutuhkan pencarian pada database wajah yang besar. Tujuan tugas akhir ini adalah untuk membuat suatu perangkat lunak pengenalan wajah dengan menggunakan Gabor Wavelet untuk mereduksi dimensi gambar wajah sekaligus untuk mengetahui kemampuan dari teknik tersebut. Dalam tugas akhir ini, perangkat lunak yang dibuat menggunakan gambar diam sebagai inputnya. Untuk membangun aplikasi ini menggunakan Microsoft Visual Basic. Hasil pengujian sistem menunjukkan bahwa penggunaan Gabor Wavelet untuk pengenalan wajah dapat memberikan tingkat akurasi yang cukup tinggi. Hasil pengenalan rata-rata untuk gambar wajah mirip tetapi orang berbeda adalah 42,7 %, wajah sama tetapi mimik berbeda adalah 68,98 %, wajah sama tetapi atribut berbeda adalah 55,2 %, dan wajah sama tetapi pose berbeda adalah 42,1 %.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
vi
FACE RECOGNITION BASES DIGITAL IMAGE PROCESSING BY GABOR WAVELET'S METHOD.
ABSTRACT
Face recognition is one of the most important science research, and has been used by a lot of applications, both in commercial or in security systems. Face recognition techniques has been improved very fast. Through developments like Gabor Wavelet, computer can complete with human brains in face recognition task, especially to do a search of a large amount of database. The objective of this final project is to make a face recognition software using gabor wavelet to reduce the dimension of a face image, and to see the capabilities of the technique. In this final assignment, the software used image as the input. To developed this application using Microsoft Visual Basic. The test results for the same face but different people is 42,7 %, the same face but different shape is 68,98 % , the same face but different attribute is 55,2 %,, and the same face but pose is42,1 %.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
vii
DAFTAR ISI
Halaman HALAMAN PERSETUJUAN ..................................................................... PERNYATAAN ......................................................................................... PENGHARGAAN ....................................................................................... ABSTRAK ................................................................................................. ABSTRACT ................................................................................................ DAFTAR ISI ........................................................................................... DAFTAR TABEL ...................................................................................... DAFTAR GAMBAR .................................................................................. BAB 1 PENDAHULUAN .................................................................. 1.1 Latar Belakang ............................................................ 1.2 Rumusan Masalah ....................................................... 1.3 Batasan Masalah ......................................................... 1.4 Tujuan Penelitian ........................................................ 1.5 Manfaat Penelitian ...................................................... 1.6 Metode Penelitian ....................................................... 1.7 Sistematika Penulisan ................................................. BAB 2 LANDASAN TEORI ............................................................. 2.1 Computer Vision ......................................................... 2.2 Image Processing ........................................................ 2.3 Pencocokan Citra Digital ............................................ 2.4 Transformasi Domain Citra ......................................... 2.5 Sinyal dan Spektrum .................................................... 2.6 Transformasi Sinyal .................................................... 2.7 Transformasi Wavelet ................................................. 2.8 Metode Gabor Wavelet ................................................ 2.8.1 Nilai Jet ............................................................. 2.8.2 Membandingkan Nilai Jet .................................. BAB 3 ANALISIS DAN PERANCANGAN SISTEM ............. 3.1. Perancangan Sistem .................................................... 3.2. Pembuatan Gabor Kernel ............................................. 3.3. Proses Enroll ................................................................ 3.4. Proses Verify .............................................................. 3.4.1 Proses Grayscale ............................................... 3.4.2 Proses Histogram Equalization .......................... 3.4.3 Gabor Konvolusi ............................................... 3.4.4 Feature Extraction ............................................. 3.4.5 Proses Pengenalan ............................................. 3.5 Flowchart Sistem Pengenalan Wajah ........................... BAB 4 IMPLEMENTASI SISTEM .................................................... 4.1 Menu Utama ............................................................... 4.1.1 Tampilan Pengenalan Wajah ............................. 4.1.2 Tampilan Data Wajah ........................................ 4.1.3 Tampilan Data User ..........................................
ii iii iv v vi vii x xi 1 1 2 2 3 3 3 4 5 5 5 6 10 11 12 13 15 15 16 17 17 18 20 23 23 25 26 28 29 31 32 32 32 33 34
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
viii
4.1.4 Tampilan Help ................................................... 4.1.5 Tampilan About ................................................ 4.2. Teknik Pengujian Sistem ............................................. 4.2.1 Input Data Wajah ke Database ........................... 4.2.2 Pengujian Pengenalan Wajah ............................. BAB 5 KESIMPULAN DAN SARAN ............................................... 5.1. Kesimpulan ................................................................. 5.2. Saran .......................................................................... DAFTAR PUSTAKA ............. .................................................................... LAMPIRAN A : Hasil Pengenalan Wajah ............. ...................................... LAMPIRAN B : Listing Program ............. ...................................................
35 36 36 36 37 41 41 41 42 A-1 B-1
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
ix
DAFTAR TABEL
Halaman Gambar 3.1 Gambar 3.2
Pembangkit Kernel dengan Variasi Frekuensi ........................ Pembangkit Kernel dengan Sudut Orientasi Kernel................
19 19
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
x
DAFTAR GAMBAR
Gambar 2.1 Gambar 2.2 Gambar 2.3 Gambar 2.4 Gambar 2.5 Gambar 2.6 Gambar 2.7 Gambar 2.8 Gambar 3.1 Gambar 3.2 Gambar 3.3 Gambar 3.4 Gambar 3.5 Gambar 3.6 Gambar 3.7 Gambar 3.8 Gambar 3.9 Gambar 3.10 Gambar 3.11 Gambar 4.1 Gambar 4.2 Gambar 4.3 Gambar 4.4 Gambar 4.5 Gambar 4.6 Gambar 4.7 Gambar 4.8 Gambar 4.9 Gambar 4.10 Gambar 4.11 Gambar 4.12 Gambar 4.13 Gambar 4.14
Subcitra Acuan dan Subcitra Pencarian ................................. Hubungan Citra Foto, SCA dan CP ....................................... Teknik Penjendelaan dari Metode Transformasi Domain ...... Grafik Gelombang ................................................................ Frekuensi Hasil Transformasi Fourier .................................... Faktor Skala Wavelet ............................................................ Gabor Kernel ........................................................................ Hasil Konvolusi dengan Gabor Kernel .................................. Blok Diagram Sistem ............................................................ Diagram Gabor Respon ........................................................ Gabor Kernel ........................................................................ Bagan Proses Enroll ............................................................. Gabor Feature Extraction pada 12 Titik Sampling ................. Bagan Proses Verify ............................................................. Konversi Citra RGB ke Citra Grayscale ................................. Proses Mapping Nilai Gray Citra .......................................... Blok Diagram Database ........................................................ Blok Diagram Proses Pengenalan ......................................... Flowchart Sistem Pengenalan Wajah .................................... Tampilan Menu Utama ......................................................... Tampilan Pengenalan Wajah ................................................ Tampilan Data Wajah ........................................................... Tampilan Data User .............................................................. Tampilan Help ...................................................................... Tampilan About .................................................................... Pengujian Input Data Wajah ................................................. Pengujian Wajah ................................................................... Pengujian Hasil Pemanggilan File Wajah ............................. Pengujian Hasil Pengenalan Wajah ....................................... Hasil Pengenalan Wajah Mirip Tetapi Orang Berbeda .......... Hasil Pengenalan Wajah Sama Tetapi Mimik Berbeda .......... Hasil Pengenalan Wajah Sama Tetapi Atribut Berbeda .......... Hasil Pengenalan Wajah Sama Tetapi Pose Berbeda ..............
Halaman 9 10 11 12 12 14 15 16 17 18 20 22 22 23 23 25 28 29 31 32 33 34 35 35 36 37 37 38 38 39 39 40 40
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Perkembangan computer vision dan teknologi image processing saat ini terus berkembang dengan sangat pesat. Berbagai aplikasi computer vision dan image processing telah dikembangkan, seperti dalam sistem keamanan, dan dunia robotika. Computer Vision mempunyai tujuan utama untuk membuat keputusan yang berguna tentang objek fisik nyata dan pemandangan (scenes) berdasarkan image yang didapat dari sensor. Secara sederhana, computer vision ingin membangun sebuah mesin pandai yang dapat terlihat. Image processing merupakan salah satu jenis teknologi untuk menyelesaikan masalah mengenai pemrosesan gambar. Dalam image processing gambar yang ada diolah sedemikian rupa sehingga gambar tersebut lebih mudah untuk diproses. Pengenalan wajah manusia adalah salah satu bidang penelitian yang penting dengan banyak aplikasi yang dapat menerapkannya. Penelitian terhadap pengenalan wajah manusia sudah banyak dilakukan dengan kelebihan dan kekurangan tertentu. Hal ini disebabkan karena wajah manusia mempresentasikan sesuatu yang kompleks, sehingga untuk mengembangkan model komputasi yang ideal untuk pengenalan wajah manusia adalah sesuatu hal yang sangat sulit. Teknik pengenalan wajah dapat diaplikasikan ke dalam beberapa bidang seperti bidang, komersial dan bidang penegak hukum. Aplikasi-aplikasi ini dapat diklasifikasikan secara luas ke dalam dua kelompok, yaitu beberapa input aplikasi masih mengunakan gambar diam (seperti credit card, passport, dan SIM) sedangkan aplikasi yang lain menggunakan gambar dinamis real time.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
2
Pengenalan wajah manusia mendapat banyak perhatian beberapa tahun akhir ini, hal ini karena banyak aplikasi yang menerapkan, antara lain dalam pengamanan gedung, alat identifikasi, alat bantu dalam pencari pelaku kriminal dan lain-lain. Ada banyak teknik pengenalan wajah yang dapat dipakai dan salah satunya adalah Gabor Wavelet. Pada penggunaan Gabor Wavelet agar mendapat hasil yang maksimal digunakan otomatis alignment untuk menentukan feature-featurenya. Berdasarkan uraian di atas, maka penulis tertarik untuk memilih ”Pengenalan Wajah Berdasarkan Pengolahan Citra Digital dengan Metode Gabor Wavelet” sebagai judul skripsi ini.
1.2 Rumusan Masalah
Ide dasar dalam pembuatan tugas akhir ini adalah metode pengenalan pola berdasarkan cara-cara pengolahan citra (Image processing) sehingga dapat mengenali bagian wajah. Sebelum penulis melakukan penelitian ini, terlebih dahulu dirumuskan masalah yang dihadapi agar penulis melakukan pembahasan sesuai dengan latar belakang penulisan ini. Adapun yang menjadi permasalahan dalam penulisan skripsi ini adalah pengenalan wajah dengan jaringan saraf tiruan merupakan proses yang sangat sulit dilakukan yaitu kesulitan dalam melakukan pelatihan dimana data yang diberikan sebagai input cukup besar sehingga proses pelatihan akan membutuhkan memori yang sangat besar dan memakan waktu yang lama serta hasilnya belum tentu memuaskan, namun dengan menggunakan metode Gabor Wavelet, pengenalan pola wajah dilakukan berdasarkan cara-cara pengolahan citra (Image processing) sehingga dapat mengenali bagian wajah. Oleh karena itu, perumusan masalah dalam penulisan skripsi ini adalah “Bagaimana cara mengenali wajah dalam format gambar berdasarkan pengolahan citra digital dengan metode Gabor Wavelet?”
1.3 Batasan Masalah
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
3
Agar penyelesaian masalah tidak menyimpang dari tujuan, maka perlu dibuat batasan masalah, yaitu: 1. Bahasa pemrograman yang digunakan adalah Microsoft Visual Basic. 2. Database editor yang digunakan adalah Microsoft Access. 3. Citra wajah yang dikenali berformat BMP dan JPG. 4. Metode pengenalan yang digunakan adalah metode Gabor Wavelet.
1.4 Tujuan Penelitian
Tujuan yang akan dicapai dalarn pembuatan tugas akhir ini adalah untuk membuat perangkat lunak yang dapat mengenali citra wajah dengan menggunakan Gabor Wavelet.
1.5 Manfaat Penelitian
Manfaat yang dapat diperoleh dari penelitian ini, adalah: 1. Mengenali bagian wajah dengan pengenalan pola berdasarkan cara-cara pengolahan citra untuk mendapatkan hasil yang lebih akurat. 2. Mempercepat proses pengenalan wajah dengan menginput citra. 3. Hasil pengenalan wajah dapat diimplementasikan dalam sistem absensi pegawai dan sistem keamanan.
1.6 Metode Penelitian
Metodologi untuk menyelesaikan masalah dalam tugas akhir ini dilakukan dalam beberapa tahapan, yaitu sebagai berikut: 1. Riset perpustakaan untuk mencari dan mengumpulkan artikel-artikel yang berkaitan dengan topik pembahasan dari berbagai sumber. 2. Identifikasi masalah, yaitu tahap penentuan hal-hal penting sebagai dasar dari permasalahan yang dianalisis. Tahap ini merupakan tahap untuk mengkaji dan membatasi masalah yang akan diimplementasikan dalam sistem.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
4
3. Konseptualisasi, yaitu hasil identifikasi masalah dikonseptualisasikan dalam bentuk hubungan antar-pengetahuan maupun relasi antardata yang akan diterapkan dalam sistem. 4. Implementasi sistem yaitu, pemecahan masalah yang telah dikonseptualisasikan ke dalam modul-modul sesuai dengan garis besar masalah dengan menentukan input, proses dan output sistem, kemudian diubah ke dalam bahasa pemrograman yang mudah dimengerti komputer.
1.7 Sistematika Penulisan
Penulisan tugas akhir ini akan mengikuti sistematika sebagai berikut: BAB 1
: PENDAHULUAN Bab ini menjelaskan tentang latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian yang digunakan dalam penelitian, serta sistematika dalam penulisan tugas akhir ini.
BAB 2 : TINJAUAN PUSTAKA Bab ini menjelaskan mengenai teori tentang citra, pencocokan citra dalam fotogrametri dan transformasi wavelet dua dimensi yang berhubungan kegiatan penelitian. BAB 3
: PERANCANGAN SISTEM Bab ini menguraikan tentang analisis terhadap proses yang telah dilakukan dalam mencocokkan citra kiri dengan citra kanan serta hasil yang diperoleh dari proses tersebut.
BAB 4
: ALGORITMA DAN IMPLEMENTASI Berisi tentang implementasi aplikasi yang sudah jadi serta pengujian sistem.
BAB 5 : KESIMPULAN DAN SARAN Bab ini menjelaskan tentang kesimpulan dari penelitian ini serta saran yang direkomendasikan untuk penelitian selanjutnya.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
BAB 2
TINJAUAN PUSTAKA
2.1 Computer Vision
Computer vision mempunyai tujuan utama untuk membuat keputusan yang berguna tentang objek fisik nyata dan pemandangan (scenes) berdasarkan image yang didapat dari sensor. Computer vision ingin membangun sebuah mesin pandai yang dapat melihat. Tentunya hal ini bukanlah hal mustahil. Ada berbagai contoh dari aplikasi computer vision seperti mesin yang mengawasi atau memeriksa jutaan filaraen dari bola lampu atau ribuan mil serat pabrik setiap hari. ATM telah dibangun dan dilengkapi dengan retina scan. Mobil sudah dapat dikemudikan oleh komputer dengan menggunakan kamera sebagai input.
2.2 Image Processing
Pengertian sederhana dari image processing adalah manipulasi dan analisis suatu informasi gambar oleh komputer. Informasi gambar adalah gambar visual dalam dua dimensi. Segala operasi untuk memperbaiki, analisis, atau pengubahan suatu gambar disebut image processing. Konsep dasar dari sistem dari image processing diambil dari kemampuan indera penglihatan manusia yang selanjutnya dihubungkan dengan kemampuan otak manusia. Dalam sejarahnya, image processing telah diaplikasikan dalam berbagai bentuk, dengan tingkat kesuksesan yang cukup besar. Seperti berbagai cabang ilmu lainnya, image processing menyangkut pula berbagai gabungan cabangLestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
6
cabang ilmu. Seperti di antaranya optik, elektronik, matematika, fotografi, dan teknologi komputer. Beberapa faktor menyebabkan perkembangan sistern image processing menjadi berkembang lebih pesat saat ini. Salah satu yang utama adalah penurunan biaya akan peralatan komputer yang dibutuhkan. Kedua peralatan unit processing dan bulk strorage menjadi semakin murah dari tahun ke tahun. Faktor kedua adalah peningkatan tersedianya peralatan untuk proses digital dan tampilan gambar. Berbagai bidang telah banyak menggunakan aplikasi dari image processing baik di bidang komersial, industri, dan medis. Bahkan bidang militer telah menggunakan perkembangan dunia digital image processing ini. Pada umumnya tujuan dari image processing adalah mentransformasikan atau menganalisis suatu gambar sehingga informasi baru tentang gambar dibuat lebih jelas. Ada banyak cara yang dapat diaplikasikan dalam suatu operasi image processing, hampir sebagian besar dalam bentuk optikal. Gambar optikal dikonversikan menjadi sinyal elektrik dengan menggunakan kamera video atau peralatan lain sejenisnya. Konversi ini mengubah representasi gambar dari suatu cahaya optik menjadi sinyal elektrik kontinyu. Sinyal elektrik ini disebut sinyal analog. Lebih lanjut, gambar analog dapat didigitalkan dan berubah menjadi data digital. Operasi pada sistem image processing dapat diaplikasikan pada suatu gambar dengan bentuk optikal, analog, atau digital.
2.3 Pencocokan Citra Digital
Teknologi fotogrametri terus mengalami perkembangan dari sistem fotogrametri analog hingga sistem fotogrametri digital yang lebih praktis, murah, dan otomatis. Proses otomatisasi pada fotogrametri digital ditujukan untuk mengurangi proses pengambilan informasi dalam rangkaian kerja fotogrametri. Identifikasi titik sekawan pada fotogrametri digital dapat dilakukan dengan otomatis menggunakan metode pencocokan citra (image matching). Problem dalam otomatisasi sistem fotogrametri digital adalah sulit untuk mengidentifikasi titik sekawan secara otomatis pada citra homogen yang bertampalan. Pekerjaan mencocokan titik sekawan dalam fotogrametri analog membutuhkan seorang operator yang memiliki keahlian khusus untuk Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
7
mengenali karakteristik kesamaan citra kiri dan kanan pada pasangan foto stereo. Otomatisasi pencocokan citra fotogrametri digital diharapkan menjadi solusi terhadap masalah campur tangan dan kelelahan operator sehingga faktor ketelitian dan kecepatan dapat ditingkatkan. Pencocokkan citra adalah dasar proses otomatisasi pada rangkaian proses fotogrametri. Pencocokan citra dapat diaplikasikan untuk orientasi dengan menentukan tanda tepi secara otomatis antara foto yang memiliki tanda tepi (fiducial marks) dan bagian citra lain yang bertampalan sehingga menghasilkan posisi yang ideal dari tanda tepi tersebut. Pencocokan citra juga dapat digunakan dalam proses orientasi relatif untuk menentukan titik sekawan sebanyak minimal lima titik pada citra yang bertampalan dengan mencocokkan matriks pada citra kiri dengan titik sekawan pada citra kanan. Titik sekawan tersebut didefinisikan pada dua foto udara yang bertampalan sebagai titik indikator untuk mengetahui kelaikan model 3D hasil orientasi relatif. Pencocokan citra dalam orientasi absolut berperan dalam pengukuran titik kontrol utama dengan menghasilkan bagian citra lainnya (citra kanan) dari titik utama dibandingkan dengan bagian kecil dari foto udara. Pencocokan citra juga digunakan untuk menghasilkan citra dengan mengotomatisasi serangkaian titik objek pada citra dipilih dalam satu bentuk citra grid teratur untuk dipasangkan dengan serangkaian titik pada citra sebelahnya. Metode pencocokan citra yang banyak dipakai untuk keperluan proses fotogrametri adalah berbasis area (area-based) dan berbasis unsur (feature-based). Metode berbasis area menggunakan komposisi nilai derajat keabuan (gray level) citra sebagai sampel yang akan diuji dalam penelitian. Metode area based matching digunakan dalam penelitian ini karena merupakan metode yang paling mudah dilakukan dan memberikan hasil pencocokan yang relatif cepat (Ilham, 2007). Metode ini juga memiliki akurasi yang cukup tinggi untuk area yang memiliki tekstur baik dan unik, dan pada beberapa kasus tingkat akurasi dari kecocokan dapat dinyatakan kuantitasnya dalam unit metrik. Area based matching pada dasarnya membandingkan nilai derajat keabu-abuan (gray level) suatu bentuk kecil matriks citra dimana pusat matriksnya merupakan lokasi gray value dari titik yang akan dicocokkan. Proses pengidentifikasian titik sekawan dilakukan dengan cara memilih titik di citra kiri pada objek yang mudah dikenal. Titik yang dipilih tersebut dibandingkan Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
8
dengan titik citra di kanan pada objek yang sama di citra kiri. Pusat subcitra tersebut merupakan lokasi nilai keabu-abuan dari titik yang akan dicocokkan. Sampel titik diambil dari citra pada sistem koordinat lokal dalam bentuk posisi kolom-baris. Pada pencocokkan citra berbasis area, setiap titik yang akan dicocokkan adalah pusat dari sebuah jendela pixel yang kecil pada citra acuan, dan jendela ini dibandingkan dengan jendela yang lain pada citra pencarian dengan ukuran tertentu. Ukuran kecocokkan dilihat dengan kecilnya perbedaan nilai yang dihasilkan. Keunikan objek merupakan penentu keberhasilan pencocokan citra. Salah satu penentu keunikan objek adalah ukuran subcitra acuan (SCA). Semakin besar ukuran subcitra acuan, detail yang merupakan bagian dari objek semakin banyak. Ketika ukuran citra acuan diperbesar dapat dilihat adanya keunikan lain dari area yang dikategorikan mewakili jenis objek. Keunikan tersebut dapat berupa objek yang berbeda dan memiliki nilai kecerahan yang berbeda pula. Berdasarkan hal tersebut, rentang nilai kecerahan citra acuan akan melebar sehingga nampak semakin heterogen (Putra, 2008). Proses pencocokan citra diasumsikan berhasil jika diperoleh nilai korelasi ≥ 0.7. Dengan memperbesar ukuran subcitra acuan, akan diperoleh karakteristik objek yang makin unik sehingga nilai korelasi akan meningkat dan mendukung tercapainya keberhasilan pencocokan citra. Dengan adanya keunikan tersebut, pencarian area paling berkorelasi dapat lebih mudah dan terhindar dari kesalahan posisi pusat area yang paling berkorelasi. Keunikan yang dimaksud dapat objek tersebut memiliki sebagian area heterogen. Secara umum, makin besar ukuran citra acuan, makin banyak keunikan objek yang terlihat sehingga makin besar pula rentang nilai kecerahan citra acuannya. Teknik
mengevaluasi
pencocokan
citra
berbasis
area
adalah
dengan
menggunakan teknik korelasi maksimal. Nilai korelasi yang dihasilkan bertujuan untuk mengukur derajat kesamaan antara dua atau lebih citra foto yang bertampalan. Citra pertama adalah subcitra acuan pada citra kiri sedangkan subcitra kedua merupakan subcitra pencarian (SCP) yang dibatasi oleh citra pencarian (CP) di dalam citra foto kedua. Proses pencocokan citra berlangsung semi otomatis, posisi titik awal diambil secara manual untuk citra kiri dan citra kanan. Titik tengah SCA dan CP menjadi pusat dari area citra yang akan dicari. Nilai pergeseran maksimum SCA pada CP digunakan persamaan (1), nilai berguna dalam algoritma pencocokan citra tahap selanjutnya. Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
9
Dm,n = CPm,n-SCAm,n+1 dengan m = baris dan n = kolom.
Subcitra Pencarian
Gambar 2.1. Subcitra Acuan dan Subcitra Pencarian
Subcitra pencarian akan bergerak dalam citra pencarian, kemudian dihitung nilai korelasi SCA dan semua SCP pada CAP dan nilai korelasi antarkedua citra mempunyai rentang nilai 0 sampai +1 (0≤ ρ ≤ 1). Secara umum nilai pembatas dari nilai koefisien korelasi adalah lebih besar atau sama dengan 0.7 atau 70 % yang dinyatakan cocok atau derajat kesamaannya tinggi. Sampel citra berupa komposisi nilai keabuan array citra yang akan diuji derajat kecocokannya dihitung melalui suatu persamaan matematis untuk kemudian disimpan sebagai nilai korelasi. Metode korelasi dari pencocokan citra berkerja dengan memilih CA dari citra kiri berdasarkan karakteristik tertentu dan jarak objek/area dari titik utama citra untuk dicocokan, dan pencarian posisi yang sekawan akan dilakukan oleh jendela yang bergerak subcitra pencarian pada cita pencarian dari citra kanan.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
10
Subcitra Pencarian
Gambar 2.2 Hubungan Citra Foto, SCA, dan CP
2.4 Transformasi Domain Citra
Transformasi wavelet merupakan hasil pengembangan transformasi fourier yang merupakan metode tradisional untuk menentukan kandungan frekuensi dari sebuah sinyal. Transformasi fourier pada dasarnya membawa sinyal dari domain spasial (spatial-domain) ke domain frekuensi (frequency-domain). Transformasi fourier adalah alat mengubah sinyal menjadi fungsi sinus dan cosinus dengan beragam frekuensi. Transformasi fourier menggunakan basis sinus dan cosinus yang memiliki frekuensi berbeda. Hasil transformasi fourier adalah distribusi densitas spektral yang mencirikan amplitudo dan fase dari beragam frekuensi yang menyusun sinyal. Hal ini merupakan salah satu kegunaan transformasi fourier, yaitu untuk mengetahui kandungan frekuensi sinyal (Munir, 2004). Transformasi
fourier
digunakan
dalam
pengolahan
sinyal
untuk
merepresentasikan sinyal dalam domain frekuensi murni. Keterbatasan dari transformasi fourier konvensional adalah tidak adanya informasi waktu dari kemunculan suatu frekuensi. Informasi waktu tersembunyi dan tidak terakses dalam domain frekuensi murni, akibatnya transformasi fourier tidak cocok diterapkan pada sinyal yang frekuensinya bervariasi terhadap waktu. Permasalahan tersebut diatasi dengan menggunakan transformasi fourier jangka pendek (STFT, short-time fourier Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
11
transform). Hasil yang diperoleh adalah suatu deret analisis spektral yang berkorespondensi dengan suatu posisi dalam waktu, namun metode ini memiliki kelemahan sebagai akibat dari penggunaan fungsi jendela dengan lebar yang sama untuk tiap komponen spektral. STFT memberikan resolusi waktu dan frekuensi yang buruk pada komponen frekuensi tinggi (durasi rendah). Komponen berdurasi pendek merupakan hasil rata-rata sesuai lebar jendela. Selain itu, komponen yang durasinya lebih besar dari lebar jendela tidak dianalisis (Misiti, et al, 2004). Transformasi wavelet merupakan pengembangan dari STFT. Pada STFT pengamatan antar-komponen spektral dilakukan dengan mengubah jumlah osilasi di dalam fungsi jendela. Sedangkan pada transformasi wavelet pengamatan komponen spektral dilakukan dengan mengubah lebar jendela dengan tetap mempertahankan jumlah osilasi di dalamnya. Hal inilah yang menyebabkan istilah frekuensi tidak lagi dipakai dalam analisis wavelet, namun terdapat istilah “skala” yang berkorespondensi dengan
frekuensi.
Keunggulan
transformasi
wavelet,
sifat
natural
sinyal
dipertahankan. Pada komponen berdurasi pendek, fungsi jendela yang digunakan memiliki lebar yang sempit. Sedangkan komponen yang berdurasi lebih panjang, fungsi jendela diperlebar.
Gambar 2.3 Teknik Penjendelaan Frekuensi dari Metode Transformasi Domain
2.5 Sinyal dan Spektrum
Sinyal adalah deskripsi bagaimana satu parameter mengubah parameter lainnya. Parameter tersebut merupakan sekumpulan informasi yang ditimbulkan oleh suatu fenomena dan dapat diperlakukan sebagai data. Sinyal dipresentasikan dalam bentuk grafik gelombang yang menggambarkan suatu siklus pergerakan. Siklus sinyal terdapat komponen yang membentuk gelombang, yaitu amplitudo, sudut fase, periode, Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
12
waktu, dan frekuensi. Amplitudo merupakan besar perpindahan maksimum dari titik kesetimbangan dan bernilai selalu positif. Sudut fase memberitahu pada titik apa dalam siklus, gerak berada pada t=0. Sedangkan frekuensi adalah banyaknya siklus pada satu satuan waktu.
Gambar 2.4. Grafik Gelombang
Periode yaitu komponen gelombang yang merepresentasikan waktu dalam satuan detik pada suatu siklus. Periode merupakan kebalikan dari frekuensi yang merupakan jumlah siklus pada suatu waktu. Komponen frekuensi yang terkandung pada suatu sinyal dapat dibagi menjadi dua, yaitu komponen frekuensi tinggi dan komponen frekuensi rendah. Frekuensi tinggi memiliki periode yang lebih pendek didandingkan dengan frekuensi rendah.
Gambar 2.5. Frekuensi Hasil Transformasi Fourier
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
13
2.6 Transformasi Sinyal
Transfomasi sinyal adalah dengan menghitung konvolusi sebuah sinyal dengan sebuah jendela modulasi pada setiap waktu dengan setiap skala yang diinginkan,dimana jendela modulasi, yang mempunyai skala fleksibel, disebut induk wavelet atau fungsi dasar wavelet. Dalam transformasi sinyal digunakan istilah translasi dan skala. Translasi adalah lokasi jendela modulasi saat digeser sepanjang sinyal, berhubungan dengan informasi waktu. Skala behubungan dengan frekuensi, skala tinggi (frekuensi rendah) berhubungan dengan informasi global dari sebuah sinyal, sedangkan skala rendah (frekuensi tinggi) berhubungan dengan informasi detail. Transformasi sinyal secara matematika dapat didefinisikan sebagai berikut:
γ(s,τ) adalah fungsi sinyal setelah transformasi, dengan variabel s (skala) dan τ (translasi) sebagai dimensi baru. f(t) sinyal asli sebelum transformasi. Fungsi dasar di sebut sebagai wavelet, dengan * menunjukkan konjugasi kompleks. Dan inversi dari transformasi sinyal secara matematika dapat didefinisikan sebagai berikut:
Fungsi dasar wavelet ψs,τ(t) dapat didesain sesuai kebutuhan untuk mendapatkan hasil transformasi yang terbaik. Fungsi dasar wavelet secara matematika dapat didefinisikan sebagi berikut:
faktor
digunakan untuk normalisasi energi pada skala yang berubah-ubah.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
14
2.7 Transformasi Wavelet
Wavelet adalah fungsi matematika yang menguraikan data atau fungsi menjadi komponen-komponen frekuensi yang berbeda, wavelet memiliki keunggulan dari fourier dalam menganalisis situasi-situasi fisis dimana sebuah sinyal memiliki diskontinuitas dan bentuk yang tajam. Transformasi wavelet merujuk pada aproksimasi sinyal menggunakan suatu gelombang singkat yang mengalami translasi dan dilatasi untuk keperluan analisis frekuensi-temporal sinyal. Analisis temporal menggunakan variasi lokasi gelombang singkat pada waktu tertentu dalam durasi sinyal, sedangkan analisis frekuensi menggunakan variasi dilatasi gelombang singkat yang sama (Misiti, et al., 2004). Formulasi matematika representasi sinyal disebut sebagai transformasi wavelet. Proses transformasi domain citra bertujuan untuk memunculkan unsur atau karakteristik citra tertentu dapat lebih ditonjolkan. Wavelet didefinisikan sebagai gelombang singkat (atau gelombang kejut) dengan energi terkonsentrasi pada domain fisik (spasial atau waktu). Berbeda dengan gelombang pada umumnya (sinusoid) yang memiliki sifat halus, terprediksi, dan durasi tak terbatas, wavelet dapat berbentuk tidak simetris, irregular, dan memiliki durasi terbatas atau berosilasi menuju nol dengan cepat. Skala dalam tranformasi wavelet adalah melakukan perenggangan dan pemampatan pada sinyal. Efek dari skala tranformasi wavelet dapat dilihat pada Gambar 2.6, semakin kecil faktor skala akan menghasilkan induk wavelet yang semakin mampat.
Gambar 2.6. Faktor Skala Wavelet Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
15
2.8 Metode Gabor Wavelet
Salah satu bentuk teknik feature extraction adalah dengan menggunakan Gabor filter. Fungsi wavelet dan fungsi gabor dikenal sangat variatif dalam menggabungkan pendapat yang berbeda, namun pada prinsipnya semuanya itu akan menghasilkan fungsi dengan tujuan yang sama. Tujuan utama Gabor Wavelet ini dalam pengolahan adalah untuk memunculkan ciri-ciri khusus dari gambar yang telah dikonvolusi terhadap kernel. Proses yang berlangsung dalam bidang frekuensi mempengaruhi kecepatan proses yang terjadi, baik dalam proses gambar maupun saat proses konvolusi.
2.8.1 Nilai Jet
Gabor Wavelet dimotivasi oleh konvolusi kemel dalam bentuk plane wave atau bidang gelombang yang dibatasi oleh sebuah fungsi Gaussian envelope. Kumpulan dari koefisien-koefisien convolution untuk kemel dari orientasi-orientasi dan frekuensi-frekuensi yang berbeda pada satu image pixel yang dinamakan jet. Jet merupakan kumpulan dari grey values dalam sebuah garnbar. I(x) mengelilingi sebuah pixel yang diberikan x = (x,y). Hal ini didasarkan pada wavelet transformasi, didefinisikan sebagai proses Gabor Kemel, seperti ditunjukkan pada gambar berikut:
Gambar 2.7. Gabor Kernel
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
16
2.8.2 Pembandingan Jet
Dari semua variasi yang ada, perbandingan jet tidak dapat dilakukan secara langsung karena perubahan kecil pada jarak dalam bidang spatial akan berpengaruh pada koefisien individual secara drastis. Karena itu dapat digunakan baik hanya nilai magnitude ataupun menganggap besar terjadinya perubahan phasa terhadap perubahan jarak yang memungkinkan. Karena fase rotasi tersebut, jets dari titik pada gambar yang berjarak hanya beberapa pixel satu sama lainnya dapat memiliki koefisien yang berbeda walaupun mewakili bentuk-bentuk lokal yang hampir sama. Dengan adanya variasi tersebut, maka harus digunakan suatu fungsi yang bertujuan untuk mencari koefisien yang benar-henar tepat. Dengan membandingkan jets dari titik pada gambar, maka didapatkanlah hasil konvulasi dengan menggunakan Gabor Kemel seperti terlihat pada gambar di bawah ini:
Gambar 2.8 Hasil Konvulasi dengan Gabor Kernel
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
BAB 3
PERANCANGAN SISTEM
3.1 Perancangan Sistem
Sistem Pengenalan Wajah Berdasarkan Pengolahan Citra Digital dengan Metode Gabor Wavelet adalah sistem yang melakukan pengenalan wajah berdasarkan citra pembanding yang sudah ada pada database yang memerlukan suatu metode feature extraction yang tepat. Sistem dibagi menjadi dua bagian yaitu proses enroll (pendaftaran pada database) dan proses verify (pembuktian). Blok diagram sistem secara umum seperti pada Gambar 3.1.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
18
Gambar 3.2 Pembuatan Gabor Kernel3.1 Blok Diagram Sistem
Gabor Kernel dikonvolusi dengan citra wajah untuk membentuk suatu gabor respon seperti pada Gambar 3.2.
Citra Wajah
KONVOLUSI
Gabor Kernel
Gabor Respon Gambar 3.2 Diagram Gabor Respon
Untuk membangkitkan kernel digunakan persamaan sebagai berikut:
Frekuensi yang digunakan ada lima, yaitu (v = 0, 1, 2, 3, 4) sehingga didapatkan kv = -1
2 π,2
-1.5
-2
π, 2 π, 2
-2.5
-3
π, dan 2 π . Sudut orientasi yang digunakan ada delapan,
yaitu ( µ = 0, 1, 2, 3, 4, 5, 6, 7) sehingga didapatkan ϕµ = 0°, 22.5°, 45°, 67.5°, 90°, 112.5°, 135°, dan 157.5°. Pemilihan ini dianggap telah mewakili masing-masing frekuensi dan sudut orientasi kernel Gabor yang diinginkan. Hasil pehitungan pembangkit kernel dengan variasi frekuensi dan sudut orientasi dapat dilihat pada tabel Tabel 3.1.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
19
Tabel 3.1 Pembangkit Kernel dengan variasi frekuensi No
v
kv
1
0
2 π
2
1
2
3
2
2 π
4
3
2
5
4
-1
-1.5
π
-2
-2.5
π
-3
2 π
Tabel 3.2 Pembangkit Kernel dengan sudut orientasi kernel No
µ
1
0
ϕµ
2
1
22.5°
3
2
45°
4
3
67.5°
5
4
90°
6
5
112.5°,
7
6
135°
8
7
157.5°
0°
Respon yang dihasilkan berupa kumpulan bilangan real dan bilangan imajiner yang kalau digabungkan merupakan kumpulan bilangan kompleks, sehingga didapatkan kernel sebanyak 80 kernel (2 x 5 x 8 = 80 kernel). Kedelapan puluh kernel ini kemudian disimpan dalam file teks dan digabungkan ke dalam satu file. Dalam pengunaannya kernel real dan kernel imaginer digabungkan dengan operasi akar dari Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
20
penjumlahan kuadrat kedua bilangan tersebut. Gabor Kernel dapat dilihat pada Gambar 3.3. ( complex =
8 orientasi Gambar 3.3. Gabor Kernel 3.3 Proses Enroll
Enroll bertujuan untuk mendapatkan vektor gabor feature dengan konvolusi antara citra wajah dan kernel kemudian disimpan dalam database. Database wajah dibagi menjadi tiga bagian besar, yaitu: database citra, database nilai gabor jet dari citra wajah,
dan database nama yang merujuk pada database citra. Database citra disimpan dengan format .jpg dan diberi nomor urut yang sekaligus menjadi nama file-nya, misalnya: 1.jpg, 2.jpg, 3.jpg, dan seterusnya. Perlu diketahui bahwa nomor urut yang sekaligus menjadi nama file tersebut tidak boleh ada yang terlewatkan atau terloncati, dimulai dari nomor urut 1. Hal ini dimaksudkan untuk memudahkan proses pembacaan file. Database nilai gabor jet dari database citra disimpan dengan format file teks dan diberi nama file sama seperti database citra, misalnya: nama file gabor jet untuk citra 1.jpg adalah 1.txt, nama file gabor jet untuk citra 2.jpg adalah 2.txt, dan seterusnya. Database nama adalah daftar nama pemilik wajah dari database citra yang disimpan dalam bentuk file teks dengan nama db.txt. Ukuran citra dalam database citra boleh bermacam-macam. Kalkulasi nilai gabor jet untuk tiap citra dilakukan pada ukuran 100 x 100 (pixel). Jika ukuran citra baik panjang ataupun lebar lebih dari seratus pixel, maka akan dilakukan resizing Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
21
terlebih dahulu. Database citra, database nilai gabor jet, dan database nama disimpan dalam folder images yang terletak di dalam folder source program utama. Di dalam folder tersebut juga ada file jml_images.txt yang berisi jumlah file citra yang ada dalam database. Pertama kali dilakukan pembacaan terhadap file jml_images.txt untuk mengetahui berapa jumlah citra yang ada dalam database. Kemudian dilakukan looping sebanyak jumlah citra tersebut. Dalam looping tersebut dilakukan pembacaan file citra dan sekaligus membangun database gabor jet untuk tiap-tiap citra. Citra yang telah dibaca diubah ke mode grayscale. Kedalaman bit dari citra tersebut diubah menjadi 32 bit floating point. Citra yang telah diproses tersebut kemudian dimasukkan dalam looping sebanyak scale x rotasi yang digunakan pada Gabor Kernel. Untuk tiap looping, dilakukan resizing ke ukuran 100x100 pixel. Selanjutnya disiapkan dua bagian matriks citra untuk menampung hasil konvolusi kernel untuk bagian real dan bagian imajiner. Masing-masing hasil konvolusi tersebut dikuadratkan, kemudian dijumlahkan. Hasil penjumlahan tersebut diakarkuadrat. Matriks citra hasil perhitungan tersebut dibagi menurut grid 5x5 sehingga akan diambil 36 titik. Titik-titik itulah yang disimpan ke dalam teks file sebagai database nilai gabor jet respon. Bagan Proses Enroll dapat dilihat pada Gambar 3.4.
Gambar 3.4 Bagan Proses Enroll
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
22
Citra wajah yang didapat diubah menjadi 8 bit greyscale terlebih dahulu dan dipertajam teksturnya dengan histogram equalization. Kemudian dilakukan proses konvolusi dengan 40 kernel gabor pada 12 titik sampling yang sudah ditentukan posisinya terlebih dahulu kemudian nilai yang didapat disimpan dalam database. Proses konvolusi dengan kernel ini dilakukan sebanyak 960 kali (12 titik sampling x 80 kernel (40 real + 40 imajiner) ) yang menghasilkan 480 nilai vektor Gabor. Gabor Feature Extraction pada 12 titik sampling dapat dilihat pada Gambar 3.5.
Gambar 3.5 Gabor Feature Extraction pada 12 Titik Sampling 3.4 Proses Verify
Verify berarti mendapatkan vektor gabor dengan konvolusi antara citra input dengan kernel, kemudian membandingkan vektor gabor yang didapat dengan database untuk mencocokan identitas pengguna. Bagan Proses Verify dapat dilihat pada Gambar 3.6.
Gambar 3.6 Bagan Proses Verify Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
23
Langkah-langkah yang dilakukan sama dengan proses Enroll untuk proses grayscale, histogram equalization, konvolusi citra dengan kernel gabor, sampai didapatkan nilai vektor gabor pada 12 titik sampling.
3.4.1 Proses Grayscale Adapun proses pengubahan citra RGB ke dalam citra grayscale dengan tahap-tahap citra wajah diekstraksi nilai RGB-nya, kalkulasi nilai grayscale serta pembentukan citra grayscale yang dapat dilihat pada Gambar 3.7. Nilai R Ekstraksi Komponen R, G, B
Citra RGB
Kalkulasi Nilai Grayscale
Nilai G Nilai B
Citra Grayscale
Gambar 3.7 Konversi Citra RGB ke Citra Greyscale Proses pertama adalah mengambil nilai R, G dan B dari suatu citra wajah bertipe RGB. Pada tipe .bmp citra direpresentasikan dalam 24 bit, sehingga diperlukan proses untuk mengambil masing masing 3 kelompok 8 bit dari 24 bit tadi. Sebagai contoh suatu pixel memiliki nilai RGB 24 bit 111100001111000011111111. Untuk mendapatkan masing-masing nilai R, G dan B dilakukan operasi-operasi sebagai berikut. Untuk mendapatkan nilai R dilakukan operasi modulo dengan bilangan 256 sebagai berikut: Nilai R = 111100001111000011111111 mod 10000000 = 11111111. Sedangkan untuk nilai G, dapat dicari dengan cara sebagai berikut: Nilai G = (111100001111000011111111 dan 1111111100000000) / 100000000 = 11110000 Untuk Nilai B, dapat dicari dengan menggunakan rumus berikut: Nilai B = (111100001111000011111111 dan 111111110000000000000000) / Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
24
10000000000000000 = 11110000. Sehingga dari nilai pixel 1111000011110000111111112 atau 15790335 diperoleh nilai
R = 11111111
= 255
G = 11110000
= 240
B = 11110000
= 240
Sehingga diperoleh triplet RGB= (255,240,240). Setelah nilai triplet RGB diperoleh, maka nilai grayscale didapat dari pixel tersebut. Dasar sebenarnya adalah membuat band tunggal dari 3 band RGB tadi dengan rumus:
Red
= (red * 5) \ 10
Green = (green * 8) \ 10 Blue
= (blue * 3) \ 10
Gray = ((red + green + blue) * 10) \ 16 Dengan mengaplikasikan prosedur tadi pada semua piksel akan didapat citra dengan format grayscale.
3.4.2 Proses Histogram Equalization
Konsep dasar dari histogram equalisation adalah dengan men-strecth histogram, sehingga perbedaan pixel menjadi lebih besar atau dengan kata lain informasi menjadi lebih kuat sehingga mata dapat menangkap informasi tersebut. Untuk lebih detilnya, histogram equalisation men-strech histogram sehingga detil yang sebelumnya tidak terlihat menjadi lebih terlihat. Pada dasarnya metode ini akan memberikan jarak yang cukup jauh pada dua grey level yang berdekatan tetapi memiliki perbedaan frekuensi yang mencolok. Histogram equalisation adalah suatu proses colour mapping dari citra awal pada citra hasil. Secara matematis bisa dituliskan sebagai berikut. , dimana r adalah warna di citra awal, T adalah fungsi mapping, dan s adalah warna pada citra hasil. Secara singkat, histogram equalisation dapat dituliskan secara matematis sebagai berikut:
.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
25
Setiap grey level value (rk) dari citra awal, akan di-map ke dalam nilai grey level yang baru (sk) dalam citra baru. Seperti yang kita lihat pada Gambar 3.8, r1 di map ke dalam s1, r2 di map ke dalam s3, dan r3 serta r4 di map ke dalam s4.
Gambar 3.8 Proses mapping nilai gray citra Definisi matematisnya untuk T(x) Di mana Pr adalah
Jadi rumusan matematis histogram equalisation adalah sebagai berikut,
Di mana n adalah jumlah pixel yang ada (n untuk citra resolusi 32x16 adalah 512), nj adalah jumlah pixel yang bernilai rk.
3.4.3 Gabor Konvolusi
Konvolusi pada citra bertujuan menghasilkan titik-titik dengan nilai tertentu yang disebut sebagai gabor jet response. Titik-titik gabor jet response dari citra database dan citra wajah yang akan dikenali dibandingkan dengan menerapkan prosedur graph matching pada citra yang akan dikenali, yaitu dengan memaksimalkan kemiripan magnitude gabor antara graph model wajah yang sudah ditransformasi dengan representasi graph dari citra yang akan dikenali tersebut. Penerapan graph matching Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
26
tersebut dapat didefinisikan dengan persamaan (3.1), dimana J adalah gabor jet model dari citra database dan J’ adalah gabor jet model dari citra yang akan dikenali.
max S ( J , J ′) ∀J
…………………………….. (3.1)
Fungsi kemiripan S(J, J’) didefinisikan dengan persamaan (3.2), dimana aj dan a’j masing-masing adalah titik-titik response dari gabor jet model citra database dan citra wajah yang akan dikenali.
∑a a j
S (J , J ') =
' j
j
∑a ∑a 2
j
j
'2
………………………………………….. (3.2)
j
j
Sebagai contoh: Citra wajah dibuat dalam matriks awal 8 x 8 dibuat menjadi matriks 10 x 10 di mana matriks awal tersebut dibungkus dengan nilai 0: 0000000000 0583462370 0321195100 0095304830 0427219060 0979804240 0521841090 0185492380 0371235460 0000000000 Lalu matriks tersebut dikonvolusikan dengan matriks konvolusi (Konvolution Mask) K[I,J] : -2 -1 0 -1 0 +1 0 +1 +2
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
27
Proses konvolusinya adalah mengambil nilai tiap elemen awal matriks awal menjadi matriks 3 x 3 dimana nilai elemen tersebut terletak pada elemen 2 x 2 dan yang menjadi elemen lainnya adalah elemen tetangganya jika tidak ada maka elemen tetangga tersebut diberi nilai 0, lalu dilakukan looping hingga elemen terakhir. Proses selanjutnya adalah membandingkan nilai vektor gabor yang didapat dengan nilai vektor gabor yang ada di dalam database. Setelah dibandingkan dengan seluruh database kemudian dicari nilai similiarity-nya dengan:
Dimana : T
x adalah transpose array db (database) y adalah array input Operasi yang berlaku adalah operasi cross. Nilai array db ke-n dikalikan dengan nilai array input yang ke-n, operasi ini dilakukan pada seluruh array db dan input dan hasil operasi ini dijumlahkan. |x| adalah akar dari penjumlahan kuadarat pada array db, |y| adalah akar dari penjumlah kuadrat pada array input. Nilai S berada antara -1 sampai 1. Proses ini diulang sebanyak database yang telah disimpan. Dari semua nilai similarity diambil 3 nilai yang terbesar, kemudian dilakukan klasifikasi k-nearest neighbor untuk menentukan calon mana yang sering muncul dan mempunyai nilai similarity terbesar.
3.4.4 Feature Extraction
Feature yang telah diperoleh melalui konvolusi dengan citra wajah dimasukkan ke dalam database. Feature yang didapat berupa nilai yang dikonversikan ke dalam teks agar bisa disimpan ke dalam database. Blok Diagram Database dapat dilihat pada Gambar 3.9.
Citra Input
Normalisasi Dimensi
Konversi Citra Grey Scale
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
Simpan ke database
Feature Extraction
Konvolusi Gabor
28
Gambar 3.9 Blok Diagram Database Berikut ini langkah-langkah dalam membuat database: 1. Mengubah citra yang akan dites ke citra greyscale. Gambar yang akan dites dipanggil ke dalam memori yang berupa citra 8 bit RGB, kemudian citra RGB ini diubah ke 8 bit greyscale. 2. Konvolusi Gabor Pada konvolusi gabor, citra dikonvolusi dengan kernel. Untuk membuat kernel, sebuah fungsi dengan titik tengah berada pada pusat kernel. Citra dikonvolusi dengan kernel imaginer dan kernel real. Hasil konvolusi real dan imaginer ini kemudian dikuadratkan, dijumlah dan diakar. Proses ini dilakukan sebanyak 40 kali 3. Feature extraction Setelah citra di konvolusi dengan kernel maka dilanjutkan dengan feature extraction. Dalam feature extraction ini diambil 42 titik sampling. Titik sampling tersebut berjumlah 1680 atau 42 titik sampling x 40 kernel.
Database berfungsi untuk menyimpan hasil nilai feature yang terdiri dari nama user dan nilai hasil extraction. Database ini dibatasi dengan tidak menerima inputan dengan nama user dan nilai extraction yang kosong. Setelah hasil konvolusi disimpan pada database, dilanjutkan dengan mengcopy citra yang akan dimasukkan ke dalam database.
3.4.5 Proses Pengenalan
Pada proses pengenalan, citra dikonvolusi dengan gabor kernel kemudian nilai feature extraction yang didapat dibandingkan dengan database yang ada, akan dihasilkan nilai similarity serta menampilkan citra yang sesuai dengan similarity tersebut. Blok Diagram Proses Pengenalan dapat dilihat pada Gambar 3.10. Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
29
Input Citra
Output Pengenalan
Konversi ke Grayscale
Konversi Gabor
Sampel Database
Feature Extraction
Hitung Similarity
Gambar 3.10 Blok Diagram Proses Pengenalan Similarity berfungsi untuk membandingkan feature yang telah didapatkan dengan komvolusi kernel dengan database yang ada. Berikut ini adalah langkah-langkah yang dilakukan dalam proses similarity: a. Proses yang dilakukan dari citra yang akan dites sampai konvolusi gabor sama seperti proses yang dilakukan pada database, tetapi pada penyimpanan hasil konvolusi antara citra dengan kernel tidak dilakukan tetapi menyimpannya ke dalam array. b. Proses selanjutnya adalah memindahkan database ke dalam variabel array dan kemudian membandingkan array database dengan array citra, nilai array citra yang terdekat dengan nilai array database dipilih dan disimpan dalam array. Setelah seluruh array citra diperiksa dan diambil nilai terdekat dengan database, proses dilanjutkan dengan similarity. Rumus yang digunakan dalam proses similarity tersebut adalah:
dengan : = Tingkat similarity J
= Nilai Jet
A
= Nilai array
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
30
J’
= Turunan
Proses ini dilakukan sebanyak database yang telah didaftarkan dimulai dengan memindahkan database ke variabel array hingga mendapatkan nilai similarity. Nilai similarity yang terbesar dinyatakan paling mirip dengan citra wajah. 3.5 Flowchart Sistem Pengenalan Wajah Mulai
Input citra
Crop dimensi 80 x 80
Konversi ke Greyscale
Proses Gabor Kernel
Proses Gabor Konvolusi
Simpan ke teks file
Baca database
tidak
Hitung Similarity
Citra Pada Database Habis
ya Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, Tampilkan citra 2010.
yang paling mirip
31
Gambar 3.11 Flowchart Sistem Pengenalan Wajah
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
BAB 4
IMPLEMENTASI
4.1 Menu Utama
Tampilan menu utama adalah tampilan tempat menu-menu program aplikasi yang telah dirancang. Tampilan ini terdiri dari Judul Aplikasi, gambar latar belakang serta Menu File yang berisi Program Pengenalan Wajah, Data Wajah serta Data User, menu Abaut, Help serta menu Exit Tampilan menu utama dapat dilihat pada Gambar 4.1.
Gambar 4.1 Tampilan Menu Utama
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
33
4.1.1 Tampilan Pengenalan Wajah
Tampilan ini berfungsi pengenalan citra wajah dengan metode Gabor Wavelet. Pada tampilan ini empat buah tombol yang memiliki fungsi masing-masing. Tombol Load berfungi untuk menginput citra wajah yang hendak dikenali, tombol Cancel untuk melakukan pembatalan, tombol Exit berfungsi untuk menutup tampilan dan kembali ke menu utama, tombol Scanning untuk melakukan proses pengenalan. Tampilan Pengenalan Wajah dapat dilihat pada Gambar 4.2.
Gambar 4.2 Tampilan Pengenalan Wajah
4.1.2 Tampilan Data Wajah
Tampilan ini berfungsi tempat pengisian data-data sampel citra wajah sebagi pembanding dalam proses pengenalan wajah. Pada tampilan ini semblan buah tombol Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
34
yang memiliki fungsi masing-masing. Tombol Tambah berfungi untuk memasukkan data wajah baru, tombol Load Citra untuk mencari data wajah dari komputer, tombol Cari untuk mencari data wajah yang sudah disimpan sebelumnya, tombol Hapus untuk menghapus data, tombol Batal untuk melakukan pembatalan serta tombol Keluar berfungsi untuk menutup tampilan dan kembali ke menu Utama. Tampilan Data Wajah dapat dilihat pada Gambar 4.3.
Gambar 4.3 Tampilan Data Wajah 4.1.3 Tampilan Data User
Tampilan ini berfungsi tempat pengisian data user sebagai pengguna sistem ini. Pada tampilan
ini enam buah tombol yang memiliki fungsi masing-masing. Tombol
Tambah berfungi untuk memasukkan data baru, tombol Cari untuk mencari data yang sudah disimpan sebelumnya, tombol Ubah untuk melakukan perubahan data, tombol Hapus untuk menghapus data, tombol Batal untuk melakukan pembatalan serta tombol Keluar berfungsi untuk menutup tampilan dan kembali ke menu utama. Tampilan data user dapat dilihat pada Gambar 4.4.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
35
Gambar 4.4 Tampilan Data User
4.1.4 Tampilan Help
Tampilan Bantuan berfungsi untuk menampilkan keterangan sisten serta cara menggunakan sistem. Tampilan Bantuan dapat dilihat pada Gambar 4.5.
Gambar 4.5 Tampilan Help
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
36
4.1.5 Tampilan About
Tampilan About berfungsi untuk menampilkan keterangan sisten serta profile penulis tugas akhir ini. Tampilan About dapat dilihat pada Gambar 4.6.
Gambar 4.6 Tampilan About
4.2 Teknik Pengujian Sistem
Untuk mengetahui sistem sudah layak untuk diimplementasikan, maka perlu dilakukan penguji sistem dengan pengimputan data-data citra wajah dan melakukan pengenalan.
4.2.1 Input data wajah ke database
Citra wajah diinput ke database dengan pemanggilan file citra dengan nama wajah listi dan jumlah record yang ada pada database sejumlah 6 record. Citra wajah akan ditampilkan disebelah kanan halaman input data wajah. Pengujian input data wajah dapat dilihat pada Gambar 4.7 di bawah ini.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
37
Gambar 4.7 Pengujian Input Data Wajah
Pada tampilan Input data wajah terdapat tombol untuk memanipulasi data serta melihat data wajah yang sudah direkam sebelumnya.
4.2.2 Pengujian Pengenalan Wajah
Setelah semua data referensi wajah dimasukkan ke dalam database, maka pengujian dapat dilakukan dengan memanggil sebuah file wajah yang hendak dikenali seperti Gambar 4.8 dibawah ini.
Gambar 4.8 Pengujian Wajah Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
38
Hasil pemanggilan file data wajah ditampilkan pada form untuk dilakukan proses seperti gambar 4.9 dibawah ini.
Gambar 4.9 Pengujian Hasil Pemanggilan File Wajah
Hasil pengenalan pengenalan file data wajah ditampilkan pada form setelah dilakukan proses seperti Gambar 4.10 di bawah ini.
Gambar 4.10 Pengujian Hasil Pengenalan Wajah
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
39
Hasil pengenalan untuk beberapa contok kasus: 1. Wajah Mirip Tetapi Orang Berbeda Hasil pengenalan berdasarkan wajah mirip tetapi orang berbeda ditampilkan seperti gambar 4.11 dibawah ini.
Gambar 4.11 Hasil Pengujian Wajah MiripTetapi Orang Berbeda
2. Wajah Sama Tetapi Mimik Berbeda Hasil pengenalan berdasarkan wajah sama tetapi mimik berbeda ditampilkan seperti gambar 4.12 dibawah ini.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
Gambar 4.12 Hasil Pengujian Wajah Sama Tetapi Mimik Berbeda
40
3. Wajah Sama Tetapi Atribut Berbeda Hasil pengenalan berdasarkan wajah sama tetapi atribut berbeda ditampilkan seperti gambar 4.13 dibawah ini.
Gambar 4.13 Hasil Pengujian Wajah Sama Tetapi Atribut Bebeda
4. Wajah Sama Tetapi Pose Berbeda Hasil pengenalan berdasarkan wajah sama tetapi pose berbeda ditampilkan seperti gambar 4.14 dibawah ini.
Gambar 4.14 Hasil Pengujian Wajah Sama Tetapi Pose Berbeda
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Tugas akhir telah membahas Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, yang dapat melakukan pengenalan wajah berdasarkan data wajah sebagai pembanding. Berdasarkan hasil pengujian dapat disimpulkan sebagai berikut: 1. Algoritma Gabor Wavelet dengan pengambilan nilai Gabor jet berdasarkan grid dapat digunakan untuk mengenali wajah frontal dengan cukup akurat, yaitu hasil pengenalan
rata-rata untuk gambar wajah mirip tetapi orang berbeda adalah 42,7%, wajah sama tetapi mimik berbeda adalah 68,98%, wajah sama tetapi atribut berbeda adalah 55,2%, dan wajah sama tetapi pose berbeda adalah 42,1%. 2. Pengenalan dengan variasi cahaya mempunyai pengaruh yang cukup besar terhadap keakuratan pengidentifikasian wajah. Pengaruh variasi noise kecil terhadap keakuratan pengidentifikasian.
5.2 Saran
Untuk penelitian selanjutnya penulis menyarankan pengembangan sistem agar dilakukan perbandingan dengan metode pengenalan wajah lainnya antara lain metode Eigenface dan metode Quickprop pada jaringan syaraf tiruan.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
42
DAFTAR PUSTAKA
Acharya, Tinku and Ajoy K. Ray, 2005, Image Processing Principles and Applications, John Wiley and Sons, Inc. Hoboken, New Jersey.
Anil K, Jain, 1989, Fundamentals of Digital Image Processing, Prentice Hall International.
Andrew S, Glassner, 1995, ”Principles of Digital Image Synthesis, Vol 1, Chapter 6”, Morgan Kaufman Publishing.
Awcock, G,J, and Thomas, R, 1996, Aplikasi Proses Image, McGraw-Hill Inc, Singapore.
Baxes, Gregory A, 1994, Proses Gambar Digital: Principles and Applications, John Wiley & Sons, New York.
Cai, J, dan Goshtasby, A. 1991, Eigenfaces for Recognition. Image and Vision Computing 18, J. of Cognitive Neuroscience.
Dana H, Ballard, 1982, Computer Vision, Prentice Hall.
Fagertun, Jeans, 2005, Face Recognitions, Master Thesis, Technical University of Denmark.
Jain, Anil K., 1989, Fundamentals of Digital Image Processing, Prentice Hall International.
Lewand,
Robert
Edward,
2000,
Cryptological
Mathematics,
Mathematical
Association of America, New York.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
43
Lim, Resmana, and M.J.T., Reinders, 2000, Facial Landmark Detection Using a Gabor Filter Representation and a Genetic Search Algorithm, proceeding of ASCI 2000 conference, Lommel Belgium.
Munir, Rinaldi. 2004. Pengolahan Citra Digital Dengan Pendekatan Algoritmik Bandung : Penerbit Informatika, 2004. ISBN: 979-3338-29-6.
Robin, 2007, Sisem Pengolahan Citra dan Deteksi wajah pada Sistem Pengenalan Wajah, Laporan Tugas Akhir, ITB.
Sarfraz, Muhammad, 2005, Computer Aided Intelligent Recognition Techniques and Application, John Wiley and Sons.
Wiskott, L, Fellous, J.M., Kruger, N., and von der Malsburg, C, 1997, Face Recognition by Elastic Bunch Graph Matching, IEEE Transaction on Pattern Analysis and Machine lntelligence.
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
44
LAMPIRAN A HASIL PENGENALAN WAJAH
1. Wajah mirip tetapi orang berbeda
No Wajah-1
Wajah-2
Kemiripan
1
42,5 %
2
43 %
3
43 %
4
42 %
5
43 %
Rata-rata hasil pengenalan wajah mirip tetapi orang berbeda: 42,7 % Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
45
2. Wajah sama tetapi mimik berbeda
No Wajah-1
Wajah-2
Kemiripan
1
45 %
2
89,49 %
3
75 %
4
40,5 %
5
95 %
Rata-rata hasil pengenalan wajah sama tetapi mimik berbeda: 68,98 % Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
46
3. Wajah sama tetapi atribut berbeda
No Wajah-1
Wajah-2
Kemiripan
1
90 %
2
75 %
3
34,5 %
4
43 %
5
33,5 %
Rata-rata hasil pengenalan wajah sama tetapi atribut berbeda: 55,2 %
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
47
4. Wajah sama tetapi pose berbeda No Wajah-1
Wajah-2
Kemiripan
1
41,5 %
2
42 %
3
43,5 %
4
43,5 %
5
40 %
Rata-rata hasil pengenalan wajah sama tetapi pose berbeda: 42,1 %
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
48
LAMPIRAN B LISTING PROGRAM 1. Login Dim rsPasswd As Recordset Dim CN As Connection Private Sub cmdCancel_Click() End End Sub Private Sub cmdOK_Click() Set rsPasswd = New ADODB.Recordset rsPasswd.Open "Select * from [User] where userId ='" & _ txtUid.Text & "' and passwd = '" & txtPass.Text & "'", CN, _ adOpenDynamic, adLockOptimistic If rsPasswd.EOF = True Then MsgBox "Password salah" txtPass.Text = "" txtPass.SetFocus Else If (txtUid.Text) = "lestya" And txtPass.Text = "123" Then frmMenu.dtFoto.Enabled = True frmMenu.dtUser.Enabled = True frmMenu.Show Else frmMenu.dtFoto.Enabled = False frmMenu.dtUser.Enabled = False frmMenu.Show End If End If End Sub Private Sub Form_Activate() cmdOk.Enabled = False txtPass.Locked = True txtUid.Locked = False lblDate.Caption = Format(Now, "dd-mm-yyyy") txtUid.SetFocus End Sub Private Sub Form_Load() Set CN = New ADODB.Connection CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; _ Data Source=" & App.Path & "\dbWajah.mdb" CN.CursorLocation = adUseClient CN.Open End Sub Private Sub txtPass_Change() cmdOk.Enabled = True End Sub Private Sub txtPass_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmdOk.Enabled = True cmdOk.SetFocus End If End Sub Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
49
Private Sub txtUid_Change() txtPass.Locked = False End Sub Private Sub txtUid_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtPass.Locked = False txtPass.SetFocus End If End Sub 2. MenuUtama Dim j As Integer Private Sub abt_Click() frmAbout.Show End Sub Private Sub dtFoto_Click() frmDataFoto.Show End Sub Private Sub dtUser_Click() frmUser.Show End Sub Private Sub help_Click() frmHelp.Show End Sub Private Sub img_Click() FrmMain.Show End Sub Private Sub mnJst_Click() FrmKenalan.Show End Sub Private Sub quit_Click() End frmLogin.txtPass = "" frmLogin.txtUid = "" frmLogin.txtUid.SetFocus frmLogin.Show End Sub Private Sub Timer1_Timer() Dim jud, jud1 As String jud = "PENGENALAN WAJAH BERDASARKAN PENGOLAHAN" jud1 = "DENGAN METODE GABOR WAVELET" Label1.Caption = Left(jud, j) Label2.Caption = Left(jud1, j) If j = 1 Then Label1.ForeColor = vbYellow ElseIf j > 10 Then Label1.ForeColor = vbYellow Else Label1.ForeColor = vbGreen Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
50
End If j = j + 1 If j > Len(jud) + 30 Then j = 1 End If End Sub 3. Pengenalan Option Base 1 Private rsCari As ADODB.Recordset Dim rsCari1 As Recordset Private CN As ADODB.Connection Private DataBaseConection As ADODB.Connection Private DataBaseRecorset As ADODB.Recordset Private m_strImagePath As String Dim PrintCode(1 To 26) As String Dim h1(3, 3), h2(3, 3) As Single Dim Pixel Dim Pixel2 Dim Rred Dim Ggreen Dim Bblue Dim RR1 Dim GG1 Dim BB1 Dim RR2 Dim GG2 Dim BB2 Dim RR3 Dim GG3 Dim BB3 Dim Q As String Dim Q2 As String Dim Temp As Integer Dim Temp2 As Integer Dim XXX As Integer Dim YYY As Integer Dim XX As Integer Dim YY As Integer Dim RR As Integer Dim RG As Integer Dim RB As Integer Dim CurX Dim CurY Dim JB As Byte Dim conServer As Connection Dim rsData As Recordset Dim rsHapus As Recordset Dim updFlags As Byte Dim Aksi As String * 1 Dim rsJumDt As Recordset Dim noPro As Integer Dim strNama1 As String * 1 Dim strNama As String Dim bolScan As Boolean Dim bolHasil As Boolean Dim Pers As Single Dim TOtPers As Single Dim bolLajar As Boolean Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
51
Sub Belajar() bolLajar = True Set rsCari1 = New ADODB.Recordset rsCari1.Open "Select * from Data where nama='" & "'", CN, 1, 2 'Pre-Set all OutPut-Values to ZERO G_A = 0: G_B = 0: G_C = 0: G_D = 0: G_E = 0: G_F = G_H = 0: G_I = 0: G_J = 0: G_K = 0: G_L = 0: G_M = G_N = 0: G_O = 0: G_P = 0: G_Q = 0: G_R = 0: G_S = G_U = 0: G_V = 0: G_W = 0: G_X = 0: G_Y = 0: G_Z =
& TxtNama.Text _
0: G_G = 0: _ 0 0: G_T = 0: _ 0
'Cycle through the 'Pixels' and set .tag to "1" if Pixels is a "X" For j = 1 To 25 If Piece(j).Text = "X" Then Piece(j).Tag = "1" Else Piece(j).Tag = "0" End If Next j 'Set The Output-Values to 1 if If Text1.Text = "A" Then G_A = If Text1.Text = "B" Then G_B = If Text1.Text = "C" Then G_C = If Text1.Text = "D" Then G_D = If Text1.Text = "E" Then G_E = If Text1.Text = "F" Then G_F = If Text1.Text = "G" Then G_G = If Text1.Text = "H" Then G_H = If Text1.Text = "I" Then G_I = If Text1.Text = "J" Then G_J = If Text1.Text = "K" Then G_K = If Text1.Text = "L" Then G_L = If Text1.Text = "M" Then G_M = If Text1.Text = "N" Then G_N = If Text1.Text = "O" Then G_O = If Text1.Text = "P" Then G_P = If Text1.Text = "Q" Then G_Q = If Text1.Text = "R" Then G_R = If Text1.Text = "S" Then G_S = If Text1.Text = "T" Then G_T = If Text1.Text = "U" Then G_U = If Text1.Text = "V" Then G_V = If Text1.Text = "W" Then G_W = If Text1.Text = "X" Then G_X = If Text1.Text = "Y" Then G_Y = If Text1.Text = "Z" Then G_Z =
the Left-TExt shows its number 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
a = 3000 'Iterations For i = 1 To CLng(a) If i Mod 100 = 0 Then DoEvents 'Insert the made Tag-Values of alle 25 'Pixels' into an Array _ myInput = Array(Piece(1).Tag, Piece(2).Tag, Piece(3).Tag, Piece(4).Tag, Piece(5).Tag, Piece(6).Tag, Piece(7).Tag, Piece(8).Tag, Piece(9).Tag, Piece(10).Tag, Piece(11).Tag, Piece(12).Tag, Piece(13).Tag, Piece(14).Tag, Piece(15).Tag, Piece(16).Tag, Piece(17).Tag, Piece(18).Tag, Piece(19).Tag, Piece(20).Tag, Piece(21).Tag, Piece(22).Tag, Piece(23).Tag, Piece(24).Tag, Piece(25).Tag) Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
52
myOutput = Array(G_A, G_B, G_C, G_D, G_E, G_F, G_G, G_H, _ G_I, G_J, G_K, G_L, G_M, G_N, G_O, G_P, G_Q, G_R, G_S, G_T, G_U, _ G_V, G_W, G_X, G_Y, G_Z) ' del Call SupervisedTrain(myInput, myOutput) 'Run the Training Label14 = Int((i / a) * 100) & "%" 'Show the Progress Next i End Sub Private Sub cmdBatal_Click() lblMirip = "" TxtNama = "" lblNmFile = "" lblNama = "" lblNmPic1 = "" txtNmPic99 = "" selisih = 0 noPro = 0 Pers = 0 TOtPers = 0 s = 0 bolHasil = False Image1.Picture = Nothing Pic.Picture = Nothing PicA.Picture = Nothing PicB.Picture = Nothing Pic99.Picture = Nothing Pic1.Picture = Nothing prgss1.Visible = False txtNmPic1 = "" txtNmPic1.BackColor = &H80000005 List_Erg.Clear cmdProsesGray.Enabled = False cmdLoad.Enabled = True cmdLoad.SetFocus End Sub Private Sub cmdExit_Click() Unload Me End Sub Private Sub cmdProsesGray_Click() cmdProsesGray.Enabled = False Dim w(500, 500) As Integer Dim X(500, 500) As Integer n1 = 0 On Error Resume Next Set rsCari = New ADODB.Recordset 'rsCari.Open "Data", CN, adOpenStatic, adLockPessimistic, _ adCmdTable ' rsCari.Open "Select * from Data order by nama asc", CN, 1, 2 If Not rsCari.EOF = True Then rsCari.MoveFirst Do While Not rsCari.EOF = True Set txtNmPic1.DataSource = rsCari Set Pic1.DataSource = rsCari Set txtNmPic99.DataSource = rsCari Set Pic99.DataSource = rsCari Set lblNmPic1.DataSource = rsCari Progress Pic1.DataField = "myImage" Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
53
txtNmPic1.DataField = LCase("NamaFile") strNama = Left(txtNmPic1.Text, 1) lblNmPic1.DataField = "Nama" If rsCari.EOF Then Exit Do prgss1.Visible = False End If If bolHasil = False Then Call ScanA Call Scan1 Call Belajar If bolLajar = True Then If CompFiles(RTrim(lblNmFile), RTrim(txtNmPic1)) Then If selisih < 30 Then Pic99.Picture = Pic1.Picture txtNmPic99 = lblNmPic1 lblNama.Caption = lblNmPic1.Caption bolHasil = True lblMirip = Format(TOtPers, "##.##") & " " & "%" Exit Do Else End If Else bolHasil = False rsCari.MoveNext End If Else MsgBox "error neural network" Exit Do Unload Me End If End If Loop If bolHasil = False Then MsgBox "Tidak ada wajah yang cocok" Else End If End If prgss1.Visible = False End Sub Private Function CompFiles(ByRef strCFFile1 As String, ByRef _ strCFFile2 As String) As Boolean Open strCFFile1 For Binary As #1 Open strCFFile2 For Binary As #2 CompFiles = True If LOF(1) >= LOF(2) Then selisih = LOF(1) - LOF(2) Pers = (selisih / LOF(1)) * 100 Else selisih = LOF(2) - LOF(1) Pers = (selisih / LOF(2)) * 100 End If TOtPers = 90 - Pers lblMirip.Caption = Format(TOtPers, "##,##") & " " & "%" If selisih > 30 Then CompFiles = False Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
54
lblMirip = "" Else Pic99.Picture = Pic1.Picture txtNmPic99 = lblNmPic1 CompFiles = True whole& = LOF(1) \ 10000 part& = LOF(1) Mod 10000 buffer1$ = String$(10000, 0) buffer2$ = String$(10000, 0) start& = 1 For X& = 1 To whole& Get #1, start&, buffer1$ Get #2, start&, buffer2$ If buffer1$ >= buffer2$ Then selisih = buffer1$ - buffer2$ Else selisih = buffer2$ - buffer1$ End If If selisih > 30 Then CompFiles = False lblMirip = "" Exit For Else bolHasil = True End If start& = start& + 10000 Next buffer1$ = String$(part&, 0) buffer2$ = String$(part&, 0) Get #1, start&, buffer1$ Get #2, start&, buffer2$ If selisih > 50 Then CompFiles = False: lblMirip = "" End If Close End Function Sub Progress() prgss1.Visible = True prgss1.Min = 0 prgss1.Max = 10000 prgss1.Visible = True For noPro = prgss1.Min To prgss1.Max prgss1.Value = noPro 'DoEvents Next noPro prgss1.Value = prgss1.Min prgss1.Visible = False End Sub Sub Scan1() 'If bolScan = True Then On Error Resume Next Q = 9 For YYY = 0 To Pic1.ScaleHeight - 1 Step Q For XXX = 0 To Pic1.ScaleWidth - 1 Step Q Pixel = GetPixel(Pic1.HDC, XXX + 1, YYY + 1) Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
55
Pic1.Line (XXX, YYY)-(XXX + Q, YYY + Q), Pixel, BF Next Pic1.Refresh Next Pic1.Refresh 'End If End Sub Sub ScanA() 'If bolScan = True Then On Error Resume Next Q = 9 For YYY = 0 To PicA.ScaleHeight - 1 Step Q For XXX = 0 To PicA.ScaleWidth - 1 Step Q Pixel = GetPixel(PicA.HDC, XXX + 1, YYY + 1) PicA.Line (XXX, YYY)-(XXX + Q, YYY + Q), Pixel, BF Next PicA.Refresh Next PicA.Refresh 'End If End Sub Private Sub cmdLoad_Click() On Error Resume Next With CommonDialog1 .DialogTitle = "Select image file ..." .Filter = "Image Files (*.jpg, *.gif)|*.jpg;*.gif" .ShowOpen m_strImagePath = .FileName Image1.Picture = LoadPicture(.FileName) lblNmFile.Caption = LCase(.FileName) TxtNama.Text = LCase(.FileTitle) End With cmdLoad.Enabled = False cmdProsesGray.Enabled = True cmdProsesGray.SetFocus End Sub Private Sub Form_Activate() bolLajar = False cmdLoad.Enabled = True cmdProsesGray.Enabled = False txtNmPic1.Locked = True txtNmPic99.Locked = True TxtNama = "" selisih = 0 noPro = 0 Pers = 0 TOtPers = 0 prgss1.Visible = False Image1.Picture = Nothing bolLajar = False TxtNama.Locked = True End Sub Private Sub Form_Load() h1(1, 1) = -1: h1(1, 2) = -2: h1(1, 3) = -1 h1(2, 1) = -3: h1(2, 2) = 15: h1(2, 3) = -2 h1(3, 1) = -1: h1(3, 2) = -3: h1(3, 3) = -1 Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
56
For i = 1 To 3 For j = 1 To 3 h2(i, j) = h1(j, i) Next j Next i Dim Maindata$ Dim FF FF = FreeFile Open App.Path & "\Data\Letter_Codes.txt" For Input As #FF Do While Not EOF(1) Line Input #FF, Data Select Case Data Case "START Letter-Codes": For X = 1 To 26 Line Input #FF, Maindata PrintCode(X) = Maindata Next X End Select Loop Close #FF Call CreateNet(1.5, Array(25, 26)) '25 Input Neurons (5x5-Picture) _ , 26 Output-Neurons for every possible Letter On Error Resume Next Set DataBaseConection = New ADODB.Connection With DataBaseConection .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; _ Data Source=" & App.Path & "\mypic.mdb" .CursorLocation = adUseClient .Open End With Set CN = New ADODB.Connection CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; _ Data Source=" & App.Path & "\mypic.mdb" CN.CursorLocation = adUseClient CN.Open Set DataBaseRecorset = New ADODB.Recordset DataBaseRecorset.Open "Data", DataBaseConection, adOpenStatic, _ adLockPessimistic, adCmdTable End Sub Private Sub Form_Unload(Cancel As Integer) EraseNetwork End Sub Private Sub TxtNama_Change() If Len(TxtNama) < 1 Then cmdProsesGray.Enabled = False Exit Sub Else cmdProsesGray.Enabled = True Pic.Picture = LoadPicture(App.Path & "\Gambar\" & TxtNama) PicA.Picture = LoadPicture(App.Path & "\Gambar\" & TxtNama) End If Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
57
End Sub Private Sub txtNmPic1_Change() txtNmPic1 = LCase(txtNmPic1) End Sub 4. DataWajah Dim CN As ADODB.Connection Dim rsCariRec As Recordset Dim rsData As Recordset Dim rsCari As Recordset Dim rsDataPic As Recordset Dim tambah As Boolean Dim Cari As Boolean Dim m_strImagePath As String Dim rsCariNmFile As Recordset Dim NmFile As String Dim bolAdaNm As Boolean Dim jumRec As Integer Dim NamaFile As String Private Sub cmdAdd_Click() tambah = True Cari = False TxtNama.Text = "" Label1.Caption = "Jumlah Data " lblNmFile.Caption = "" Pic.Picture = Nothing cmdAdd.Visible = False cmdSave.Visible = True cmdSave.Enabled = False cmdDelete.Enabled = False TxtNama.Enabled = True cmdCari.Enabled = False TxtNama.SetFocus End Sub Private Sub cmdBatal_Click() TxtNama.Text = "" TxtNama.Enabled = False lblNmFile = "" NamaFile = "" jumRec = 0 cmdMundurPic1.Enabled = False cmdMajuPic1.Enabled = False Pic.Picture = Nothing cmdAdd.Visible = True cmdSave.Visible = False cmdDelete.Enabled = False cmdAdd.Enabled = True cmdCari.Enabled = True cmdAdd.SetFocus End Sub Private Sub cmdcari_Click() Cari = True tambah = False cmdCari.Enabled = False cmdAdd.Enabled = False cmdCari.Enabled = False Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
58
TxtNama.Text = "" lblNmFile.Caption = "" TxtNama.Enabled = True Pic.Picture = Nothing 'Image1.Picture = Nothing TxtNama.SetFocus End Sub Private Sub cmdDelete_Click() On Error Resume Next cmdDelete.Enabled = False rsCari.Delete rsDataPic.Delete MsgBox "Data sudah di hapus" cmdAdd.Visible = True cmdSave.Visible = False TxtNama = "" lblNmFile.Caption = "" Cari = False tambah = False Pic.Picture = Nothing Image1.Picture = Nothing jumRec = 0 Hitung cmdAdd.Enabled = True cmdCari.Enabled = True cmdAdd.SetFocus End Sub Private Sub cmdExit_Click() Unload Me End Sub Private Sub cmdLoad_Click() With CommonDialog1 .DialogTitle = "Select image file ..." .Filter = "Image Files (*.jpg, *.gif)|*.jpg;*.gif" .ShowOpen m_strImagePath = .FileName Pic.Picture = LoadPicture(.FileName) lblNmFile.Caption = .FileTitle NamaFile = .FileName End With cmdSave.Enabled = True End Sub Private Sub cmdMajuPic1_Click() On Error Resume Next If Not rsDataPic.EOF Then rsDataPic.MoveNext cmdDelete.Enabled = True Set TxtNama.DataSource = rsDataPic Set Pic.DataSource = rsDataPic Pic.DataField = "myImage" TxtNama.DataField = "Nama" Label1.Caption = "Record ke " lblJum.Caption = lblJum + 1 'jumRec If rsDataPic.EOF Then Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
59
lblJum.Caption = jumRec rsDataPic.MovePrevious End If Else Pic.Picture = LoadPicture() End If End Sub Private Sub cmdMundurPic1_Click() On Error Resume Next If Not rsDataPic.BOF Then rsDataPic.MovePrevious cmdDelete.Enabled = True Set TxtNama.DataSource = rsDataPic Set Pic.DataSource = rsDataPic Pic.DataField = "myImage" TxtNama.DataField = "Nama" Label1.Caption = "Record ke " lblJum.Caption = lblJum - 1 'jumRec If rsDataPic.BOF Then lblJum.Caption = 1 rsDataPic.MoveNext End If Else Pic.Picture = LoadPicture() End If End Sub Private Sub cmdPilih_Click() Set rsDataPic = New ADODB.Recordset adCmdTable rsDataPic.Open "Select * from Data order by nama asc", CN, 1, 2 If Not rsDataPic.EOF = True Then Set TxtNama.DataSource = rsDataPic Set Pic.DataSource = rsDataPic Pic.DataField = "myImage" TxtNama.DataField = "Nama" cmdMundurPic1.Enabled = True cmdMajuPic1.Enabled = True Label1.Caption = "Record ke " lblJum.Caption = 1 End If End Sub Private Sub cmdSave_Click() On Error Resume Next Dim intNum As Integer Dim bytBLOB() As Byte With rsData .AddNew If (m_strImagePath <> "") Then ' Buka file image intNum = FreeFile Open m_strImagePath For Binary As #intNum ReDim bytBLOB(FileLen(m_strImagePath)) ' Baca & isi ke database Get #intNum, , bytBLOB Close #1 .Fields("MyImage").AppendChunk bytBLOB Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
60
End If !Nama = TxtNama.Text !NmFile = lblNmFile.Caption !NamaFile = NamaFile .Update End With MsgBox "Data sudah disimpan" TxtNama.Text = "" lblNmFile.Caption = "" jumRec = 0 Hitung Pic.Picture = Nothing cmdSave.Visible = False tambah = False cmdAdd.Visible = True cmdCari.Enabled = True cmdAdd.Visible = True cmdLoad.Enabled = False cmdAdd.Enabled = True cmdAdd.SetFocus End Sub Private Sub Form_Activate() cmdLoad.Enabled = False cmdSave.Visible = False cmdAdd.Visible = True cmdAdd.Enabled = True cmdDelete.Enabled = False cmdCari.Enabled = True cmdMundurPic1.Enabled = False cmdMajuPic1.Enabled = False TxtNama.Text = "" lblNmFile.Caption = "" Pic.Picture = Nothing jumRec = 0 Hitung TxtNama.Enabled = False cmdLoad.Enabled = False cmdAdd.SetFocus End Sub Private Sub Form_Load() Set CN = New ADODB.Connection CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; _ Data Source=" & App.Path & "\mypic.mdb" CN.CursorLocation = adUseClient CN.Open Set rsData = New ADODB.Recordset rsData.Open "Data", CN, adOpenStatic, adLockPessimistic, adCmdTable adCmdTable End Sub Sub Hitung() Set rsCariRec = New ADODB.Recordset rsCariRec.Open "Select * from Data", CN, 1, 2 If Not rsCariRec.EOF = True Then Do While Not rsCariRec.EOF = True jumRec = jumRec + 1 rsCariRec.MoveNext If rsCariRec.EOF = True Then Exit Do End If Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
61
Loop Label1.Caption = "Jumlah Data " lblJum.Caption = jumRec End If End Sub Private Sub TxtNama_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Set rsCari = New ADODB.Recordset rsCari.Open "select * from Data where Nama='" & TxtNama.Text & _ "'", CN, 1, 2 If tambah = True Then If rsCari.EOF = True Then bolAdaNm = False cmdLoad.Enabled = True cmdLoad.SetFocus Else MsgBox "Nama Sudah ada" cmdLoad.Enabled = False TxtNama.Text = "" Pic.Picture = Nothing TxtNama.SetFocus End If ElseIf Cari = True Then Set rsCari = New ADODB.Recordset rsCari.Open "select * from Data where nama='" & _ TxtNama.Text & "'", CN, 1, 2 If Not rsCari.EOF = True Then Set TxtNama.DataSource = rsCari Set Image1.DataSource = rsCari Set lblNmFile.DataSource = rsCari Image1.DataField = "myImage" Pic.Picture = Image1.Picture lblNmFile.DataField = "nmFile" cmdDelete.Enabled = True Else MsgBox "Image tidak ada" Image1.Picture = LoadPicture() End If End If End If End Sub 5. Image Public mProgress As Long Public StrSize As String Public StrPercent As String Public StrVal As String Private Sub mniBrightnessScaling_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Change brightness using Linear Scaling" _ StrVal = "" StrVal = InputBox("Input addition ( 1 - 10 )", "Linear Scaling") If StrVal <> "" Then If isNumber(StrVal) And StrVal <= 10 Then Call FilterG(iBRIGHTNESSSCALE, Picture1.Image, 0) Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
62
Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Private Sub MnuAbout_Click() frmAbout.Visible = True End Sub Private Sub mnuBrightnessAddition_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Change brightness using Linear Addition" StrVal = "" StrVal = InputBox("Input addition ( 1 - 255 )", "Linear Addition") If StrVal <> "" Then If isNumber(StrVal) And StrVal <= 255 Then Call FilterG(iBRIGHTNESSADD, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Private Sub mnuBrightnessMul_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Change brightness using Linear _ Multiplication" StrVal = 1 Call FilterG(iBRIGHTNESSMUL, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, Picture1. _ ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Private Sub MnuExit_Click() Unload Me End Sub Private Sub MnuGreyScale_Click(Index As Integer) StatusBar1.SimpleText = "Convert image into Greyscale" Call FilterG(iGREYSCALE, Picture1.Image, 0) Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
63
Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, Picture1. _ ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh End Sub Private Sub MnuInvert_Click() StatusBar1.SimpleText = "Invert the image" Call FilterG(iINVERT, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, Picture1. _ ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh End Sub Private Sub mnuNoiseBoth_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Salt Noise" StrPerent = "" StrPercent = InputBox("Input percent of noise", "Salt Noise") If StrPercent <> "" Then If isNumber(StrPercent) And StrPercent <= 100 Then Call FilterG(iNOISEBOTH, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Private Sub mnuNoisePepper_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Salt Noise" StrPercent = "" StrPercent = InputBox("Input percent of noise", "Salt Noise") If StrPercent <> "" Then If isNumber(StrPercent) And StrPercent <= 100 Then Call FilterG(iNOISEPEPPER, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Private Sub mnuNoiseSalt_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Salt Noise" StrPercent = "" StrPercent = InputBox("Input percent of noise", "Salt Noise") If StrPercent <> "" Then If isNumber(StrPercent) And StrPercent <= 100 Then Call FilterG(iNOISESALT, Picture1.Image, 0) Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
64
Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Private Sub MnuOpen_Click() Dim FileName As String CmnDialog1.Filter= _ "All _ images|*.bmp;*.jpg;*.gif;|Bitmap|*.bmp;|JPEG|*.jpg;*.jpeg;|GIF|*.gif ;" CmnDialog1.ShowOpen FileName = CmnDialog1.FileName If FileName <> "" Then Picture1.Picture = LoadPicture(FileName) FrmMain.Width = (Picture1.Width + 8) * Screen.TwipsPerPixelX FrmMain.Height = (Picture1.Height + StatusBar1.Height + _ ProgressBar1.Height + 46) _ * Screen.TwipsPerPixelY DC , pix's X, pix's Y, function Call BitBlt(Me.HDC, 0, 0, Picture1.Width, Picture1.Height, _ Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh StatusBar1.SimpleText = FileName ProgressBar1.Value = 0 End If Picture2.Picture = Picture1.Picture End Sub Private Sub mnuRestore_Click() StatusBar1.SimpleText = "Restore to the original image" Picture1.Picture = Picture2.Picture Call BitBlt(Me.HDC, 0, 0, Picture1.Width, Picture1.Height, _ Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh End Sub Private Sub mnuSave_Click() On Error Resume Next StatusBar1.SimpleText = "Save the image" CmnDialog1.Filter = _ "Bitmap|*.bmp;|JPEG|*.jpg;*.jpeg;|GIF|*.gif;" CmnDialog1.ShowSave FileName = CmnDialog1.FileName SavePicture Picture1.Image, FileName End Sub Private Sub MnuSmoothMean_Click() On Error GoTo ErrHandler Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
65
StatusBar1.SimpleText = "Smoothing image using mean filter" StrSize = "" StrSize = InputBox("Input size of neighbour ( 1 - 10 )", "Mean _ Filter") If StrSize <> "" Then If isNumber(StrSize) And StrSize <= 10 Then Call FilterG(iSMOOTHMEAN, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Private Sub MnuSmoothMedian_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Smoothing image using median filter" StrSize = "" StrSize = InputBox("Input size of neighbour ( 1 - 10 )", "Median _ Filter") If StrSize <> "" Then If isNumber(StrSize) And StrSize <= 10 Then Call FilterG(iSMOOTHMEDIAN, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Private Sub MnuSmoothMosaick_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Smoothing image using mosaick filter" StrSize = "" StrSize = InputBox("Input size of neighbour ( 1 - 10 )", "Mean _ Filter") If StrSize <> "" Then If isNumber(StrSize) And StrSize <= 10 Then Call FilterG(iSMOOTHMOZAICK, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
66
Private Sub MnuSmoothSmearing_Click() On Error GoTo ErrHandler StatusBar1.SimpleText = "Smoothing image using smearing filter" StrSize = "" StrSize = InputBox("Input size of neighbour ( 1 - 10 ) ", _ "Smearing Filter") If StrSize <> "" Then If isNumber(StrSize) And StrSize <= 10 Then Call FilterG(iSMOOTHSMEARING, Picture1.Image, 0) Call BitBlt(Me.HDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture1.HDC, 0, 0, SRCCOPY) Me.Refresh Else MsgBox "Please put proper value" End If End If Exit Sub ErrHandler: MsgBox "Please put proper value" End Sub
6. Data User Option Explicit Dim rsPasswd As Recordset Dim rsSimpan As Recordset Dim rsCari As Recordset Dim rsUbah As Recordset Dim rsHapus As Recordset Dim rsSegar As Recordset Dim tambah As Boolean Dim Cari As Boolean Dim ubah As Boolean Dim CN As Connection Private Sub cmdBatal_Click() txtUid.Text = "" txtPass.Text = "" ubah = False tambah = False Cari = False cmdRubah.Enabled = False cmdHapus.Enabled = False cmdcari.Enabled = True cmdtambah.Enabled = True cmdtambah.SetFocus End Sub Sub segar() Set rsSegar = New ADODB.Recordset rsSegar.Open "Select * from [User] order by UserId asc", CN, 1, 2 Adodc2.Refresh grid.Refresh End Sub Private Sub cmdcari_Click() Cari = True cmdtambah.Enabled = False cmdcari.Enabled = False txtUid.Locked = False txtUid.SetFocus Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
67
End Sub Sub Bersih() txtUid.Text = "" txtPass.Text = "" End Sub Private Sub CmdHapus_Click() rsCari.Delete and passwd='" & txtPass.Text & "'", CN, adOpenDynamic, _ adLockOptimistic txtUid.Text = "" txtPass.Text = "" segar MsgBox "User sudah di hapus ..." cmdRubah.Enabled = False cmdHapus.Enabled = False cmdcari.Enabled = True cmdtambah.Enabled = True cmdtambah.SetFocus End Sub Private Sub cmdKeluar_Click() Unload Me End Sub Private Sub CmdRubah_Click() ubah = True cmdRubah.Enabled = False cmdHapus.Enabled = False txtPass.Locked = False txtPass.SetFocus End Sub Private Sub cmdtambah_Click() tambah = True cmdtambah.Enabled = False cmdcari.Enabled = False txtUid.Locked = False txtUid.SetFocus End Sub Private Sub Form_Activate() txtPass.Locked = True txtUid.Locked = True cmdRubah.Enabled = False cmdHapus.Enabled = False cmdtambah.SetFocus End Sub Sub mati() txtPass.Locked = True txtUid.Locked = True cmdRubah.Enabled = False cmdHapus.Enabled = False End Sub Private Sub Form_Load() Set CN = New ADODB.Connection CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; _ Data Source=" & App.Path & "\dbWajah.mdb" Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
68
CN.CursorLocation = adUseClient CN.Open End Sub Private Sub txtPass_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Set rsPasswd = New ADODB.Recordset rsPasswd.Open "Select * from [User] where UserId='" & _ txtUid.Text & "' and passwd='" & txtPass.Text & "'", CN, _ adOpenDynamic, adLockOptimistic If tambah = True Then If rsPasswd.EOF = True Then Set rsSimpan = New ADODB.Recordset rsSimpan.Open "select * from [User]", CN, _ adOpenDynamic, adLockOptimistic rsSimpan.AddNew rsSimpan.Fields("UserId") = txtUid.Text rsSimpan.Fields("Passwd") = txtPass.Text rsSimpan.Update txtUid.Text = "" txtPass.Text = "" MsgBox "Data sudah tersimpan" tambah = False mati segar Bersih cmdtambah.Enabled = True cmdcari.Enabled = True cmdtambah.SetFocus Else MsgBox "User sudah ada ..." txtPass.Text = "" txtUid.Text = "" txtUid.SetFocus End If ElseIf ubah = True Then Set rsUbah = New ADODB.Recordset rsUbah.Open "Update User Set passwd ='" & _ txtPass.Text & "' where UserId ='" & txtUid.Text & "'", CN, _ adOpenDynamic, adLockOptimistic txtUid.Text = "" txtPass.Text = "" MsgBox "Data sudah Ubah" ubah = False mati Bersih segar cmdtambah.Enabled = True cmdcari.Enabled = True cmdtambah.SetFocus End If End If End Sub
Private Sub txtUid_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If tambah = True Then Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
69
Set rsCari = New ADODB.Recordset rsCari.Open "Select * from [User] where UserId='" & _ txtUid.Text & "'", CN, adOpenDynamic, adLockOptimistic If rsCari.EOF = True Then txtPass.Locked = False txtPass.SetFocus Else MsgBox "User sudah ada ..." txtUid.Text = "" txtPass.Text = "" txtUid.SetFocus End If ElseIf Cari = True Then Set rsCari = New ADODB.Recordset rsCari.Open "Select * from [User] where UserId='" & _ txtUid.Text & "'", CN, adOpenDynamic, adLockOptimistic If rsCari.EOF = True Then MsgBox "User belum ada ..." txtUid.Text = "" txtUid.SetFocus Else txtPass.Text = rsCari.Fields("passwd") cmdRubah.Enabled = True cmdHapus.Enabled = True cmdRubah.SetFocus End If End If End If End Sub 7. About Private Sub cmdExit_Click() Unload Me End Sub 8. Help Private Sub cmdExit_Click() Unload Me End Sub Private Sub Form_Unload(Cancel As Integer) Me.Hide Unload Me End Sub 9. Module-1 Function is1Number(Chr As String) As Boolean Dim Ans As Boolean If Asc(Chr) >= 48 And Asc(Chr) <= 57 Then Ans = True Else Ans = False End If is1Number = Ans End Function Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
70
Function isNumber(MyStr As String) As Boolean Dim Ans As Boolean Dim MyBool As Boolean Ans = True For a = 1 To Len(MyStr) MyBool = is1Number(Mid(MyStr, a, 1)) If MyBool = False Then Ans = False End If Next isNumber = Ans End Function 10. Module-2 'Windows API Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _ ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal _ nHeight As Long, ByVal hSrcDC As Long, ByVal XSrc As Long, ByVal _ YSrc As Long, ByVal dwRop As Long) As Long Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long _ , ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans _ As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) _ As Long Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal HDC _ As Long) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal HDC As _ Long, ByVal hObject As Long) As Long Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" _ (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As _ Long Private Declare Function SetDIBits Lib "gdi32" (ByVal HDC As Long, _ ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans _ As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) _ As Long Public WorkFilterG As Boolean Public Const SRCCOPY = &HCC0020 Public Enum iFilterG iGREYSCALE = 1 iINVERT = 2 iBRIGHTNESSADD = 3 iBRIGHTNESSSCALE = 4 iBRIGHTNESSMUL = 5 iSMOOTHMEAN = 6 iSMOOTHMEDIAN = 7 iSMOOTHMOZAICK = 8 iSMOOTHSMEARING = 9 iNOISESALT = 10 iNOISEPEPPER = 11 iNOISEBOTH = 12 End Enum Private iDATA() As Byte Private iTmpDATA() As Byte Private PicInfo As BITMAP Private DIBInfo As BITMAPINFO Private Type BITMAP bmType As Long bmWidth As Long bmHeight As Long Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
71
bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type Type BITMAPINFOHEADER biSize As Long biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long biSizeImage As Long biXPelsPerMeter As Long biYPelsPerMeter As Long biClrUsed As Long biClrImportant As Long End Type Type RGBQUAD rgbBlue As Byte rgbGreen As Byte rgbRed As Byte rgbReserved As Byte End Type Type BITMAPINFO bmiHeader As BITMAPINFOHEADER bmiColors As RGBQUAD End Type Call FilterG(iGREYSCALE, Picture1.Image, 0, mProgress) Public Sub FilterG(Filtro As iFilterG, Pic As Long, Factor As Long) On Error GoTo FilterError: Dim hdcNew As Long Dim oldhand As Long Dim ret As Long If WorkFilterG = True Then Exit Sub WorkFilterG = True Call GetObject(Pic, Len(PicInfo), PicInfo) hdcNew = CreateCompatibleDC(0&) oldhand = SelectObject(hdcNew, Pic) With DIBInfo.bmiHeader .biSize = 40 .biWidth = PicInfo.bmWidth .biHeight = PicInfo.bmHeight .biPlanes = 1 .biBitCount = 32 End With ReDim iTmpDATA(1 To 4, 1 To PicInfo.bmWidth, 1 To PicInfo.bmHeight) _ As Byte BMP info, Usage ret = GetDIBits(hdcNew, Pic, 0, PicInfo.bmHeight, iDATA(1, 1, 1), _ DIBInfo, DIB_RGB_COLORS) Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
72
Select Case Filtro Case iGREYSCALE: Call GreyScale Case iINVERT: Call Invert Case iBRIGHTNESSADD: Call Brightness(1) Case iBRIGHTNESSSCALE: Call Brightness(2) Case iBRIGHTNESSMUL: Call Brightness(3) Case iSMOOTHMEAN: Call Smooth(1) Case iSMOOTHMEDIAN: Call Smooth(2) Case iSMOOTHMOZAICK: Call Smooth(3) Case iSMOOTHSMEARING: Call Smooth(4) Case iNOISESALT: Call Noise(1) Case iNOISEPEPPER: Call Noise(2) Case iNOISEBOTH: Call Noise(3) End Select ret = SetDIBits(hdcNew, Pic, 0, PicInfo.bmHeight, iDATA(1, 1, 1), _ DIBInfo, DIB_RGB_COLORS) WorkFilterG = False Exit Sub FilterError: MsgBox "Filter Error" WorkFilterG = False End Sub Private Sub GreyScale() Dim X As Long, Y As Long Dim R As Long, G As Long, B As Long FrmMain.ProgressBar1.Value = 0 FrmMain.ProgressBar1.Max = PicInfo.bmHeight ValData = 0 For Y = 1 To PicInfo.bmHeight For X = 1 To PicInfo.bmWidth R = iDATA(1, X, Y) G = iDATA(2, X, Y) B = iDATA(3, X, Y) B = (R + G + B) / 3 iDATA(1, X, Y) = B iDATA(2, X, Y) = B iDATA(3, X, Y) = B Next X ValData = ValData + 1 If ValData <= FrmMain.ProgressBar1.Max Then FrmMain.ProgressBar1.Value = ValData Else FrmMain.ProgressBar1.Value = FrmMain.ProgressBar1.Max End If Next Y End Sub Private Sub Invert() Dim X As Long, Y As Long Dim R As Long, G As Long, B As Long FrmMain.ProgressBar1.Value = 0 FrmMain.ProgressBar1.Max = PicInfo.bmHeight ValData = 0 For Y = 1 To PicInfo.bmHeight For X = 1 To PicInfo.bmWidth R = iDATA(1, X, Y) Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
73
G = iDATA(2, X, Y) B = iDATA(3, X, Y) R = 255 - R G = 255 - G B = 255 - B If R < 0 Then R = 0 End If If G < 0 Then G = 0 End If If B < 0 Then B = 0 End If iDATA(1, X, Y) = R iDATA(2, X, Y) = G iDATA(3, X, Y) = B Next X ValData = ValData + 1 If ValData <= FrmMain.ProgressBar1.Max Then FrmMain.ProgressBar1.Value = ValData Else FrmMain.ProgressBar1.Value = FrmMain.ProgressBar1.Max End If Next Y End Sub Private Sub GetMean(iCol As Integer, X As Long, Y As Long, _ NeighbourSize As Integer) Dim ColData As Long TotData = ((NeighbourSize * NeighbourSize + NeighbourSize) * 4) + 1 ColData = 0 For Cnt1 = -NeighbourSize To NeighbourSize For Cnt2 = -NeighbourSize To NeighbourSize ColData = ColData + iTmpDATA(iCol, X + Cnt2, Y + Cnt1) Next Next ColData = ColData / TotData iDATA(iCol, X, Y) = ColData End Sub Private Sub GetMedian(iCol As Integer, X As Long, Y As Long, _ NeighbourSize As Integer) Dim TmpData(0 To 511) As Long Dim ColData As Long TotData = ((NeighbourSize * NeighbourSize + NeighbourSize) * 4) + 1 ColData = 0 For Cnt1 = -NeighbourSize To NeighbourSize For Cnt2 = -NeighbourSize To NeighbourSize TmpData(ColData) = iTmpDATA(iCol, X + Cnt2, Y + Cnt1) ColData = ColData + 1 Next Next Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
74
For Cnt1 = 0 To ColData - 2 Smallest = TmpData(Cnt1) For Cnt2 = Cnt1 + 1 To ColData - 1 If Smallest < TmpData(Cnt2) Then Tmp1 = TmpData(Cnt1) TmpData(Cnt1) = TmpData(Cnt2) TmpData(Cnt2) = Tmp1 End If Next Next iDATA(iCol, X, Y) = TmpData(ColData / 2) End Sub Private Sub GetMozaick(iCol As Integer, X As Long, Y As Long, _ NeighbourSize As Integer) TotData = ((NeighbourSize * NeighbourSize + NeighbourSize) * 4) + 1 ColData = 0 For Cnt1 = -NeighbourSize To NeighbourSize For Cnt2 = -NeighbourSize To NeighbourSize ColData = ColData + iTmpDATA(iCol, X + Cnt2, Y + Cnt1) Next Next ColData = ColData / TotData For Cnt1 = -NeighbourSize To NeighbourSize For Cnt2 = -NeighbourSize To NeighbourSize iDATA(iCol, X + Cnt2, Y + Cnt1) = ColData Next Next End Sub Private Sub GetSmearing(iCol As Integer, X As Long, Y As Long, _ NeighbourSize As Integer) Rnd1 = Round(Rnd(1) * (NeighbourSize * 2) - NeighbourSize, 0) Rnd2 = Round(Rnd(1) * (NeighbourSize * 2) - NeighbourSize, 0) iDATA(iCol, X, Y) = iTmpDATA(iCol, X + Rnd1, Y + Rnd2) End Sub Private Sub Smooth(SmoothType As Integer) Dim X As Long, Y As Long Dim R As Long, G As Long, B As Long Dim iCol As Integer, NeighbourSize As Integer NeighbourSize = FrmMain.StrSize 'NumofTmpData = NeighbourSize * NeighbourSize * 4 FrmMain.ProgressBar1.Value = 0 FrmMain.ProgressBar1.Max = (PicInfo.bmHeight - 1 - (FrmMain.StrSize _ * 2)) * 3 ValData = 0 iTmpDATA = iDATA For iCol = 1 To 3 For Y = NeighbourSize + 1 To PicInfo.bmHeight - NeighbourSize - _ 1 For X = NeighbourSize + 1 To PicInfo.bmWidth – NeighbourSize _ - 1 Select Case SmoothType Case 1: Call GetMean(iCol, X, Y, NeighbourSize) Case 2: Call GetMedian(iCol, X, Y, NeighbourSize) Case 3: Call GetMozaick(iCol, X, Y, NeighbourSize) _ X = X + NeighbourSize Case 4: Call GetSmearing(iCol, X, Y, NeighbourSize) Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
75
End Select Next ValData = ValData + 1 If ValData <= FrmMain.ProgressBar1.Max Then FrmMain.ProgressBar1.Value = ValData Else FrmMain.ProgressBar1.Value = FrmMain.ProgressBar1.Max End If Next If SmoothType = 3 Then Y = Y + NeighbourSize End If Next End Sub Private Sub Noise(NoiseType As Integer) TotalPercent = FrmMain.StrPercent TotalPixel = (PicInfo.bmHeight - 1) * (PicInfo.bmWidth - 1) TotalNoise = Round(TotalPercent / 100 * TotalPixel, 0) FrmMain.ProgressBar1.Value = 0 FrmMain.ProgressBar1.Max = TotalNoise ValData = 0 For Cnt1 = 1 To TotalNoise Rnd1 = Round(Rnd(1) * (PicInfo.bmHeight - 1), 0) + 1 Rnd2 = Round(Rnd(1) * (PicInfo.bmWidth - 1), 0) + 1 If NoiseType = 1 Then iDATA(1, Rnd2, Rnd1) = 1 iDATA(2, Rnd2, Rnd1) = 1 iDATA(3, Rnd2, Rnd1) = 1 End If If NoiseType = 2 Then iDATA(1, Rnd2, Rnd1) = 254 iDATA(2, Rnd2, Rnd1) = 254 iDATA(3, Rnd2, Rnd1) = 254 End If If NoiseType = 3 Then If Cnt1 Mod 2 = 0 Then iDATA(1, Rnd2, Rnd1) = iDATA(2, Rnd2, Rnd1) = iDATA(3, Rnd2, Rnd1) = Else iDATA(1, Rnd2, Rnd1) = iDATA(2, Rnd2, Rnd1) = iDATA(3, Rnd2, Rnd1) = End If End If ValData = ValData + 1
254 254 254 1 1 1
If ValData <= FrmMain.ProgressBar1.Max Then FrmMain.ProgressBar1.Value = ValData Else FrmMain.ProgressBar1.Value = FrmMain.ProgressBar1.Max End If Next End Sub Private Sub Brightness(BrightnessType As Integer) Dim NewVal As Long FrmMainProgressBar1.Value = 0 Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
76
FrmMain.ProgressBar1.Max = (PicInfo.bmHeight - 1) * 3 ValData = 0 For iCol = 1 To 3 For Y = 1 To PicInfo.bmHeight - 1 For X = 1 To PicInfo.bmWidth - 1 If BrightnessType = 1 Then NewVal = iDATA(iCol, X, Y) + FrmMain.StrVal End If If BrightnessType = 2 Then NewVal = iDATA(iCol, X, Y) * FrmMain.StrVal End If If BrightnessType = 3 Then NewVal = iDATA(iCol, X, Y) NewVal = NewVal * iDATA(iCol, X, Y) End If If NewVal < 255 Then iDATA(iCol, X, Y) = NewVal Else iDATA(iCol, X, Y) = 254 End If Next ValData = ValData + 1 If ValData <= FrmMain.ProgressBar1.Max Then FrmMain.ProgressBar1.Value = ValData Else FrmMain.ProgressBar1.Value = FrmMain.ProgressBar1.Max End If Next Next End Sub 11. Module-3 Option Base 1 Option Explicit Const e = 2.7183 Private Type Dendrite allows signal to pass from it Weight As Double End Type Private Type Neuron Dendrites() As Dendrite DendriteCount As Long Bias As Double Value As Double Delta As Double End Type Private Type Layer Neurons() As Neuron NeuronCount As Long End Type Private Type NeuralNetwork Layers() As Layer LayerCount As Long LearningRate As Double End Type Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
77
Dim Network As NeuralNetwork Function CreateNet(LearningRate As Double, ArrayOfLayers As Variant) _ As Integer '0 = Unsuccesful and 1 = Successful Dim i, j, k As Integer Network.LayerCount = UBound(ArrayOfLayers) 'Init number of layers If Network.LayerCount < 2 Then 'Input and output layers must be _ there CreateNet = 0 'Unsuccessful Exit Function End If Network.LearningRate = LearningRate 'The learning rate ReDim Network.Layers(Network.LayerCount) As Layer 'Redim the layers _ variable For i = 1 To UBound(ArrayOfLayers) ' Initialize all layers DoEvents Network.Layers(i).NeuronCount = ArrayOfLayers(i) ReDim Network.Layers(i).Neurons(Network.Layers(i).NeuronCount) As Neuron For j = 1 To ArrayOfLayers(i) 'Initialize all neurons DoEvents If i = UBound(ArrayOfLayers) Then 'We will not init _ dendrites for it because output layers doesn't have any Network.Layers(i).Neurons(j).Bias = GetRand 'Set the _ bias to random value Network.Layers(i).Neurons(j).DendriteCount = _ ArrayOfLayers(i - 1) ReDim Network.Layers(i).Neurons(j).Dendrites(Network.Layers(i).Neurons(j). _DendriteCount) As Dendrite 'Redim the dendrite var For k = 1 To ArrayOfLayers(i - 1) DoEvents Network.Layers(i).Neurons(j).Dendrites(k).Weight = _ GetRand 'Set the weight of each dendrite Next k ElseIf i = 1 Then DoEvents Else Network.Layers(i).Neurons(j).Bias = GetRand Network.Layers(i).Neurons(j).DendriteCount = _ ArrayOfLayers(i - 1) ReDim Network.Layers(i).Neurons(j).Dendrites(Network.Layers(i).Neurons(j). _DendriteCount) As Dendrite 'Redim the dendrite var For k = 1 To ArrayOfLayers(i - 1) DoEvents Network.Layers(i).Neurons(j).Dendrites(k).Weight = _ GetRand 'Set the weight of each dendrite Next k End If Next j Next i CreateNet = 1 End Function Function Run(ArrayOfInputs As Variant) As Variant 'It returns the _ output inf form of array Dim i, j, k As Integer If UBound(ArrayOfInputs) <> Network.Layers(1).NeuronCount Then Run = 0 Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
78
Exit Function End If For i = 1 To Network.LayerCount If i Mod 11 = 0 Then DoEvents For j = 1 To Network.Layers(i).NeuronCount If j Mod 11 = 0 Then DoEvents If i = 1 Then Network.Layers(i).Neurons(j).Value = ArrayOfInputs(j) Else Network.Layers(i).Neurons(j).Value = 0 For k = 1 To Network.Layers(i - 1).NeuronCount If k Mod 11 = 0 Then DoEvents Network.Layers(i).Neurons(j).Value = _ Network.Layers(i).Neurons(j).Value + Network.Layers(i 1).Neurons(k).Value * Network.Layers(i).Neurons(j).Dendrites(k).Weight 'Calculating the _ value Next k Network.Layers(i).Neurons(j).Value = _ Activation(Network.Layers(i).Neurons(j).Value + _ Network.Layers(i).Neurons(j).Bias) 'Calculating the real value of _ neuron 'Network.Layers(i).Neurons(j).Value = tanh(Network.Layers(i).Neurons(j).Value + Network.Layers(i).Neurons(j).Bias) 'Calculating the real value of _ neuron End If Next j Next i ReDim OutputResult(Network.Layers(Network.LayerCount).NeuronCount) _ As Double For i = 1 To (Network.Layers(Network.LayerCount).NeuronCount) If i Mod 11 = 0 Then DoEvents OutputResult(i) = _ (Network.Layers(Network.LayerCount).Neurons(i).Value) Next i Run = OutputResult End Function Function SupervisedTrain(inputdata As Variant, outputdata As _ Variant) As Integer '0=unsuccessful and 1 = sucessful Dim i, j, k As Integer If UBound(inputdata) <> Network.Layers(1).NeuronCount Then SupervisedTrain = 0 Exit Function End If If UBound(outputdata) <> _ Network.Layers(Network.LayerCount).NeuronCount Then SupervisedTrain = 0 Exit Function End If Call Run(inputdata) 'Calculate delta's For i = 1 To Network.Layers(Network.LayerCount).NeuronCount If i Mod 11 = 0 Then DoEvents Network.Layers(Network.LayerCount).Neurons(i).Delta = _ Network.Layers(Network.LayerCount).Neurons(i).Value * (1 - _ Network.Layers(Network.LayerCount).Neurons(i).Value) * _ Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
79
(outputdata(i) - Network.Layers(Network.LayerCount).Neurons(i).Value) 'Deltas of _ Output layer For j = Network.LayerCount - 1 To 2 Step -1 If j Mod 11 = 0 Then DoEvents For k = 1 To Network.Layers(j).NeuronCount If k Mod 11 = 0 Then DoEvents Network.Layers(j).Neurons(k).Delta = _ Network.Layers(j).Neurons(k).Value * (1 - _ Network.Layers(j).Neurons(k).Value) * Network.Layers(j + _ 1).Neurons(i).Dendrites(k).Weight * Network.Layers(j + _ 1).Neurons(i).Delta 'Deltas of Hidden Layers Next k Next j Next i
For i = Network.LayerCount To 2 Step -1 If i Mod 11 = 0 Then DoEvents For j = 1 To Network.Layers(i).NeuronCount If j Mod 11 = 0 Then DoEvents Network.Layers(i).Neurons(j).Bias = _ Network.Layers(i).Neurons(j).Bias + (Network.LearningRate * 1 * _ Network.Layers(i).Neurons(j).Delta) 'Calculate new bias For k = 1 To Network.Layers(i).Neurons(j).DendriteCount If k Mod 11 = 0 Then DoEvents Network.Layers(i).Neurons(j).Dendrites(k).Weight = _ Network.Layers(i).Neurons(j).Dendrites(k).Weight + _ (Network.LearningRate * Network.Layers(i - 1).Neurons(k).Value * _ Network.Layers(i).Neurons(j).Delta) 'Calculate new weights Next k Next j Next i SupervisedTrain = 1 End Function Function tanh(X As Double) As Double tanh = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X)) End Function Private Function Activation(Value As Double) Activation = (1 / (1 + Exp(Value * -1))) End Function Function GetRand() As Double 'Produces a number between -1 and 1 Randomize GetRand = 2 - (1 + Rnd + Rnd) End Function Sub EraseNetwork() Erase Network.Layers End Sub Function SaveNet(FilePath As String) As Integer ' 1 = successful, 0 _ =unsucessful Dim i, j, k As Integer Open FilePath For Output As #1 Print #1, "START Learning Rate" Print #1, Network.LearningRate Print #1, "END Learning Rate" Print #1, "START Layer Count" Print #1, Network.LayerCount Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
80
Print #1, "END Layer Count" Print #1, "START Input Layer Neuron Count" Print #1, Network.Layers(1).NeuronCount Print #1, "END Input Layer Neuron Count" For i = 2 To Network.LayerCount Print #1, "START Next Layer" Print #1, "START Neuron Count" Print #1, Network.Layers(i).NeuronCount Print #1, "END Neuron Count" For j = 1 To Network.Layers(i).NeuronCount Print #1, "START Neuron" Print #1, "START Bias" Print #1, Network.Layers(i).Neurons(j).Bias Print #1, "END Bias" Print #1, "START Dendrites" For k = 1 To Network.Layers(i).Neurons(j).DendriteCount Print #1, _ Network.Layers(i).Neurons(j).Dendrites(k).Weight Next k Print #1, "END Dendrites" Print #1, "END Neuron" Next j Print #1, "END Layer" Next i Close #1 SaveNet = 1 End Function Function LoadNet(FilePath As String) As Integer ' 1 = successful, 0 _ =unsucessful Dim Data, DataMain As String Dim LayerTrack, NeuronTrack As Long Dim i As Long If FileExists(FilePath) = 0 Then LoadNet = 0 'File doest not exists Exit Function End If Dim FF FF = FreeFile Open FilePath For Input As #FF Do While Not EOF(1) DoEvents Line Input #FF, Data Select Case Data Case "START Learning Rate": Line Input #FF, DataMain Network.LearningRate = CDbl(DataMain) Case "START Layer Count": Line Input #FF, DataMain Network.LayerCount = CLng(DataMain) ReDim Network.Layers(Network.LayerCount) As Layer Case "START Input Layer Neuron Count": 'Input layer LayerTrack = 1 Line Input #FF, DataMain Network.Layers(1).NeuronCount = CLng(DataMain) ReDim Network.Layers(1).Neurons(Network.Layers(1).NeuronCount) As Neuron Case "START Neuron Count": LayerTrack = LayerTrack + 1 Line Input #FF, DataMain Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
81
Network.Layers(LayerTrack).NeuronCount = CLng(DataMain) ReDim Network.Layers(LayerTrack).Neurons(Network.Layers(LayerTrack).Neuron _Count) As Neuron Case "START Bias": NeuronTrack = NeuronTrack + 1 Line Input #FF, DataMain Network.Layers(LayerTrack).Neurons(NeuronTrack).Bias = _ CDbl(DataMain) Network.Layers(LayerTrack).Neurons(NeuronTrack).DendriteCount = _ Network.Layers(LayerTrack - 1).NeuronCount ReDim Network.Layers(LayerTrack).Neurons(NeuronTrack).Dendrites(Network.La _yers(LayerTrack).Neurons(NeuronTrack).DendriteCount) As Dendrite Case "START Dendrites": For i = 1 To _ Network.Layers(LayerTrack).Neurons(NeuronTrack).DendriteCount DoEvents Line Input #FF, DataMain Network.Layers(LayerTrack).Neurons(NeuronTrack).Dendrites(i).Weight _ = CDbl(DataMain) Next i Case "END Layer": NeuronTrack = 0 Case Else DoEvents End Select Loop Close #FF LayerTrack = 0 NeuronTrack = 0 LoadNet = 1 End Function Private Function FileExists(ByVal strPathName As String) As Integer Dim intFileNum As Integer On Error Resume Next If Right$(strPathName, 1) = "\" Then strPathName = Left$(strPathName, Len(strPathName) - 1) End If intFileNum = FreeFile Open strPathName For Input As intFileNum FileExists = IIf(Err, False, True) Close intFileNum Err = 0 End Function
12. Module-4 Private Declare Function GetTempFileName Lib "kernel32" Alias _ "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString _ As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As _Long Private Declare Function GetTempPath Lib "kernel32" Alias _ "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As _ String) As Long Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
82
Public Const MAX_PATH = 260 Public Const BLOCK_SIZE = 10000
Public Sub FillPhoto(rstMain As Recordset, PFName As String, picEmp _ As PictureBox) 'Public Sub FillPhoto(rstMain As Recordset, PFName As String, picEmp _ As PictureBox) On Error GoTo Handler Dim bytes() As Byte Dim file_name As String Dim file_num As Integer Dim file_length As Long Dim num_blocks As Long Dim left_over As Long Dim block_num As Long Dim hgt As Single 'me.imgPhoto.Visible = False Screen.MousePointer = vbHourglass DoEvents file_name = TemporaryFileName() file_num = FreeFile Open file_name For Binary As #file_num num_blocks = file_length / BLOCK_SIZE left_over = file_length Mod BLOCK_SIZE For block_num = 1 To num_blocks Put #file_num, , bytes() Next block_num If left_over > 0 Then bytes() = rstMain(PFName).GetChunk(left_over) Put #file_num, , bytes() End If Close #file_num picEmp.Picture = LoadPicture(file_name) Screen.MousePointer = vbDefault Exit Sub Handler: Debug.Print Err.Description Resume Next End Sub Public Sub GetPhoto(FileName As String, rstMain As Recordset, _ FieldName As String) On Error GoTo Handler Dim file_num As String Dim file_length As Long Dim bytes() As Byte Dim num_blocks As Long Dim left_over As Long Dim block_num As Long file_num = FreeFile Open FileName For Binary Access Read As #file_num file_length = LOF(file_num) If file_length > 0 Then num_blocks = file_length / BLOCK_SIZE Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
83
left_over = file_length Mod BLOCK_SIZE rstMain(SizeField) = file_length ReDim bytes(BLOCK_SIZE) For block_num = 1 To num_blocks Get #file_num, , bytes() rstMain(FieldName).AppendChunk bytes() Next block_num If left_over > 0 Then ReDim bytes(left_over) Get #file_num, , bytes() rstMain(FieldName).AppendChunk bytes() End If Close #file_num End If Exit Sub Handler: MsgBox Err.Description Resume Debug.Print Err.Description End Sub Public Function TemporaryFileName() As String Dim temp_path As String Dim temp_file As String Dim length As Long temp_path = VBA.Space$(MAX_PATH) length = GetTempPath(MAX_PATH, temp_path) temp_path = Left$(temp_path, length) temp_file = VBA.Space$(MAX_PATH) GetTempFileName temp_path, "per", 0, temp_file TemporaryFileName = Left$(temp_file, InStr(temp_file, _ VBA.Chr$(0)) - 1) End Function Public Sub UnRGB(ByVal color As OLE_COLOR, ByRef R As Integer, ByRef _ G As Integer, ByRef B As Integer) B = color \ 65536 G = (color \ 256) Mod 256 R = color Mod 256 End Sub Public Sub SetBrightness(ByVal Pic1 As PictureBox, ByVal Pic2 As _ PictureBox, ByVal Brightness As Single) Dim fraction As Single Dim X As Integer Dim Y As Integer Dim R As Integer Dim G As Integer Dim B As Integer If Brightness < 0 Then ' Darken. fraction = (100 + Brightness) / 100 For Y = 0 To Pic1.ScaleHeight - 1 For X = 0 To Pic1.ScaleWidth - 1 Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.
84
'DoEvents UnRGB Pic1.Point(X, Y), R, G, B R = R * fraction G = G * fraction B = B * fraction Pic2.PSet (X, Y), RGB(R, G, B) Next X Next Y Else ' Brighten. fraction = Brightness / 100 For Y = 0 To Pic1.ScaleHeight - 1 For X = 0 To Pic1.ScaleWidth - 1 'DoEvents UnRGB Pic1.Point(X, Y), R, G, B R = R + (255 - R) * fraction G = G + (255 - G) * fraction B = B + (255 - B) * fraction Pic2.PSet (X, Y), RGB(R, G, B) Next X Next Y End If Pic2.Picture = Pic2.Image End Sub 13. Module-5
Declare Function GetPixel Lib "gdi32" (ByVal HDC As Long, ByVal X As _ Long, ByVal Y As Long) As Long Declare Function SetPixelV Lib "gdi32" (ByVal HDC As Long, ByVal X _ As Long, ByVal Y As Long, ByVal crColor As Long) As Long Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X _ As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As _ Long, ByVal hSrcDC As Long, ByVal XSrc As Long, ByVal YSrc As Long, _ ByVal dwRop As Long) As Long 14. Module-6 Public Function GetVersion(strApp As String) _ As String GetVersion = strApp & " " & _ Format(App.Major, "#0") & "." & _ Format(App.Minor, "#00") & "." & _ Format(App.Revision, "0000") End Function
Lestya Dila Rahma : Pengenalan Wajah Berdasarkan Pengolahan Citra Digital Dengan Metode Gabor Wavelet, 2010.