Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
clear all;
%% Parameters
method = 0; % 1 for Harris, 0 for Gabor
sigmat = 2; % sigma for time dimension
tau = 5;
sigma = 3;
POI = 600;
scale = sigma^2/2;
lucas_multi = 1;
nbins = 9;
num_of_centroids = 100;
n = 9;
m = 9;
N = 4;
s = 1.3;
%% Main function
super_test = [];
tic
parfor oo=1:9
if oo==1
L = readVideo('./samples/boxing/person16_boxing_d4_uncomp.avi',200,0);
elseif oo==2
L = readVideo('./samples/boxing/person21_boxing_d1_uncomp.avi',200,0);
elseif oo==3
L = readVideo('./samples/boxing/person25_boxing_d4_uncomp.avi',200,0);
elseif oo==4
L = readVideo('./samples/running/person09_running_d1_uncomp.avi',200,0);
elseif oo==5
L = readVideo('./samples/running/person15_running_d1_uncomp.avi',200,0);
elseif oo==6
L = readVideo('./samples/running/person23_running_d3_uncomp.avi',200,0);
elseif oo==7
L = readVideo('./samples/walking/person07_walking_d2_uncomp.avi',200,0);
elseif oo==8
L = readVideo('./samples/walking/person14_walking_d2_uncomp.avi',200,0);
else %% oo==9
L = readVideo('./samples/walking/person20_walking_d3_uncomp.avi',200,0);
end
L = im2double(L);
LoG = [];
H = [];
for i=1:N
mult_sigma = round(sigma*s^(i-1));
log = zeros(6*mult_sigma+1,6*mult_sigma+1,1);
log(:,:,1) = fspecial('log',6*mult_sigma+1,mult_sigma);
LoG(:,:,:,i) = mult_sigma^2 * abs(imfilter(L,log, 'symmetric'));
if method==1
%% Harris
fprintf('# %d: Starting Harris\n',oo)
k=0.005;
% [Lx,Ly,Lt] = imgradientxyz(L);
impulse_response = zeros(3,1,1);
impulse_response(:,1,1) = [1 0 -1];
Lx = convn(padarray(L,[1 0 0],'symmetric'),impulse_response,'valid');
impulse_response = zeros(1,3,1);
impulse_response(1,:,1) = [1 0 -1];
Ly = convn(padarray(L,[0 1 0],'symmetric'),impulse_response,'valid');
impulse_response = zeros(1,1,3);
impulse_response(1,1,:) = [1 0 -1];
Lt = convn(padarray(L,[0 0 1],'symmetric'),impulse_response,'valid');
A = imfilter(Lx.^2,gauss,'symmetric');
A = padarray(A,[0 0 floor(length(gauss_time)/2)],'symmetric');
A = convn(A,gauss_time,'valid');
B = imfilter(Lx .* Ly,gauss,'symmetric');
B = padarray(B,[0 0 floor(length(gauss_time)/2)],'symmetric');
B = convn(B,gauss_time,'valid');
C = imfilter(Lx.*Lt,gauss,'symmetric');
C = padarray(C,[0 0 floor(length(gauss_time)/2)],'symmetric');
C = convn(C,gauss_time,'valid');
D = imfilter(Ly.^2,gauss,'symmetric');
D = padarray(D,[0 0 floor(length(gauss_time)/2)],'symmetric');
D = convn(D,gauss_time,'valid');
E = imfilter(Ly.*Lt,gauss,'symmetric');
E = padarray(E,[0 0 floor(length(gauss_time)/2)],'symmetric');
E = convn(E,gauss_time,'valid');
F = imfilter(Lt.^2,gauss,'symmetric');
F = padarray(F,[0 0 floor(length(gauss_time)/2)],'symmetric');
F = convn(F,gauss_time,'valid');
else
%% Gabor
fprintf('# %d: Starting Gabor\n',oo)
t=(-2*tau):(2*tau);
omega = 4/tau;
h = - cos(2*pi*omega*t) .* exp(-t.^2./(2.*tau.^2));
hev = zeros([1 1 length(t)]);
hev(1,1,:) = h./norm(h,1);
h = - sin(2*pi*omega*t) .* exp(-t.^2./(2.*tau.^2));
hodd = zeros([1 1 length(t)]);
hodd(1,1,:) = h./norm(h,1);
H(:,:,:,i) = (convn(Lg_padded,hev,'valid')).^2 +
(convn(Lg_padded,hodd ,'valid')).^2;
end
end
Cond2=ones(size(Cond1));
if N>1
% analysis for multiscale
for i=1:N
if i==1
Cond2(:,:,:,1) = LoG(:,:,:,1)>LoG(:,:,:,2);
elseif i==N
Cond2(:,:,:,N) = LoG(:,:,:,N)>LoG(:,:,:,N-1);
else
Cond2(:,:,:,i) = (LoG(:,:,:,i)>LoG(:,:,:,i-1)) &
(LoG(:,:,:,i)>LoG(:,:,:,i+1));
end
end
end
finalrow = [];
finalcol = [];
finalv =[];
frames = [];
sigmas = [];
test = [];
for i=1:POI
row = sortedvalues(i,2);
if row-2*scale<1
row_minus = 1;
row_plus = 4*scale+1;
elseif row+2*scale>120
row_plus = 120;
row_minus = 120 - 4*scale;
else
row_minus = row-2*scale;
row_plus = row+2*scale;
end
col = sortedvalues(i,1);
if col-2*scale<1
col_minus = 1;
col_plus = 4*scale+1;
elseif col+2*scale>160
col_plus = 160;
col_minus = 160 - 4*scale;
else
col_minus = col-2*scale;
col_plus = col+2*scale;
end
fr = sortedvalues(i,4);
if fr==200
fr=fr-1;
end
[dx, dy] = Lucasmulti(L(:,:,fr), L(:,:,fr+1), 3, 0.05, lucas_multi);
dx = dx(row_minus:row_plus,col_minus:col_plus);
dy = dy(row_minus:row_plus,col_minus:col_plus);
% temporal = [OrientationHistogram(Gx,Gy,nbins,size(Gx))
OrientationHistogram(dx,dy,nbins,size(dx))];
superHOGF = [myOrientationHistogram(Gx,Gy,nbins,[n m])
myOrientationHistogram(dx,dy,nbins,[n m])];
% georgeHOGF = [george_myOrientationHistogram(Gx,Gy,nbins,size(Gx))
george_myOrientationHistogram(dx,dy,nbins,size(dx))];
%
% figure(111)
% plot(temporal)
% figure(222)
% plot(superHOGF)
% figure(333)
% plot(georgeHOGF)
% for i=1:size(temporal,1)
% for j=1:size(temporal,2)
% if isnan(temporal(i,j))
% [i,j]
% end
% end
% end
end
super_test(oo,:,:) = test;
end
toc
fprintf('\nStarting Bag of Words!\n')
BO = MyBagOfWords(super_test,num_of_centroids);
fprintf('Bag of Words is done!\n')
file = fopen('results/num.txt','r');
num = fscanf(file,'%d');
fclose(file);
file = fopen('results/num.txt','w');
fprintf(file,'%d',num+1);
fclose(file);
Z = linkage(BO,'single','@distChiSq');
figure(666)
dendrogram(Z)