summaryrefslogtreecommitdiffstats
path: root/SD-VBS/benchmarks/tracking/src/c/getInterpolatePatch.c
diff options
context:
space:
mode:
Diffstat (limited to 'SD-VBS/benchmarks/tracking/src/c/getInterpolatePatch.c')
-rw-r--r--SD-VBS/benchmarks/tracking/src/c/getInterpolatePatch.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/SD-VBS/benchmarks/tracking/src/c/getInterpolatePatch.c b/SD-VBS/benchmarks/tracking/src/c/getInterpolatePatch.c
new file mode 100644
index 0000000..99e95f9
--- /dev/null
+++ b/SD-VBS/benchmarks/tracking/src/c/getInterpolatePatch.c
@@ -0,0 +1,43 @@
1/********************************
2Author: Sravanthi Kota Venkata
3********************************/
4
5#include "tracking.h"
6
7/** Perform simple interpolation around 2*winSize*2*winSize neighbourhood **/
8F2D* getInterpolatePatch(F2D* src, int cols, float centerX, float centerY, int winSize)
9{
10 F2D *dst;
11 float a, b, a11, a12, a21, a22;
12 int i, j, k, srcIdx, dstIdx;
13 int srcIdxx, dstIdxx;
14
15 a = centerX - floor(centerX);
16 b = centerY - floor(centerY);
17
18 a11 = (1-a)*(1-b);
19 a12 = a*(1-b);
20 a21 = (1-a)*b;
21 a22 = a*b;
22
23 dst = fSetArray(1,2*winSize*2*winSize, 0);
24
25
26 for(i=-winSize; i<winSize; i++)
27 {
28 srcIdxx = floor(centerY) + i;
29 dstIdxx = i+winSize;
30
31 for(j=-winSize; j<(winSize); j++)
32 {
33 srcIdx = srcIdxx * cols + floor(centerX) + j;
34 dstIdx = dstIdxx * 2 * winSize + j + winSize;
35 asubsref(dst,dstIdx) = asubsref(src,srcIdx)*a11 + asubsref(src,srcIdx+1)*a12 + asubsref(src,srcIdx+cols)*a21 + asubsref(src,srcIdx+1+cols)*a22;
36 }
37 }
38
39 return dst;
40}
41
42
43