Identifikasi Seseorang Berdasarkan Citra Pembuluh Darah Menggunakan Ekstraksi Fitur Local Derivative Pattern dan Algoritma PCA.
IDENTIFIKASI SESEORANG BERDASARKAN CITRA
PEMBULUH DARAH MENGGUNAKAN EKSTRAKSI FITUR
LOCAL DERIVATIVE PATTERN DAN ALGORITMA PCA
Muhamad Fikri (0822090)
Jurusan Teknik Elektro Universitas Kristen Maranatha
email:
fikri.chik@gmail.com
ABSTRAK
Semakin berkembangnya teknik biometrik menjadikan beragam pula anggota
tubuh yang dapat digunakan untuk mengenali seseorang, diantaranya pembuluh darah
pada tangan. Karena keunikan polanya, pembuluh darah dapat digunakan dalam
sistem Identifikasi. Pada Tugas Akhir ini diujikan sebuah metode untuk melakukan
identifikasi seseorang berdasarkan citra pembuluh darah menggunakan ekstraksi fitur
Local Derivative Pattern dan algoritma PCA. Citra pembuluh darah diperoleh
menggunakan kamera inframerah, selanjutnya pada setiap citra pembuluh darah
dilakukan ekstraksi Local Derivative Pattern dan dicari nilai eigenfaces yang
digunakan sebagai database. Untuk mengetahui tingkat akurasi dari perangkat lunak
yang dibuat, dilakukanlah pengujian menggunakan 30 citra uji dari individu yang ada
dalam database. Hasil pengujian menunjukkan persentase FRR sebesar 13,33%
Kata kunci : Identifikasi, Citra Pembuluh Darah, Ekstraksi fitur, Local
Derivative Pattern (LDP), Eigenface, FRR, FAR
(2)
IDENTIFICATION OF A PERSON BASED ON VEIN IMAGE
USING LOCAL DERIVATIVE PATTERN FEATURE EXTRACTION
AND PCA ALGORITHM
Muhamad Fikri(0822090)
Department of Electrical Engineering Maranatha Christian University
email:
fikri.chik@gmail.com
ABSTRACT
The development of biometric techniques make the diverse members of the
body which can also be used to identify a person, including veins of the hand.
Because of this uniqueness, veins can be used in the identification system. In this
final project tested a method for identifying of a person based on vein image using
Local Derivative Pattern feature extraction and PCA algorithm. Vein image is
obtained using an infrared camera, next to each vein image performed the extraction
of Local Derivative Pattern And sought value eigenfaces used as a database. To
determine the level of accuracy of software made, be used testing with 30 test images
of individuals that exist in the database. Test results show the percentage 13.33% of
FRR
Keywords :
Identification, Vein Image, Feature Extraction, Local Derivative
Pattern (LDP), Eigenface, FAR, FRR
(3)
DAFTAR ISI
LEMBAR PENGESAHAN
PERNYATAAN ORISINALITAS LAPORAN
PERNYATAAN PUBLIKASI LAPORAN TUGAS AKHIR
ABSTRAK ... i
ABSTRACT ... ii
KATA PENGANTAR... iii
DAFTAR ISI... v
DAFTAR GAMBAR... vii
DAFTAR TABEL ... viii
BAB I PENDAHULUAN
1.1. Latar Belakang Masalah... 1
1.2. Identifikasi Masalah ... 1
1.3. Perumusan Masalah ... 2
1.4. Tujuan ... 2
1.5. Pembatasan Masalah ... 2
1.6. Sistematika Penulisan ... 3
BAB II LANDASAN TEORI
2.1. Biometrik ... 4
2.2
Pembuluh Darah Vena ... 5
2.3. Pengolahan Citra ... 6
2.4. Representasi Citra Digital ... 7
2.4.1 Konvensi Koordinat ... 7
2.4.2 Citra Sebagai Matrik ... 8
2.5. Ekstraksi Fitur Citra ... 9
2.6. Local Derivative Pattern (LDP)... 9
(4)
2.7. Principal Component Analysis (PCA) ... 12
2.8. Distance (Jarak) ... 14
2.9. False Acceptance Rate (FAR) dan False Rejected Rate (FRR)... 14
BAB III PERANCANGAN PERANGKAT LUNAK
3.1. Sistem Perancangan ... 16
3.2. Diagram Alir (flowchart) ... 17
3.2.1 Diagram Alir Pembentukan Database... 17
3.2.2 Diagram Alir Pengujian ... 20
3.3. Penentuan Nilai Threshold... 20
3.4. Perancangan Antarmuka Pemakai ... 23
BAB IV PENGUJIAN DAN ANALISA DATA
4.1. Pengujian... 26
4.2. Analisa Data ... 32
BAB V KESIMPULAN DAN SARAN
5.1. Kesimpulan ... 34
5.2. Saran... 34
DAFTAR PUSTAKA ... 35
LAMPIRAN A LIST PROGRAM PADA MATLAB ... A
LAMPIRAN B KUMPULAN CITRA... B
(5)
DAFTAR GAMBAR
Gambar 2.1 Pembuluh Darah Vena pada Manusia ... 6
Gambar 2.2 (a) Citra burung nuri agak gelap, (b) Citra burung nuri setelah
dilakukan pengolahan citra ... 7
Gambar 2.3 Konvensi Sistem Koordinat Citra ... 8
Gambar 2.4 Contoh Untuk Menentukan Biner Dari Suatu Citra Uji ... 10
Gambar 2.5 Contoh Untuk Menentukan Biner LDP... 10
Gambar 2.6 (a) digunakan untuk menghitung 0
0, ref 1 = *, ref 2 =
∆
, (b)
digunakan untuk menghitung 45
0, ref 1 = *, ref 2 =
∆
,(c)
digunakan untuk menghitung 90
0,ref 1 = *, ref 2 =
∆
dan
(d) digunakan untuk menghitung 135
0ref 1 = *, ref 2 =
∆
.
ref 1 dan ref 2 digunakan sebagai titik point Zo ... 11
Gambar 2.7 Grafik untuk menandakan nilai biner, (a) Grafik (a-1) dan
(b-
1) menandakan nilai biner “1”, (b) Grafik (a
-2) dan (b-2)
menandakan nilai
biner “0”
... 12
Gambar 3.1 Diagram Blok Sistem Untuk Database ... 16
Gambar 3.2 Diagram Blok Sistem Untuk Proses Identifikasi... 16
Gambar 3.3 Diagram Alir Pembentukan Database Citra Referensi ... 17
Gambar 3.4 Diagram Alir Ektraksi Ciri Local Derivative Pattern (LDP) ... 18
Gambar 3.5 Diagram Alir Eigenfaces ... 19
Gambar 3.6 Diagram Alir Pengujian ... 20
Gambar 3.7 Rancangan Tampilan Perangkat Lunak... 24
Gambar 4.1 Citra Digunakan Sebagai Database ... 26
Gambar 4.2 Citra Uji Dalam Database ... 26
Gambar 4.3 Tampilan Aplikasi Untuk Seseorang Yang Teridentifikasi ... 27
Gambar 4.4 Tampilan Aplikasi Untuk Seseorang Yang Tidak Teridentifikasi .... 28
(6)
DAFTAR TABEL
Tabel 3.1 Pengujian Untuk Menentukan Nilai Threshold ... 21
Tabel 3.2 Nilai Jarak Euclidean Rata
–
Rata dari Tiap Individu ... 22
Tabel 3.3 Penjelasan Rancangan Tampilan Perangkat Lunak ... 24
Tabel 4.1 Pengujian Menggunakan Citra Yang Digunakan Sebagai Database .... 28
Tabel 4.2 Pengujian Menggunakan Citra Yang Ada Dalam Database ... 30
(7)
LAMPIRAN A
(8)
1.
Program Ekstraksi Local Derivative Pattern (LDP)
A = dir('C:\MATLAB\R2012a\bin\database\*.jpg'); % folder citra referensi
T=[];
for i = 1 : length(A)
namafile = fullfile('C:\MATLAB\R2012a\bin\database',A(i).name); I = imread(namafile);
vein=imresize(I,[100 100]);
M=rgb2gray(vein); % ubah citra ke bentuk grayscale w=size(M,1); %lebar citra
h=size(M,2); %tinggi citra
% ektraksi LDP for i=3:w-2
for j=3:h-2
if M(i+1,j+1)>M(i+1,j) && M(i,j)>M(i,j-1); I1= 0;
elseif M(i+1,j+1)<M(i+1,j) && M(i,j)<M(i,j-1); I1=0;
elseif M(i+1,j+1)>M(i+1,j) && M(i,j)<M(i,j-1); I1=1;
else M(i+1,j+1)<M(i+1,j) && M(i,j)>M(i,j-1); I1=1;
end
if M(i+1,j)>M(i+1,j-1) && M(i,j)>M(i,j-1); I2= 0;
elseif M(i+1,j)<M(i+1,j-1) && M(i,j)<M(i,j-1); I2=0;
elseif M(i+1,j)>M(i+1,j-1) && M(i,j)<M(i,j-1); I2=1;
else M(i+1,j)<M(i+1,j-1) && M(i,j)>M(i,j-1); I2=1;
end
if M(i+1,j-1)>M(i+1,j-2) && M(i,j)>M(i,j-1); I3=0;
elseif M(i+1,j-1)<M(i+1,j-2) && M(i,j)<M(i,j-1); I3=0;
elseif M(i+1,j-1)>M(i+1,j-2) && M(i,j)<M(i,j-1); I3=1;
else M(i+1,j-1)<M(i+1,j-2) && M(i,j)>M(i,j-1); I3=1;
end
if M(i,j)>M(i,j-1) && M(i,j-1)>M(i,j-2); I4= 0;
elseif M(i,j)<M(i,j-1) && M(i,j-1)<M(i,j-2); I4=0;
elseif M(i,j)>M(i,j-1) && M(i,j-1)<M(i,j-2); I4=1;
else M(i,j)<M(i,j-1) && M(i,j-1)>M(i,j-2); I4=1;
(9)
if M(i,j)>M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=1;
else M(i,j)<M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=1;
else M(i,j)<M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=1;
else M(i,j)<M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7=1;
End
if M(i,j+1)>M(i,j) && M(i,j)>M(i,j-1); I8=0;
elseif M(i,j+1)<M(i,j) && M(i,j)<M(i,j-1); I8=0;
elseif M(i,j+1)>M(i,j) && M(i,j)<M(i,j-1); I8=1;
else M(i,j+1)<M(i,j) && M(i,j)>M(i,j-1); I8=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10=1;
(10)
if M(i,j)>M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=1;
end
if M(i,j)>M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12= 0;
elseif M(i,j)<M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=0;
elseif M(i,j)>M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=1;
else M(i,j)<M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14=1;
end
if M(i-1,j+1)>M(i,j) && M(i,j)>M(i+1,j-1); I15= 0;
elseif M(i-1,j+1)<M(i,j) && M(i,j)<M(i+1,j-1); I15=0;
elseif M(i-1,j+1)>M(i,j) && M(i,j)<M(i+1,j-1); I15=1;
else M(i-1,j+1)<M(i,j) && M(i,j)>M(i+1,j-1); I15=1;
end
if M(i,j+1)>M(i+1,j) && M(i,j)>M(i+1,j-1); I16=0;
elseif M(i,j+1)<M(i+1,j) && M(i,j)<M(i+1,j-1); I16=0;
elseif M(i,j+1)>M(i+1,j) && M(i,j)<M(i+1,j-1); I16=1;
else M(i,j+1)<M(i+1,j) && M(i,j)>M(i+1,j-1); I16=1;
(11)
if M(i,j)>M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=1;
else M(i,j)<M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j)>M(i+2,j); I18= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j)<M(i+2,j); I18=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j)<M(i+2,j); I18=1;
else M(i,j)<M(i+1,j) && M(i+1,j)>M(i+2,j); I18=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=0;
elseif M(i,j)<M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=1;
else M(i,j)<M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=1;
end
if M(i,j)>M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20= 0;
elseif M(i,j)<M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=0;
elseif M(i,j)>M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=1;
else M(i,j)<M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20=1;
end
if M(i,j)>M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21= 0;
elseif M(i,j)<M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=0;
elseif M(i,j)>M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=1;
else M(i,j)<M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21=1;
end
if M(i-1,j)>M(i,j) && M(i,j)>M(i+1,j); I22= 0;
elseif M(i-1,j)<M(i,j) && M(i,j)<M(i+1,j); I22=0;
elseif M(i-1,j)>M(i,j) && M(i,j)<M(i+1,j); I22=1;
(12)
I22=1; end
if M(i-1,j+1)>M(i,j+1) && M(i,j)>M(i+1,j); I23= 0;
elseif M(i-1,j+1)<M(i,j+1) && M(i,j)<M(i+1,j); I23=0;
elseif M(i-1,j+1)>M(i,j+1) && M(i,j)<M(i+1,j); I23=1;
else M(i-1,j+1)<M(i,j+1) && M(i,j)>M(i+1,j); I23=1;
end
if M(i,j+1)>M(i+1,j+1) && M(i,j)>M(i+1,j); I24=0;
elseif M(i,j+1)<M(i+1,j+1) && M(i,j)<M(i+1,j); I24=0;
elseif M(i,j+1)>M(i+1,j+1) && M(i,j)<M(i+1,j); I24=1;
else M(i,j+1)<M(i+1,j+1) && M(i,j)>M(i+1,j); I24=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=1;
end
if M(i,j)>M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28= 0;
elseif M(i,j)<M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=0;
elseif M(i,j)>M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=1;
else M(i,j)<M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28=1;
(13)
if M(i-1,j-1)>M(i,j) && M(i,j)>M(i-1,j-1); I29= 0;
elseif M(i-1,j-1)<M(i,j) && M(i,j)<M(i-1,j-1); I29=0;
elseif M(i-1,j-1)>M(i,j) && M(i,j)<M(i-1,j-1); I29=1;
else M(i-1,j-1)<M(i,j) && M(i,j)>M(i-1,j-1); I29=1;
end
if M(i-1,j)>M(i,j+1) && M(i,j)>M(i+1,j+1); I30= 0;
elseif M(i-1,j)<M(i,j+1) && M(i,j)<M(i+1,j+1); I30=0;
elseif M(i-1,j)>M(i,j+1) && M(i,j)<M(i+1,j+1); I30=1;
else M(i-1,j)<M(i,j+1) && M(i,j)>M(i+1,j+1); I30=1;
end
if M(i-1,j+1)>M(i,j+2) && M(i,j)>M(i+1,j+1); I31= 0;
elseif M(i-1,j+1)<M(i,j+2) && M(i,j)<M(i+1,j+1); I31=0;
elseif M(i-1,j+1)>M(i,j+2) && M(i,j)<M(i+1,j+1); I31=1;
else M(i-1,j+1)<M(i,j+2) && M(i,j)>M(i+1,j+1); I31=1;
end
if M(i,j+1)>M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=0;
elseif M(i,j+1)<M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=0;
elseif M(i,j+1)>M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=1;
else M(i,j+1)<M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=1;
end
LDP(i,j)=I1*2^31+I2*2^30+I3*2^29+I4*2^28+I5*2^27+I6*2^26+I7*2^25+I 8*2^24+I9*2^23+I10*2^22+I11*2^21+I12*2^20+I13*2^19+I14*2^18+I15*2^ 17+I16*2^16+I17*2^15+I18*2^14+I19*2^13+I20*2^12+I21*2^11+I22*2^10+ I23*2^9+I24*2^8+I25*2^7+I26*2^6+I27*2^5+I28*2^4+I29*2^3+I30*2^2+I3 1*2^1+I32*2^0;
end end
[baris kolom] = size(LDP);
temp = reshape(LDP',baris*kolom,1); % mengubah ukuran citra 2D menjadi 1D
T = [T temp]; end
coba=T;
(14)
2.
Program Menentukan Eigenfaces
load coba.mat % memanggil citra hasil Ekstraksi LDP T=coba; % citra berukuran NxP
m = mean(T,2); % menghitung nilai rata - rata dari citra pembuluh darah
jumlah_percobaan = size(T,2); A = [];
for i = 1 : jumlah_percobaan
selisih = double(T(:,i)) - m; % menghitung selisih antara citra rata - rata dengan citra hasil ekstraksi LDP
A = [A selisih]; % menggabungkan setiap citra selisih end
C = A'*A; % menentukan nilai covariance matrik
[V D] = eig(C); % menentukan nilai eigen dan vektor eigen C_eigen_vektor = V; % mengambil nilai vektor eigen
Eigenfaces = A * C_eigen_vektor; % menentukan nilai eigenfaces
save 'C:\MATLAB\R2012a\bin\Eigenfaces' Eigenfaces;
3.
Program pengujian
load Eigenfaces.mat % memanggil nilai eigenfaces load coba.mat % memanggil citra hasil Ekstraksi LDP
T=coba;
m = mean(T,2); % menghitung nilai rata - rata dari citra pembuluh darah
jumlah_percobaan = size(T,2); A = [];
for i = 1 : jumlah_percobaan
selisih = double(T(:,i)) - m; % menghitung selisih antara citra rata - rata dengan citra hasil ekstraksi LDP
A = [A selisih]; % menggabungkan setiap citra selisih end
proyeksicitra = [];
jumlah_percobaan = size(A,2); for i = 1 : jumlah_percobaan
temp = Eigenfaces'*A(:,i); % menggabungkan setiap citra proyeksi
proyeksicitra = [proyeksicitra temp]; end
% ektraksi LDP dan mencari nilai eigenfaces dari citra uji I=imread('C:\MATLAB\R2012a\bin\database\04-IMG-02.jpg');
vein=imresize(I,[100 100]); M=rgb2gray(vein);
w=size(M,1); h=size(M,2); for i=3:w-2
for j=3:h-2
if M(i+1,j+1)>M(i+1,j) && M(i,j)>M(i,j-1); I1= 0;
elseif M(i+1,j+1)<M(i+1,j) && M(i,j)<M(i,j-1); I1=0;
(15)
elseif M(i+1,j+1)>M(i+1,j) && M(i,j)<M(i,j-1); I1=1;
else M(i+1,j+1)<M(i+1,j) && M(i,j)>M(i,j-1); I1=1;
end
if M(i+1,j)>M(i+1,j-1) && M(i,j)>M(i,j-1); I2= 0;
elseif M(i+1,j)<M(i+1,j-1) && M(i,j)<M(i,j-1); I2=0;
elseif M(i+1,j)>M(i+1,j-1) && M(i,j)<M(i,j-1); I2=1;
else M(i+1,j)<M(i+1,j-1) && M(i,j)>M(i,j-1); I2=1;
end
if M(i+1,j-1)>M(i+1,j-2) && M(i,j)>M(i,j-1); I3=0;
elseif M(i+1,j-1)<M(i+1,j-2) && M(i,j)<M(i,j-1); I3=0;
elseif M(i+1,j-1)>M(i+1,j-2) && M(i,j)<M(i,j-1); I3=1;
else M(i+1,j-1)<M(i+1,j-2) && M(i,j)>M(i,j-1); I3=1;
end
if M(i,j)>M(i,j-1) && M(i,j-1)>M(i,j-2); I4= 0;
elseif M(i,j)<M(i,j-1) && M(i,j-1)<M(i,j-2); I4=0;
elseif M(i,j)>M(i,j-1) && M(i,j-1)<M(i,j-2); I4=1;
else M(i,j)<M(i,j-1) && M(i,j-1)>M(i,j-2); I4=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=1;
else M(i,j)<M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=1;
else M(i,j)<M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7= 0;
(16)
I7=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=1;
else M(i,j)<M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7=1;
end
if M(i,j+1)>M(i,j) && M(i,j)>M(i,j-1); I8=0;
elseif M(i,j+1)<M(i,j) && M(i,j)<M(i,j-1); I8=0;
elseif M(i,j+1)>M(i,j) && M(i,j)<M(i,j-1); I8=1;
else M(i,j+1)<M(i,j) && M(i,j)>M(i,j-1); I8=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=1;
end
if M(i,j)>M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12= 0;
elseif M(i,j)<M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=0;
elseif M(i,j)>M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=1;
else M(i,j)<M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13= 0;
(17)
I13=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14=1;
end
if M(i-1,j+1)>M(i,j) && M(i,j)>M(i+1,j-1); I15= 0;
elseif M(i-1,j+1)<M(i,j) && M(i,j)<M(i+1,j-1); I15=0;
elseif M(i-1,j+1)>M(i,j) && M(i,j)<M(i+1,j-1); I15=1;
else M(i-1,j+1)<M(i,j) && M(i,j)>M(i+1,j-1); I15=1;
end
if M(i,j+1)>M(i+1,j) && M(i,j)>M(i+1,j-1); I16=0;
elseif M(i,j+1)<M(i+1,j) && M(i,j)<M(i+1,j-1); I16=0;
elseif M(i,j+1)>M(i+1,j) && M(i,j)<M(i+1,j-1); I16=1;
else M(i,j+1)<M(i+1,j) && M(i,j)>M(i+1,j-1); I16=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=1;
else M(i,j)<M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j)>M(i+2,j); I18= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j)<M(i+2,j); I18=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j)<M(i+2,j); I18=1;
else M(i,j)<M(i+1,j) && M(i+1,j)>M(i+2,j); I18=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=0;
(18)
elseif M(i,j)<M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=1;
else M(i,j)<M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=1;
end
if M(i,j)>M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20= 0;
elseif M(i,j)<M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=0;
elseif M(i,j)>M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=1;
else M(i,j)<M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20=1;
end
if M(i,j)>M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21= 0;
elseif M(i,j)<M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=0;
elseif M(i,j)>M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=1;
else M(i,j)<M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21=1;
end
if M(i-1,j)>M(i,j) && M(i,j)>M(i+1,j); I22= 0;
elseif M(i-1,j)<M(i,j) && M(i,j)<M(i+1,j); I22=0;
elseif M(i-1,j)>M(i,j) && M(i,j)<M(i+1,j); I22=1;
else M(i-1,j)<M(i,j) && M(i,j)>M(i+1,j); I22=1;
end
if M(i-1,j+1)>M(i,j+1) && M(i,j)>M(i+1,j); I23= 0;
elseif M(i-1,j+1)<M(i,j+1) && M(i,j)<M(i+1,j); I23=0;
elseif M(i-1,j+1)>M(i,j+1) && M(i,j)<M(i+1,j); I23=1;
else M(i-1,j+1)<M(i,j+1) && M(i,j)>M(i+1,j); I23=1;
end
if M(i,j+1)>M(i+1,j+1) && M(i,j)>M(i+1,j); I24=0;
elseif M(i,j+1)<M(i+1,j+1) && M(i,j)<M(i+1,j); I24=0;
elseif M(i,j+1)>M(i+1,j+1) && M(i,j)<M(i+1,j); I24=1;
else M(i,j+1)<M(i+1,j+1) && M(i,j)>M(i+1,j); I24=1;
end
(19)
I25= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=1;
end
if M(i,j)>M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28= 0;
elseif M(i,j)<M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=0;
elseif M(i,j)>M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=1;
else M(i,j)<M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28=1;
end
if M(i-1,j-1)>M(i,j) && M(i,j)>M(i-1,j-1); I29= 0;
elseif M(i-1,j-1)<M(i,j) && M(i,j)<M(i-1,j-1); I29=0;
elseif M(i-1,j-1)>M(i,j) && M(i,j)<M(i-1,j-1); I29=1;
else M(i-1,j-1)<M(i,j) && M(i,j)>M(i-1,j-1); I29=1;
end
if M(i-1,j)>M(i,j+1) && M(i,j)>M(i+1,j+1); I30= 0;
elseif M(i-1,j)<M(i,j+1) && M(i,j)<M(i+1,j+1); I30=0;
elseif M(i-1,j)>M(i,j+1) && M(i,j)<M(i+1,j+1); I30=1;
else M(i-1,j)<M(i,j+1) && M(i,j)>M(i+1,j+1); I30=1;
(20)
if M(i-1,j+1)>M(i,j+2) && M(i,j)>M(i+1,j+1); I31= 0;
elseif M(i-1,j+1)<M(i,j+2) && M(i,j)<M(i+1,j+1); I31=0;
elseif M(i-1,j+1)>M(i,j+2) && M(i,j)<M(i+1,j+1); I31=1;
else M(i-1,j+1)<M(i,j+2) && M(i,j)>M(i+1,j+1); I31=1;
end
if M(i,j+1)>M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=0;
elseif M(i,j+1)<M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=0;
elseif M(i,j+1)>M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=1;
else M(i,j+1)<M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=1;
end
LDP(i,j)=I1*2^31+I2*2^30+I3*2^29+I4*2^28+I5*2^27+I6*2^26+I7*2^25+I 8*2^24+I9*2^23+I10*2^22+I11*2^21+I12*2^20+I13*2^19+I14*2^18+I15*2^ 17+I16*2^16+I17*2^15+I18*2^14+I19*2^13+I20*2^12+I21*2^11+I22*2^10+ I23*2^9+I24*2^8+I25*2^7+I26*2^6+I27*2^5+I28*2^4+I29*2^3+I30*2^2+I3 1*2^1+I32*2^0;
end end
[irow icol] = size(LDP);
citra_1D = reshape(LDP',irow*icol,1);
selisih_uji = double(citra_1D) - m; % selisih hasil ektraksi LDP dengan citra rata - rata
proyeksi_citra_uji = Eigenfaces' * selisih_uji; % vektor fitur citra uji
% menghitung euclidean distance minimum
Euc_dist = [];
for i = 1 : jumlah_percobaan q = proyeksicitra(:,i);
jarak = sqrt(sum((proyeksi_citra_uji - q).^2)); Euc_dist = [Euc_dist jarak];
end
[Euc_dist_min , indeks_pengenalan] = min(Euc_dist);
keluaran_citra = strcat(int2str(indeks_pengenalan),'.jpg') H=Euc_dist_min;
threshold=2.184158e+22; if H>threshold
B=imread('C:\MATLAB\R2012a\bin\salah.jpg') figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji')
end
if indeks_pengenalan==1 && H<=threshold
(21)
figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji')
end
if indeks_pengenalan==2 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==3 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==4 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==5 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==6 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==7 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==8 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==9 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==10 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==11 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==12 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
(22)
if indeks_pengenalan==13 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==14 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==15 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==16 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==17 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==18 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==19 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==20 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==21 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==22 && H<threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==23 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==24 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-04.jpg'); figure;imshow(B);
(23)
end
if indeks_pengenalan==25 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==26 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==27 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==28 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==29 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==30 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==31 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==32 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==33 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
(24)
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==35 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==36 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==37 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==38 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==39 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==40 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==41 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\09-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
(25)
B=imread('C:\MATLAB\R2012a\bin\database\09-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==43 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\09-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==44 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\09-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==45 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\09-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==46 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\10-IMG-01.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==47 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\10-IMG-02.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==48 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\10-IMG-03.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
if indeks_pengenalan==49 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\10-IMG-04.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
(26)
B=imread('C:\MATLAB\R2012a\bin\database\10-IMG-05.jpg'); figure;imshow(B);
title('Gambar hasil pengenalan dari gambar uji') end
4. Program Pengujian Pada GUI
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) [filename,pathname]=uigetfile({'*.jpg';'*.png*';'.jpeg;*';'.tif'}, 'Choose image:');
I= imread([pathname,filename]); handles.I=I;
guidata(hObject,handles); axes(handles.axes1);
set(handles.edit1,'string',filename); imshow(I);
% --- 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)
C= imresize(handles.I, [100 100]); M= rgb2gray(C);
guidata(hObject,handles) %R= imadjust(G,[],[],0.8); %M=histeq(R);
w=size(M,1); h=size(M,2); for i=3:w-2
for j=3:h-2
% untuk 0 derajat
if M(i+1,j+1)>M(i+1,j) && M(i,j)>M(i,j-1); I1= 0;
elseif M(i+1,j+1)<M(i+1,j) && M(i,j)<M(i,j-1); I1=0;
elseif M(i+1,j+1)>M(i+1,j) && M(i,j)<M(i,j-1); I1=1;
else M(i+1,j+1)<M(i+1,j) && M(i,j)>M(i,j-1); I1=1;
end
if M(i+1,j)>M(i+1,j-1) && M(i,j)>M(i,j-1); I2= 0;
elseif M(i+1,j)<M(i+1,j-1) && M(i,j)<M(i,j-1); I2=0;
elseif M(i+1,j)>M(i+1,j-1) && M(i,j)<M(i,j-1); I2=1;
else M(i+1,j)<M(i+1,j-1) && M(i,j)>M(i,j-1); I2=1;
(27)
if M(i+1,j-1)>M(i+1,j-2) && M(i,j)>M(i,j-1); I3=0;
elseif M(i+1,j-1)<M(i+1,j-2) && M(i,j)<M(i,j-1); I3=0;
elseif M(i+1,j-1)>M(i+1,j-2) && M(i,j)<M(i,j-1); I3=1;
else M(i+1,j-1)<M(i+1,j-2) && M(i,j)>M(i,j-1); I3=1;
end
if M(i,j)>M(i,j-1) && M(i,j-1)>M(i,j-2); I4= 0;
elseif M(i,j)<M(i,j-1) && M(i,j-1)<M(i,j-2); I4=0;
elseif M(i,j)>M(i,j-1) && M(i,j-1)<M(i,j-2); I4=1;
else M(i,j)<M(i,j-1) && M(i,j-1)>M(i,j-2); I4=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=1;
else M(i,j)<M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=1;
else M(i,j)<M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=1;
else M(i,j)<M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7=1;
end
if M(i,j+1)>M(i,j) && M(i,j)>M(i,j-1); I8=0;
elseif M(i,j+1)<M(i,j) && M(i,j)<M(i,j-1); I8=0;
elseif M(i,j+1)>M(i,j) && M(i,j)<M(i,j-1); I8=1;
else M(i,j+1)<M(i,j) && M(i,j)>M(i,j-1); I8=1;
(28)
LDP1(i,j)=I1*2^31+I2*2^30+I3*2^29+I4*2^28+I5*2^27+I6*2^26+I7*2^25+ I8*2^24;
end end
axes(handles.axes7); imshow(LDP1,[]);
% untuk 45 derajat
C= imresize(handles.I, [100 100]); M= rgb2gray(C);
%R= imadjust(G,[],[],0.8); %M=histeq(R);
w=size(M,1); h=size(M,2); for i=3:w-2
for j=3:h-2
if M(i,j)>M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=1;
end
if M(i,j)>M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12= 0;
elseif M(i,j)<M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=0;
elseif M(i,j)>M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=1;
else M(i,j)<M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12=1;
end
(29)
I13= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14=1;
end
if M(i-1,j+1)>M(i,j) && M(i,j)>M(i+1,j-1); I15= 0;
elseif M(i-1,j+1)<M(i,j) && M(i,j)<M(i+1,j-1); I15=0;
elseif M(i-1,j+1)>M(i,j) && M(i,j)<M(i+1,j-1); I15=1;
else M(i-1,j+1)<M(i,j) && M(i,j)>M(i+1,j-1); I15=1;
end
if M(i,j+1)>M(i+1,j) && M(i,j)>M(i+1,j-1); I16=0;
elseif M(i,j+1)<M(i+1,j) && M(i,j)<M(i+1,j-1); I16=0;
elseif M(i,j+1)>M(i+1,j) && M(i,j)<M(i+1,j-1); I16=1;
else M(i,j+1)<M(i+1,j) && M(i,j)>M(i+1,j-1); I16=1;
end
LDP2(i,j)=I9*2^23+I10*2^22+I11*2^21+I12*2^20+I13*2^19+I14*2^18+I15 *2^17+I16*2^16;
end end
axes(handles.axes3); imshow(LDP2,[]);
%untuk 90 derajat
C= imresize(handles.I, [100 100]); M= rgb2gray(C);
guidata(hObject,handles); %R=imadjust(G,[],[],0.8); %M=histeq(R);
w=size(M,1); h=size(M,2); for i=3:w-2
for j=3:h-2
if M(i,j)>M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17= 0;
(30)
elseif M(i,j)<M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=1;
else M(i,j)<M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j)>M(i+2,j); I18= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j)<M(i+2,j); I18=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j)<M(i+2,j); I18=1;
else M(i,j)<M(i+1,j) && M(i+1,j)>M(i+2,j); I18=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=0;
elseif M(i,j)<M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=1;
else M(i,j)<M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=1;
end
if M(i,j)>M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20= 0;
elseif M(i,j)<M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=0;
elseif M(i,j)>M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=1;
else M(i,j)<M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20=1;
end
if M(i,j)>M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21= 0;
elseif M(i,j)<M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=0;
elseif M(i,j)>M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=1;
else M(i,j)<M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21=1;
end
if M(i-1,j)>M(i,j) && M(i,j)>M(i+1,j); I22= 0;
elseif M(i-1,j)<M(i,j) && M(i,j)<M(i+1,j); I22=0;
elseif M(i-1,j)>M(i,j) && M(i,j)<M(i+1,j); I22=1;
else M(i-1,j)<M(i,j) && M(i,j)>M(i+1,j); I22=1;
(31)
if M(i-1,j+1)>M(i,j+1) && M(i,j)>M(i+1,j); I23= 0;
elseif M(i-1,j+1)<M(i,j+1) && M(i,j)<M(i+1,j); I23=0;
elseif M(i-1,j+1)>M(i,j+1) && M(i,j)<M(i+1,j); I23=1;
else M(i-1,j+1)<M(i,j+1) && M(i,j)>M(i+1,j); I23=1;
end
if M(i,j+1)>M(i+1,j+1) && M(i,j)>M(i+1,j); I24=0;
elseif M(i,j+1)<M(i+1,j+1) && M(i,j)<M(i+1,j); I24=0;
elseif M(i,j+1)>M(i+1,j+1) && M(i,j)<M(i+1,j); I24=1;
else M(i,j+1)<M(i+1,j+1) && M(i,j)>M(i+1,j); I24=1;
end
LDP3(i,j)=I17*2^15+I18*2^14+I19*2^13+I20*2^12+I21*2^11+I22*2^10+I2 3*2^9+I24*2^8;
end end
axes(handles.axes4); imshow(LDP3,[]);
%untuk 135 derajat
C= imresize(handles.I, [100 100]); M= rgb2gray(C);
guidata(hObject,handles); %R= imadjust(G,[],[],0.8); %M=histeq(R);
w=size(M,1); h=size(M,2); for i=3:w-2
for j=3:h-2
if M(i,j)>M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26=1;
end
(32)
I27=0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=1;
end
if M(i,j)>M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28= 0;
elseif M(i,j)<M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=0;
elseif M(i,j)>M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=1;
else M(i,j)<M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28=1;
end
if M(i-1,j-1)>M(i,j) && M(i,j)>M(i-1,j-1); I29= 0;
elseif M(i-1,j-1)<M(i,j) && M(i,j)<M(i-1,j-1); I29=0;
elseif M(i-1,j-1)>M(i,j) && M(i,j)<M(i-1,j-1); I29=1;
else M(i-1,j-1)<M(i,j) && M(i,j)>M(i-1,j-1); I29=1;
end
if M(i-1,j)>M(i,j+1) && M(i,j)>M(i+1,j+1); I30= 0;
elseif M(i-1,j)<M(i,j+1) && M(i,j)<M(i+1,j+1); I30=0;
elseif M(i-1,j)>M(i,j+1) && M(i,j)<M(i+1,j+1); I30=1;
else M(i-1,j)<M(i,j+1) && M(i,j)>M(i+1,j+1); I30=1;
end
if M(i-1,j+1)>M(i,j+2) && M(i,j)>M(i+1,j+1); I31= 0;
elseif M(i-1,j+1)<M(i,j+2) && M(i,j)<M(i+1,j+1); I31=0;
elseif M(i-1,j+1)>M(i,j+2) && M(i,j)<M(i+1,j+1); I31=1;
else M(i-1,j+1)<M(i,j+2) && M(i,j)>M(i+1,j+1); I31=1;
end
if M(i,j+1)>M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=0;
elseif M(i,j+1)<M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=0;
elseif M(i,j+1)>M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=1;
else M(i,j+1)<M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=1;
(33)
LDP4(i,j)=I25*2^7+I26*2^6+I27*2^5+I28*2^4+I29*2^3+I30*2^2+I31*2^1+ I32*2^0;
end end
axes(handles.axes5); imshow(LDP4,[]);
%total
C= imresize(handles.I, [100 100]); M= rgb2gray(C);
guidata(hObject,handles); %R= imadjust(G,[],[],0.8); %M=histeq(R);
w=size(M,1); h=size(M,2); for i=3:w-2
for j=3:h-2
if M(i+1,j+1)>M(i+1,j) && M(i,j)>M(i,j-1); I1= 0;
elseif M(i+1,j+1)<M(i+1,j) && M(i,j)<M(i,j-1); I1=0;
elseif M(i+1,j+1)>M(i+1,j) && M(i,j)<M(i,j-1); I1=1;
else M(i+1,j+1)<M(i+1,j) && M(i,j)>M(i,j-1); I1=1;
end
if M(i+1,j)>M(i+1,j-1) && M(i,j)>M(i,j-1); I2= 0;
elseif M(i+1,j)<M(i+1,j-1) && M(i,j)<M(i,j-1); I2=0;
elseif M(i+1,j)>M(i+1,j-1) && M(i,j)<M(i,j-1); I2=1;
else M(i+1,j)<M(i+1,j-1) && M(i,j)>M(i,j-1); I2=1;
end
if M(i+1,j-1)>M(i+1,j-2) && M(i,j)>M(i,j-1); I3=0;
elseif M(i+1,j-1)<M(i+1,j-2) && M(i,j)<M(i,j-1); I3=0;
elseif M(i+1,j-1)>M(i+1,j-2) && M(i,j)<M(i,j-1); I3=1;
else M(i+1,j-1)<M(i+1,j-2) && M(i,j)>M(i,j-1); I3=1;
end
if M(i,j)>M(i,j-1) && M(i,j-1)>M(i,j-2); I4= 0;
elseif M(i,j)<M(i,j-1) && M(i,j-1)<M(i,j-2); I4=0;
elseif M(i,j)>M(i,j-1) && M(i,j-1)<M(i,j-2); I4=1;
else M(i,j)<M(i,j-1) && M(i,j-1)>M(i,j-2); I4=1;
(34)
if M(i,j)>M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=1;
else M(i,j)<M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=1;
else M(i,j)<M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=1;
else M(i,j)<M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7=1;
end
if M(i,j+1)>M(i,j) && M(i,j)>M(i,j-1); I8=0;
elseif M(i,j+1)<M(i,j) && M(i,j)<M(i,j-1); I8=0;
elseif M(i,j+1)>M(i,j) && M(i,j)<M(i,j-1); I8=1;
else M(i,j+1)<M(i,j) && M(i,j)>M(i,j-1); I8=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10=1;
end
(35)
I11=0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=1;
end
if M(i,j)>M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12= 0;
elseif M(i,j)<M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=0;
elseif M(i,j)>M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=1;
else M(i,j)<M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14=1;
end
if M(i-1,j+1)>M(i,j) && M(i,j)>M(i+1,j-1); I15= 0;
elseif M(i-1,j+1)<M(i,j) && M(i,j)<M(i+1,j-1); I15=0;
elseif M(i-1,j+1)>M(i,j) && M(i,j)<M(i+1,j-1); I15=1;
else M(i-1,j+1)<M(i,j) && M(i,j)>M(i+1,j-1); I15=1;
end
if M(i,j+1)>M(i+1,j) && M(i,j)>M(i+1,j-1); I16=0;
elseif M(i,j+1)<M(i+1,j) && M(i,j)<M(i+1,j-1); I16=0;
elseif M(i,j+1)>M(i+1,j) && M(i,j)<M(i+1,j-1); I16=1;
else M(i,j+1)<M(i+1,j) && M(i,j)>M(i+1,j-1); I16=1;
(36)
if M(i,j)>M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=1;
else M(i,j)<M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j)>M(i+2,j); I18= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j)<M(i+2,j); I18=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j)<M(i+2,j); I18=1;
else M(i,j)<M(i+1,j) && M(i+1,j)>M(i+2,j); I18=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=0;
elseif M(i,j)<M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=1;
else M(i,j)<M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=1;
end
if M(i,j)>M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20= 0;
elseif M(i,j)<M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=0;
elseif M(i,j)>M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=1;
else M(i,j)<M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20=1;
end
if M(i,j)>M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21= 0;
elseif M(i,j)<M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=0;
elseif M(i,j)>M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=1;
else M(i,j)<M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21=1;
end
if M(i-1,j)>M(i,j) && M(i,j)>M(i+1,j); I22= 0;
elseif M(i-1,j)<M(i,j) && M(i,j)<M(i+1,j); I22=0;
elseif M(i-1,j)>M(i,j) && M(i,j)<M(i+1,j); I22=1;
else M(i-1,j)<M(i,j) && M(i,j)>M(i+1,j); I22=1;
(37)
end
if M(i-1,j+1)>M(i,j+1) && M(i,j)>M(i+1,j); I23= 0;
elseif M(i-1,j+1)<M(i,j+1) && M(i,j)<M(i+1,j); I23=0;
elseif M(i-1,j+1)>M(i,j+1) && M(i,j)<M(i+1,j); I23=1;
else M(i-1,j+1)<M(i,j+1) && M(i,j)>M(i+1,j); I23=1;
end
if M(i,j+1)>M(i+1,j+1) && M(i,j)>M(i+1,j); I24=0;
elseif M(i,j+1)<M(i+1,j+1) && M(i,j)<M(i+1,j); I24=0;
elseif M(i,j+1)>M(i+1,j+1) && M(i,j)<M(i+1,j); I24=1;
else M(i,j+1)<M(i+1,j+1) && M(i,j)>M(i+1,j); I24=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=1;
end
if M(i,j)>M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28= 0;
elseif M(i,j)<M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=0;
elseif M(i,j)>M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=1;
(38)
I28=1; end
if M(i-1,j-1)>M(i,j) && M(i,j)>M(i-1,j-1); I29= 0;
elseif M(i-1,j-1)<M(i,j) && M(i,j)<M(i-1,j-1); I29=0;
elseif M(i-1,j-1)>M(i,j) && M(i,j)<M(i-1,j-1); I29=1;
else M(i-1,j-1)<M(i,j) && M(i,j)>M(i-1,j-1); I29=1;
end
if M(i-1,j)>M(i,j+1) && M(i,j)>M(i+1,j+1); I30= 0;
elseif M(i-1,j)<M(i,j+1) && M(i,j)<M(i+1,j+1); I30=0;
elseif M(i-1,j)>M(i,j+1) && M(i,j)<M(i+1,j+1); I30=1;
else M(i-1,j)<M(i,j+1) && M(i,j)>M(i+1,j+1); I30=1;
end
if M(i-1,j+1)>M(i,j+2) && M(i,j)>M(i+1,j+1); I31= 0;
elseif M(i-1,j+1)<M(i,j+2) && M(i,j)<M(i+1,j+1); I31=0;
elseif M(i-1,j+1)>M(i,j+2) && M(i,j)<M(i+1,j+1); I31=1;
else M(i-1,j+1)<M(i,j+2) && M(i,j)>M(i+1,j+1); I31=1;
end
if M(i,j+1)>M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=0;
elseif M(i,j+1)<M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=0;
elseif M(i,j+1)>M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=1;
else M(i,j+1)<M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=1;
end
LDP(i,j)=I1*2^31+I2*2^30+I3*2^29+I4*2^28+I5*2^27+I6*2^26+I7*2^25+I 8*2^24+I9*2^23+I10*2^22+I11*2^21+I12*2^20+I13*2^19+I14*2^18+I15*2^ 17+I16*2^16+I17*2^15+I18*2^14+I19*2^13+I20*2^12+I21*2^11+I22*2^10+ I23*2^9+I24*2^8+I25*2^7+I26*2^6+I27*2^5+I28*2^4+I29*2^3+I30*2^2+I3 1*2^1+I32*2^0;
end end
axes(handles.axes6); imshow(LDP,[]);
% --- 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
(39)
% handles structure with handles and user data (see GUIDATA)
load Eigenfaces.mat load coba.mat
T=coba;
m = mean(T,2); % menghitung nilai rata - rata dari citra pembuluh darah
jumlah_percobaan = size(T,2); A = [];
for i = 1 : jumlah_percobaan
selisih = double(T(:,i)) - m; % menghitung selisih antara citra rata - rata dengan citra hasil ekstraksi LDP
A = [A selisih]; % menggabungkan setiap citra selisih end
proyeksicitra = [];
jumlah_percobaan = size(A,2); for i = 1 : jumlah_percobaan
temp = Eigenfaces'*A(:,i); % menggabungkan setiap citra proyeksi
proyeksicitra = [proyeksicitra temp]; end
% ektraksi LDP dan mencari nilai eigenfaces dari citra uji vein=imresize(handles.I, [100 100])
M=rgb2gray(vein); w=size(M,1);
h=size(M,2); for i=3:w-2
for j=3:h-2
if M(i+1,j+1)>M(i+1,j) && M(i,j)>M(i,j-1); I1= 0;
elseif M(i+1,j+1)<M(i+1,j) && M(i,j)<M(i,j-1); I1=0;
elseif M(i+1,j+1)>M(i+1,j) && M(i,j)<M(i,j-1); I1=1;
else M(i+1,j+1)<M(i+1,j) && M(i,j)>M(i,j-1); I1=1;
end
if M(i+1,j)>M(i+1,j-1) && M(i,j)>M(i,j-1); I2= 0;
elseif M(i+1,j)<M(i+1,j-1) && M(i,j)<M(i,j-1); I2=0;
elseif M(i+1,j)>M(i+1,j-1) && M(i,j)<M(i,j-1); I2=1;
else M(i+1,j)<M(i+1,j-1) && M(i,j)>M(i,j-1); I2=1;
end
if M(i+1,j-1)>M(i+1,j-2) && M(i,j)>M(i,j-1); I3=0;
elseif M(i+1,j-1)<M(i+1,j-2) && M(i,j)<M(i,j-1); I3=0;
elseif M(i+1,j-1)>M(i+1,j-2) && M(i,j)<M(i,j-1); I3=1;
(40)
I3=1; end
if M(i,j)>M(i,j-1) && M(i,j-1)>M(i,j-2); I4= 0;
elseif M(i,j)<M(i,j-1) && M(i,j-1)<M(i,j-2); I4=0;
elseif M(i,j)>M(i,j-1) && M(i,j-1)<M(i,j-2); I4=1;
else M(i,j)<M(i,j-1) && M(i,j-1)>M(i,j-2); I4=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j-1)<M(i-1,j-2); I5=1;
else M(i,j)<M(i,j-1) && M(i-1,j-1)>M(i-1,j-2); I5=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j)<M(i-1,j-1); I6=1;
else M(i,j)<M(i,j-1) && M(i-1,j)>M(i-1,j-1); I6=1;
end
if M(i,j)>M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7= 0;
elseif M(i,j)<M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=0;
elseif M(i,j)>M(i,j-1) && M(i-1,j+1)<M(i-1,j); I7=1;
else M(i,j)<M(i,j-1) && M(i-1,j+1)>M(i-1,j); I7=1;
end
if M(i,j+1)>M(i,j) && M(i,j)>M(i,j-1); I8=0;
elseif M(i,j+1)<M(i,j) && M(i,j)<M(i,j-1); I8=0;
elseif M(i,j+1)>M(i,j) && M(i,j)<M(i,j-1); I8=1;
else M(i,j+1)<M(i,j) && M(i,j)>M(i,j-1); I8=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j+1)<M(i+2,j); I9=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j+1)>M(i+2,j); I9=1;
(41)
end
if M(i,j)>M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10= 0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j)<M(i+2,j-1); I10=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j)>M(i+2,j-1); I10=1;
end
if M(i,j)>M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=0;
elseif M(i,j)<M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=0;
elseif M(i,j)>M(i+1,j-1) && M(i+1,j-1)<M(i+2,j-2); I11=1;
else M(i,j)<M(i+1,j-1) && M(i+1,j-1)>M(i+2,j-2); I11=1;
end
if M(i,j)>M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12= 0;
elseif M(i,j)<M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=0;
elseif M(i,j)>M(i+1,j-1) && M(i,j-1)<M(i+1,j-2); I12=1;
else M(i,j)<M(i+1,j-1) && M(i,j-1)>M(i+1,j-2); I12=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j-1)<M(i,j-2); I13=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j-1)>M(i,j-2); I13=1;
end
if M(i,j)>M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14= 0;
elseif M(i,j)<M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=0;
elseif M(i,j)>M(i+1,j-1) && M(i-1,j)<M(i,j-1); I14=1;
else M(i,j)<M(i+1,j-1) && M(i-1,j)>M(i,j-1); I14=1;
end
if M(i-1,j+1)>M(i,j) && M(i,j)>M(i+1,j-1); I15= 0;
elseif M(i-1,j+1)<M(i,j) && M(i,j)<M(i+1,j-1); I15=0;
elseif M(i-1,j+1)>M(i,j) && M(i,j)<M(i+1,j-1); I15=1;
(42)
else M(i-1,j+1)<M(i,j) && M(i,j)>M(i+1,j-1); I15=1;
end
if M(i,j+1)>M(i+1,j) && M(i,j)>M(i+1,j-1); I16=0;
elseif M(i,j+1)<M(i+1,j) && M(i,j)<M(i+1,j-1); I16=0;
elseif M(i,j+1)>M(i+1,j) && M(i,j)<M(i+1,j-1); I16=1;
else M(i,j+1)<M(i+1,j) && M(i,j)>M(i+1,j-1); I16=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j+1)<M(i+2,j+1); I17=1;
else M(i,j)<M(i+1,j) && M(i+1,j+1)>M(i+2,j+1); I17=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j)>M(i+2,j); I18= 0;
elseif M(i,j)<M(i+1,j) && M(i+1,j)<M(i+2,j); I18=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j)<M(i+2,j); I18=1;
else M(i,j)<M(i+1,j) && M(i+1,j)>M(i+2,j); I18=1;
end
if M(i,j)>M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=0;
elseif M(i,j)<M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=0;
elseif M(i,j)>M(i+1,j) && M(i+1,j-1)<M(i+2,j-1); I19=1;
else M(i,j)<M(i+1,j) && M(i+1,j-1)>M(i+2,j-1); I19=1;
end
if M(i,j)>M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20= 0;
elseif M(i,j)<M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=0;
elseif M(i,j)>M(i+1,j) && M(i,j-1)<M(i+1,j-1); I20=1;
else M(i,j)<M(i+1,j) && M(i,j-1)>M(i+1,j-1); I20=1;
end
if M(i,j)>M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21= 0;
elseif M(i,j)<M(i+1,j) && M(i-1,j-1)<M(i,j-1); I21=0;
(43)
I21=1;
else M(i,j)<M(i+1,j) && M(i-1,j-1)>M(i,j-1); I21=1;
end
if M(i-1,j)>M(i,j) && M(i,j)>M(i+1,j); I22= 0;
elseif M(i-1,j)<M(i,j) && M(i,j)<M(i+1,j); I22=0;
elseif M(i-1,j)>M(i,j) && M(i,j)<M(i+1,j); I22=1;
else M(i-1,j)<M(i,j) && M(i,j)>M(i+1,j); I22=1;
end
if M(i-1,j+1)>M(i,j+1) && M(i,j)>M(i+1,j); I23= 0;
elseif M(i-1,j+1)<M(i,j+1) && M(i,j)<M(i+1,j); I23=0;
elseif M(i-1,j+1)>M(i,j+1) && M(i,j)<M(i+1,j); I23=1;
else M(i-1,j+1)<M(i,j+1) && M(i,j)>M(i+1,j); I23=1;
end
if M(i,j+1)>M(i+1,j+1) && M(i,j)>M(i+1,j); I24=0;
elseif M(i,j+1)<M(i+1,j+1) && M(i,j)<M(i+1,j); I24=0;
elseif M(i,j+1)>M(i+1,j+1) && M(i,j)<M(i+1,j); I24=1;
else M(i,j+1)<M(i+1,j+1) && M(i,j)>M(i+1,j); I24=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j+1)<M(i+2,j+2); I25=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j+1)>M(i+2,j+2); I25=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26= 0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=0;
elseif M(i,j)>M(i+1,j+1) && M(i+1,j)<M(i+2,j+1); I26=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j)>M(i+2,j+1); I26=1;
end
if M(i,j)>M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=0;
elseif M(i,j)<M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=0;
(44)
elseif M(i,j)>M(i+1,j+1) && M(i+1,j-1)<M(i+2,j); I27=1;
else M(i,j)<M(i+1,j+1) && M(i+1,j-1)>M(i+2,j); I27=1;
end
if M(i,j)>M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28= 0;
elseif M(i,j)<M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=0;
elseif M(i,j)>M(i+1,j+1) && M(i,j-1)<M(i+1,j); I28=1;
else M(i,j)<M(i+1,j+1) && M(i,j-1)>M(i+1,j); I28=1;
end
if M(i-1,j-1)>M(i,j) && M(i,j)>M(i-1,j-1); I29= 0;
elseif M(i-1,j-1)<M(i,j) && M(i,j)<M(i-1,j-1); I29=0;
elseif M(i-1,j-1)>M(i,j) && M(i,j)<M(i-1,j-1); I29=1;
else M(i-1,j-1)<M(i,j) && M(i,j)>M(i-1,j-1); I29=1;
end
if M(i-1,j)>M(i,j+1) && M(i,j)>M(i+1,j+1); I30= 0;
elseif M(i-1,j)<M(i,j+1) && M(i,j)<M(i+1,j+1); I30=0;
elseif M(i-1,j)>M(i,j+1) && M(i,j)<M(i+1,j+1); I30=1;
else M(i-1,j)<M(i,j+1) && M(i,j)>M(i+1,j+1); I30=1;
end
if M(i-1,j+1)>M(i,j+2) && M(i,j)>M(i+1,j+1); I31= 0;
elseif M(i-1,j+1)<M(i,j+2) && M(i,j)<M(i+1,j+1); I31=0;
elseif M(i-1,j+1)>M(i,j+2) && M(i,j)<M(i+1,j+1); I31=1;
else M(i-1,j+1)<M(i,j+2) && M(i,j)>M(i+1,j+1); I31=1;
end
if M(i,j+1)>M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=0;
elseif M(i,j+1)<M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=0;
elseif M(i,j+1)>M(i+1,j+2) && M(i,j)<M(i+1,j+1); I32=1;
else M(i,j+1)<M(i+1,j+2) && M(i,j)>M(i+1,j+1); I32=1;
(45)
LDP(i,j)=I1*2^31+I2*2^30+I3*2^29+I4*2^28+I5*2^27+I6*2^26+I7*2^25+I 8*2^24+I9*2^23+I10*2^22+I11*2^21+I12*2^20+I13*2^19+I14*2^18+I15*2^ 17+I16*2^16+I17*2^15+I18*2^14+I19*2^13+I20*2^12+I21*2^11+I22*2^10+ I23*2^9+I24*2^8+I25*2^7+I26*2^6+I27*2^5+I28*2^4+I29*2^3+I30*2^2+I3 1*2^1+I32*2^0;
end end
[irow icol] = size(LDP);
citra_1D = reshape(LDP',irow*icol,1);
selisih_uji = double(citra_1D) - m; % selisih hasil ektraksi LDP dengan citra rata - rata
proyeksi_citra_uji = Eigenfaces' * selisih_uji; % vektor fitur citra uji
% menghitung euclidean distance minimum
Euc_dist = [];
for i = 1 : jumlah_percobaan q = proyeksicitra(:,i);
jarak = sqrt(sum((proyeksi_citra_uji - q).^2)); Euc_dist = [Euc_dist jarak];
end
[Euc_dist_min , indeks_pengenalan] = min(Euc_dist); H=Euc_dist_min;
set(handles.edit2,'string',H)
threshold=2.184158e+22; if H>threshold
B=imread('C:\MATLAB\R2012a\bin\salah.jpg') axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','-'); set(handles.edit4,'string','-'); end
if indeks_pengenalan==1 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','1'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==2 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-02.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','1'); set(handles.edit4,'string','2'); end
if indeks_pengenalan==3 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-03.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','1'); set(handles.edit4,'string','3');
(46)
if indeks_pengenalan==4 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-04.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','1'); set(handles.edit4,'string','4'); end
if indeks_pengenalan==5 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\01-IMG-05.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','1'); set(handles.edit4,'string','5'); end
if indeks_pengenalan==6 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','2'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==7 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-02.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','2'); set(handles.edit4,'string','2'); end
if indeks_pengenalan==8 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-03.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','2'); set(handles.edit4,'string','3'); end
if indeks_pengenalan==9 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-04.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','2'); set(handles.edit4,'string','4'); end
if indeks_pengenalan==10 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\02-IMG-05.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','2'); set(handles.edit4,'string','5'); end
if indeks_pengenalan==11 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','3'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==12 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-02.jpg'); axes(handles.axes2);
(47)
imshow(B,[]);
set(handles.edit3,'string','3'); set(handles.edit4,'string','2'); end
if indeks_pengenalan==13 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-03.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','3'); set(handles.edit4,'string','3'); end
if indeks_pengenalan==14 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-04.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','3'); set(handles.edit4,'string','4'); end
if indeks_pengenalan==15 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\03-IMG-05.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','3'); set(handles.edit4,'string','5'); end
if indeks_pengenalan==16 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','4'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==17 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-02.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','4'); set(handles.edit4,'string','2'); end
if indeks_pengenalan==18 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-03.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','4'); set(handles.edit4,'string','3'); end
if indeks_pengenalan==19 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-04.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','4'); set(handles.edit4,'string','4'); end
if indeks_pengenalan==20 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\04-IMG-05.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','4'); set(handles.edit4,'string','5');
(48)
end
if indeks_pengenalan==21 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','5'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==22 && H<threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-02.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','5'); set(handles.edit4,'string','2'); end
if indeks_pengenalan==23 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-03.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','5'); set(handles.edit4,'string','3'); end
if indeks_pengenalan==24 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-04.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','5'); set(handles.edit4,'string','4'); end
if indeks_pengenalan==25 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\05-IMG-05.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','5'); set(handles.edit4,'string','5'); end
if indeks_pengenalan==26 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','6'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==27 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-02.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','6'); set(handles.edit4,'string','2'); end
if indeks_pengenalan==28 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-03.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','6'); set(handles.edit4,'string','3'); end
(49)
if indeks_pengenalan==29 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-04.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','6'); set(handles.edit4,'string','4'); end
if indeks_pengenalan==30 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\06-IMG-05.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','6'); set(handles.edit4,'string','5'); end
if indeks_pengenalan==31 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','7'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==32 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-02.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','7'); set(handles.edit4,'string','2'); end
if indeks_pengenalan==33 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-03.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','7'); set(handles.edit4,'string','3'); end
if indeks_pengenalan==34 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-04.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','7'); set(handles.edit4,'string','4'); end
if indeks_pengenalan==35 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\07-IMG-05.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','7'); set(handles.edit4,'string','5'); end
(50)
if indeks_pengenalan==36 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','8'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==37 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-02.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','8'); set(handles.edit4,'string','2'); end
if indeks_pengenalan==38 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-03.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','8'); set(handles.edit4,'string','3'); end
if indeks_pengenalan==39 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-04.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','8'); set(handles.edit4,'string','4'); end
if indeks_pengenalan==40 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\08-IMG-05.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','8'); set(handles.edit4,'string','5'); end
if indeks_pengenalan==41 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\09-IMG-01.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','9'); set(handles.edit4,'string','1'); end
if indeks_pengenalan==42 && H<=threshold
B=imread('C:\MATLAB\R2012a\bin\database\09-IMG-02.jpg'); axes(handles.axes2);
imshow(B,[]);
set(handles.edit3,'string','9'); set(handles.edit4,'string','2'); end
(1)
A-51 Citra
Orang Ke-8
IMG-06 IMG-07 IMG-08
Citra Orang
Ke-9
IMG-06 IMG-07 IMG-08
Citra Orang Ke-10
(2)
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Pola pengenalan fisik pada dasarnya sangat sulit untuk ditelusuri dan itu merupakan masalah yang menyangkut akan privasi dan keamanan yang tinggi dalam biometrik pengenalan. Diantara berbagai teknik biometrik beserta karakteristik yang digunakan untuk mengenali seseorang, biometrik tangan menjadi salah satu teknik yang paling banyak digunakan dan paling sukses. Bagian-bagian dari tangan yang sering digunakan untuk pengenalan identitas seseorang antara lain adalah geometri tangan, sidik jari, garis telapak tangan, garis-garis pada ruas jari dan pembuluh darah.
Pada Tugas Akhir ini penulis mencoba membuat aplikasi untuk mengidentifikasi seseorang tanpa harus menyentuh alat. Teknologi biometrik yang digunakan adalah berdasarkan pada pola pembuluh darah pada punggung telapak tangan yang diambil menggunakan kamera infra merah. Jenis teknik biometrik ini dipilih karena setiap orang memiliki pola pembuluh darah yang unik, walaupun pada orang kembar sekalipun, beda halnya dengan sidik jari yang dapat diduplikasi menggunakan bahan tertentu. Untuk pengenalan pola dari pembuluh darah itu sendiri, penulis menggunakan ekstraksi fitur Local Derivative Pattern dan algoritma PCA.
1.2 Identifikasi Masalah
Berdasarkan latar belakang di atas, masalah utama yang akan diangkat pada Tugas Akhir ini adalah merancang aplikasi untuk mengidentifikasi seseorang berdasarkan citra pembuluh darah dengan metode LDP (Local Derivative Pattern) dan algoritma PCA menggunakan program MATLAB (Matrix Laboratory).
(3)
Universitas Kristen Maranatha 2
1.3 Perumusan Masalah
Permasalahan yang akan dibahas dalam Tugas Akhir ini meliputi :
1. Bagaimana merancang aplikasi untuk mengidentifikasi seseorang berdasarkan citra pembuluh darah menggunakan ekstraksi fitur Local Derivative Pattern dan algoritma PCA pada program MATLAB?
2. Bagaimana tingkat keberhasilan aplikasi yang dirancang dalam mengidentifikasi seseorang berdasarkan citra pembuluh darah?
1.4 Tujuan
Tujuan yang ingin dicapai dari Tugas Akhir ini adalah :
1. Merealisasikan aplikasi metode ekstraksi fitur menggunakan Local Derivative Pattern dan algoritma PCA untuk mengidentifikasi seseorang berdasarkan citra pembuluh darah.
2. Mengetahui tingkat keberhasilan dari aplikasi dalam mengidentifikasi seseorang berdasarkan citra pembuluh darah melalui persentase FRR (False Rejected Rate).
1.5 Pembatasan Masalah
1. Jumlah citra yang akan digunakan sebagai citra yang ada dalam database diambil dari 10 orang yang berbeda masing- masing 8 citra (5 citra digunakan sebagai citra database dan 3 citra sebagai citra uji)
2. Jarak pengambilan citra antara objek dengan kamera adalah 25-30 cm. 3. Citra berupa gambar grayscale dengan resolusi 100 x 100.
4. Posisi tangan harus dikepal.
5. Pengambilan dan pengolahan citra tidak dilakukan secara real-time. 6. Membahas tentang second order pada Local Derivative Pattern (LDP) 7. Membahas tentang cara menentukan eigenfaces
(4)
1.6 Sistematika Penulisan
Penyusunan laporan tugas akhir terdiri dari lima bab sebagai berikut :
• Bab 1. Pendahuluan
Pada bab ini akan dibahas mengenai latar belakang, perumusan masalah, identifikasi masalah, tujuan, pembatasan masalah, dan sistematika penulisan dari Tugas Akhir ini.
• Bab 2. Landasan Teori
Pada bab ini akan dibahas mengenai teori-teori penunjang yang akan digunakan untuk merancang aplikasi identifikasi seseorang berdasarkan pola pembuluh darah dengan metoda LDP (Local Derivative Pattern) dan algoritma PCA, antara lain biometrik, pembuluh darah vena, pengolahan citra, representasi citra digital, ektraksi fitur citra, Local Derivative Pattern (LDP), Principal Component Analysis (PCA), distance(jarak), False Acceptance Rate (FAR) dan False Rejected Rate (FRR).
• Bab 3. Perancangan Perangkat Lunak
Bab ini berisi penjelasan desain yang akan dilakukan dalam membuat perangkat lunak untuk mengidentifikasi seseorang berdasarkan citra pembuluh darah menggunakan ekstraksi Local Derivative Pattern dan algoritma PCA.
• Bab 4. Pengujian dan Analisa Data
Bab ini berisi data pengamatan hasil pengujian program, perhitungan tingkat keberhasilan metoda yang digunakan berdasarkan FRR, dan analisa dari data hasil pengujian program.
• Bab 5. Kesimpulan dan Saran
Pada bab ini berisi kesimpulan dari Tugas Akhir dan saran-saran yang perlu dilakukan untuk pengembangan di masa mendatang.
(5)
34 Universitas Kristen Maranatha
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
1. Pembuatan program untuk mengidentifikasi seseorang berdasarkan citra pembuluh darah menggunakan ekstraksi fitur Local Derivative Pattern dan algoritma PCA berhasil direalisasikan menggunakan MATLAB R2012a. 2. Dari hasil pengamatan terhadap pengujian program untuk identifikasi
seseorang berdasarkan citra pembuluh darah didapatkan persentase FRR sebesar 13,33%
5.2 Saran
1. Citra yang digunakan memiliki pencahayaan yang sama, agar saat dilakukan ekstraksi dan pengenalan nilai distance nya tidak terlalu jauh. 2. Penggunaan kamera dengan resolusi yang lebih baik supaya citra
(6)
DAFTAR PUSTAKA
1. Amos Piton, 2012, “Verifikasi Citra Pembuluh Darah Menggunakan Ektraksi Fitur Transformasi Kosinus Diskrit Dua Dimensi”, Bandung: Universitas Kristen Maranatha, Fakultas Teknik, Jurusan Teknik Elektro. 2. Baochang Zhang, Yongsheng Gao (2010), Local Derivative Pattern Versus
Local Binary Pattern: Face Recognition With High-Order Local Pattern Descriptor, vol. 19, No 2.
3. Hikmah Nurul, 2008, “Identifikasi Retina Mata Manusia Menggunakan Sistem Inferensi Neuro Fuzzy Adaptif”, Depok: Universitas Indonesia, Fakultas Teknik, Departemen Teknik Elektro.
4. Leila Mirmohamadsadeghi, Andrzej Drygajlo (2011), Palm Vein Recognition with Local Binary Patterns and Local Derivative Pattern, 1-6. 5. Munir, Rinaldi., Pengolahan Citra Digital dengan Pendekatan Algoritmik,
Informatika. Bandung, 2004
6. Prasetyo Eko. (2011). Pengolahan Citra Digital dan Aplikasinya menggunakan Matlab. Yogyakarta : ANDI
7. Wahyudi Eko, Kusuma Hendra, Wirawan (2011), Perbandingan Unjuk Kerja Pengenalan Wajah Berbasis Fitur Local Binary Pattern dengan Algoritma PCA dan Chi Square, Seminar Nasional. ISSN 2088-4796
8. http://www.bayometric.com/blog/index.php/biometric-security-systems/false-acceptance-rate-far-false-recognition-rate-frr/ 9. https://en.wikipedia.org/wiki/Principal_component_analysis
10. http://onionesquereality.wordpress.com/2009/02/11/face-recognition-using-eigenfaces-and-distance-classifiers-a-tutorial/
11. http://pustaka-virtual.blogspot.com/2012/10/seputar-pembuluh-darah-vena-pembuluh.html