summaryrefslogtreecommitdiffstats
path: root/SD-VBS/benchmarks/texture_synthesis/src
diff options
context:
space:
mode:
authorLeo Chan <leochanj@live.unc.edu>2020-10-22 01:53:21 -0400
committerJoshua Bakita <jbakita@cs.unc.edu>2020-10-22 01:56:35 -0400
commitd17b33131c14864bd1eae275f49a3f148e21cf29 (patch)
tree0d8f77922e8d193cb0f6edab83018f057aad64a0 /SD-VBS/benchmarks/texture_synthesis/src
parent601ed25a4c5b66cb75315832c15613a727db2c26 (diff)
Squashed commit of the sb-vbs branch.
Includes the SD-VBS benchmarks modified to: - Use libextra to loop as realtime jobs - Preallocate memory before starting their main computation - Accept input via stdin instead of via argc Does not include the SD-VBS matlab code. Fixes libextra execution in LITMUS^RT.
Diffstat (limited to 'SD-VBS/benchmarks/texture_synthesis/src')
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/MEX/innerProdbin0 -> 12222 bytes
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.c52
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.ctfbin0 -> 174395 bytes
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.prj233
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c103
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_mcc_component_data.c151
-rwxr-xr-xSD-VBS/benchmarks/texture_synthesis/src/MEX/mccExcludedFiles.log12
-rw-r--r--SD-VBS/benchmarks/texture_synthesis/src/c/script_texture_synthesis.c197
-rw-r--r--SD-VBS/benchmarks/texture_synthesis/src/c/texture.c396
-rw-r--r--SD-VBS/benchmarks/texture_synthesis/src/c/texture.h48
10 files changed, 1192 insertions, 0 deletions
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd
new file mode 100755
index 0000000..e3b1f28
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd
Binary files differ
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.c b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.c
new file mode 100755
index 0000000..9649dda
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.c
@@ -0,0 +1,52 @@
1/*
2RES = innerProd(MAT);
3 Computes mat'*mat
4 Odelia Schwartz, 8/97.
5*/
6
7#define V4_COMPAT
8#include <mex.h>
9
10#include <stdio.h>
11#include <ctype.h>
12#include <math.h>
13#include <strings.h>
14#include <stdlib.h>
15
16void mexFunction(int nlhs, /* Num return vals on lhs */
17 Matrix *plhs[], /* Matrices on lhs */
18 int nrhs, /* Num args on rhs */
19 Matrix *prhs[] /* Matrices on rhs */
20 )
21{
22 register double *res, *mat, tmp;
23 register int len, wid, i, k, j, jlen, ilen, imat, jmat;
24 Matrix *arg;
25
26 /* get matrix input argument */
27 /* should be matrix in which num rows >= num columns */
28 arg=prhs[0];
29 mat= mxGetPr(arg);
30 len = (int) mxGetM(arg);
31 wid = (int) mxGetN(arg);
32 if ( wid > len )
33 printf("innerProd: Warning: width %d is greater than length %d.\n",wid,len);
34 plhs[0] = (Matrix *) mxCreateFull(wid,wid,REAL);
35 if (plhs[0] == NULL)
36 mexErrMsgTxt(sprintf("Error allocating %dx%d result matrix",wid,wid));
37 res = mxGetPr(plhs[0]);
38
39 for(i=0, ilen=0; i<wid; i++, ilen+=len)
40 {
41 for(j=i, jlen=ilen; j<wid; j++, jlen+=len)
42 {
43 tmp = 0.0;
44 for(k=0, imat=ilen, jmat=jlen; k<len; k++, imat++, jmat++)
45 tmp += mat[imat]*mat[jmat];
46 res[i*wid+j] = tmp;
47 res[j*wid+i] = tmp;
48 }
49 }
50 return;
51
52}
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.ctf b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.ctf
new file mode 100755
index 0000000..c6bf079
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.ctf
Binary files differ
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.prj b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.prj
new file mode 100755
index 0000000..deba3f8
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.prj
@@ -0,0 +1,233 @@
1<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
3<project>
4
5 <MATLABPath>
6 <Directory>/u/kvs/VisionBenchmark/texture_synthesis/src</Directory>
7 <Directory>/pkg/matlab/toolbox/compiler/deploy</Directory>
8 <Directory>/pkg/matlab/toolbox/matlab/general</Directory>
9 <Directory>/pkg/matlab/toolbox/matlab/ops</Directory>
10 <Directory>/pkg/matlab/toolbox/matlab/lang</Directory>
11 <Directory>/pkg/matlab/toolbox/matlab/elmat</Directory>
12 <Directory>/pkg/matlab/toolbox/matlab/elfun</Directory>
13 <Directory>/pkg/matlab/toolbox/matlab/specfun</Directory>
14 <Directory>/pkg/matlab/toolbox/matlab/matfun</Directory>
15 <Directory>/pkg/matlab/toolbox/matlab/datafun</Directory>
16 <Directory>/pkg/matlab/toolbox/matlab/polyfun</Directory>
17 <Directory>/pkg/matlab/toolbox/matlab/funfun</Directory>
18 <Directory>/pkg/matlab/toolbox/matlab/sparfun</Directory>
19 <Directory>/pkg/matlab/toolbox/matlab/scribe</Directory>
20 <Directory>/pkg/matlab/toolbox/matlab/graph2d</Directory>
21 <Directory>/pkg/matlab/toolbox/matlab/graph3d</Directory>
22 <Directory>/pkg/matlab/toolbox/matlab/specgraph</Directory>
23 <Directory>/pkg/matlab/toolbox/matlab/graphics</Directory>
24 <Directory>/pkg/matlab/toolbox/matlab/uitools</Directory>
25 <Directory>/pkg/matlab/toolbox/matlab/strfun</Directory>
26 <Directory>/pkg/matlab/toolbox/matlab/imagesci</Directory>
27 <Directory>/pkg/matlab/toolbox/matlab/iofun</Directory>
28 <Directory>/pkg/matlab/toolbox/matlab/audiovideo</Directory>
29 <Directory>/pkg/matlab/toolbox/matlab/timefun</Directory>
30 <Directory>/pkg/matlab/toolbox/matlab/datatypes</Directory>
31 <Directory>/pkg/matlab/toolbox/matlab/verctrl</Directory>
32 <Directory>/pkg/matlab/toolbox/matlab/codetools</Directory>
33 <Directory>/pkg/matlab/toolbox/matlab/helptools</Directory>
34 <Directory>/pkg/matlab/toolbox/matlab/demos</Directory>
35 <Directory>/pkg/matlab/toolbox/matlab/timeseries</Directory>
36 <Directory>/pkg/matlab/toolbox/matlab/hds</Directory>
37 <Directory>/pkg/matlab/toolbox/matlab/guide</Directory>
38 <Directory>/pkg/matlab/toolbox/matlab/plottools</Directory>
39 <Directory>/pkg/matlab/toolbox/local</Directory>
40 <Directory>/pkg/matlab/toolbox/shared/controllib</Directory>
41 <Directory>/pkg/matlab/toolbox/simulink/simulink</Directory>
42 <Directory>/pkg/matlab/toolbox/simulink/blocks</Directory>
43 <Directory>/pkg/matlab/toolbox/simulink/components</Directory>
44 <Directory>/pkg/matlab/toolbox/simulink/fixedandfloat</Directory>
45 <Directory>/pkg/matlab/toolbox/simulink/fixedandfloat/fxpdemos</Directory>
46 <Directory>/pkg/matlab/toolbox/simulink/fixedandfloat/obsolete</Directory>
47 <Directory>/pkg/matlab/toolbox/simulink/simdemos</Directory>
48 <Directory>/pkg/matlab/toolbox/simulink/simdemos/aerospace</Directory>
49 <Directory>/pkg/matlab/toolbox/simulink/simdemos/automotive</Directory>
50 <Directory>/pkg/matlab/toolbox/simulink/simdemos/simfeatures</Directory>
51 <Directory>/pkg/matlab/toolbox/simulink/simdemos/simgeneral</Directory>
52 <Directory>/pkg/matlab/toolbox/simulink/dee</Directory>
53 <Directory>/pkg/matlab/toolbox/shared/dastudio</Directory>
54 <Directory>/pkg/matlab/toolbox/shared/glue</Directory>
55 <Directory>/pkg/matlab/toolbox/stateflow/stateflow</Directory>
56 <Directory>/pkg/matlab/toolbox/rtw/rtw</Directory>
57 <Directory>/pkg/matlab/toolbox/simulink/simulink/modeladvisor</Directory>
58 <Directory>/pkg/matlab/toolbox/simulink/simulink/modeladvisor/fixpt</Directory>
59 <Directory>/pkg/matlab/toolbox/simulink/simulink/MPlayIO</Directory>
60 <Directory>/pkg/matlab/toolbox/simulink/simulink/dataobjectwizard</Directory>
61 <Directory>/pkg/matlab/toolbox/shared/fixedpointlib</Directory>
62 <Directory>/pkg/matlab/toolbox/simulink/dataimportexport</Directory>
63 <Directory>/pkg/matlab/toolbox/shared/hdlshared</Directory>
64 <Directory>/pkg/matlab/toolbox/rtw/rtwdemos</Directory>
65 <Directory>/pkg/matlab/toolbox/rtw/rtwdemos/rsimdemos</Directory>
66 <Directory>/pkg/matlab/toolbox/rtw/targets/asap2/asap2</Directory>
67 <Directory>/pkg/matlab/toolbox/rtw/targets/asap2/asap2/user</Directory>
68 <Directory>/pkg/matlab/toolbox/rtw/targets/common/can/blocks</Directory>
69 <Directory>/pkg/matlab/toolbox/rtw/targets/common/configuration/resource</Directory>
70 <Directory>/pkg/matlab/toolbox/rtw/targets/common/tgtcommon</Directory>
71 <Directory>/pkg/matlab/toolbox/stateflow/sfdemos</Directory>
72 <Directory>/pkg/matlab/toolbox/stateflow/coder</Directory>
73 <Directory>/pkg/matlab/toolbox/bioinfo/bioinfo</Directory>
74 <Directory>/pkg/matlab/toolbox/bioinfo/biolearning</Directory>
75 <Directory>/pkg/matlab/toolbox/bioinfo/microarray</Directory>
76 <Directory>/pkg/matlab/toolbox/bioinfo/mass_spec</Directory>
77 <Directory>/pkg/matlab/toolbox/bioinfo/proteins</Directory>
78 <Directory>/pkg/matlab/toolbox/bioinfo/biomatrices</Directory>
79 <Directory>/pkg/matlab/toolbox/bioinfo/biodemos</Directory>
80 <Directory>/pkg/matlab/toolbox/bioinfo/graphtheory</Directory>
81 <Directory>/pkg/matlab/toolbox/commblks/commblks</Directory>
82 <Directory>/pkg/matlab/toolbox/commblks/commmasks</Directory>
83 <Directory>/pkg/matlab/toolbox/commblks/commmex</Directory>
84 <Directory>/pkg/matlab/toolbox/commblks/commblksdemos</Directory>
85 <Directory>/pkg/matlab/toolbox/commblks/commblksobsolete/v3</Directory>
86 <Directory>/pkg/matlab/toolbox/commblks/commblksobsolete/v2p5</Directory>
87 <Directory>/pkg/matlab/toolbox/commblks/commblksobsolete/v2</Directory>
88 <Directory>/pkg/matlab/toolbox/comm/comm</Directory>
89 <Directory>/pkg/matlab/toolbox/comm/commdemos</Directory>
90 <Directory>/pkg/matlab/toolbox/comm/commdemos/commdocdemos</Directory>
91 <Directory>/pkg/matlab/toolbox/comm/commobsolete</Directory>
92 <Directory>/pkg/matlab/toolbox/compiler</Directory>
93 <Directory>/pkg/matlab/toolbox/control/control</Directory>
94 <Directory>/pkg/matlab/toolbox/control/ctrlguis</Directory>
95 <Directory>/pkg/matlab/toolbox/control/ctrlobsolete</Directory>
96 <Directory>/pkg/matlab/toolbox/control/ctrlutil</Directory>
97 <Directory>/pkg/matlab/toolbox/control/ctrldemos</Directory>
98 <Directory>/pkg/matlab/toolbox/shared/slcontrollib</Directory>
99 <Directory>/pkg/matlab/toolbox/curvefit/curvefit</Directory>
100 <Directory>/pkg/matlab/toolbox/curvefit/cftoolgui</Directory>
101 <Directory>/pkg/matlab/toolbox/shared/optimlib</Directory>
102 <Directory>/pkg/matlab/toolbox/database/database</Directory>
103 <Directory>/pkg/matlab/toolbox/database/dbdemos</Directory>
104 <Directory>/pkg/matlab/toolbox/database/vqb</Directory>
105 <Directory>/pkg/matlab/toolbox/dspblks/dspblks</Directory>
106 <Directory>/pkg/matlab/toolbox/dspblks/dspmasks</Directory>
107 <Directory>/pkg/matlab/toolbox/dspblks/dspmex</Directory>
108 <Directory>/pkg/matlab/toolbox/dspblks/dspdemos</Directory>
109 <Directory>/pkg/matlab/toolbox/shared/filterdesignlib</Directory>
110 <Directory>/pkg/matlab/toolbox/rtw/targets/ecoder</Directory>
111 <Directory>/pkg/matlab/toolbox/rtw/targets/ecoder/ecoderdemos</Directory>
112 <Directory>/pkg/matlab/toolbox/rtw/targets/mpt</Directory>
113 <Directory>/pkg/matlab/toolbox/rtw/targets/mpt/mpt</Directory>
114 <Directory>/pkg/matlab/toolbox/rtw/targets/mpt/user_specific</Directory>
115 <Directory>/pkg/matlab/toolbox/fixedpoint/fixedpoint</Directory>
116 <Directory>/pkg/matlab/toolbox/fixedpoint/fidemos</Directory>
117 <Directory>/pkg/matlab/toolbox/fixedpoint/fimex</Directory>
118 <Directory>/pkg/matlab/toolbox/fixpoint</Directory>
119 <Directory>/pkg/matlab/toolbox/gads</Directory>
120 <Directory>/pkg/matlab/toolbox/gads/gads</Directory>
121 <Directory>/pkg/matlab/toolbox/gads/gadsdemos</Directory>
122 <Directory>/pkg/matlab/toolbox/ident/ident</Directory>
123 <Directory>/pkg/matlab/toolbox/ident/idobsolete</Directory>
124 <Directory>/pkg/matlab/toolbox/ident/idguis</Directory>
125 <Directory>/pkg/matlab/toolbox/ident/idutils</Directory>
126 <Directory>/pkg/matlab/toolbox/ident/iddemos</Directory>
127 <Directory>/pkg/matlab/toolbox/ident/idhelp</Directory>
128 <Directory>/pkg/matlab/toolbox/images/images</Directory>
129 <Directory>/pkg/matlab/toolbox/images/imuitools</Directory>
130 <Directory>/pkg/matlab/toolbox/images/imdemos</Directory>
131 <Directory>/pkg/matlab/toolbox/images/iptutils</Directory>
132 <Directory>/pkg/matlab/toolbox/shared/imageslib</Directory>
133 <Directory>/pkg/matlab/toolbox/images/medformats</Directory>
134 <Directory>/pkg/matlab/toolbox/instrument/instrument</Directory>
135 <Directory>/pkg/matlab/toolbox/instrument/instrumentdemos</Directory>
136 <Directory>/pkg/matlab/toolbox/map/map</Directory>
137 <Directory>/pkg/matlab/toolbox/map/mapdemos</Directory>
138 <Directory>/pkg/matlab/toolbox/map/mapdisp</Directory>
139 <Directory>/pkg/matlab/toolbox/map/mapformats</Directory>
140 <Directory>/pkg/matlab/toolbox/map/mapproj</Directory>
141 <Directory>/pkg/matlab/toolbox/shared/mapgeodesy</Directory>
142 <Directory>/pkg/matlab/toolbox/slvnv/simcoverage</Directory>
143 <Directory>/pkg/matlab/toolbox/nnet</Directory>
144 <Directory>/pkg/matlab/toolbox/nnet/nncontrol</Directory>
145 <Directory>/pkg/matlab/toolbox/nnet/nndemos</Directory>
146 <Directory>/pkg/matlab/toolbox/nnet/nnet</Directory>
147 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnanalyze</Directory>
148 <Directory>/pkg/matlab/toolbox/nnet/nnet/nncustom</Directory>
149 <Directory>/pkg/matlab/toolbox/nnet/nnet/nndistance</Directory>
150 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnformat</Directory>
151 <Directory>/pkg/matlab/toolbox/nnet/nnet/nninit</Directory>
152 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnlearn</Directory>
153 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnnetinput</Directory>
154 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnnetwork</Directory>
155 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnperformance</Directory>
156 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnplot</Directory>
157 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnprocess</Directory>
158 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnsearch</Directory>
159 <Directory>/pkg/matlab/toolbox/nnet/nnet/nntopology</Directory>
160 <Directory>/pkg/matlab/toolbox/nnet/nnet/nntrain</Directory>
161 <Directory>/pkg/matlab/toolbox/nnet/nnet/nntransfer</Directory>
162 <Directory>/pkg/matlab/toolbox/nnet/nnet/nnweight</Directory>
163 <Directory>/pkg/matlab/toolbox/nnet/nnguis</Directory>
164 <Directory>/pkg/matlab/toolbox/nnet/nnguis/nftool</Directory>
165 <Directory>/pkg/matlab/toolbox/nnet/nnguis/nntool</Directory>
166 <Directory>/pkg/matlab/toolbox/nnet/nnobsolete</Directory>
167 <Directory>/pkg/matlab/toolbox/nnet/nnresource</Directory>
168 <Directory>/pkg/matlab/toolbox/nnet/nnutils</Directory>
169 <Directory>/pkg/matlab/toolbox/optim</Directory>
170 <Directory>/pkg/matlab/toolbox/pde</Directory>
171 <Directory>/pkg/matlab/toolbox/robust/robust</Directory>
172 <Directory>/pkg/matlab/toolbox/robust/rctlmi</Directory>
173 <Directory>/pkg/matlab/toolbox/robust/rctutil</Directory>
174 <Directory>/pkg/matlab/toolbox/robust/rctdemos</Directory>
175 <Directory>/pkg/matlab/toolbox/robust/rctobsolete/robust</Directory>
176 <Directory>/pkg/matlab/toolbox/robust/rctobsolete/lmi</Directory>
177 <Directory>/pkg/matlab/toolbox/robust/rctobsolete/mutools/commands</Directory>
178 <Directory>/pkg/matlab/toolbox/robust/rctobsolete/mutools/subs</Directory>
179 <Directory>/pkg/matlab/toolbox/signal/signal</Directory>
180 <Directory>/pkg/matlab/toolbox/signal/sigtools</Directory>
181 <Directory>/pkg/matlab/toolbox/signal/sptoolgui</Directory>
182 <Directory>/pkg/matlab/toolbox/signal/sigdemos</Directory>
183 <Directory>/pkg/matlab/toolbox/shared/spcuilib</Directory>
184 <Directory>/pkg/matlab/toolbox/slcontrol/slcontrol</Directory>
185 <Directory>/pkg/matlab/toolbox/slcontrol/slctrlguis</Directory>
186 <Directory>/pkg/matlab/toolbox/slcontrol/slctrlutil</Directory>
187 <Directory>/pkg/matlab/toolbox/slcontrol/slctrldemos</Directory>
188 <Directory>/pkg/matlab/toolbox/splines</Directory>
189 <Directory>/pkg/matlab/toolbox/stats</Directory>
190 <Directory>/pkg/matlab/toolbox/symbolic</Directory>
191 <Directory>/pkg/matlab/toolbox/vipblks/vipblks</Directory>
192 <Directory>/pkg/matlab/toolbox/vipblks/vipmasks</Directory>
193 <Directory>/pkg/matlab/toolbox/vipblks/vipmex</Directory>
194 <Directory>/pkg/matlab/toolbox/vipblks/vipdemos</Directory>
195 <Directory>/pkg/matlab/toolbox/wavelet/wavelet</Directory>
196 <Directory>/pkg/matlab/toolbox/wavelet/wmultisig1d</Directory>
197 <Directory>/pkg/matlab/toolbox/wavelet/wavedemo</Directory>
198 <Directory>/pkg/matlab/work</Directory>
199 <Directory>/pkg/matlab/toolbox/vr/vr</Directory>
200 <Directory>/pkg/matlab/toolbox/vr/vrdemos</Directory>
201 </MATLABPath>
202
203 <MCCProperties>
204 <output/>
205 <wrapper>
206 <type>main</type>
207 <component_name>innerProd</component_name>
208 </wrapper>
209 <link>exe</link>
210 <create_vb_wrapper>false</create_vb_wrapper>
211 <intermediate_dir>../MEX</intermediate_dir>
212 <output_dir>../MEX</output_dir>
213 <generate_code_only>false</generate_code_only>
214 <verbose>false</verbose>
215 <MCR_runtime_options>
216 <share_mcr>false</share_mcr>
217 </MCR_runtime_options>
218 <options_file/>
219 <toolboxes_on_path shortcut="all"/>
220 <debug>false</debug>
221 <warning shortcut="default"/>
222 <license_file/>
223 </MCCProperties>
224
225 <file_info>
226 <category name="Main function">
227 <file>/u/kvs/VisionBenchmark/texture_synthesis/src/innerProd.m</file>
228 </category>
229 <category name="Other files"/>
230 <category name="C/C++ files"/>
231 </file_info>
232
233</project>
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c
new file mode 100755
index 0000000..3c828de
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c
@@ -0,0 +1,103 @@
1/*
2 * MATLAB Compiler: 4.4 (R2006a)
3 * Date: Thu Jul 24 17:19:07 2008
4 * Arguments: "-B" "macro_default" "-m" "-W" "main" "-T" "link:exe" "-d"
5 * "../MEX" "innerProd.m"
6 */
7
8#include <stdio.h>
9#include "mclmcr.h"
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14extern mclComponentData __MCC_innerProd_component_data;
15
16#ifdef __cplusplus
17}
18#endif
19
20static HMCRINSTANCE _mcr_inst = NULL;
21
22
23static int mclDefaultPrintHandler(const char *s)
24{
25 return fwrite(s, sizeof(char), strlen(s), stdout);
26}
27
28static int mclDefaultErrorHandler(const char *s)
29{
30 int written = 0, len = 0;
31 len = strlen(s);
32 written = fwrite(s, sizeof(char), len, stderr);
33 if (len > 0 && s[ len-1 ] != '\n')
34 written += fwrite("\n", sizeof(char), 1, stderr);
35 return written;
36}
37
38
39/* This symbol is defined in shared libraries. Define it here
40 * (to nothing) in case this isn't a shared library.
41 */
42#ifndef LIB_innerProd_C_API
43#define LIB_innerProd_C_API /* No special import/export declaration */
44#endif
45
46LIB_innerProd_C_API
47bool MW_CALL_CONV innerProdInitializeWithHandlers(
48 mclOutputHandlerFcn error_handler,
49 mclOutputHandlerFcn print_handler
50)
51{
52 if (_mcr_inst != NULL)
53 return true;
54 if (!mclmcrInitialize())
55 return false;
56 if (!mclInitializeComponentInstance(&_mcr_inst,
57 &__MCC_innerProd_component_data,
58 true, NoObjectType, ExeTarget,
59 error_handler, print_handler))
60 return false;
61 return true;
62}
63
64LIB_innerProd_C_API
65bool MW_CALL_CONV innerProdInitialize(void)
66{
67 return innerProdInitializeWithHandlers(mclDefaultErrorHandler,
68 mclDefaultPrintHandler);
69}
70
71LIB_innerProd_C_API
72void MW_CALL_CONV innerProdTerminate(void)
73{
74 if (_mcr_inst != NULL)
75 mclTerminateInstance(&_mcr_inst);
76}
77
78int run_main(int argc, const char **argv)
79{
80 int _retval;
81 /* Generate and populate the path_to_component. */
82 char path_to_component[(PATH_MAX*2)+1];
83 separatePathName(argv[0], path_to_component, (PATH_MAX*2)+1);
84 __MCC_innerProd_component_data.path_to_component = path_to_component;
85 if (!innerProdInitialize()) {
86 return -1;
87 }
88 _retval = mclMain(_mcr_inst, argc, argv, "innerProd", 1);
89 if (_retval == 0 /* no error */) mclWaitForFiguresToDie(NULL);
90 innerProdTerminate();
91 mclTerminateApplication();
92 return _retval;
93}
94
95int main(int argc, const char **argv)
96{
97 if (!mclInitializeApplication(
98 __MCC_innerProd_component_data.runtime_options,
99 __MCC_innerProd_component_data.runtime_option_count))
100 return 0;
101
102 return mclRunMain(run_main, argc, argv);
103}
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_mcc_component_data.c b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_mcc_component_data.c
new file mode 100755
index 0000000..df204ee
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_mcc_component_data.c
@@ -0,0 +1,151 @@
1/*
2 * MATLAB Compiler: 4.4 (R2006a)
3 * Date: Thu Jul 24 17:19:07 2008
4 * Arguments: "-B" "macro_default" "-m" "-W" "main" "-T" "link:exe" "-d"
5 * "../MEX" "innerProd.m"
6 */
7
8#include "mclmcr.h"
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13const unsigned char __MCC_innerProd_session_key[] = {
14 'B', 'C', 'C', '8', 'A', 'E', 'C', 'F', '0', '7', '5', '2', 'D', 'F',
15 'F', '9', '4', '2', '0', 'B', '6', 'F', '5', 'B', 'E', 'A', 'E', '4',
16 'C', '2', 'F', '5', '4', 'D', '1', '4', '6', '3', 'B', 'A', '5', '1',
17 'D', '8', '3', '7', 'F', '5', '4', '6', 'C', '1', 'D', 'B', '9', '3',
18 'C', 'D', 'A', 'D', 'F', '3', '5', 'F', '5', 'A', '2', 'D', '9', 'A',
19 '4', '4', '6', 'D', 'C', '5', '3', '7', '7', '5', '7', '2', '3', '0',
20 'E', '2', 'E', '7', '0', 'F', '7', '4', 'B', 'A', '8', 'B', '9', '8',
21 '5', '8', 'D', 'D', '3', '3', '3', '7', '9', 'E', '8', '1', '3', '9',
22 '1', '2', 'A', '6', 'B', '0', '4', '8', 'F', 'D', '9', 'D', '3', '5',
23 '2', '8', '4', '3', '7', '3', '1', 'D', '7', '0', 'E', '0', '0', '3',
24 'D', '9', '7', '3', '0', 'F', '8', '7', '0', 'C', 'A', 'B', '4', '1',
25 'F', '0', '4', '5', 'E', '1', '7', '4', 'C', 'E', '6', 'A', 'C', 'D',
26 'C', '6', 'F', '8', '6', '5', 'F', '5', '1', 'A', '6', '9', 'F', 'E',
27 '7', '9', 'A', '3', 'E', '7', 'C', '6', '2', '3', '7', 'C', 'E', '9',
28 'A', '0', '6', '3', '5', '9', '3', '4', '1', '5', '9', 'D', '9', '2',
29 '4', 'B', '1', '0', '6', '0', 'A', '3', '5', '8', '2', '1', '8', '4',
30 'E', 'B', 'C', 'D', 'B', '6', '4', '7', 'F', 'D', '9', 'A', '3', '3',
31 'D', '0', '1', '5', 'C', '2', '1', 'B', '5', 'C', '1', '5', '9', '3',
32 '0', '4', '6', '1', '\0'};
33
34const unsigned char __MCC_innerProd_public_key[] = {
35 '3', '0', '8', '1', '9', 'D', '3', '0', '0', 'D', '0', '6', '0', '9',
36 '2', 'A', '8', '6', '4', '8', '8', '6', 'F', '7', '0', 'D', '0', '1',
37 '0', '1', '0', '1', '0', '5', '0', '0', '0', '3', '8', '1', '8', 'B',
38 '0', '0', '3', '0', '8', '1', '8', '7', '0', '2', '8', '1', '8', '1',
39 '0', '0', 'C', '4', '9', 'C', 'A', 'C', '3', '4', 'E', 'D', '1', '3',
40 'A', '5', '2', '0', '6', '5', '8', 'F', '6', 'F', '8', 'E', '0', '1',
41 '3', '8', 'C', '4', '3', '1', '5', 'B', '4', '3', '1', '5', '2', '7',
42 '7', 'E', 'D', '3', 'F', '7', 'D', 'A', 'E', '5', '3', '0', '9', '9',
43 'D', 'B', '0', '8', 'E', 'E', '5', '8', '9', 'F', '8', '0', '4', 'D',
44 '4', 'B', '9', '8', '1', '3', '2', '6', 'A', '5', '2', 'C', 'C', 'E',
45 '4', '3', '8', '2', 'E', '9', 'F', '2', 'B', '4', 'D', '0', '8', '5',
46 'E', 'B', '9', '5', '0', 'C', '7', 'A', 'B', '1', '2', 'E', 'D', 'E',
47 '2', 'D', '4', '1', '2', '9', '7', '8', '2', '0', 'E', '6', '3', '7',
48 '7', 'A', '5', 'F', 'E', 'B', '5', '6', '8', '9', 'D', '4', 'E', '6',
49 '0', '3', '2', 'F', '6', '0', 'C', '4', '3', '0', '7', '4', 'A', '0',
50 '4', 'C', '2', '6', 'A', 'B', '7', '2', 'F', '5', '4', 'B', '5', '1',
51 'B', 'B', '4', '6', '0', '5', '7', '8', '7', '8', '5', 'B', '1', '9',
52 '9', '0', '1', '4', '3', '1', '4', 'A', '6', '5', 'F', '0', '9', '0',
53 'B', '6', '1', 'F', 'C', '2', '0', '1', '6', '9', '4', '5', '3', 'B',
54 '5', '8', 'F', 'C', '8', 'B', 'A', '4', '3', 'E', '6', '7', '7', '6',
55 'E', 'B', '7', 'E', 'C', 'D', '3', '1', '7', '8', 'B', '5', '6', 'A',
56 'B', '0', 'F', 'A', '0', '6', 'D', 'D', '6', '4', '9', '6', '7', 'C',
57 'B', '1', '4', '9', 'E', '5', '0', '2', '0', '1', '1', '1', '\0'};
58
59static const char * MCC_innerProd_matlabpath_data[] =
60 { "innerProd/", "toolbox/compiler/deploy/", "$TOOLBOXMATLABDIR/general/",
61 "$TOOLBOXMATLABDIR/ops/", "$TOOLBOXMATLABDIR/lang/",
62 "$TOOLBOXMATLABDIR/elmat/", "$TOOLBOXMATLABDIR/elfun/",
63 "$TOOLBOXMATLABDIR/specfun/", "$TOOLBOXMATLABDIR/matfun/",
64 "$TOOLBOXMATLABDIR/datafun/", "$TOOLBOXMATLABDIR/polyfun/",
65 "$TOOLBOXMATLABDIR/funfun/", "$TOOLBOXMATLABDIR/sparfun/",
66 "$TOOLBOXMATLABDIR/scribe/", "$TOOLBOXMATLABDIR/graph2d/",
67 "$TOOLBOXMATLABDIR/graph3d/", "$TOOLBOXMATLABDIR/specgraph/",
68 "$TOOLBOXMATLABDIR/graphics/", "$TOOLBOXMATLABDIR/uitools/",
69 "$TOOLBOXMATLABDIR/strfun/", "$TOOLBOXMATLABDIR/imagesci/",
70 "$TOOLBOXMATLABDIR/iofun/", "$TOOLBOXMATLABDIR/audiovideo/",
71 "$TOOLBOXMATLABDIR/timefun/", "$TOOLBOXMATLABDIR/datatypes/",
72 "$TOOLBOXMATLABDIR/verctrl/", "$TOOLBOXMATLABDIR/codetools/",
73 "$TOOLBOXMATLABDIR/helptools/", "$TOOLBOXMATLABDIR/demos/",
74 "$TOOLBOXMATLABDIR/timeseries/", "$TOOLBOXMATLABDIR/hds/",
75 "$TOOLBOXMATLABDIR/guide/", "$TOOLBOXMATLABDIR/plottools/",
76 "toolbox/local/", "toolbox/compiler/", "toolbox/database/database/" };
77
78static const char * MCC_innerProd_classpath_data[] =
79 { "java/jar/toolbox/database.jar" };
80
81static const char * MCC_innerProd_libpath_data[] =
82 { "" };
83
84static const char * MCC_innerProd_app_opts_data[] =
85 { "" };
86
87static const char * MCC_innerProd_run_opts_data[] =
88 { "" };
89
90static const char * MCC_innerProd_warning_state_data[] =
91 { "" };
92
93
94mclComponentData __MCC_innerProd_component_data = {
95
96 /* Public key data */
97 __MCC_innerProd_public_key,
98
99 /* Component name */
100 "innerProd",
101
102 /* Component Root */
103 "",
104
105 /* Application key data */
106 __MCC_innerProd_session_key,
107
108 /* Component's MATLAB Path */
109 MCC_innerProd_matlabpath_data,
110
111 /* Number of directories in the MATLAB Path */
112 36,
113
114 /* Component's Java class path */
115 MCC_innerProd_classpath_data,
116 /* Number of directories in the Java class path */
117 1,
118
119 /* Component's load library path (for extra shared libraries) */
120 MCC_innerProd_libpath_data,
121 /* Number of directories in the load library path */
122 0,
123
124 /* MCR instance-specific runtime options */
125 MCC_innerProd_app_opts_data,
126 /* Number of MCR instance-specific runtime options */
127 0,
128
129 /* MCR global runtime options */
130 MCC_innerProd_run_opts_data,
131 /* Number of MCR global runtime options */
132 0,
133
134 /* Component preferences directory */
135 "innerProd_EEEFF7AADF2C5D8569D4742763DAC0AB",
136
137 /* MCR warning status data */
138 MCC_innerProd_warning_state_data,
139 /* Number of MCR warning status modifiers */
140 0,
141
142 /* Path to component - evaluated at runtime */
143 NULL
144
145};
146
147#ifdef __cplusplus
148}
149#endif
150
151
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/mccExcludedFiles.log b/SD-VBS/benchmarks/texture_synthesis/src/MEX/mccExcludedFiles.log
new file mode 100755
index 0000000..981940f
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/mccExcludedFiles.log
@@ -0,0 +1,12 @@
1This file contains the list of various toolbox functions that are not
2included in the CTF file. An error will be thrown if any of these functions
3 are called at run-time. Some of these functions may be from toolboxes
4that you are not using in your application. The reason for this is that
5these toolboxes have overloaded some methods that are called by your code.
6If you know which toolboxes are being used by your code, you can use the -p
7 flag with the -N flag to list these toolboxes explicitly. This will
8cause MATLAB Compiler to only look for functions in the specified toolbox
9directories in addition to the MATLAB directories. Refer to the MCC
10documentation for more information on this.
11
120 item(s) excluded by M-file compilabilty rules.
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/c/script_texture_synthesis.c b/SD-VBS/benchmarks/texture_synthesis/src/c/script_texture_synthesis.c
new file mode 100644
index 0000000..01ddefd
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/c/script_texture_synthesis.c
@@ -0,0 +1,197 @@
1/********************************
2Author: Sravanthi Kota Venkata
3********************************/
4
5#include "texture.h"
6#include <malloc.h>
7#include "extra.h"
8#define TEXTURE_MEM 1<<28
9int WIDTHin,HEIGHTin;
10F2D *target, *result;
11int WIDTH,HEIGHT;
12int localx, localy,targetin=0;
13int *atlas;
14int *xloopin, *yloopin;
15int *xloopout, *yloopout;
16
17int main(int argc, char **argv)
18{
19 SET_UP
20 mallopt(M_TOP_PAD, TEXTURE_MEM);
21 mallopt(M_MMAP_MAX, 0);
22 params* data;
23 I2D *im;
24 F2D* image;
25 data = malloc(sizeof(params));
26 im = parse_flags(argc, argv);
27 image = fiDeepCopy(im);
28 init_params(data);
29
30 printf("start.\n");
31 for_each_job{
32 create_texture(image, data);
33 }
34 printf("end..\n");
35#ifdef CHECK
36{
37 int ret=0;
38#ifdef GENERATE_OUTPUT
39 fWriteMatrix(result, argv[1]);
40#endif
41 ret = fSelfCheck(result, "expected_C.txt", 1.0);
42 if(ret < 0)
43 printf("Error in Texture Synthesis\n");
44}
45#endif
46 iFreeHandle(im);
47 fFreeHandle(image);
48 free(data);
49 fFreeHandle(target);
50 fFreeHandle(result);
51 free(atlas);
52 WRITE_TO_FILE
53 return 0;
54}
55
56I2D* parse_flags(int argc, char ** argv)
57{
58 int i, tsx,tsy;
59 I2D* image;
60 char fileNm[256];
61
62 printf("Input image: ");
63 scanf("%s", fileNm);
64 image = readImage(fileNm);
65 WIDTHin = image->width;
66 HEIGHTin = image->height;
67
68 localx = 3;
69 localy = 3;
70
71#ifdef test
72 WIDTH = WIDTHin*2;
73 HEIGHT = HEIGHTin*2;
74 localx = 2;
75 localy = 2;
76#endif
77#ifdef sim_fast
78 WIDTH = WIDTHin*2;
79 HEIGHT = HEIGHTin*2;
80 localx = 3;
81 localy = 3;
82#endif
83#ifdef sim
84 WIDTH = WIDTHin*3;
85 HEIGHT = HEIGHTin*3;
86 localx = 2;
87 localy = 2;
88#endif
89#ifdef sqcif
90 WIDTH = WIDTHin*6;
91 HEIGHT = HEIGHTin*6;
92 localx = 2;
93 localy = 2;
94#endif
95#ifdef qcif
96 WIDTH = WIDTHin*10;
97 HEIGHT = HEIGHTin*10;
98 localx = 2;
99 localy = 2;
100#endif
101#ifdef cif
102 WIDTH = WIDTHin*10;
103 HEIGHT = HEIGHTin*10;
104 localx = 3;
105 localy = 3;
106#endif
107#ifdef vga
108 WIDTH = WIDTHin*20;
109 HEIGHT = HEIGHTin*20;
110 localx = 3;
111 localy = 3;
112#endif
113#ifdef fullhd
114 WIDTH = WIDTHin*20;
115 HEIGHT = HEIGHTin*20;
116 localx = 15;
117 localy = 15;
118#endif
119#ifdef wuxga
120 WIDTH = WIDTHin*20;
121 HEIGHT = HEIGHTin*20;
122 localx = 5;
123 localy = 5;
124#endif
125 printf("Input size\t\t- (%dx%d)\n", HEIGHTin, WIDTHin);
126
127// xloopin = malloc(2*WIDTHin*sizeof(int));
128// yloopin = malloc(2*HEIGHTin*sizeof(int));
129//
130// for(i=-WIDTHin/2;i<WIDTHin+WIDTHin/2;i++)
131// {
132// arrayref(xloopin,i+WIDTHin/2) = (WIDTHin+i)%WIDTHin;
133// }
134//
135// for(i=-HEIGHTin/2;i<HEIGHTin+HEIGHTin/2;i++)
136// {
137// arrayref(yloopin,i+HEIGHTin/2) = (HEIGHTin+i)%HEIGHTin;
138// }
139// xloopin += WIDTHin/2; yloopin += HEIGHTin/2;
140
141 result = fMallocHandle(1,HEIGHT*WIDTH);
142 target = fMallocHandle(1, WIDTH*HEIGHT);
143
144 atlas = malloc(2*WIDTH*HEIGHT*sizeof(int));
145 xloopout = malloc(2*WIDTH*sizeof(int));
146 yloopout = malloc(2*HEIGHT*sizeof(int));
147
148 for(i=-WIDTH/2;i<WIDTH+WIDTH/2;i++)
149 {
150 arrayref(xloopout,i+WIDTH/2) = (WIDTH+i)%WIDTH;
151 }
152 for(i=-HEIGHT/2;i<HEIGHT+HEIGHT/2;i++)
153 {
154 arrayref(yloopout,i+HEIGHT/2) = (HEIGHT+i)%HEIGHT;
155 }
156 xloopout += WIDTH/2; yloopout += HEIGHT/2;
157
158 if (result == NULL)
159 {
160 printf("Can't allocate %dx%d image. Exiting.\n",WIDTH,HEIGHT);
161 exit(1);
162 }
163
164 return image;
165}
166
167void init_params(params *data)
168{
169 int i,j;
170 data->localx = localx; data->localy = localy;
171 data->widthin = WIDTHin; data->widthout = WIDTH;
172 data->heightin = HEIGHTin; data->heightout = HEIGHT;
173
174
175 if(!targetin)
176 {
177 for(i=0;i<data->heightout;i++)
178 {
179 for(j=0;j<data->widthout;j++)
180 {
181 asubsref(target,a(j,i,data->widthout)+R) = 1.0;
182// asubsref(target,a(j,i,data->widthout)+G) = 1.0;
183// asubsref(target,a(j,i,data->widthout)+B) = 1.0;
184 }
185 }
186 }
187
188 for(i=0;i<data->heightout;i++)
189 {
190 for(j=0;j<data->widthout;j++)
191 {
192 asubsref(result,a(j,i,data->widthout)+R) = 1.0;
193// asubsref(result,a(j,i,data->widthout)+G) = 1.0;
194// asubsref(result,a(j,i,data->widthout)+B) = 1.0;
195 }
196 }
197}
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/c/texture.c b/SD-VBS/benchmarks/texture_synthesis/src/c/texture.c
new file mode 100644
index 0000000..fb0f1ae
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/c/texture.c
@@ -0,0 +1,396 @@
1/********************************
2Author: Sravanthi Kota Venkata
3********************************/
4
5#include "texture.h"
6#include <math.h>
7
8int vrstartx, vrfinishx, vrstarty, vrfinishy;
9extern params data;
10int* candlistx, *candlisty;
11int *atlas;
12int anotherpass=0,maxcand = 40;
13F2D *target, *result;
14int *xloopout, *yloopout;
15int *xloopin, *yloopin;
16
17double compare_rest(F2D *image,int x, int y, F2D *tar,int x1, int y1, params* data);
18
19/*********************************
20This is the main texture synthesis function. Called just once
21from main to generate image from 'image' into 'result'.
22Synthesis parameters (image and neighborhood sizes) are in global
23'data-> structure.
24*********************************/
25
26//void create_texture(F2D *image, F2D *result, params *data)
27void create_texture(F2D *image, params *data)
28{
29
30 int i,j,k, ncand, bestx,besty;
31 double diff,curdiff;
32 int tsx,tsy;
33 srand48(1);
34 candlistx = (int*)malloc(sizeof(int)*(data->localx*(data->localy+1)+1));
35 candlisty = (int*)malloc(sizeof(int)*(data->localx*(data->localy+1)+1));
36// if(!anotherpass) init(result, image,data);
37 if(!anotherpass) init(image,data);
38
39 for(i=0;i<data->heightout-data->localy/2;i++)
40 {
41 for(j=0;j<data->widthout;j++)
42 {
43 // First, create a list of candidates for particular pixel.
44 if(anotherpass) ncand = create_all_candidates(j,i, data);
45 else ncand = create_candidates(j,i, data);
46
47 // If there are multiple candidates, choose the best based on L_2 norm
48
49 if(ncand > 1)
50 {
51 diff = 1e10;
52 for(k=0;k<ncand;k++)
53 {
54 curdiff = compare_neighb(image, arrayref(candlistx,k),arrayref(candlisty,k),result,j,i, data);
55 curdiff += compare_rest(image,arrayref(candlistx,k),arrayref(candlisty,k),target,j,i,data);
56 if(curdiff < diff)
57 {
58 diff = curdiff;
59 bestx = arrayref(candlistx,k);
60 besty = arrayref(candlisty,k);
61 }
62 }
63 }
64 else
65 {
66 bestx = arrayref(candlistx,0);
67 besty = arrayref(candlisty,0);
68 }
69
70 // Copy the best candidate to the output image and record its position
71 // in the atlas (atlas is used to create candidates)
72
73 asubsref(result,a(j,i,data->widthout)+R) = asubsref(image,a(bestx,besty,data->widthin)+R);
74// asubsref(result,a(j,i,data->widthout)+G) = asubsref(image,a(bestx,besty,data->widthin)+G);
75// asubsref(result,a(j,i,data->widthout)+B) = asubsref(image,a(bestx,besty,data->widthin)+B);
76 arrayref(atlas,aa(j,i)) = bestx;
77 arrayref(atlas,aa(j,i)+1) = besty;
78 }
79 }
80
81 // Use full neighborhoods for the last few rows. This is a small
82 // fraction of total area - can be ignored for optimization purposes.
83
84 for(;i<data->heightout;i++)
85 {
86 for(j=0;j<data->widthout;j++)
87 {
88 ncand = create_all_candidates(j,i,data);
89 if(ncand > 1)
90 {
91 diff = 1e10;
92 for(k=0;k<ncand;k++)
93 {
94 curdiff = compare_full_neighb(image, arrayref(candlistx,k),arrayref(candlisty,k),result,j,i, data);
95 if(curdiff < diff)
96 {
97 diff = curdiff;
98 bestx = arrayref(candlistx,k);
99 besty = arrayref(candlisty,k);
100 }
101 }
102 }
103 else
104 {
105 bestx = arrayref(candlistx,0);
106 besty = arrayref(candlisty,0);
107 }
108
109 asubsref(result,a(j,i,data->widthout)+R) = asubsref(image,a(bestx,besty,data->widthin)+R);
110// asubsref(result,a(j,i,data->widthout)+G) = asubsref(image,a(bestx,besty,data->widthin)+G);
111// asubsref(result,a(j,i,data->widthout)+B) = asubsref(image,a(bestx,besty,data->widthin)+B);
112 arrayref(atlas,aa(j,i)) = bestx;
113 arrayref(atlas,aa(j,i)+1) = besty;
114 }
115 }
116
117 /*********************************
118 End of main texture synthesis loop
119 *********************************/
120
121 for(i=0;i<data->localy/2;i++)
122 {
123 for(j=0;j<data->widthout;j++)
124 {
125 ncand = create_all_candidates(j,i,data);
126 if(ncand > 1)
127 {
128 diff = 1e10;
129 for(k=0;k<ncand;k++)
130 {
131 curdiff = compare_full_neighb(image,arrayref(candlistx,k),arrayref(candlisty,k),result,j,i, data);
132 if(curdiff < diff)
133 {
134 diff = curdiff;
135 bestx = arrayref(candlistx,k);
136 besty = arrayref(candlisty,k);
137 }
138 }
139 }
140 else
141 {
142 bestx = arrayref(candlistx,0);
143 besty = arrayref(candlisty,0);
144 }
145
146 asubsref(result,a(j,i,data->widthout)+R) = asubsref(image,a(bestx,besty,data->widthin)+R);
147// asubsref(result,a(j,i,data->widthout)+G) = asubsref(image,a(bestx,besty,data->widthin)+G);
148// asubsref(result,a(j,i,data->widthout)+B) = asubsref(image,a(bestx,besty,data->widthin)+B);
149 arrayref(atlas,aa(j,i)) = bestx;
150 arrayref(atlas,aa(j,i)+1) = besty;
151 }
152 }
153}
154
155// Creates a list of valid candidates for given pixel using only L-shaped causal area
156
157int create_candidates(int x,int y, params* data)
158{
159 int address,i,j,k,n = 0;
160 for(i=0;i<=data->localy/2;i++)
161 {
162 for(j=-data->localx/2;j<=data->localx/2;j++)
163 {
164 if(i==0 && j>=0)
165 continue;
166 address = aa( arrayref(xloopout,x+j), arrayref(yloopout,y-i) );
167 arrayref(candlistx,n) = arrayref(atlas,address) - j;
168 arrayref(candlisty,n) = arrayref(atlas,address+1) + i;
169
170 if( arrayref(candlistx,n) >= vrfinishx || arrayref(candlistx,n) < vrstartx)
171 {
172 arrayref(candlistx,n) = vrstartx + (int)(drand48()*(vrfinishx-vrstartx));
173 arrayref(candlisty,n) = vrstarty + (int)(drand48()*(vrfinishy-vrstarty));
174 n++;
175 continue;
176 }
177
178 if( arrayref(candlisty,n) >= vrfinishy )
179 {
180 arrayref(candlisty,n) = vrstarty + (int)(drand48()*(vrfinishy-vrstarty));
181 arrayref(candlistx,n) = vrstartx + (int)(drand48()*(vrfinishx-vrstartx));
182 n++;
183 continue;
184 }
185
186 for(k=0;k<n;k++)
187 {
188 if( arrayref(candlistx,n) == arrayref(candlistx,k) && arrayref(candlisty,n) == arrayref(candlisty,k))
189 {
190 n--;
191 break;
192 }
193 }
194 n++;
195 }
196 }
197
198 return n;
199}
200
201// Created a list of candidates using the complete square around the pixel
202
203int create_all_candidates(int x,int y, params* data)
204{
205 int address,i,j,k,n = 0;
206 for(i=-data->localy/2;i<=data->localy/2;i++)
207 {
208 for(j=-data->localx/2;j<=data->localx/2;j++)
209 {
210 if(i==0 && j>=0)
211 continue;
212// printf("Entering = (%d,%d)\n", i,j);
213 address = aa( arrayref(xloopout,x+j), arrayref(yloopout,y-i) );
214 arrayref(candlistx,n) = arrayref(atlas,address)-j;
215 arrayref(candlisty,n) = arrayref(atlas,address+1)+i;
216
217 if( arrayref(candlistx,n) >= vrfinishx || arrayref(candlistx,n) < vrstartx)
218 {
219 arrayref(candlistx,n) = vrstartx + (int)(drand48()*(vrfinishx-vrstartx));
220 arrayref(candlisty,n) = vrstarty + (int)(drand48()*(vrfinishy-vrstarty));
221 n++;
222// printf("1: (%d,%d)\t%d\n", i,j,n);
223 continue;
224 }
225
226 if( arrayref(candlisty,n) >= vrfinishy || arrayref(candlisty,n) < vrstarty)
227 {
228 arrayref(candlisty,n) = vrstarty + (int)(drand48()*(vrfinishy-vrstarty));
229 arrayref(candlistx,n) = vrstartx + (int)(drand48()*(vrfinishx-vrstartx));
230 n++;
231// printf("2: (%d,%d)\t%d\n", i,j,n);
232 continue;
233 }
234
235 for(k=0;k<n;k++)
236 {
237 if( arrayref(candlistx,n) == arrayref(candlistx,k) && arrayref(candlisty,n) == arrayref(candlisty,k) )
238 {
239 n--;
240// printf("3: (%d,%d)\t%d\n", i,j,n);
241 break;
242 }
243 }
244 n++;
245// printf("4: (%d,%d)\t%d\n", i,j,n);
246 }
247 }
248
249 return n;
250}
251
252// Initializes the output image and atlases to a random collection of pixels
253
254//void init(F2D *result, F2D *image, params* data)
255void init(F2D *image, params* data)
256{
257 int i,j,tmpx,tmpy;
258 vrstartx = data->localx/2; vrstarty = data->localy/2;
259 vrfinishx = data->widthin-data->localx/2;
260 vrfinishy = data->heightin-data->localy/2;
261 for(i=0;i<data->heightout;i++)
262 {
263 for(j=0;j<data->widthout;j++)
264 {
265 if(
266 asubsref(target,a(j,i,data->widthout)+R) == 1.0
267// && asubsref(target,a(j,i,data->widthout)+G) == 1.0
268// && asubsref(target,a(j,i,data->widthout)+B) == 1.0
269 )
270 {
271 tmpx = vrstartx + (int)(drand48()*(vrfinishx-vrstartx));
272 tmpy = vrstarty + (int)(drand48()*(vrfinishy-vrstarty));
273 if(!anotherpass)
274 {
275 arrayref(atlas,aa(j,i)) = tmpx;
276 arrayref(atlas,aa(j,i)+1) = tmpy;
277 asubsref(result,a(j,i,data->widthout)+R) = asubsref(image,a(tmpx,tmpy,data->widthin)+R);
278// asubsref(result,a(j,i,data->widthout)+G) = asubsref(image,a(tmpx,tmpy,data->widthin)+G);
279// asubsref(result,a(j,i,data->widthout)+B) = asubsref(image,a(tmpx,tmpy,data->widthin)+B);
280 }
281 }
282 }
283 }
284
285 return;
286}
287
288
289// Compares two square neighborhoods, returns L_2 difference
290
291double compare_full_neighb(F2D *image,int x, int y, F2D *image1,int x1, int y1, params* data)
292{
293 double tmp,res = 0;
294 int i,j,addr,addr1;
295 for(i=-(data->localy/2);i<=data->localy/2;i++)
296 {
297 for(j=-(data->localx/2);j<=data->localx/2;j++)
298 {
299 if( !( i > 0 && y1 > data->localy && y1+i < data->heightout) )
300 {
301 addr = a(x+j,y+i,data->widthin);
302 addr1 = a( arrayref(xloopout,x1+j), arrayref(yloopout,y1+i), data->widthout);
303
304 tmp = asubsref(image,addr+R) - asubsref(image1,addr1+R);
305 res += tmp*tmp;
306// tmp = asubsref(image,addr+G) - asubsref(image1,addr1+G);
307// res += tmp*tmp;
308// tmp = asubsref(image,addr+B) - asubsref(image1,addr1+B);
309// res += tmp*tmp;
310 }
311 }
312 }
313
314 return res;
315}
316
317// Compares two L-shaped neighborhoods, returns L_2 difference
318
319double compare_neighb(F2D *image,int x, int y, F2D *image1,int x1, int y1, params* data)
320{
321 double tmp,res = 0;
322 int i,j,addr1,addr;
323 for(i=-(data->localy/2);i<0;i++)
324 {
325 for(j=-(data->localx/2);j<=data->localx/2;j++)
326 {
327 addr = a(x+j,y+i,data->widthin);
328 addr1 = a( arrayref(xloopout,x1+j), arrayref(yloopout,y1+i), data->widthout);
329
330 tmp = asubsref(image,addr+R) - asubsref(image1,addr1+R);
331 res += tmp*tmp;
332// tmp = asubsref(image,addr+G) - asubsref(image1,addr1+G);
333// res += tmp*tmp;
334// tmp = asubsref(image,addr+B) - asubsref(image1,addr1+B);
335// res += tmp*tmp;
336 }
337 }
338
339 for(j=-(data->localx/2);j<0;j++)
340 {
341 addr = a(x+j,y,data->widthin);
342 addr1 = a( arrayref(xloopout,x1+j), y1, data->widthout);
343
344 tmp = asubsref(image,addr+R) - asubsref(image1,addr1+R);
345 res += tmp*tmp;
346// tmp = asubsref(image,addr+G) - asubsref(image1,addr1+G);
347// res += tmp*tmp;
348// tmp = asubsref(image,addr+B) - asubsref(image1,addr1+B);
349// res += tmp*tmp;
350 }
351
352 return res;
353}
354
355double compare_rest(F2D *image,int x, int y, F2D *tar,int x1, int y1, params* data)
356{
357 double tmp,res = 0;
358 int i,j,addr,addr1;
359
360 for(i=(data->localy/2);i>0;i--)
361 {
362 for(j=-(data->localx/2);j<=data->localx/2;j++)
363 {
364 addr = a(x+j,y+i,data->widthin);
365 addr1 = a( arrayref(xloopout,x1+j), arrayref(yloopout,y1+i), data->widthout);
366
367 if( asubsref(tar,addr1+R) != 1.0) //KVS?
368 {
369 tmp = asubsref(image,addr+R) - asubsref(tar,addr1+R);
370 res += tmp*tmp;
371// tmp = asubsref(image,addr+G) - asubsref(tar,addr1+G);
372// res += tmp*tmp;
373// tmp = asubsref(image,addr+B) - asubsref(tar,addr1+B);
374// res += tmp*tmp;
375 }
376 }
377 }
378
379 for(j=(data->localx/2);j>0;j--)
380 {
381 addr = a(x+j,y,data->widthin);
382 addr1 = a( arrayref(xloopout,x1+j), y1, data->widthout);
383 if( asubsref(tar,addr1+R) != 1.0) // KVS?
384 {
385 tmp = asubsref(image,addr+R) - asubsref(tar,addr1+R);
386 res += tmp*tmp;
387// tmp = asubsref(image,addr+G) - asubsref(tar,addr1+G);
388// res += tmp*tmp;
389// tmp = asubsref(image,addr+B) - asubsref(tar,addr1+B);
390// res += tmp*tmp;
391 }
392 }
393
394 return res;
395}
396
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/c/texture.h b/SD-VBS/benchmarks/texture_synthesis/src/c/texture.h
new file mode 100644
index 0000000..9819c03
--- /dev/null
+++ b/SD-VBS/benchmarks/texture_synthesis/src/c/texture.h
@@ -0,0 +1,48 @@
1/********************************
2Author: Sravanthi Kota Venkata
3********************************/
4
5#ifndef _TEXTURE_
6#define _TEXTURE_
7
8#include "sdvbs_common.h"
9
10#define R 0
11#define G 1
12#define B 2
13#define a(x,y,W) (1*((y)*(W)+(x)))
14#define aa(x,y) (2*((y)*data->widthout+(x)))
15
16typedef float pixelvalue;
17
18typedef struct
19{
20 double sign, diff;
21 int x,y;
22 int secondx, secondy;
23}signature;
24
25typedef struct{
26 int localx, localy, localz;
27 int widthin, widthout;
28 int heightin, heightout;
29 int nfin, nfout;
30}params;
31
32void *SIGNATURES;
33
34//void create_texture(F2D *image, F2D *result, params *data);
35void create_texture(F2D *image, params *data);
36I2D* parse_flags(int argc, char ** argv);
37void init_params(params *data);
38//void init(F2D *result, F2D *image, params* data);
39void init(F2D *image, params* data);
40double compare_full_neighb(F2D *image,int x, int y, F2D *image1,int x1, int y1, params* data);
41double compare_neighb(F2D *image,int x, int y, F2D *image1,int x1, int y1, params* data);
42int create_candidates(int x,int y, params* data);
43int create_all_candidates(int x,int y, params* data);
44
45#endif
46
47
48