-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathPhase3_T3_ASCOS.m
172 lines (132 loc) · 4.39 KB
/
Phase3_T3_ASCOS.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
%tmp and ind has most significant frames sorted
%tmp 2nd and 3rd col has videofile and frame no
prompt={'Enter value for M:',...
'Enter the K value (Similar frames)',...
'Enter the inputfile path from task 2',...
'Enter the output directory to visualize',...
};
dlg_title='Input for Task 3';
num_lines=1;
default={'10','2','C:\Users\naren\Desktop\Phase3\out_file_10_2.spc','C:\Users\naren\Desktop\SUBMIT P3\Task 3 Visual\'}; %need to change if someother laptpo
input=inputdlg(prompt,dlg_title,num_lines,default);
Kvalue=str2num(input{2});
inputfile=input{3};
outputfile=input{4};
Ma = str2num(input{1});
%Ma=10;
fileID=fopen(inputfile);
cellsFromFile = textscan(fileID,['{<%f,%f>,<%f,%f>,%f}']);
Rawdata = cell2mat(cellsFromFile);
Predata = Rawdata(:,1);
startindex = 1;
maxvideocount = max(Rawdata(:,1));
endindex=0;
k=Kvalue;
for videoiter = 1:maxvideocount
video_filtered = Rawdata(Rawdata(:, 1) == videoiter, :);
[row col] = size(video_filtered);
row = row/k;
endindex = endindex+row;
newmat(videoiter,1) = startindex;
newmat(videoiter,2) = endindex;
startindex = endindex+1;
end
Matchdata = Rawdata(:,[3:4]);
[totrow totcol] = size(Rawdata);
T = zeros(totrow/k);
S = zeros(totrow/k);
hashvalue = 1/k;
for i = 1:totrow
colval = newmat(Rawdata(i, 3),1)+Rawdata(i, 4)-1;
Matchdata(i,3) = colval;
rowval = newmat(Rawdata(i, 1),1)+Rawdata(i, 2)-1;
Rawdata(i,6) = rowval;
Rawdata(i,7) = colval;
T(rowval,colval) = 1;
S(rowval,colval) = Rawdata(i,5);
end
out=sum(T,1)
[rowi coli] = size(T);
Totalframes = max(Rawdata(:,6));
ODimension = [1:Totalframes];
ODimension = transpose(ODimension);
for coliter = 1:coli
for rowiter = 1:rowi
if T(rowiter,coliter) == 1
for inneriter = 1:rowi
if T(inneriter,rowiter) ==1 && rowiter ~= coliter
S(rowiter,coliter) = 0.85/out(1,rowiter) * S(inneriter,coliter);
else
S(rowiter,coliter) = 1;
end
end
end
end
end
out1=sum(S,1)
outtranspose = transpose(out1);
value.OLD = ODimension;
value.SCORE = outtranspose;
[tmp ind]=sort(value.SCORE,'descend'); %tmp and ind has proper values, printing this values
comptemp = zeros(Totalframes,1);
itercount = 2;
%test for convergence
while tmp(1,1) - comptemp(1,1) > power(1/10,itercount)
itercount = itercount+1;
comptemp = tmp(1:Totalframes,1);
for coliter = 1:coli
for rowiter = 1:rowi
if T(rowiter,coliter) == 1
sum1 = 0;
for inneriter = 1:rowi
if T(inneriter,rowiter) ==1 && rowiter ~= coliter
sum1 = sum1 + S(inneriter,coliter);
S(rowiter,coliter) = 0.85/out(1,rowiter) * sum1;
else
S(rowiter,coliter) = 1;
end
end
end
end
end
out1=sum(S,1)
outtranspose = transpose(out1);
value.OLD = ODimension;
value.SCORE = outtranspose;
[tmp ind]=sort(value.SCORE,'descend'); %tmp and ind has proper values, printing this values
difft = tmp-comptemp;
end
for s = 1:Totalframes
for vdata = 1:maxvideocount
if ind(s,1) >= newmat(vdata,1) && ind(s,1)<= newmat(vdata,2)
tmp(s,2) = vdata;
tmp(s,3) = ind(s,1)-newmat(vdata,1)+1;
end
end
end
M = tmp([1:Ma],:);
dirPath = 'C:\Videos\';
dirFiles = strcat(dirPath,'\*.mp4');
listVideoFiles=dir(dirFiles);
videoName = strcat(outputfile,'finalvid_ASCOS','.mp4');
writerObj = VideoWriter(videoName);
writerObj.FrameRate = 1;
open(writerObj);
for p = 1 : Ma
for q = 1 : length(listVideoFiles)
if ( M(p,2) == q )
videoFileName=listVideoFiles(q).name;
fprintf('Video in which sequence matched: %s\n',videoFileName);
videoFrames= VideoReader(strcat(dirPath,videoFileName));
similarFrameSeqStart = M(p,3);
% similarFrameSeqEnd = M(p,3);
% to create a video sequence
secsPerImage = [5 10 15];
currentFrameGray=rgb2gray(read(videoFrames,similarFrameSeqStart));
imwrite(currentFrameGray,['Image_ASCOS' int2str(p), '.jpg']);
writeVideo(writerObj, currentFrameGray);
% end;
end;
end;
end;
close(writerObj);