SKRIPSI
Disusun Oleh : Mukhlis NIM : 108091000062
PROGRAM SARJANA (S1) KOMPUTER PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA
i
SKRIPSI
Diajukan sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
Pada Program Studi Teknik Informatika
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Disusun Oleh : Mukhlis NIM : 108091000062
PROGRAM SARJANA (S1) KOMPUTER PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA
iv
HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI
ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA
MANAPUN.
Jakarta, Juni 2015
v
Transform Untuk Pengenalan Wajah Pada Citra Sketsa ABSTRAK
Skripsi ini membahas penggunaan algoritma Affine Scale Invariant Feature Transform dalam mengekstraksi ciri khusus (feature) yang terdapat dalam citra sketsa dan foto. Dari ciri feature tersebut akan dicari kecocokkan antara citra sketsa dan foto. Sehingga foto hasil identifikasi dapat memiliki wajah yang sama atau setidaknya mirip dengan wajah pada citra sketsa. Hasil dari penelitian ini menunjukkan bahwa metode Affine Scale Invariant Feature Transform dapat mengidentifikasi feature dengan baik, ini terlihat dari banyaknya feature yang dihasilkan. Hasil pencocokkan dari sample yang digunakan menunjukkan bahwa metode Affine Scale Invariant Feature Transform dapat digunakan untuk mengidentifikasi wajah pada citra sketsa.
vi
kekuatan, juga segala petunjuk dan kemudahan sehingga penulis dapat
menyelesaikan penulisan skripsi ini. Shalawat serta salam selalu kita haturkan
kepada junjungan kita Nabi besar Muhammad SAW beserta keluarganya, para
sahabatnya, dan para pengikutnya.
Skripsi ini berjudul ”Implementasi Algoritma Affine Scale Invariant Feature Transform Untuk Pengenalan Wajah Pada Citra Sketsa”, yang disusun untuk memenuhi salah satu syarat dalam menyelesaikan program S1 pada
Program Studi Teknik Informatika di Universitas Islam Negeri Syarif
Hidayatullah Jakarta.
Pada kesempatan yang berbahagia ini, penulis mengucapkan terima kasih
kepada:
1. Ibu A. Hanifa Setianingrum, M.Si. selaku Pembimbing I dan Bapak Victor
Amrizal, M.Kom selaku Pembimbing II, yang senantiasa meluangkan waktu
ditengah-tengah berbagai kesibukan dan aktifitasnya untuk membimbing
penulis dalam menyelesaikan skripsi ini.
2. Ibu Arini, ST., MT. selaku Ketua Program Studi Teknik Informatika, Bapak
Feri Fahrianto, M.Sc. selaku Sekretaris Program Studi Teknik Informatika,
dan Bapak Dr. Agus Salim, M.Si., selaku Dekan Fakultas Sains dan
vii
4. Kepada semua dosen Program Studi Teknik Informatika yang telah
membimbing penulis untuk menambah wawasan mengenai pengetahuan di
bidang teknik informatika.
5. Umi dan Abi yang selalu memberikan dukungan kepada penulis berupa moril,
materil, semangat, kasih sayang, dan doa yang tiada hentinya.
6. Sanak Famili yang turut memberikan motivasinya kepada penulis.
7. Teman-teman TI B 2008, TI Software Engineering 2008, dan TI UIN 2008 yang telah berjuang bersama dalam menempuh pendidikan di Prodi Teknik
Infomatika, Universitas Islam Negeri Syarif Hidayatullah Jakarta.
8. Akhirnya, penulis berharap semoga skripsi ini dapat bermanfaat. Saran dan
kritik untuk kesempurnaan skripsi ini dapat disampaikan melalui email
Jakarta, 20 Mei 2015
Mukhlis
viii
HALAMAN JUDUL ... i
LEMBAR PENGESAHAN SKRIPSI ... ii
LEMBAR PENGESAHAN UJIAN ... iii
LEMBAR PERNYATAAN ... iv
ABSTRAK ... v
KATA PENGANTAR ... vi
DAFTAR ISI ... viii
DAFTAR GAMBAR ... xi
DAFTAR TABEL ... xiii
BAB I PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Rumusan Permasalahan ... 2
1.3. Batasan Masalah ... 2
1.4. Tujuan Penelitian ... 3
1.5. Manfaat Penelitian ... 3
1.6. Sistematika Peneliatian ... 4
BAB II LANDASAN TEORI ... 5
2.1. Pengolahan Citra Digital ... 5
2.2. Scale Infariant Feature Transform(SIFT) ... 6
ix
2.3. Affine Transformation ... 13
2.4. Affine Scale Invariant Feature Transform ... 14
2.3.1. Algoritma ASIFT ... 16
2.5. Matlab ... 17
2.6. Metode Prototyping ... 19
2.7. Falase Acceptance Rate(FAR), False Rejection Rate(FRR) dan Equal Erorr Rate(EER) ... 23
BAB III METODOLOGI PENELITIAN ... 24
3.1. Metode Pengumpulan Data ... 24
3.1.1. Studi Pustaka ... 24
3.1.2. Penelitian Sejenis ... 25
3.2. Metode Pengembangan Prototipe ... 26
3.2.1 Pengumpulan Kebutuhan ... 27
3.2.1.1 Analisa Sistem ... 27
3.2.1.2 Identifikasi Masalah ... 27
3.2.1.3 Usulan Penyelesaian Masalah ... 27
3.2.1.4 Kebutuhan Perangkat Lunak dan Perangkat Keras ... 27
3.2.2 Membangun Prototype ... 28
3.2.2.1. Desain Image Processing ... 28
x
BAB IV PEMBAHASAN DAN HASIL ... 31
4.1. Pengumpulan Kebutuhan ... 31
4.1.1. Analisa Sistem ... 31
4.1.2. Identifikasi Masalah ... 32
4.1.3. Usulan Penyelesaian Masalah ... 32
4.1.4. Kebutuhan perangkat Lunak dan Perangkat Keras... 32
4.2. Membangun Prototype ... 33
4.2.1. Desain Image Processing ... 33
4.2.2. Desain Interface ... 42
4.3. Mengkodekan Sistem ... 44
4.4. Pengujian Prototipe ... 62
BAB V PENUTUP ... 67
5.1. Kesimpulan ... 67
5.2. Saran ... 67
DAFTAR PUSTAKA ...
xi
Gambar 2.2 Ilustrasi pencarian maksimum atau minimum lokal dari citra
DoG ... 9
Gambar 2.3 Deskriptor dari perhitungan besar gradien dan orientasi serta gambar lingkaran Gaussian (kiri) dan gambar deskriptor keypoint (kanan) .... 12
Gambar 2.4 Keypoint yang diperoleh dari suatu citra menggunakan SIFT ... 13
Gambar 2.5. Model kamera proyektif u = S1G1Au0. A adalah mengubah sebuah proyektif planar (Homography). G1 adalah anti-aliasing Gaussian filtering. S1 adalah sampling CCD ... 14
Gambar 3.1.1 Alur Kerangka Berpikir ... 30
Gambar 4.1 Contoh citra hasil pengkaburan(blurring) 1S.jpg dengan ukuran 828x1164, 414x582, 207x291,103x145 ... 35
Gambar 4.2 Contoh citra hasil pengkaburan(blurring) 1F.jpg dengan ukuran 2048x1536, 1024x768, 512x384, 256x192 ... 36
Gambar 4.3 Contoh citra blurring menjadi citra DoG ... 37
Gambar 4.4 Contoh Mencari Ekstrema dalam citra DoG ... 38
Gambar 4.5 Contoh Histogram Orientasi... 39
Gambar 4.6 Contoh pemberian finger print pada keypoint ... 40
Gambar 4.7 Memasukkan orientasi pada hitogram lingkaran ... 40
Gambar 4.8 gradient orientasi yang mengalami pembobotan gaussian ... 41
xiii
Tabel 4.1. Tabel Spesifikasi Kebutuhan Perangkat Keras ... 32
Tabel 4.2. Perangkat Lunak Yang Digunakan ... 33
Tabel 4.3 Hasil Matching Keypoint ... 42
Tabel 4.4 Jumlah Keypoint Citra Sketsa ... 62
Tabel 4.5 Jumlah Keypoint Citra Foto ... 64
Tabel 4.6 Hasil Pengujian FER dan FRR ... 65
1 1.1. Latar Belakang
Dewasa ini banyak terjadi kejahatan, yang terkadang pelaku kriminal tidak dapat ditangkap setelah kejadian terjadi. Polisi dapat mengidentifikasi pelaku
kejahatan dari keterangan saksi atau dari kamera pengawas. Wajah pelaku
kejahatan dapat dibuat sketsa wajahnya berdasarkan dari informasi tersebut.
Sketsa wajah tersebut dianalisa sehingga didapatkan foto wajah dari pelaku
kejahatan tersebut. Untuk mempermudah dalam menganalisa sketsa wajah
dibutuhkan sistem yang dapat mengidentifikasi sketsa sehingga didapatkan foto
wajah yang cocok.
Citra sketsa dan citra foto memiliki dua perbedaan yang terletak pada
tekstur dan bentuknya. Perbedaan tekstur antara citra sketsa dan citra foto terjadi
karena pembuatan citra sketsa secara manual yang biasanya menggunakan pensil
atau pulpen. Sedangkan perbedaan bentuk terjadi karena bentuk dari citra sketsa
yang dibuat merupakan penggambaran dari informasi deskriptif mengenai wajah
pelaku. Ada beberapa metode yang dapat digunakan untuk mengatasi masalah ini
salah satunya adalah menggunakan metode Scale Invariant Feature Ttransform(SIFT).
Dalam tugas akhir yang dibuat oleh saudara Yuwono dari Universitas
dari citra input berupa sketsa. Dalam penelitiannya beliau mengungkapkan bahwa
metode SIFT dapat digunakan untuk mendeteksi wajah pada citra sketsa.
Penulis menemukan modifikasi dari metode SIFT yang bernama metode
Affine Scale Invariant Feature Transform (ASIFT). Metode ASIFT ini menambahkan factor sudut pandang yang mendefinisikan orientasi axis dari
kamera. Metode ini dapat mengidentifikasi fiture yang telah mengalami distorsi
affine yang besar dengan mengukurnya menggunakan parameter baru yaitu
transisi kemiringan. Metode ini diklaim lebih baik dalam proses ekstraksi fiture. Oleh karena itu penulis ingin membuat protype aplikasi untuk menguji apa metode ASIFT dapat menganalisa wajah pada citra sketsa.
1.2. Rumusan Permasalahan
Masalah yang akan dibahas pada penelitian ini adalah sebagai berikut:
1. Bagaimana cara identifikasi pengenalan ciri sketsa wajah dan foto
wajah?
2. Bagaimana Hasil Identifikasi dan pencocokan sketsa wajah dan
foto wajah menggunakan ASIFT?
1.3. Batasan Masalah
Dalam Tugas Akhir ini, terdapat batasan-batasan masalah yang dibahas
sebagai berikut :
1. Input Sketsa wajah menggunakan tipe Viewed Sketch
2. Dalam proses pencocokan wajah, hanya digunakan foto dan sketsa
tingkat pencahayaan normal, dan tidak menggunakan aksesoris
apapun.
3. Menggunakan lima pasang citra dan sketsa wajah, karena running time proccess analisa pengenalan wajah maka penulis hanya menggunakan lima pasang sample citra.
4. Format file citra yang digunakan adalah .jpg
5. Pengenalan wajah ini dilakukan dalam simulasi dengan
menggunakan MATLAB
6. Sketsa wajah dan foto wajah dimasukkan menggunakan scanner ke dalam komputer.
1.4. Tujuan Penelitian
1. Melakukan identifikasi sketsa wajah dan foto wajah menggunakan
metode ASIFT.
2. Melakukan pencocokkan antara sketsa wajah dan foto wajah.
1.5. Manfaat Penelitian
1. Menambah pengetahuan penulis, terutama mengenai proses
pengenalan wajah.
2. Dapat menjadi refrensi untuk membuat aplikasi pengenalan wajah
1.6. Sistematika Penelitian
Penyusunan laporan tugas akhir terdiri dari lima bab sebagai berikut :
Bab I. Pendahuluan
Pada bab ini akan dibahas mengenai latar belakang, perumusan masalah,
identifikasi masalah, tujuan, pembatasan masalah, dan sistematika
penulisan dari tugas akhir ini.
Bab II. Landasan Teori
Pada bab ini akan dibahas mengenai teori-teori penunjang yang akan
digunakan untuk merancang protipe aplikasi pengenalan wajah
menggunakan metode Affine Scale Invariant Feature Transform dengan citra masukan berupa citra sketsa wajah.
Bab III. Metodologi Penelitian
Pada bab ini akan dibahas penjelasan tentang desain perancangan protype
perangkat lunak untuk pengenalan wajah menggunakan metode Affine Scale Invariant Feature Transform dengan citra masukan berupa citra sketsa wajah.
Bab IV. Pembahasan dan Hasil
Bab ini berisi proses yang penulis lakukan dalam membuat protype
pengenalan wajah pada citra sketsa dan hasil pengujian dari dari sample
sketsa.
Bab V. Kesimpulan dan Saran
Bab ini berisi tentang kesimpulan dari hasil pengujian program dan
5
2.1. Pengolahan Citra Digital
Ada dua prinsip daerah aplikasi pengolahan citra digital, peningkatan informasi piktoral untuk interpretasi manusia, dan pengolahan data citra digital untuk penyimpanan, transmisi, dan representasi bagi peralatan presepsi(preception).
Satu dari aplikasi citra digital yang pertama adalah industri surat kabar, ketika citra pertama kali dikirim dengan kabel kapal selam antara London dan New York. Pengenalan sistem transmisi kabel laut Bartlane pada awal tahun 1920 mengurangi waktu yang dibutuhkan untuk mentransmisikan citra melintasi atlantik lebih dari satu minggu sampai kurang dari tiga jam. Awalnya sistem Bartlane dapat mengkodekan citra dalam lima perbedaan level keabuan. Kemampuan ini ditingkatkan menjadi 15 level pada tahun 1929 (Prasetyo, 2011).
.Komputer pertama yang cukup kuat untuk melakukan pekerjaanpengolahan cita digital muncul pada tahun 1960. Bekerja menggunakan teknik komputer untuk meningkatkan citra dari sebuah tempat penelitian dimulai oleh Jet Propulsion Laboratory(Pasadena, California) pada tahun 1964 ketika gambar bulan ditransmisikan oleh Ranger 7 yang kemudian diproses oleh komputer untuk menyempurnakan bermacam - macam jenis distorsi citranya (Prasetyo, 2011).
2.2. Scale Infariant Feature Transform(SIFT)
Pada tahun 1999, David G. Lowe seorang peneliti dari University of British Columbia memperkenalkan suatu metode baru dalam ekstraksi fiture dari suatu citra. Metode ekstraksi fiture ini disebut sebagai Scale Invariant Fiture Transform(SIFT). Dengan menggunakn SIFT ini, suatu citra akan di ubah menjadi vektor fiture lokal yang kemudian akan digunakan sebagai pendekatan dalam mendeteksi objek yang dimaksud.
Sebagai metode ektraksi fiture pada pengenalan objek, SIFT ini memiliki kelebihan – kelebihan sebagai berikut :
1. Hasil ektraksi fiture bersifat invariant sebagian terhadap ukuran, translasi dan rotasi dua dimensi.
2. Hasil ekstraksi fiture bersifat invariant sebagian terhadap perubahan iluminasi dan perubahan sudut pandang tiga dimensi. 3. Mampu meng-ekstrak banyak keypoint dari citra yang tipikal 4. Hasil ekstraksi fitur benar – benar mencirikan secara khusus
Dengan kelebihan – kelebihan tersebut, penggunaan metode SIFT banyak dikembangkan untuk aplikasi pengenalan objek.
Secara garis besar, alur proses yang berjalan pada metode SIFT terdiri empat tahap, yaitu :
1. Mencari Nilai Ekstrema Pada Skala Ruang 2. Menentukan Keypoint
3. Penentuan Orientasi 4. Descriptorkeypoint
Setelah melalui tahapan tersebut maka akan diperoleh fiture – fiture lokal yang digunakan sebagai descriptor dari suatu objek.
2.1.1. Pencarian Nilai Ekstrema pada Skala Ruang
Pencarian nilai ekstrim maximum dan minimum pada skala ruang merupakan tahap awal dalam penentuan keypoint dari suatu citra. Dengan menggunakan fungsi Gaussian, citra pada skala ruang dapat didefinisikan sebagai fungsi L(x,y,σ), yang diperoleh dari hasil konvolusi skala – variable Gaussian,
G(x,y,σ), dengan citra masukan I(x,y), sehingga diperoleh (Lowe, 2004) :
L(x,y,σ) = G(x,y,σ) *I(x,y)... (2.1) dimana * adalah operasi konvolusi antara x dan y dan G(x,y,σ) adalah skala variable Gaussian (Lowe, 2004):
G(x,y,σ) = ( )/ ...(2.2)
D(x, y, σ) = G(x,y,kσ) - G(x,y,σ) *I(x,y)
= L(x,y,kσ) - L(x,y,σ)...(2.3) Dari persamaan (2.3) terlihat bahwa citra hasil Difference-of-Gaussian
sebenarnya merupakan selisih antara citra hasil pengkaburan Gaussian dengan nilai skala k yang berbeda. Proses ini diilustrasikan sebagai berikut:
Gambar 2.1 Diagram Difference-of-Gaussian (Lowe, 2004)
Citra hasil konvolusi kemudian dikelompokan berdasarkan octave (satu
octave setara dengan penggandaan besarnya nilai σ), nilai k ditetapkan di awal sehingga diperoleh jumlah citra kabur yang sama pada setiap octave serta diperoleh citra hasil DoG yang sama untuk setiap octave.
maksimum atau minimum lokal maka masing – masing piksel pada citra hasil
DoG akan dibandingkan dengan 8 piksel disekitarnya yang berada pada skala yang sama dengan 9 piksel yang bersesuaian dengannya pada skala yang berbeda. Jika pixel tersebut merupakan maksimum atau minimum lokal, maka pixel
tersebut akan dijadikan sebagai kandidat keypoint.
Gambar 2.2 Ilustrasi pencarian maksimum atau minimum lokal dari citra DoG (Lowe, 2004)
2.1.2. Penentuan Keypoint
Setelah kandidat keypoint ditemukan melalui tahapan pencarian nilai ekstrim, maka langkah selanjutnya adalah untuk menyeleksi keypoint. Dimana setiap kandidat keypoint yang dianggap sangat rentan terhadap gangguan(noise) akan dihilangkan, yaitu kandidat keypoint yang memiliki nilai kontras yang rendah dan kandidat keypoint yang kurang jelas dan terletak sepanjang tepi.
1. Dengan menggunakan deret taylor pada fungsi skala ruang D(x, y, σ) yang kemudian digeser sehingga titik asal berada pada titik sample, berikut ini adalah fungsi deret Tylor (Lowe, 2004):
D(x) = D+ x+ x x ...(2.4) Dimana D dan penurunannya dilihat dari titik sample, dan x = ( , , )
adalah offset dari titik ini.
2. Lokasi dari nilai ekstrim x, diambil dengan menurunkan persamaan sebelumnya terhadap x, sehingga didapatkan fungsi (Lowe, 2004):
x = − ...(2.5) 3. Fungsi nilai ekstrim D(x), diperoleh dengan men-substitusikan persamaan
2.5 ke persamaan 2.4 sehingga menghasilkan persamaan berikut (Lowe, 2004) :
D(x) = D+ x ...(2.6) Pada SIFT ini, semua nilai ekstrim | D(x) | yang bernilai kurang dari 0,03 akan dihilangkan.
Untuk menghilangkan keypoint yang kurang jelas pada tepi makan digunakan persamaan berikut (Lowe, 2004) :
2.1.3. Penentuan Orientasi
Pada tahap ini, masing – masing keypoint yang diperoleh akan diberikan suatu orientasi yang tetap berdasarkan sifat – sifat lokal pada citra. Dengan adanya proses ini maka keypoint yang diperoleh dapat direpresentasikan relatif terhadap orientasi ini sehingga keypoint yang dihasilkan tidak terpengaruh terhadap adanya rotasi pada citra. Untuk menentukan orientasi dari masing – masing keypoint
maka dilakukan perhitungan terhadap besarnya gradient dan sudut arah orientasi. Adapun perhitungan terhadap besar nilai gradient, m(x,y), dan arah orientasi
θ(x,y), dilakukan menggunakan persamaan berikut (Lowe, 2004) :
m(x,y) = ( ( + 1, ) − ( − 1, )) + ( ( , + 1) − ( , − 1)) (2.8)
θ(x,y) = (( ( , + 1) − ( , − 1)) ( ( + 1, ) − ( − 1, )))⁄ (2.9) 2.1.4. Deskriptor Keypoint
Pada proses ini, masing – masing keypoint yang telah diorientasikan akan diberikan pencirian khusus(descriptor). Proses ini bertujuan untuk mendapatkan
keypoint yang invariant terhadap perubahan itensitas cahaya atau perubahan sudut padang tiga dimensi.
Descriptor akan diukur sebagai suatu histogram orientasi pada wilayah
pixel dengan ukuran 4x4. Nilai orientasi diperoleh dari citra Gaussian yang memiliki skala terdekat dengan skala keypoint yang akan dihitung. Keypoint yang diperoleh invariant terhadap orientasi, maka koordinat dari descriptor dan
jendela deskriptor, akan digunakan sebagai pembebanan pada setiap besaran nilai dari titik sample.
Gambar 2.3 Deskriptor dari perhitungan besar gradien dan orientasi serta gambar lingkaran Gaussian (kiri) dan gambar deskriptor keypoint (kanan) (Lowe, 2004)
Descriptor keypoint pada gambar diatas menunjukan adanya 8 arah pada masing – masing histogram orientasi dengan panjang masing- masing anak panah sesuai dengan besar nilai dari histogram asal. Selanjutnya descriptor keypoint
yang telah diperoleh akan dinormalisasi untuk mengatasi pengaruh perubahan cahayan.
Gambar 2.4 Keypoint yang diperoleh dari suatu citra menggunakan SIFT (Lowe, 2004) Keypoint ini yang kemudian menjadi fiture – fiture lokal pada suatu citra dan akan di cocokan dengan keypoint – keypoint yang terdapat pada citra lain untuk menyesuaikan dengan objek yang tersedia pada database image.
2.3. Affine Transformation
Transformasi affine adalah semua transformasi yang mempertahankan collinearity (semua titik yang berada pada letak tertentu tetap pada letaknya meski telah ditransformasi) dan rasio dari jarak (misalnya, titik tengah pada bagian garis tetap menjadi titik tengan setelah transformasi). Affine Transformation sering disebut juga Affinity (Weisstein)
Geometric contraction, expansion, dilation, reflection, rotation, shear,
= − − 0− 0
= − ( − 0) +( − 0) + ( − 0)( − 0)
Persamaan dipisahkan akan menjadi (Weisstein):
= ( ) + ( ) − ( 0 + 0 )
= (− ) + ( ) + ( 0 − 0 )
Persamaan diatas dapat diubah menjadi (Weisstein) :
= − +
= + + dimana = − =
Faktor skala s didefinisikan sebagai berikut (Weisstein):
= +
dan arah rotasi adalah (Weisstein):
= −
2.4. Affine Scale Invariant Feature Transform
Affine Scale Infariant Feature Transform atau yang biasa disebut ASIFT ini adalah framework yang digunakan untuk mengektraksi fiture dari suatu citra. ASIFT pertama kali dipublikasikan oleh Guoshen Yu dan Jean-Michel Morel dalam jurnal yang berjudul ‘ASIFT: An Algorithm for Fully Affine Invariant Comparison’ pada tahun 2011 (Guoshen & Morel, 2011).
ASIFT mensimulasikan tiga parameter: skala, sudut pandang dari
dinormalisasi. Lebih detailnya, ASIFT mensimulasikan dua parameter kamera sumbu, dan kemudian mengimplementasikan SIFT yang mensimulasikan skala dan menormalkan rotasi dan translasi. Implementasi dua resolusi ASIFT akan digunakan, karena memiliki sekitar dua kali kompleksitas rutin SIFT tunggal.
ASIFT menggunakan translation tilt untuk mengevaluasi performa dari pengenalan affine. Translition tilt mengukur tingkat perubahan sudut pandang dari satu sudut pandangan ke sudut pandang yang lain.
Gambar. 2.5. Model kamera proyektif u = S1G1Au0. A adalah mengubah sebuah proyektif planar (Homography). G1 adalah anti-aliasing Gaussian filtering. S1 adalah sampling CCD (Guoshen &
2.3.1. Algoritma ASIFT
Proses algoritma ASIFT dilakukan melalui langkah – langkah sebagai berikut (Guoshen & Morel, 2011):
1. Setiap gambar diubah dengan mensimulasikan semua distorsi affine mungkin disebabkan oleh perubahan orientasi sumbu optik kamera dari posisi frontal. Distorsi ini tergantung pada dua parameter: longitude φ dan laitude θ. Gambar mengalami rotasi dengan sudut φ dan tilts dengan parameter t = 1 / | cos θ | (tilt dari paramater t yang mengikuti arah x adalah operasi u (x, y) → u (tx,
y)). Untuk gambar digital, tilts dilakukan oleh directional t-subsampling. Oleh karena itu dipererlukan sebuah aplikasi filter antialiasing di arah sumbu x, yaitu konvolusi yang terdapat dalam Gaussian dengan standar deviasi c√ − . Dengan nilai c = 0,8 adalah nilai yang ditunjukkan dalam untuk memastikan kesalahan aliasing sangat kecil. Rotasi dan tilts ini dilakukan untuk jumlah yang terbatas dan kecil dari sudut latitude dan longitude, langkah-langkah sampling parameter ini memastikan bahwa gambar simulasi tetap sama dengan tampilan lain yang mungkin dihasilkan oleh nilai-nilai lain dari φ dan θ .
3. Metode SIFT memiliki kriteria eliminasi perbandingan yang salah. Oleh karena itu, umumnya meninggalkan perbandingan yang salah, bahkan dalam pasangan gambar yang tidak memiliki kesamaan
scene. ASIFT, dengan membandingkan banyak
kesamaan(matching), oleh karena itu dapat mengumpulkan banyak kecocokan(match) yang salah. Hal ini penting untuk menyaring perbandingan ini. Kriteria yang digunakan adalah bahwa perbandingan harus sesuai dengan geometri epipolar. Digunakan metode ORSA dengan tujuan penyesuaian perbandingan(matching) sesuai dengan geometri epipolar, yang dianggap sebagai metode yang paling dapat diandalkan, lebih baik dari prosedur RANSAC klasik. ORSA hanya digunakan untuk menyaring perbandingan yang diberikan oleh kedua SIFT dan ASIFT. Dengan demikian, hal itu mungkin terjadi bahwa dua gambar tidak memiliki perbandingan yang tersisa sama sekali. Ini tidak berarti bahwa tidak ada perbandingan ASIFT, mungkin semua perbandingan dihilangkan karena bertentangan dengan geometri epipolar.
2.5. Matlab
dalam komunitas matematika yang diterapkan. Jack kecil, seorang insinyur, yang terkena itu selama kunjungan Moler dibuat untuk Stanford University pada tahun 1983. Menyadari potensi komersialnya, ia bergabung dengan Moler dan Steve Bangert. Mereka menulis ulang MATLAB di C dan mendirikan MathWorks pada tahun 1984 untuk melanjutkan perkembangannya. Ini perpustakaan ditulis ulang dikenal sebagai JACKPAC. Pada tahun 2000, MATLAB ditulis ulang untuk menggunakan satu set baru dari perpustakaan untuk matriks manipulasi, LAPACK.
MATLAB pertama kali diadopsi oleh para peneliti dan praktisi di bidang teknik kontrol, Little khusus, tapi dengan cepat menyebar ke banyak domain lainnya. Sekarang juga digunakan dalam pendidikan, khususnya pengajaran aljabar linear, analisis numerik, dan populer di kalangan ilmuwan yang terlibat dalam pengolahan citra (Cleve, 2004).
MATLAB (matrix laboratory) adalah multi-paradigma lingkungan komputasi numerik dan bahasa pemrograman generasi keempat. Dikembangkan oleh MathWorks, MATLAB memungkinkan manipulasi matriks, merencanakan fungsi dan data, implementasi algoritma, pembuatan antarmuka pengguna, dan berinteraksi dengan program yang ditulis dalam bahasa lain, termasuk C, C ++, Java, Fortran dan Python.
menambahkan simulasi multi-domain grafis dan Desain Model Berbasis untuk sistem dinamis dan tertanam.
2.6. Metode Prototyping
Prototyping adalah proses pembuatan model sederhana software yang mengijinkan pengguna memiliki gambaran dasar tentang program serta melakukan pengujian awal. Prototyping memberikan fasilitas bagi pengembang dan pemakai untuk saling berinteraksi selama proses pembuatan, sehingga pengembang dapat dengan mudah memodelkan perangkat lunak yang akan dibuat.
Prototyping merupakan salah satu metode pengembangan perangat lunak yang banyak digunakan.
Kunci agar model Prototype ini berhasil dengan baik adalah dengan mendefinisikan aturan-aturan main pada saat awal, yaitu user dan pengembang harus setuju bahwa Prototype dibangun untuk mendefinisikan kebutuhan.
Proses-proses tersebut dapat dijelaskan sebagai berikut:
1. Pengumpulan kebutuhan: developer dan klien bertemu dan menentukan tujuan umum, kebutuhan yang diketahui dan gambaran bagian-bagian yang akan dibutuhkan berikutnya;
2. Perancangan: perancangan dilakukan cepat dan rancangan mewakili semua aspek software yang diketahui, dan rancangan ini menjadi dasar pembuatan Prototype;
3. Evaluasi Prototype: klien mengevaluasi Prototype yang dibuat dan digunakan untuk memperjelas kebutuhan software.
Terdapat tiga pendekatan utama Prototyping, yaitu (Simarta, 2010):
1. THROW-AWAY
Prototype dibuat dan dites. Pengalaman yang diperoleh dari pembuatan
Prototype digunakan untuk membuat produk akhir (final), kemudian
Prototype tersebut dibuang (tak dipakai).
2. EVOLUTIONARY
Pada metode ini, prototype tidak dibuang tetapi digunakan untuk iterasi desain berikutnya. Dalam hal ini, sistem atau produk yang sebenarnya dipandang sebagai evolusi dari versi awal yang sangat terbatas menuju produk final atau produk akhir..
menentukan keberhasilan dari sebuah software. Pengembang perangkat lunak harus memperhatikan tahapan dalam metode Prototyping agar software finalnya dapat diterima oleh pemakai.Dan tahapan-tahapan dalam Prototyping tersebut adalah sebagai berikut :
1. Pengumpulan kebutuhan
Pemakai dan pengembang bersama-sama mendefinisikan format seluruh perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat.
2. Membangun Prototyping
Membangun Prototyping dengan membuat perancangan sementara yang berfokus pada penyajian kepada pemakai (misalnya dengan membuat input dan format output).
3. Evaluasi Protoptyping
Evaluasi ini dilakukan oleh user apakah Prototyping yang sudah dibangun sudah sesuai dengan keinginan user. Jika sudah sesuai maka langkah keempat akan diambil. Jika tidak, maka Prototyping direvisi dengan mengulang langkah 1, 2 , dan 3.
4. Mengkodekan Sistem
Dalam tahap ini Prototyping yang sudah disepakati diterjemahkan ke dalam bahasa pemrograman yang sesuai.
Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai, harus dites dahulu sebelum digunakan. Pengujian ini dilakukan dengan
White Box, Black Box, Basis Path, pengujian arsitektur dan lain-lain. 6. Evaluasi Sistem
Pemakai mengevaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan. Jika sudah, maka langkah ketujuh dilakukan, jika belum maka mengulangi langkah 4 dan 5.
7. Menggunakan Sistem
Perangkat lunak yang telah diuji dan diterima pemakai siap untuk digunakan.
Keunggulan dan Kelemahan Prototyping adalah sebagai berikut :
A. Keunggulan Prototyping :
1. Adanya komunikasi yang baik antara pengembang dan pemakai. 2. Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan
user.
3. User berperan aktif dalam pengembangan system. 4. Lebih menghemat waktu dalam pengembangan sistem.
5. Penerapan menjadi lebih mudah karena user mengetahui apa yang diharapkannya
B. Kelemahan Prototyping :
keseluruhan dan juga belum memikirkan kemampuan pemeliharaan untuk jangka waktu lama.
2. Pengembang biasanya ingin cepat menyelesaikan proyek. Sehingga menggunakan algoritma dan bahasa pemrograman yang sederhana untuk membuat Prototyping agar lebih cepat selesai tanpa memikirkan lebih lanjut bahwa program tersebut hanya merupakan cetak biru sistem .
Hubungan user dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik.
2.7. Falase Acceptance Rate(FAR), False Rejection Rate(FRR) dan Equal Erorr Rate(EER)
Sistem biometrik yang baik seharusnya dapat menghasilkan output yang diharapkan dari input. Namun tidak dapat dipungkiri bahwa sistem yang dibuat menghasilkan output tidak sesuai dengan yang diharapkan. Ini terjadi karena ada kesalahan penerimaan kandidat hasil, karena ada data yang bukan seharusnya menjadi output memiliki nilai kecocokan melebihi threshold. Dalam biometrik terdapat suatu sistem penilaian untuk mengukur kesalahan penerimaan output
24
Pada bab ini peneliti akan menejelaskan mengenai metodologi penelitian yang digunakan beserta tahap – tahap yang akan dilakukan didalam penelitian.
3.1. Metode Pengumpulan Data
Pengumpulan data merupakan langkah yang penting untuk metode ilmiah,
karena pada umumnya data yang dikumpulkan digunakan untuk menguji hipotesis
yang telah dirumuskan. Teknik pengumpulan data yang sering digunakan antara
lain:
3.1.1. Studi Pustaka
Studi pustaka yang dilakukan oleh penulis dengan mencari dan
mempelajari teori-teori yang dapat dijadikan landasan atau kerangka berpikir
bagi penelitian yang akan dilakukan sehingga penyusunan laporan skripsi ini
dapat lebih terarah. Teori-teori tesebut diperoleh dari literatu tertulis, dimana
literatur tersebut perlu dicari sebanyak mungkin agar dapat dibandingkan satu
dengan yang lainnya.
Adapun sumber studi kepustakaan ini adalah buku-buku mengenai
image processing, metode pengembangan sistem, matlab sebagai dasar
bahasa pemprograman, jurnal tentang algoritma Affine Scale Invariant Fiture
Transpose(ASIFT) atau algoritma yang lain tetapi untuk identifikasi sketsa
seperti Scale Invariant Fiture Transpose(SIFT), Multiscale Markov Random
lainnya yang berhubungan erat dengan permasalahan yang diambil baik berupa buku ataupun paper.
3.1.2. Penelitian Sejenis
Penulis mencari penelitian – penelitian yang berkaitan mengenai
identifikasi wajah sebelumnya telah dilakukan oleh peneliti lain. Berikut
ini beberapa penjelasan singkat mengenai literature-literatur yang relevan
dengan topik yang diteliti oleh penulis :
Tabel 3.1. Tabel Perbandingan Studi Literatur Sejenis
MULTISCALE MARKOV RANDOM FIELD (MRF)
Component Analysis
dalam reduksi datanya.
3.2. Metode Pengembangan Prototyping
Pada metode pengembangan simulasi ini penulis menggunakan metode
prototyping. Adapun alasan kenapa penulis menggunakan metode pengembangan
prototyping ini, sebagai berikut:
1. Sistem yang dibuat bukan berupa aplikasi namun masih berupa
prototype aplikasi untuk membuktikan penggunaan ASIFT dalam
identifikasi sketsa.
2. Ada tekanan untuk implementasi secepatnya, disini karena penulis
menginginkan program simulasi ini bisa jadi secepatnya sehingga tidak
terlalu menghabiskan banyak dana dan waktu.
Adapun langkah-langkah yang digunakan dalam pengembangan
prototyping yang akan dibuat, sebagai berikut:
3.2.1 Pengumpulan Kebutuhan
Tahap awal pengembangan prototyping diawali dengan pengumpulan
kebutuhan. Pada tahap ini penulis melakukan analisis kebutuhan dan
perancangan, pengajuan usulan solusi yang dapat diterima. Tahapannya adalah
sebagai berikut :
3.2.1.1 Analisa Sistem
Pada tahap ini penulis akan membahas mengenai analisa sistem pada
identifikasi sketsa wajah yang dilukis dengan foto wajah yang telah disimpan
selama ini, yang dilakukan pada lembaga – lembaga terkait.
3.2.1.2 Identifikasi Masalah
Pada tahap ini penulis menjelaskan masalah yang terjadi pada sistem.
3.2.1.3 Usulan Penyelesaian Masalah
Pada tahap ini penulis menjelaskan mengenai usulan penggunaan metode
Affine Scale Invaraiant Feature Transform untuk identifikasi sketsa wajah.
3.2.1.4 Kebutuhan Perangkat Lunak dan Perangkat Keras
Pada tahapan ini penulis membuat spesifikasi dari aplikasi simulasi yang
penulis buat dari kebutuhan hardware dan kebutuhan dari software yang penulis
gunakan untuk membuat prototype. Pembuatan spesifikasi ini bertujuan untuk
memudahkan dalam melakukan analisa kemampuan yang sesuai dengan
kebutuhan.
3.2.2 Membangun Prototype
Didalam prototyping melakukan perancangan sementara yg berupa format
3.2.2.1 Desain Image Processing
Pada tahap ini penulis akan menjelaskan mengenai proses image processing yang penulis terapkan dalam pengenalan wajah pada sketsa
menggunakan algoritma Affine Scale Invariant Feature Transform. Adapun
tahapan yang penulis lakukan adalah :
1. Image Acquisition
Pada tahap ini penulis akan menjelaskan bagaimana penulis
memperoleh data citra yang di butuhkan dalam proses pengenalan
wajah pada citra sketsa.
2. Feature Extraction
Pada tahap ini penulis akan menjelaskan mengenai proses dalam
mendapatkan ciri ciri khusus pada citra sketsa maupun pada citra
foto menggunakan algoritma Affine Scale Infariant Feature
Transform.
3. Recognition
Pada tahap ini penulis akan menjelaskan mengenai proses dalam
mengenali citra sketsa untuk mendapatkan citra foto yang cocok,
dengan mencocokkan ciri ciri khusus pada citra sketsa dengan ciri
3.2.2.2 Desain Interface
Pada tahap ini, penulis melakukan perancangan terhadap user interface
dari prototype. Untuk tampilan antar muka, penulis melakukan perancangan GUI
(Graphical User Interface).
3.2.3 Mengkodekan Sistem
Pada tahap ini, semua rancangan yang sudah dirancang diatas akan
dikodekan kedalam program dengan menggunakan tools untuk membangun
simulasi ini. Tools yang dipakai adalah Matlab 8.03 untuk membangun prototype
ini.
3.2.4 Pengujian Prototype
Prototype aplikasi ini diuji apakah protype ini dapat menganalisa
wajah dari citra masukan berupa sketsa. Pada tahap ini akan didapatkan nilai
nilai keypoint dan kecocokan antara citra masukan dengan citra hasil
3.3. Kerangka Berfikir
31
Pada perancangan prototype aplikasi ini penulis melakukan perancangan dengan menggunakan metode pengembangan Prototyping. Prototyping adalah
proses pembuatan model sederhana software yang mengijinkan pengembang
memiliki gambaran dasar tentang program serta melakukan pengujian awal.
Prototyping memberikan fasilitas bagi pengembang dan pemakai untuk saling
berinteraksi selama proses pembuatan, sehingga pengembang dapat dengan
mudah memodelkan perangkat lunak yang akan dibuat. Prototyping merupakan
salah satu metode pengembangan perangat lunak yang banyak digunakan. Berikut
ini adalah langkah-langkah yang penulis lakukan dalam melakukan prancangan
dengan menggunakan metode prototyping, sebagai berikut :
4.1. Pengumpulan Kebutuhan
Pada tahapan penggumpulan kebutuhan peneliti melakukan dengan
beberapa tahapan seperti berikut ini:
4.1.1. Analisa Sistem
Data yang digunakan dibagi menjadi dua bagian. Pertama adalah
kumpulan citra foto yang telah ada didalam komputer. Kedua adalah citra sketsa
yang dibuat berdasarkan informasi yang didapatkan. Data citra sketsa akan
dicocokkan dengan data citra foto sampai ditemukan wajah yang sama atau
4.1.2. Identifikasi Masalah
Setelah melakukan analisa masalah yang ditemukan adalah sebagai
berikut :
1. Sulitnya mengidentifikasi wajah dari citra sketsa yang telah dibuat
untuk mendapatkan wajah yang sama yang ada didalam komputer.
Terutama apabila citra yang akan dibandingkan banyak jumlahnya.
2. Sketsa dan foto memiliki dua perbedaan yang mencolok yaitu,
tekstur dan bentuknya.
4.1.3. Usulan Penyelesaian Masalah
Dibuat sebuah sistem yang akan mengidentifikasi wajah pada citra sketsa
sehingga didapatkan foto yang sesuai dengan citra sketsa yang diidentifikasi.
Menggunakan metode Affine Scale Invariant Feature Transform untuk mengatasi
perbedaan tekstur dan bentuk pada sketsa dan foto.
4.1.4. Kebutuhan Perangkat Lunak dan Perangkat Keras
Perangkat Keras yang akan digunakan untuk membangun
prototype adalah sebagai berikut:
Tabel 4.1. Tabel Spesifikasi Kebutuhan Perangkat Keras
Jenis Laptop atau Komputer Spesifikasi
Kebutuhan untuk perangkat lunak yang akan penulis gunakan
adalah :
Tabel 4.2. Perangkat Lunak Yang Digunakan Nama Perangkat
Lunak Fungsi
Sistem Operasi Windows 7 Ultimate 32bit
Sebagai interface antara pengguna dan komputer.
Matlab 8.03 Sebagai tools untuk membuat serta menjalankan program simulasi yang dibuat.
Borlan C++ 5.02 Sebagai tools untuk menganalisa algoritma Affine Scale Invariant Feature Transform(ASIFT).
4.2. Membangun Prototype
Pada tahapan ini akan dilakukan desain untuk prototype yang akan dibuat
dengan beberapa tahapan yaitu tahapan desain image processing dan desain
interface. Berikut ini adalah penjelasan tentang desain yang penulis lakukan,
sebagai berikut :
4.2.1. Desain Image Processing
Pada tahapan ini akan dilakukan desain untuk proses image processing
yang dibutuhkan untuk mengenali wajah pada sketsa. Berikut ini adalah tahapan
sampai recognition(pengenalan) beserta penjelasan untuk mempermudah dalam
membangun prototype yang akan dibuat :
1. Image Acquisition
Pada image acquisition ini digunakan sepuluh citra, lima citra foto dan
pengenalan. Citra foto telah ada di dalam komputer, citra sketsa dimasukkan ke dalam komputer menggunakan scanner.
2. Feature Extraction
Pada feature extraction digunakan metode Affine Scale Invariant Feature
Transform(ASIFT). Tahap ini diawali dengan menentukan citra sketsa yang akan
diidentifikasi yang dipilih oleh user. Citra sketsa yang dipilih dan citra foto yang
pertama akan digandakan, citra yang digandakan akan dikaburkan(blur) dengan
beberapa tingkat pengkaburan(blurring). Pengkaburan ini dilakukan berulang
dengan citra yang ukurannya setengah dari citra sebelumnya.
Citra hasil pengkaburan(blurring) dengan ukuran yang sama tapi berbeda
tingkat pengkaburannya dihitung perbedaan kekaburannya(blur) yang biasa
disebut dengan Different of Gaussian(DoG). Langkah ini dilakukan untuk semua
citra yang dikaburan(blurred) dengan semua ukuran citra dan hasilnya berupa
citra DoG.
Setiap pixel Citra DoG dibandingkan dengan 3x3 pixel tetangga pada citra
tersebut dan 3x3 pixel pada posisi yang sama dengan pixel yang akan
dibandingkan plus 3x3 pixel tetangganya pada citra DoG sebelum dan Citra DoG
setelahnya. Jadi setiap pixel dibandingkan dengan 26 pixel, apabila pixel tersebut
Gambar 4.
Keypoint yang terletak pada
tingkat pencahayaan yan rendah akan disingkirkan.
dicari gradient magnitude
dibuat histogram dari
histogram ini, 360 derajat orientasi dipecah menjadi 36 grafik batang (masing
Gambar 4.4 Contoh Mencari Ekstrema dalam citra DoG
yang terletak pada tepi(edge) dan terletak pada wilayah dengan
tingkat pencahayaan yan rendah akan disingkirkan. Keypoint yang tersisa akan
gradient magnitude dan gradient orientasi dari pixel disekitarnya
dibuat histogram dari gradient magnitude dan gradient orientasi tersebut
histogram ini, 360 derajat orientasi dipecah menjadi 36 grafik batang (masing
DoG
dan terletak pada wilayah dengan
yang tersisa akan
disekitarnya. Lalu akan
orientasi tersebut. Didalam
masing 10 derajat). Misalnya arah gradient pada titik tertentu adalah 15,5 derajat,
maka gradient garis akan masuk ke 10-19 derajat diagram batang. Banyaknya
“jumlah” yang dimasukan pada diagram batang tergantung dari magnitude dari
gradient pada point tersebut. Setelah dilakukan terhadap semua pixel disekitar
keypoint, histogram akan memiliki ketinggian pada angka tertentu.
Gambar 4.5 Contoh Histogram Orientasi
Dari contoh histogram diatas grafik pada nilai gradient 20-29 menjadi
maksimum orientasi yang dimiliki oleh pixel disekitar keypoint. Semu grafik
gradient dari orientasi yang memiliki nilai lebih dari 80% dari maksimum
orientasi dikonversi menjadi keypoint yang baru. Keypoint yang baru ini memiliki
lokasi dan scale yang sama dengan keypoint yang asli. Tapi orientasinya sesuai
dengan ketinggian yang lain.
Selanjutnya pemberian identitas khusus(finger print) pada keypoint, ini
dilakukan dengan membuat 16x16 kotak disekitar keypoint. 16x16 kotak ini
Gambar 4.6 Contoh pemberian finger print pada keypoint
Setiap kotak 4x4, dihitung gradient magnitudes dan orientasinya. Orientasi ini
diletakkan pada grafik lingkaran yang dibagi menjadi 8.
Gambar 4.7 Memasukkan orientasi pada hitogram lingkaran
Gradient Orientasi yang berada pada range 0-44 derajat dimasukkan dalam
wilayah(bin) pertama, 45-89 dimasukkan ke dalam wilayah(bin) selanjutnya dan
selanjutnya. Banyaknya jumlah yang dimasukkan kedalam wilayah(bin)
tergantung dari magnitude dari gradient dan jaraknya dari keypoint. Jadi gradient
histogram. Ini dilakukan dengan menggunakan fungsi pembobotan gaussian,
fungsi ini menghasilkan sebuah gradient yang akan dikalikan dengan magnitude
dari orientasi, sehingga didapatkan magnitude yang telah mendapatkan bobot.
Semakin jauh, smakin kecil nilai bobot dari magnitude.
Gambar 4.8 gradient orientasi yang mengalami pembobotan gaussian
3. Recognition
Pada recognition ini keypoint pada sketsa dan foto yang akan dihitung
perbedaannya, keypoint yang memiliki perbedaan terkecil dianggap cocok. Hasil
pencocokkan keypoint yang memiki pasangan lebih dari satu baik dari satu ke
banyak maupun dari banyak ke satu akan dihapus.Hasil pencocokkan keypoint
yang memiliki letak pixel yang berbeda (proses matching yang salah) akan
dihapus. Maka akan didapatkan keypoint yang cocok antara sketsa dan Foto. Citra
foto yang memiliki kecocokkan keypoint yang terbanyak dan memiliki jumlah
kecocokkan diatas treeshold dianggap sebagai citra foto yang memiliki kemiripan
wajah paling besar dengan citra sketsa. Citra foto tersebut akan ditampilkan
Tabel 4.3 Hasil Matching Keypoint Nama
Sketsa Sketsa Nama Foto Foto
Jumlah
Keypoint Match
1S.jpg 1F.jpg keypoint 56
4.2.2. Desain Interface
Pada tahap ini, penulis melakukan perancangan terhadap user interface
dari aplikasi protype ini. Untuk tampilan antar muka penulis melakukan
perancangan GUI (Graphical User Interface). Berikut ini rancangan interface
yang akan dibangun :
1. Halaman Utama
Ini adalah halaman awal dari sumulasi dan juga merupakan halaman
Gambar 4.9 Desain Interface Halaman Utama
2. Halaman Inisialisasi
Halaman ini berisi kebutuhan informasi awal untuk menjalankan program
simulasi. Berikut ini adalah desain dari halaman inisialisasi :
3. Halaman Identifikasi Sketsa
Pada halaman ini akan dilakukan identifikasi sketsa sehingga didapatkan
citra foto yang seharusnya memiliki wajah yang sama dengan sketsa. Berikut ini
adalah desain untuk halaman Identifikasi :
Gambar 4.11 Desain Interface Identifikasi Sketsa
4.3. Mengkodekan Sistem
Pada tahap ini, semua rancangan simulasi yang telah disepakati dikodekan
kedalam program dengan menggunakan tools untuk mebuat simulasinya. Tools
yang dipakai adalah Matlab 8.03 untuk mebuat simulasi identikasi sketsa.
Sedangkan algoritma ASIFT yang peneliti pakai telah dibuat sebelumnya oleh
Jean-Michel Morel dan Guoshen Yu menggunakan bahasa C, jadi pada tahap ini
peneliti akan menganalisa kode bahasa C yang telah mereka buat. Berikut ini
1. Penerapan Pengkodean Matlab untuk Inisialisasi
Proses inisialisasi dilakukan untuk menentukan kebutuhan awal sistem
simulasi. Proses ini sangatlah penting apabila ada kesalahan pada proses ini maka
sistem simulasi tidak akan berjalan dengan semestinya.Berikut ini adalah kode
Matlab untuk inisialisasi :
Potongan program diatas digunakan untuk mengambil pathfolder yang
berisi lima citra sketsa, lalu diletakkan pada edit box di dalam interface inisialisasi.
function FotoPath_Callback(hObject, eventdata, handles)
function FotoPath_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'),
Potongan program diatas digunakan untuk mengambil path folder yang
berisi lima citra foto, lalu diletakkan pada edit box di dalam interface inisialisai.
Potongan program diatas digunakan untuk menyimpan hasil konfigurasi
pada tahap inisialisai kedalam file requirement.mat, lalu menutup intarface
inisialisasi.
Potongan program diatas digunakan untuk membatalkan konfigurasi pada
inisialisasi, lalu menutup interface inisialisasi.
2. Proses Pengkodean Identifikasi Sketsa
Prose identifikasi sketsa dilakukan melalui beberpa tahapan, yaitu:
1. Penerapan Pengkodean Matlab untuk Input Citra Sketsa
Pada proses ini user akan memasukkan nama citra sketsa dan sistem
akan mencari citra yang sesuai dengan input. Berikut ini adalah kode
Matlab Input Sketsa : images in the training database
end end
save requirement.mat SketPath FotPath Train_Number HasilMatcPath
Potongan program diatas digunakan untuk mengambil masukkan
nama citra sketsa. Lalu citra sketsa dan citra foto akan diambil dari
folder database citra sketsa maupun database citra foto.
2. Penerapan Pengkodean C++ untuk Algoritma ASIFT
Algoritma ASIFT memiliki beberapa tahapan yang dilakukan, berikut
ini adalah kode dari tahapan – tahapan dari algoritma ASIFT beserta
analisa dari kode tersebut:
Potongan coding diatas digunakan untuk membentuk citra pada skala
ruang dengan menggunakan Different of Gaussian.
void OctaveKeypoints(flimage & image,float octSize,
keypointslist& keys,siftPar &par) {
prevSigma*(float)sqrt((double)(sigmaRatio*sigmaRatio-1.0));
gaussian_convolution( blur[i].getPlane(),
if(DEBUG) printf("Looking for local maxima \n");
FindMaxMin(dogs, blur, octSize, keys,par);
delete[] blur;
delete[] dogs;
voidFindMaxMin(
flimage* dogs, flimage* blur,
float octSize, keypointslist& keys,siftPar &par) {
compute_gradient_orientation(blur[s].getPlane(),
grad.getPlane(), ori.getPlane(), blur[s].nwidth(),
if(DEBUG) printf("%d: (%d,%d,%d) val: %f\n",partialcounter,
Potongan coding diatas digunakan untuk menentukan kandidat
keypoint yang merupakan hasil dari pencarian nilai maksimum lokal
pada citra hasil Different of Gaussian.
Potongan coding diatas digunakan untuk menghilangkan keypoint
yang memiliki nilai kontras yang rendah.
Potongan coding diatas digunakan untuk menghilangkan keypoint
yang kurang jelas pada tepi.
intNotOnEdge(flimage& dog,int r,int c,float octSize,siftPar
if(DEBUG) printf("Point not well localized by FitQuadratic\n");
par.noncorrectlylocalized++; return;
voidAssignOriHist(
const flimage& grad,const flimage& ori,float octSize,
float octScale,float octRow,float octCol,keypointslist&
keys,siftPar &par) {
int bin, prev, next;
float distsq, dif, gval, weight, angle, interp;
int tmp_size = par.OriBins;
float*hist =newfloat[tmp_size];
float radius2, sigma2;
int row =(int)(octRow+0.5),
col =(int)(octCol+0.5),
rows = grad.nheight(),
cols = grad.nwidth();
for(int i =0; i < par.OriBins; i++) hist[i]=0.0;
float sigma = par.OriSigma * octScale;
int radius =(int)(sigma *3.0);
int rmin = MAX(0,row-radius);
int cmin = MAX(0,col-radius);
int rmax = MIN(row+radius,rows-2);
int cmax = MIN(col+radius,cols-2);
radius2 =(float)(radius * radius);
for(int r = rmin; r <= rmax; r++){
if(DEBUG) printf("angle selected: %f \t location: (%f,%f)\n",
Potongan program diatas digunakan untuk menentukan orientasi pada
masing – masing keypoint yang telah mengalami penyaringan
sebelumnya.
voidKeySample(
float index[IndexSize][IndexSize][OriSize], keypoint& key,
const flimage& grad,const flimage& ori,float scale,float
float index[IndexSize][IndexSize][OriSize], keypoint& key,
const flimage& grad,const flimage& orim,
float r,float c,float rpos,float cpos,float rx,float
if(r <0|| r >= grad.nheight()|| c <0|| c >= grad.nwidth())
float index[IndexSize][IndexSize][OriSize],
Pototngan program diatas digunakan untuk memberikan ciri khusus
untuk keypoint yang telah melalui proses orientasi.
3. Penerapan Pengkodean C++ untuk Algoritma Matching
Proses matching dilakukan untuk menyamakan nilai – nilai keypoint
yang terdapat pada citra foto dengan keypoint pada citra foto. Berikut
ini adalah pengkodean proses Matching :
Potongan coding dibawah ini digunakan untuk menentukan jumlah
#pragma omp parallel for private(tt)
#pragma omp parallel for private(rr)
for(int rr =1; rr <= num_rot1; rr++)
{
float theta = delta_theta *(rr-1);
theta = theta *180/ PI;
keypointslist keypoints1 = keys1[tt-1][rr-1];
#pragma omp parallel for private(tt2)
else
#pragma omp parallel for private(rr2)
for(int rr2 =1; rr2 <= num_rot1_2; rr2++)
compute_sift_matches(keypoints1,keypoints2,matchings1,siftpara meters);
matchingslist(matchings1.size());
-Potongan coding diatas digunakan untuk memasukkan hasil keypoint
yang cocok kedalam vektor satu dimensi.
Potongan coding diatas digunakan untuk menghapus hasil match yang
dilakukan berulang saat simulasi berlangsung, menghapus hasil match
dimana satu keypoint pada citra satu memiliki lebih dari satu keypoint
Potongan coding diatas digunakan untuk menghapus pencocokan
keypoint yang salah menggunakan epipolar geomertric filtering.
for( cc =0; cc <(int) matchings.size(); cc++)
int t_value_orsa=10000;
int verb_value_orsa=0;
int n_flag_value_orsa=0;
int mode_value_orsa=2;
int stop_value_orsa=0;
float nfa = orsa((w1+w2)/2,(h1+h2)/2, match_coor, index,
t_value_orsa, verb_value_orsa, n_flag_value_orsa,
mode_value_orsa, stop_value_orsa); if( nfa < nfa_max )
{
matchings_unique.clear();
Minfoall_unique.clear();
for( cc =0; cc <(int) index.size(); cc++)
{
matchings_unique.push_back(matchings[(int)index[cc]]);
Minfoall_unique.push_back(Minfoall[(int)index[cc]]); }
matchings = matchings_unique;
Minfoall = Minfoall_unique;
cout <<"The two images match! "<< matchings.size()<<" matchings are identified. log(nfa)="<< nfa <<"."<< endl; }
else {
matchings.clear();
Minfoall.clear();
cout <<"The two images do not match. The matching is not significant: log(nfa)="<< nfa <<"."<< endl;
4. Penerapan Pengkodean Matlab untuk Seleksi dan Hasil
Proses ini dilakukan untuk menseleksi hasil dari keypoint matching
nilai matching terbesar dan memiliki nilai lebih dari treeshold akan
menjadi citra wajah hasil identifikasi. Berikut ini adalah kode proses
seleksi dan hasil :
Proses diawali dengan pembacaan matching.txt yang berisi nilai –
nilai match dari keypoint antara sketsa dan foto. Diambil nilai jumlah
keypoint match dari file tersebut lalu dilakukan perbandingan dengan
nilai jumlah matching sebelumnya. Setelah mendapat nilai jumlah
fid = fopen('matchings.txt','r');
i =1;
if (matchK>matchTst&&matchK>TreesHold) matchTst = matchK;
ImgRsltNm = ImgName; End
if(matchTst>0)
image =
strcat(TrainDatabasePath,'\',ImgRsltNm,'.jpg');
match terbesar dan memiliki treeshold lebih dari 50 maka foto akan
ditampilkan dan menjadi hasil identifikasi sketsa.
4.4. Pengujian Prototype
Selanjutnya penulis menguji prototype aplikasi identifikasi wajah
pada citra sketsa menggunakan metode ASIFT dapat menghasilkan hasil
identifikasi ciri dari sketsa dan foto. Hasil pengenalan wajah pada sketsa
dapat menunjukkan foto yang sama atau setidaknya mirip dengan sketsa.
1. Daftar Jumlah Keypoint yang Ditemukan Pada Sketsa Mengggunakan
Metode ASIFT
Tabel 4.4 Jumlah Keypoint Citra Sketsa
Nama Sketsa Sketsa Jumlah Keypoint yang Terdeteksi
1S.jpg 8078
3S.jpg 7539
4S.jpg 8614
2. Daftar Jumlah Keypoint yang Ditemukan Pada Foto Mengggunakan
Metode ASIFT
Tabel 4.5 Jumlah Keypoint Citra Foto
Nama Foto Foto Jumlah Keypoint
yang Terdeteksi
1F.jpg 7991
2F.jpg 10445
3F.jpg 8845
5
F.jpg 8621
3. Hasil Pengujian False Acceptance Rate (FAR) dan False Rejection
Rate(FRR)
Tabel 4.6 Hasil Pengujian FER dan FRR
Threshold yang Digunakan FAR FRR
30 0,12 0
40 0,04 0
50 0 0
60 0 0,2
70 0 0,6
Berdasarkan hasil pengujian FER dan FRR yang telah penulis lakukan
maka akan didapatkan titik Equal Eror Rate(EER) berada pada threshold 50.
4. Hasil Pengenalan Sketsa Menggunakan Metode ASIFT
Tabel 4.7 Jumlah Match Keypoint Citra Sketsa dan Foto Nama
Sketsa
Foto yang
dikenali
Jumlah Keypoint
Match Benar/Salah
1S.jpg 1F.jpg 56 keypoint Benar
2S.jpg 2F.jpg 77 keypoint Benar
3S.jpg 3F.jpg 104 keypoint Benar
4S.jpg 4F.jpg 66 keypoint Benar
67 5.1. Kesimpulan
Berdasarkan penelitian yang telah penulis lakukan metode Affine Scale
Invariant Feature Transform (SIFT) dapat mengidentifikasi ciri khusus (feature)
dari citra sketsa dan foto dengan baik, ini terlihat dari banyaknya feature yang
dihasilkan. Dari lima sample citra sketsa yang diidentifikasi hasil foto yang di
dapatkan merupakan wajah dari sketsa.
5.2. Saran
1. Untuk memaksimalkan kinerja proses perlu dicari algoritma yang dapat
memepercepat analisa wajah menggunakan ASIFT.
2. Gunakan fariasi algoritma SIFT lain yang dapat digunakan untuk
dari Mathwoks:
http://www.mathworks.com/company/newsletters/articles/the-origins-of-matlab.html
Guoshen, Y., & Morel, J. M. (2011). ASIFT: An Algorithm for Fully Affine
Invariant Comparison. Image Processing On Line .
Kristanto, Y. (2014). Perbandingan Teknik Scale Invariant Feature Transform
(SIFT) dan Multiscale Local Binary Pattern (MLBP) dalam Pengenalan
Wajah dengan Citra Masukan Berupa Citra Sketsa Wajah.
Lowe, D. G. (2004). Distinctive Image Features from Scale-Invariant Keypoints.
5-15.
Prasetyo, E. (2011). Pengolahan Citra Digital dan Aplikasinya mengggunakan Matlab. Yogyakarta: Andi.
Putri, G., Agung, T., & Sa'adah, S. (2014). Analisis dan Implementasi Scale
Invariant Feature Transform (SIFT) pada Sistem Autentikasi
Menggunakan Pembuluh Vena.
Rachman, A., & Romi. (2010). Analisis Penggunaan Scale Invariant Feature
Transform Sebagai Metode Ekstraksi Fitur Pada Pengenalan Jenis
Simarta, J. (2010). Rekayasa Perangkat Lunak. Yogyakarta: Andi.
Weisstein, E. W. (t.thn.). "Affine Transformation.". Dipetik July 05, 2015, dari MathWorld--A Wolfram Web Resource:
Lampiran 3.
Source Code
Prototype Aplikasi Pengenalan
'gui_OpeningFcn', @Home_OpeningFcn, ... 'gui_OutputFcn', @Home_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before Home is made visible.
function Home_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Home (see VARARGIN)
% Choose default command line output for Home handles.output = hObject;
% Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) SelectReq;
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IdenSketsa;
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Help;
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) About;
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles) % hObject handle to pushbutton5 (see GCBO)
'gui_OutputFcn', @SelectReq_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before SelectReq is made visible.
function SelectReq_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to SelectReq (see VARARGIN)
% Choose default command line output for SelectReq handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% UIWAIT makes SelectReq wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = SelectReq_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% --- Executes during object creation, after setting all properties. function SketsaPath_CreateFcn(hObject, eventdata, handles)
% hObject handle to SketsaPath (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in SketsaPathBtn.
function SketsaPathBtn_Callback(hObject, eventdata, handles) % hObject handle to SketsaPathBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) SketPath = uigetdir; % hObject handle to FotoPath (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of FotoPath as text % str2double(get(hObject,'String')) returns contents of FotoPath as a double
% --- Executes during object creation, after setting all properties. function FotoPath_CreateFcn(hObject, eventdata, handles)
get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in FotoPathBtn.
function FotoPathBtn_Callback(hObject, eventdata, handles) % hObject handle to FotoPathBtn (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) FotPath = uigetdir;
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) SketPath = handles.SketPath;
% --- Executes on button press in pushbutton4.
'gui_Singleton', gui_Singleton, ...
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before IdenSketsa is made visible.
function IdenSketsa_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to IdenSketsa (see VARARGIN)
% Choose default command line output for IdenSketsa handles.output = hObject;
% --- Executes on button press in SketBtn.
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) matchTst = 0;