Target Aplikasi
Tampilan Menuutama:
function tampilanutama_OpeningFcn(hObject, eventdata, handles, varargin)
I=imread('matlab.png');
imshow(I);
guidata(hObject, handles);
function pushbutton1_Callback(hObject, eventdata, handles)
AplikasiUtama;
function pushbutton2_Callback(hObject, eventdata, handles)
tentangaplikasi;
function pushbutton3_Callback(hObject, eventdata, handles)
profil;
tentangaplikasi
profil
AplikasiUtama
Untuk menjalankan aplikasi cukup klik start camera...
Lalu tekan capture...maka objek akan tercapture dan secara automatis terhitung nilai RGB histogramnya....
Untuk lebih akurat sebaiknya di mainkan tombol zoom maupun fungsi crop yang disediakan...atau jika ingin default ....tombol tersebut bisa diabaikan ...
Tombol simpan untuk menyimpan citra yang dihasilkan kamera...
misal tulis foto1.jpg
maka akan tersimpan dengan nama foto1.jpg
NB Gunakan ektensi untuk menyimpan citranya....
Bisa juga aplikasi pengujian dilakukan dengan cara pilih citra ...artinya kita menggunakan citra yang sudah ada sebelumnya....
Gunakan tombol Browse.....
dan terahir tekan tombol Cek Gambar
maka akan dihasilkan nilai eigenface terendah berikut nama si pemilik foto ybs...
Di aplikasi di atas didapat nilai index ke 5 dengan nama "E" dan nilai eigenface : 0.0027814
ini adalah nilai eigenface terendahnya.....
nilai ini didapat dari data generate atau master yang diinputkan sesui rumus Generate yang didapat :
N=200 ; % image size???
M=4 ;% number faces
%% mic1
image(1)={'1.jpg'};%???
nama(1)={'A'};
image(2)={'2.jpg'};
nama(2)={'B'};
image(3)={'3.jpg'};
nama(3)={'C'};
image(4)={'4.jpg'};
nama(4)={'D'};
image(5)={'5.jpg'};
nama(5)={'E'};
image(6)={'6.jpg'};
nama(6)={'F'};
image(7)={'7.jpg'};
nama(7)={'G'};
image(8)={'8.jpg'};
nama(8)={'H'};
image(9)={'9.jpg'};
nama(9)={'I'};
image(10)={'10.jpg'};
nama(10)={'J'};
image(11)={'11.jpg'};
nama(11)={'K'};
image(12)={'12.jpg'};
nama(12)={'L'};
image(13)={'13.jpg'};
nama(13)={'M'};
image(14)={'14.jpg'};
nama(14)={'N'};
image(15)={'15.jpg'};
nama(15)={'O'};
image(16)={'16.jpg'};
nama(16)={'P'};
image(17)={'17.jpg'};
nama(17)={'Q'};
image(18)={'18.jpg'};
nama(18)={'R'};
image(19)={'19.jpg'};
nama(19)={'S'};
image(20)={'20.jpg'};
nama(20)={'T'};
image(21)={'21.jpg'};
nama(21)={'U'};
image(22)={'22.jpg'};
nama(22)={'V'};
image(23)={'23.jpg'};
nama(23)={'W'};
image(24)={'24.jpg'};
nama(24)={'X'};
image(25)={'25.jpg'};
nama(25)={'Y'};
image(26)={'26.jpg'};
nama(26)={'Z'};
image(27)={'27.jpg'};
nama(27)={'AA'};
image(28)={'28.jpg'};
nama(28)={'BB'};
image(29)={'29.jpg'};
nama(29)={'CC'};
image(30)={'30.jpg'};
nama(30)={'DD'};
image(31)={'31.jpg'};
nama(31)={'EE'};
image(32)={'32.jpg'};
nama(32)={'FF'};
image(33)={'33.jpg'};
nama(33)={'GG'};
image(34)={'34.jpg'};
nama(34)={'HH'};
image(35)={'35.jpg'};
nama(35)={'II'};
image(36)={'36.jpg'};
nama(36)={'JJ'};
image(37)={'37.jpg'};
nama(37)={'KK'};
image(38)={'38.jpg'};
nama(38)={'LL'};
image(39)={'39.jpg'};
nama(39)={'MM'};
image(40)={'40.jpg'};
nama(40)={'NN'};
image(41)={'41.jpg'};
nama(41)={'OO'};
image(42)={'42.jpg'};
nama(42)={'PP'};
image(43)={'43.jpg'};
nama(43)={'QQ'};
image(44)={'44.jpg'};
nama(44)={'RR'};
image(45)={'45.jpg'};
nama(45)={'SS'};
image(46)={'46.jpg'};
nama(46)={'TT'};
image(47)={'47.jpg'};
nama(47)={'UU'};
image(48)={'48.jpg'};
nama(48)={'VV'};
image(49)={'49.jpg'};
nama(49)={'WW'};
image(50)={'50.jpg'};
nama(50)={'XX'};
z=[];
for i=1:20
img=image(i);
im=cell2mat(img);
[path]=['TrainDatabase/' im];
[namanya]=['Nama ' cell2mat(nama(i)) ':' path];
myimage= imread(path,'jpg');
myimage=rgb2gray(myimage);
myimage=imresize(myimage,[N N] );
st.data{i}=myimage;
st.names{i} = nama(i);
st.path{i} = path;
% figure(i),imshow(myimage,'Initialmagnification','fit');title(namanya);
end
%figure(6),imshow(z,'Initialmagnification','fit');;title('ALL DATA')
save classFile st;
handles.st=st;
guidata(hObject, handles);
msgbox('Sukses Generate Data Training...','Generate',help);
dalam implementasinya....."E" bisa kita tuliskan dengan nama sesungguhnya misalkan EKO Nurcahyo dsb dsb...
ada baiknya.....gunakan beberaa foto untuk 1 orang agar kita bisa merekam banyak gaya......
dengan syarat background dan pencahayaan yang diproses adalah sama......
SO gunakan fitur kamera dan capture yang disediakan aplikasi ini untuk mendapatkan gambar trainingnya.....
misalkan si ADI ada 10 gambar maka rumus generate nya adalah sbb:
image(1)={'1.jpg'};%???
nama(1)={'ADI GANTENG'};
image(2)={'2.jpg'};
nama(2)={'ADI GANTENG'};
image(3)={'3.jpg'};
nama(3)={'ADI GANTENG'};
image(4)={'4.jpg'};
nama(4)={'ADI GANTENG'};
image(5)={'5.jpg'};
nama(5)={'ADI GANTENG'};
image(6)={'6.jpg'};
nama(6)={'ADI GANTENG'};
image(7)={'7.jpg'};
nama(7)={'ADI GANTENG'};
image(8)={'8.jpg'};
nama(8)={'ADI GANTENG'};
image(9)={'9.jpg'};
nama(9)={'ADI GANTENG'};
image(10)={'10.jpg'};
nama(10)={'ADI GANTENG'};
dengan asumsi si "ADI GANTENG" memiliki 10 image citra berurutan dengan aneka gaya...dan dengan nama image 1.jpg, 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg 10.jpg
selanjutnya untuk 10 citra orang kedua dst...dst...
Setelah semua citra disusun dan didapatkan...maka masukkan ke folder
Traindatabase contoh:
OK Mudah yaaa.....
Adapun code untuk CEK GAMBAR adalah sbb:
load classFile;
whos
disp('==================');
I=get(handles.axesGambar,'Userdata');
y=st.data;% 1x50 51200 cell
p=size(y,2)
dt=cell2mat(y(1,1)); %50x50 2500 uint8
M=size(y,2);%JUMLAH CITRA
N=size(dt,1);%UKURAN FILE
avImg=zeros(N);
%% compute mean
for k=1:M
st.data{k} = im2single(st.data{k});
avImg =avImg + (1/M)*st.data{k};
end
set(handles.figure1,'CurrentAxes',handles.gbrHistogram);
imshow(avImg,'Initialmagnification','fit');title('average')
%% normalize (remove mean)
for k=1:M
st.dataAvg{k} = st.data{k} -avImg;
end
set(handles.figure1,'CurrentAxes',handles.gbrHistogram2);
z = [ st.dataAvg{1} st.dataAvg{2} st.dataAvg{5} ; st.dataAvg{3} st.dataAvg{4} st.dataAvg{6}];
imshow(z,'Initialmagnification','fit');;title('z average')
%% generate A = [ img1(:) img2(:) ... imgM(:) ];
A = zeros(N*N,M);% (N*N)*M 2500*4
for k=1:M
A(:,k) = st.dataAvg{k}(:);
end
% covariance matrix small dimension (transposed)
C = A'*A;
set(handles.figure1,'CurrentAxes',handles.imgCamera);
imagesc(C);title('covariance')
%% eigen vectros in small dimension
[ Veigvec,Deigval ] = eig(C);% v M*M e M*M only diagonal 4 eigen values
% eigan face in large dimension A*veigvec is eigen vector of Clarge
Vlarge = A*Veigvec;% 2500*M*M*M =2500 *M
% reshape to eigen face
eigenfaces=[];
for k=1:M
c = Vlarge(:,k);
eigenfaces{k} = reshape(c,N,N);
end
x=diag(Deigval);
[xc,xci]=sort(x,'descend');% largest eigenval
%z = [ eigenfaces{xci(1)} eigenfaces{xci(2)} eigenfaces{xci(3)} eigenfaces{xci(4)} eigenfaces{xci(5)} eigenfaces{xci(6)} eigenfaces{xci(7)} eigenfaces{xci(8)} eigenfaces{xci(9)} eigenfaces{xci(10)} eigenfaces{xci(11)} eigenfaces{xci(12)} eigenfaces{xci(13)} eigenfaces{xci(14)} eigenfaces{xci(15)} eigenfaces{xci(16)} eigenfaces{xci(17)} eigenfaces{xci(18)} eigenfaces{xci(19)} eigenfaces{xci(20)}];
z=[];
MMM=eigenfaces{xci(1)};%200x200 double
whos MMM
M
for k=1:M
z=[z eigenfaces{xci(k)} ];
end
set(handles.figure1,'CurrentAxes',handles.gbrHistogram3);
imshow(z,'Initialmagnification','fit');;title('eigen value')
%% weights
nsel=M;%50% select eigen faces
for mi=1:M % image number
for k=1:nsel % eigen face for coeff number
wi(mi,k) = sum(A(:,mi).* eigenfaces{xci(k)}(:)) ;
end
end
testFaceMic = I;
testFaceMic =rgb2gray(testFaceMic);
testFaceMic = imresize(testFaceMic,[N N]);
testFaceMic = im2single(testFaceMic);
%testFaceMic = st.data{1}; test
set(handles.figure1,'CurrentAxes',handles.axesCompare);
imshow(testFaceMic,'Initialmagnification','fit'); title('Hasil Baca')
Aface = testFaceMic(:)-avImg(:); % normilized face
for(tt=1:nsel)
wface(tt) = sum(Aface.* eigenfaces{xci(tt)}(:)) ;
end
% compute distance
min=10850;%%0
index=1;
for mi=1:M
fsumcur=0;
for(tt=1:nsel)
fsumcur = fsumcur + (wface(tt) -wi(mi,tt)).^2;
end
diffWeights(mi) = sqrt( fsumcur);
if min>diffWeights(mi)
hh=['COMP=' num2str(mi) '=' num2str(min) '=' num2str(diffWeights(mi))];
disp(hh);
min=diffWeights(mi);
index=mi;
end
end
diffWeights
% if min>10
% disp('NONE');
% end
diffWeights
disp('gambar ke ');
index
min
d=st.data;
na=st.names;
pa=st.path;
dd=d(1,1);
ddd=cell2mat(dd);
imshow(ddd)
for i=1:M
xnm=na(1,i);
nama(i,:)=cell2mat(cellfun(@(x) cell2mat(x),xnm,'un',0));
xpath=pa(1,i);
path(i,:)=xpath;%cell2mat(cellfun(@(x) cell2mat(x),xpath,'un',0))
xdata=d(1,i);
mdata=cell2mat(xdata);
data(:,:,i)=mdata;
end
imshow(data(:,:,index));
disp('++++++++++++++++++1');% 0.6431
data(index)
disp('++++++++++++++++++2');%path 'TrainDatabase/20.jpg'
path(index)
disp('++++++++++++++++++3');%nama T
nama(index)
set(handles.edNama,'String',nama(index));
set(handles.edIndex,'String',num2str(index));
set(handles.edEigen,'String',num2str(min));
proyek=guidata(gcbo);
set(proyek.figure1,'CurrentAxes',proyek.gbrHistogram3);
I=get(proyek.axesCompare,'Userdata');
imshow(data(index));
hmm....semakin menarik saja.......ayuh lanjutkan......
Tidak ada komentar:
Posting Komentar