• Tidak ada hasil yang ditemukan

Ekstraksi Fitur Dan Pengenalan Citra Wajah

N/A
N/A
Protected

Academic year: 2021

Membagikan "Ekstraksi Fitur Dan Pengenalan Citra Wajah"

Copied!
13
0
0

Teks penuh

(1)

LAPORAN RESMI

LAPORAN RESMI

PRAKTIKUM

PRAKTIKUM

PENGOLAHAN CITRA DIGITAL

PENGOLAHAN CITRA DIGITAL

MODUL 6

MODUL 6

EKSTRAKSI FITUR DAN PENGENALAN CITRA WAJAH

EKSTRAKSI FITUR DAN PENGENALAN CITRA WAJAH

””

Disusun Oleh : Disusun Oleh :

LABORATORIUM COMMON COMPUTING LABORATORIUM COMMON COMPUTING JURUSAN TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK  FAKULTAS TEKNIK  UNIVERSITAS TRUNOJOYO MADURA UNIVERSITAS TRUNOJOYO MADURA 2011 / 2012 2011 / 2012 TGL.

TGL. PRAKTIKUM PRAKTIKUM : 04 : 04 Januari 20Januari 201313  NAMA

 NAMA : Tri Cahyo Lutfinanda Amrulloh: Tri Cahyo Lutfinanda Amrulloh  NRP  NRP : 10.04.111.00: 10.04.111.00088088 KELOMPOK KELOMPOK : : C-2C-2 DOSEN : DOSEN : ASISTEN

ASISTEN : : Ika Ika NofitasariNofitasari

Disetujui

Disetujui :.../.../....:.../.../.../Bangkalan.../Bangkalan ASISTEN DOSEN ASISTEN DOSEN Ika Nofitasari Ika Nofitasari 090411100063 090411100063

(2)

BAB I

PENDAHULUAN

1.1 Latar Belakang

Dalam proses pengenalan citra wajah diperlukan beberapa cara agar hasil yang diinginkan bisa tercapai dengan sempurna. Ada beberapa langkah  –  langkah yang harus di penuhi dalam memproses pengenalan citra wajah. Antara lain dengan mengambil beberapa contoh citra yang akan digunakan untuk testing,  pemrosesan zero mean dan masih banyak langkah yang harus dilakukan yang

selebihnya akan di bahas pada modul ini. 1.2 Tujuan

Tujuan mahasiswa mengikuti praktikum modul 6 ini adalah : 1. Mahasiswa dapat memahami ekstraksi fitur 

2. Mahasiswa dapat membuat program pengenalan citra wajah menggunakan matlab

(3)

BAB II

DASAR TEORI

Modul 6 menggunakan hasil penyiapan dan pemisahan data yang dilakukan pada modul 5. Pada modul 6 ini dilakukan ekstraksi fitur menggunakan Principal Component Analysis (PCA) dan pengukuran kemiripan menggunakan Euclidian Distance. Sebelum masuk pada penjelesan ekstraksi fitur menggunakan PCA, maka dalam modul ini dijelaskan terlebih dahulu pemodalan pada PCA. Sebelum ekstraksi fitur, data pelatihan matrik 2 dimensi dirubah menjadi matrik baris 1 dimensi. Jika dimensi masing-masing citra adalah ‘150x110’, maka dirubah menjadi ‘1x165.000’. Jik a jumlah data sampel yang digunakan adalah 100, masing-masing sampel mempunyai 3 pose yang berbeda, maka jumlah data sampel untuk pelatihan adalah sebanyak 300. Sehingga struktur matrik data  pelatihan yang baru berubah dimensinya menjadi dalam bentuk array dengan

ukuran ‘300x165.000’. Dalam contoh ini hasil pembentukan matrik tersebut hanya dalam variabel memory dengan nama ‘TrainingMatric’ sebagaimana terlihat pada Gambar 6.1 berikut ini :

