summaryrefslogtreecommitdiffstats
path: root/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c
diff options
context:
space:
mode:
authorleochanj <jbakita@cs.unc.edu>2020-10-21 01:52:54 -0400
committerleochanj <jbakita@cs.unc.edu>2020-10-21 15:59:54 -0400
commit0efc775370d2ff91927d1b383a99eab78dc5538f (patch)
treea41fe470fee5adc4d944ecd6b917bc48df8c7e0f /SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c
parente2b50015cebdfba68699abd6e8575e38230f5a78 (diff)
debug libextra and remove matlab
FLUSH_CACHES
Diffstat (limited to 'SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c')
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c126
1 files changed, 0 insertions, 126 deletions
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c
deleted file mode 100755
index 6ffcb45..0000000
--- a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c
+++ /dev/null
@@ -1,126 +0,0 @@
1/*
2RES = pointOp(IM, LUT, ORIGIN, INCREMENT, WARNINGS)
3 >>> See pointOp.m for documentation <<<
4 EPS, ported from OBVIUS, 7/96.
5*/
6
7#define V4_COMPAT
8#include <matrix.h> /* Matlab matrices */
9#include <mex.h>
10
11#include <stddef.h> /* NULL */
12
13#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it))
14
15void internal_pointop();
16
17void mexFunction(int nlhs, /* Num return vals on lhs */
18 mxArray *plhs[], /* Matrices on lhs */
19 int nrhs, /* Num args on rhs */
20 const mxArray *prhs[] /* Matrices on rhs */
21 )
22 {
23 double *image, *lut, *res;
24 double origin, increment;
25 int x_dim, y_dim, lx_dim, ly_dim;
26 int warnings = 1;
27 mxArray *arg;
28 double *mxMat;
29
30 if (nrhs < 4 ) mexErrMsgTxt("requres at least 4 args.");
31
32 /* ARG 1: IMAGE */
33 arg = prhs[0];
34 if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a real non-sparse matrix.");
35 image = mxGetPr(arg);
36 x_dim = (int) mxGetM(arg); /* X is inner index! */
37 y_dim = (int) mxGetN(arg);
38
39 /* ARG 2: Lookup table */
40 arg = prhs[1];
41 if notDblMtx(arg) mexErrMsgTxt("LUT arg must be a real non-sparse matrix.");
42 lut = mxGetPr(arg);
43 lx_dim = (int) mxGetM(arg); /* X is inner index! */
44 ly_dim = (int) mxGetN(arg);
45 if ( (lx_dim != 1) && (ly_dim != 1) )
46 mexErrMsgTxt("Lookup table must be a row or column vector.");
47
48 /* ARG 3: ORIGIN */
49 arg = prhs[2];
50 if notDblMtx(arg) mexErrMsgTxt("ORIGIN arg must be a real scalar.");
51 if (mxGetM(arg) * mxGetN(arg) != 1)
52 mexErrMsgTxt("ORIGIN arg must be a real scalar.");
53 mxMat = mxGetPr(arg);
54 origin = *mxMat;
55
56 /* ARG 4: INCREMENT */
57 arg = prhs[3];
58 if notDblMtx(arg) mexErrMsgTxt("INCREMENT arg must be a real scalar.");
59 if (mxGetM(arg) * mxGetN(arg) != 1)
60 mexErrMsgTxt("INCREMENT arg must be a real scalar.");
61 mxMat = mxGetPr(arg);
62 increment = *mxMat;
63
64 /* ARG 5: WARNINGS */
65 if (nrhs>4)
66 {
67 arg = prhs[4];
68 if notDblMtx(arg) mexErrMsgTxt("WARINGS arg must be a real scalar.");
69 if (mxGetM(arg) * mxGetN(arg) != 1)
70 mexErrMsgTxt("WARNINGS arg must be a real scalar.");
71 mxMat = mxGetPr(arg);
72 warnings = (int) *mxMat;
73 }
74
75 plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_dim,y_dim,mxREAL);
76 if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix");
77 res = mxGetPr(plhs[0]);
78
79 internal_pointop(image, res, x_dim*y_dim, lut, lx_dim*ly_dim,
80 origin, increment, warnings);
81 return;
82 }
83
84
85/* Use linear interpolation on a lookup table.
86 Taken from OBVIUS. EPS, Spring, 1987.
87 */
88void internal_pointop (im, res, size, lut, lutsize, origin, increment, warnings)
89 register double *im, *res, *lut;
90 register double origin, increment;
91 register int size, lutsize, warnings;
92 {
93 register int i, index;
94 register double pos;
95 register int l_unwarned = warnings;
96 register int r_unwarned = warnings;
97
98 lutsize = lutsize - 2; /* Maximum index value */
99 if (increment > 0)
100 for (i=0; i<size; i++)
101 {
102 pos = (im[i] - origin) / increment;
103 index = (int) pos; /* Floor */
104 if (index < 0)
105 {
106 index = 0;
107 if (l_unwarned)
108 {
109 mexPrintf("Warning: Extrapolating to left of lookup table...\n");
110 l_unwarned = 0;
111 }
112 }
113 else if (index > lutsize)
114 {
115 index = lutsize;
116 if (r_unwarned)
117 {
118 mexPrintf("Warning: Extrapolating to right of lookup table...\n");
119 r_unwarned = 0;
120 }
121 }
122 res[i] = lut[index] + (lut[index+1] - lut[index]) * (pos - index);
123 }
124 else
125 for (i=0; i<size; i++) res[i] = *lut;
126 }