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
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
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
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
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
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
LAMPIRAN A
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;
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;
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;
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;
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;
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;
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=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;
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;
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
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
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;
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
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);
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);
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
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
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
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;
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;
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
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
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;
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
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;
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;
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
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;
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;
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;
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)
% 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;
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;
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;
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;
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=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;
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');
if indeks_pengenalan==4 && H<=threshold
B=imr