TrainingMatric{1,1}  F(1,1) F(1,2)  F(1,3)  F(1,4) . . .  F(1,165.000) TrainingMatric{1,2}  F(2,1) F(2,2)  F(2,3)  F(2,4) . . .  F(2,165.000) TrainingMatric{1,3}  F(3,1) F(3,2)  F(3,3)  F(2,4) . . .  F(3,165.000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TrainingMatric{100,1}  F(298,1) F(298,2) F(298,3) F(298,4) . . .  F(298,165.000) TrainingMatric{100,2}  F(299,1) F(299,2) F(299,3) F(299,4) . . .  F(299,165.000) TrainingMatric{100,3}  F(300,1) F(300,2) F(300,3) F(300,4) . . .  F(300,165.000)

Gambar 2.1. Struktur Array Matrik Data Pelatihan 2.1 Ekstraksi Fitur Menggunakan PCA

Setelah diperoleh data matrik tersebut, proses selanjutnya adalah melakukan ekstrakasi fitur menggunakan PCA. Adapun proses PCA dapat dituliskan menggunakan algoritma berikut ini

a. Hitung nilai rata-rata citra wajah menggunakan persamaan

   m k   f  m k   f  m k   f  m k  n m k  m k  1 , 1 1 2 , 1 1 1 , 1 ( ) ( ) ) (    (2.1)

(4)

 b. Tentukan zero mean menggunakan persamaan berikut  

   f  ()h,w

(2.2) c. Hitung Covarian matrik menggunakan persamaan berikut

T  m C   *  1 1   (2.3) d. Tentukan nilai eigen value dan eigen vector menggunakan persamaan

0 ) * ( 0 ) * ( 0 ) * ( 0 * ) ( 0 * * * *            C   I   I  C   X   I  C   X  C   X   X  C   X   X  C              (2.4)

e. Urutkan nilai eigen value secara decreasing dan nilai eigen vector  mengikuti

f. Tentukan matrik proyeksi menggunakan persamaan berikut  P 

V 1   T *

(2.5) P merupakan nilai eigenvector yang teah terurut

g. Hitung matrik bobot menggunakan persamaan berikut

T  n m V  k    f   W  ( ) , * (2.6) Code program dalam matlab untuk melakukan konversi matrik data pelatihan dan ekstraksi fitur menggunakan PCA adalah sebagaimana berikut ini :

 function [MatrikBobot, MatrikProyeksi,eigvector,Average,ZeroMean] = TrainingProcess(ImageTraining); [nClassTotal nMemberClassTotal]=size(ImageTraining); [Height Width]=size(ImageTraining{1,1}); TrainingMatric=[]; %% Konversi ke matrik 1D  Number=0;

h = waitbar(0,'Sistem Melakukan Process Konversi ke Matrik 1D dan Training PCA . . . .'  );  for j=1:nClassTotal   for k=1:nMemberClassTotal   Flat=reshape(ImageTraining{j,k},1,Height*Width); TrainingMatric=[TrainingMatric;Flat];  Number=Number+1; waitbar(Number/(nClassTotal*nMemberClassTotal)); end  end  %% Training PCA TrainingMatric=double(TrainingMatric);

(5)

[HeightTrainingMatric, WidthTrainingMatric]=size(TrainingMatric)  Average = repmat(mean(TrainingMatric), HeightTrainingMatric,1);  ZeroMean=TrainingMatric-Average;

CovMatric =ZeroMean*ZeroMean';

if det(CovMatric)<0.000000001

[eigvector, eigvalue] = svd(CovMatric); eigvalue=diag(eigvalue);

else

[eigvector, eigvalue] = eig(CovMatric); eigvalue = diag(eigvalue);

[junk, index] = sort(-eigvalue); eigvalue = eigvalue(index); eigvector = eigvector(:, index); end 

 xMatrikProyeksi = ZeroMean'*eigvector;

 yMatrikProyeksi = xMatrikProyeksi *diag(1./(sum(xMatrikProyeksi.^2).^0.5));  MatrikProyeksi =transpose(xMatrikProyeksi);

 MatrikBobot = TrainingMatric*transpose(MatrikProyeksi); close(h)

Pada code program diatas, hasil proses disimpan dalam 5 veriabel yang mempunyai fungsi berbeda, diantarnya adalah MatrikBobot, MatrikProyeksi, eigvector, Averagei dan ZeroMean. Output dari program tersebut akan digunakan sebagai input pada proses pengukuran kemiripan.

2.2 Pengukuran Kemiripan

Dua buah output dari ekstraksi fitur yang penting adalah MatrikBobot dan MatrikProyeksi. MatrikBobot digunakan sebagai referensi untuk mengukur  kemiripan dari hasil proyeksi matrik ujicoba setelah diproyeksikan dengan MatrikProyeksi output PCA. Pengukuran kemiripannya menggunakan  persamaan yang sederhana, yaitu ‘Euclidian Distance’ sebagaimana dalam  persamaan berikut ini:



    m i n  j  j i  j i Y   X  d  1 1 , , (2.7) Code untuk melakukan perhitungan menggunakan Persamaan (2.7) adalah sebagaimana berikut ini :

 function [Kelas, Urutan] = SmEuclidDistance(TrainingWeightMatric,  MatrikBobotUjiCoba,nSamplePerClass);

[HeightTrainingWeightMatric, WidthTrainingWeightMatric]=size(TrainingWeightMatric);  Distance = ones(1,HeightTrainingWeightMatric);

 for k=1 : HeightTrainingWeightMatric

 EucDist= (TrainingWeightMatric(k,:) - MatrikBobotUjiCoba(1,:));  EucDist=sum(EucDist.^2);

 EucDist=EucDist^0.5;  Distance(1,k)=EucDist;

(6)

end ; [aMin, Urutan]=min(Distance);  Kelas=ceil(Urutan/nSamplePerClass); Urutan=mod(Urutan,nSamplePerClass); if Urutan==0 Urutan=nSamplePerClass end 

Sebelum diukur kemiripannya menggunakan Persamaan (6.8), data ujicoba matrik 2D dikonversi dulu menjadi matrik 1D.

%% Training 

load  ImageTraining.mat 

 FolderHasil='D:\CItra Digital\Praktikum\Hasil Process\' ;

[nClassTotalTraining nMemberClassTotalTraining]=size(ImageTraining); [MatrikBobot, MatrikProyeksi,eigvector,Average,ZeroMean] = TrainingProcess(ImageTraining); %% Testing  load  ImageTesting.mat  [nClassTotalTesting nMemberClassTotalTesting]=size(ImageTesting); [Height Width]=size(ImageTesting{1,1});  Number=0;

h = waitbar(0,'Sistem Melakukan Process Konversi ke Matrik 1D dan Training PCA . . . .'  ); TotalBenar=0; TotalSalah=0  for j=1:nClassTotalTesting   for k=1:nMemberClassTotalTesting   HasilProyeksiTest=reshape(ImageTesting{j,k},1,Height*Width);  HasilProyeksiTest=double(HasilProyeksiTest)* transpose(MatrikProyeksi); %% Bandingkan Dengan Matrik Bobot dengan

[Kelas, Urutan] = SmEuclidDistance(MatrikBobot,  HasilProyeksiTest,nMemberClassTotalTraining);

%% Simpan hasil pengenalan CitraTes=ImageTesting{j,k};

CitraHas=ImageTraining{Kelas,Urutan};  Hasil=[CitraTes CitraHas];

if Kelas==j

TotalBenar=TotalBenar+1

 NamaHasil=[FolderHasil 'Benar-KelasKe-' num2str(j) ' PoseKe-' num2str(k) ' Match  PoseKe-' num2str(Urutan) '.jpg'  ]; else TotalSalah=TotalSalah+1  NamaHasil=[FolderHasil 'Salah-KelasKe-' num2str(j) ' PoseKe-' num2str(k) '   MatchKelasKe-' num2str(Kelas) ' PoseKe-' num2str(Urutan) '.jpg'  ]; end  imwrite(Hasil,NamaHasil);  Number=Number+1; waitbar(Number/(nClassTotalTesting*nMemberClassTotalTesting)); end  end  close(h)

(7)

%% Prosentase Dikenali dan Tidak Dikenali

 ProsenSalah=(TotalSalah/(TotalSalah+TotalBenar))*100;  ProsentBenar=(TotalBenar/(TotalSalah+TotalBenar))*100;

Hasil proses pengenalan disimpan secara berpasangan, dan diberikan nama sesuai dengan hasil pengukuran kemiripan. Untuk data ujicoba yang dikenali, diberi nama awal file ‘Benar’ diikuti dengan pasangan yang sesuai, misalnya ‘Benar-KelasKe-6 PoseKe-2 Match PoseKe-1.JPG’. Sedangkan untuk data ujicoba yang salah hasilnya, diberi nama awal file ‘Salah’ diikuti dengan urutan sampel dan pose yang diuji, dan diikuti dengan kata ‘MatchKelasKe’ dan ‘PoseKe’. Sebagai contoh nama file yang salah dalam pengukuran kemiripannya adalah sebagaimana berikut ’Salah-KelasKe-2 PoseKe-2 MatchKelasKe-62 PoseKe-2.JPG’.

(8)

BAB III

IMPLEMENTASI

1. Gunakan data citra wajah ORL untuk melakukan pengenalan, data pelatihan yang digunakan 4 citra pada masing-masing kelas dan sisanya digunakan ujicoba

2. Tampilkan hasil pengenalan setiap kelas dalam bentuk grafik untuk  keseluruhan data sampel

Jawaban 

1. Set Data Training

function [UrutanPoseTraining UrutanPoseTesting] = SetDataTrainTest(Sample, IndekTraining) UrutanPoseTraining=IndekTraining; c=ismember(Sample,UrutanPoseTraining); UrutanPoseTesting=[]; for j=1:length(Sample); if c(j)==0; UrutanPoseTesting=[UrutanPoseTesting j]; end end Pengukuran Kemiripan

function [Kelas, Urutan] =

SmEuclidDistance(TrainingWeightMatric, MatrikBobotUjiCoba,nSamplePerClass); [HeightTrainingWeightMatric, WidthTrainingWeightMatric]=size(TrainingWeightMatric); Distance = ones(1,HeightTrainingWeightMatric); for k=1 : HeightTrainingWeightMatric EucDist= (TrainingWeightMatric(k,:) -MatrikBobotUjiCoba(1,:)); EucDist=sum(EucDist.^2); EucDist=EucDist^0.5; Distance(1,k)=EucDist; end; [aMin, Urutan]=min(Distance); Kelas=ceil(Urutan/nSamplePerClass); Urutan=mod(Urutan,nSamplePerClass); if Urutan==0 Urutan=nSamplePerClass end Training Proses function [MatrikBobot, MatrikProyeksi,eigvector,Average,ZeroMean] = TrainingProcess(ImageTraining);

(9)

[nClassTotal nMemberClassTotal]=size(ImageTraining); [Height Width]=size(ImageTraining{1,1});

TrainingMatric=[];

%% Konversi ke matrik 1D Number=0;

h = waitbar(0,'Sistem Melakukan Process Konversi ke Matrik 1D dan Training PCA . . . .' );

for j=1:nClassTotal for k=1:nMemberClassTotal Flat=reshape(ImageTraining{j,k},1,Height*Width); TrainingMatric=[TrainingMatric;Flat]; Number=Number+1; waitbar(Number/(nClassTotal*nMemberClassTotal)); end end %% Training PCA TrainingMatric=double(TrainingMatric); [HeightTrainingMatric, WidthTrainingMatric]=size(TrainingMatric) Average = repmat(mean(TrainingMatric), HeightTrainingMatric,1); ZeroMean=TrainingMatric-Average; CovMatric =ZeroMean*ZeroMean'; if det(CovMatric)<0.000000001

[eigvector, eigvalue] = svd(CovMatric); eigvalue=diag(eigvalue);

else

[eigvector, eigvalue] = eig(CovMatric); eigvalue = diag(eigvalue);

[junk, index] = sort(-eigvalue); eigvalue = eigvalue(index);

eigvector = eigvector(:, index); end xMatrikProyeksi = ZeroMean'*eigvector; yMatrikProyeksi = xMatrikProyeksi *diag(1./(sum(xMatrikProyeksi.^2).^0.5)); MatrikProyeksi =transpose(xMatrikProyeksi); MatrikBobot = TrainingMatric*transpose(MatrikProyeksi); close(h)

Pembentukan data training

%% Set Data Training Sample=(1:10);

IndekTraining=[1 2 3 4];

[UrutanPoseTraining UrutanPoseTesting] = SetDataTrainTest(Sample, IndekTraining);

%% Pembentukan data training load MatP.mat

[nClassTotal nMemberClassTotalTesting]=size(MatP); nMemberClassTotal=length(UrutanPoseTraining);

h = waitbar(0,'Pembentukan Data Training . . . .' ); Number = 0;

(10)

for k=1:nClassTotal for j=1:nMemberClassTotal ImageTraining{k,j}=MatP{k,UrutanPoseTraining(j)}; Number=Number+1; waitbar(Number/(nClassTotal*nMemberClassTotal)); end end

%% Simpan data training

save ImageTraining ImageTraining; close(h);

%% Pembentukan data testing load MatP.mat

nMemberClassTotal=length(UrutanPoseTesting);

h = waitbar(0,'Pembentukan Data Testing . . . .' ); Number = 0; for k=1:nClassTotal for j=1:nMemberClassTotal ImageTesting{k,j}=MatP{k,UrutanPoseTesting(j)}; Number=Number+1; waitbar(Number/(nClassTotal*nMemberClassTotal)); end end

%% Simpan Data Testing

save ImageTesting ImageTesting ; close(h);

Testing Proses

%% Training

load ImageTraining.mat

FolderHasil= 'H:\KULIAH\SEMESTER V\PRAK. PENGOLAHAN CITRA DIGITAL\Citra Digital\Hasil Process\' ;

[nClassTotalTraining nMemberClassTotalTraining]=size(ImageTraining); [MatrikBobot, MatrikProyeksi,eigvector,Average,ZeroMean] = TrainingProcess(ImageTraining); %% Testing load ImageTesting.mat [nClassTotalTesting nMemberClassTotalTesting]=size(ImageTesting); [Height Width]=size(ImageTesting{1,1}); Number=0;

h = waitbar(0,'Sistem Melakukan Process Konversi ke Matrik 1D dan Training PCA . . . .' );

TotalBenar=0; TotalSalah=0; for j=1:nClassTotalTesting for k=1:nMemberClassTotalTesting HasilProyeksiTest=reshape(ImageTesting{j,k},1,Height*Width); HasilProyeksiTest=double(HasilProyeksiTest)*

(11)

transpose(MatrikProyeksi);

%% Bandingkan Dengan Matrik Bobot dengan

[Kelas, Urutan] = SmEuclidDistance(MatrikBobot, HasilProyeksiTest,nMemberClassTotalTraining);

%% Simpan hasil pengenalan CitraTes=ImageTesting{j,k};

CitraHas=ImageTraining{Kelas,Urutan}; Hasil=[CitraTes CitraHas];

if Kelas==j

TotalBenar=TotalBenar+1

NamaHasil=[FolderHasil 'Benar-KelasKe-' num2str(j) ' PoseKe-' num2str(k) ' Match PoseKe-' num2str(Urutan)

'.jpg']; else

TotalSalah=TotalSalah+1

NamaHasil=[FolderHasil 'Salah-KelasKe-' num2str(j) ' PoseKe-' num2str(k) ' MatchKelasKe-' num2str(Kelas) '

PoseKe-' num2str(Urutan) '.jpg']; end imwrite(Hasil,NamaHasil); Number=Number+1; waitbar(Number/(nClassTotalTesting*nMemberClassTotalTesting)); end end close(h)

%% Prosentase Dikenali dan Tidak Dikenali

ProsenSalah=(TotalSalah/(TotalSalah+TotalBenar))*100; ProsentBenar=(TotalBenar/(TotalSalah+TotalBenar))*100;

(12)

Hasil dari proses : Tersimpan di folder H:\KULIAH\SEMESTER V\PRAK. PENGOLAHAN CITRA DIGITAL\Citra Digital\Hasil Process

Menampilkan prosentase kebenaran dan kesalahan pencocokan citra :

(13)

BAB V

PENUTUP

5.1 Kesimpulan

Pada saat proses pencocokan citra wajah yang dilakukan banyak atau tidak  cocoknya citra wajah tersebut tergantung dari jumlah data training dan data testing yang digunakan. Semua proses yang dilakukan harus berurutan karena apabila satu proses dilewatkan maka ada satu file yang tidak akan terbentuk  dan proses selanjutnya tidak akan berjalan dengan sempurna.

5.2 Saran

Pada saat melakukan pengetesan source code harus di perhatikan destinasi folder yang di tuju. Karena kesalahan destinasi folder akan menyebabkan  program eror dan tidak dapat berjalan dengan baik.

Referensi

Dokumen terkait

Citra wajah diubah dalam format aras keabuan Selanjutnya pada citra tersebut dilakukan proses Downscale memakai transformasi Wavelet dengan metode Haar (Haar Transform)

Dalam penelitian yang sudah ada [7] aplikasi pengenalan wajah menggunakan citra wajah yang diambil dari pose frontal dan memiliki jarak pengambilan citra yang relatif sama

Dalam penelitian yang sudah ada [7] aplikasi pengenalan wajah menggunakan citra wajah yang diambil dari pose frontal dan memiliki jarak pengambilan citra yang relatif sama

Data identifikasi citra wajah menggunakan kerudung, pengujian dilakukan oleh 2 mahasiswi, masing-masing citra wajah mahasiswi tersebut dilakukan proses

Dalam penelitian yang sudah ada [7] aplikasi pengenalan wajah menggunakan citra wajah yang diambil dari pose frontal dan memiliki jarak pengambilan citra yang relatif sama

Pengujian dilakukan dengan beberapa skenario untuk mengetahui pengaruh jumlah individu, jumlah data latih setiap individu, dan reduksi dimensi vektor citra wajah terhadap akurasi

HASIL DAN PEMBAHASAN 3.1 Komponen Database Citra Wajah Untuk melakukan proses pengenalan wajah dibutuhkan database training yang terdiri dari citra wajah 6

proses penghitungan hubungan ketetanggaan antara dua piksel pada jarak dan orientasi sudut tertentu, pencocokan merupakan proses pengenalan data citra wajah