LAPORAN RESMI PRAKTIKUM PENGOLAHAN CITRA DIGITAL MODUL 6 “EKSTRAKSI FITUR DAN PENGENALAN CITRA WAJAH” Disusun Oleh : LABORATORIUM COMMON COMPUTING JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS TRUNOJOYO MADURA 2011 / 2012 TGL. PRAKTIKUM : 04 Januari 2013 NAMA : Tri Cahyo Lutfinanda Amrulloh NRP : 10.04.111.00088 KELOMPOK : C-2 DOSEN : ASISTEN : Ika Nofitasari Disetujui :......./........../............../Bangkalan ASISTEN DOSEN Ika Nofitasari 090411100063
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
%% 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
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;
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’.
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
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);
[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),
%% 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;
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
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