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
|
/********************************
Author: Sravanthi Kota Venkata
********************************/
#include "sift.h"
/**
DIFFSS Difference of scale space
Returns a scale space DSS obtained by subtracting
consecutive levels of the scale space SS.
In SIFT, this function is used to compute the difference of
Gaussian scale space from the Gaussian scale space of an image.
**/
F2D** diffss(F2D** ss, int num, int intervals)
{
F2D** dss;
int o, sizeM, sizeN, s, i, j;
F2D *current, *in1, *in2;
dss = malloc(num*intervals*sizeof(F2D*));
for(o=0; o<num; o++)
{
for(s=0; s<(intervals-1); s++)
{
sizeM = ss[o*intervals+s]->height;
sizeN = ss[o*intervals+s]->width;
dss[o*intervals+s] = fMallocHandle(sizeM, sizeN);
current = dss[o*intervals+s];
in1 = ss[o*intervals+s+1];
in2 = ss[o*intervals+s];
for(i=0; i<sizeM; i++)
{
for(j=0; j<sizeN; j++)
{
subsref(current,i,j) = subsref(in1,i,j) - subsref(in2,i,j);
}
}
}
}
return dss;
}
|