diff options
Diffstat (limited to 'SD-VBS/benchmarks/tracking/src/c/getInterpolatePatch.c')
| -rw-r--r-- | SD-VBS/benchmarks/tracking/src/c/getInterpolatePatch.c | 43 |
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 | /******************************** | ||
| 2 | Author: Sravanthi Kota Venkata | ||
| 3 | ********************************/ | ||
| 4 | |||
| 5 | #include "tracking.h" | ||
| 6 | |||
| 7 | /** Perform simple interpolation around 2*winSize*2*winSize neighbourhood **/ | ||
| 8 | F2D* 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 | |||
