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
|
function vec = genFeatureVec(img)
bins = 16;
ncnls = 8;
secs = 6;
cnls = zeros(size(img,1), size(img,2),ncnls);
cnls(:,:,1:3) = img;
cnls(:,:,4:6) = rgb2ycbcr(img);
hsv = rgb2hsv(img);
cnls(:,:,7:8) = hsv(:,:,1:2);
% Schmid
scVec=[
1,2;
1,4;
2,4;
1,6;
2,6;
3,6;
1,8;
2,8;
3,8;
1,10;
2,10;
3,10;
4,10];
gbVec = [
0.3,0,4,2;
0.3,0,8,2;
0.4,0,4,1;
0.4,0,8,2;
0.3,pi/2,4,2;
0.3,pi/2,8,2;
0.4,pi/2,4,1;
0.4,pi/2,8,2;];
gb = length(gbVec);
sc = length(scVec);
vec=[];
for i = 1:sc
for cnl = 1:ncnls
for sec = 1:secs
filt = schmidFilter(scVec(i,1),scVec(i,2));
pos = real(sum(sum(filt.*(filt>0))));
neg = real(sum(sum(filt.*(filt<0))));
ss = (pos-neg)/bins;
section = getSection(cnls(:,:,cnl),sec,secs);
v = histcounts(imfilter(section, filt, 'symmetric'),(0:bins)*ss+neg);
vec=cat(2,vec,v);
end
end
end
for i = 1:gb
for cnl = 1:ncnls
for sec = 1:secs
filt = gaborFilter(gbVec(i,1),gbVec(i,2),gbVec(i,3),gbVec(i,4));
pos = real(sum(sum(filt.*(filt>0))));
neg = real(sum(sum(filt.*(filt<0))));
ss = (pos-neg)/bins;
section = getSection(cnls(:,:,cnl),sec,secs);
v = histcounts(real(imfilter(section, filt, 'symmetric')),(0:bins)*ss+neg);
vec=cat(2,vec,v);
end
end
end
end
function [sec] = getSection(inp,a,b)
[m,n] = size(inp);
ste = (m-1)/b;
st=1+ceil(ste*(a-1));
ed=1+floor(ste*a);
sec = inp(st:ed,:);
end
|