12 std::ptrdiff_t s_istep, std::ptrdiff_t s_jstep,
13 float* gi, std::ptrdiff_t gi_istep, std::ptrdiff_t gi_jstep,
14 float* gj, std::ptrdiff_t gj_istep, std::ptrdiff_t gj_jstep,
15 unsigned ni,
unsigned nj)
17 const unsigned char* s_data = src;
21 if (ni==0 || nj==0)
return;
25 for (
unsigned j=0;j<nj;++j)
37 for (
unsigned i=0;i<ni;++i)
51 const std::ptrdiff_t o2 = s_jstep;
52 const std::ptrdiff_t o4 = -s_istep;
53 const std::ptrdiff_t o5 = s_istep;
54 const std::ptrdiff_t o7 = -s_jstep;
56 const unsigned ni1 = ni-1;
57 const unsigned nj1 = nj-1;
59 s_data += s_istep + s_jstep;
63 for (
unsigned j=1;j<nj1;++j)
65 const unsigned char* s = s_data;
70 *pgi = 0; pgi+=gi_istep;
71 *pgj = 0; pgj+=gj_istep;
73 for (
unsigned i=1;i<ni1;++i)
78 *pgi = 0.5f*s[o5] - 0.5f*s[o4];
80 *pgj = 0.5f*s[o2] - 0.5f*s[o7];
98 for (
unsigned i=0;i<ni;++i)
102 *gi_data = 0; gi_data+=gi_istep;
103 *gj_data = 0; gj_data+=gj_istep;
111 std::ptrdiff_t s_istep, std::ptrdiff_t s_jstep,
112 double* gi, std::ptrdiff_t gi_istep, std::ptrdiff_t gi_jstep,
113 double* gj, std::ptrdiff_t gj_istep, std::ptrdiff_t gj_jstep,
114 unsigned ni,
unsigned nj)
116 const unsigned char* s_data = src;
117 double *gi_data = gi;
118 double *gj_data = gj;
120 if (ni==0 || nj==0)
return;
124 for (
unsigned j=0;j<nj;++j)
136 for (
unsigned i=0;i<ni;++i)
150 const std::ptrdiff_t o2 = s_jstep;
151 const std::ptrdiff_t o4 = -s_istep;
152 const std::ptrdiff_t o5 = s_istep;
153 const std::ptrdiff_t o7 = -s_jstep;
155 const unsigned ni1 = ni-1;
156 const unsigned nj1 = nj-1;
158 s_data += s_istep + s_jstep;
162 for (
unsigned j=1;j<nj1;++j)
164 const unsigned char* s = s_data;
165 double* pgi = gi_data;
166 double* pgj = gj_data;
169 *pgi = 0; pgi+=gi_istep;
170 *pgj = 0; pgj+=gj_istep;
172 for (
unsigned i=1;i<ni1;++i)
177 *pgi = 0.5*s[o5] - 0.5*s[o4];
179 *pgj = 0.5*s[o2] - 0.5*s[o7];
197 for (
unsigned i=0;i<ni;++i)
201 *gi_data = 0; gi_data+=gi_istep;
202 *gj_data = 0; gj_data+=gj_istep;
210 std::ptrdiff_t s_istep, std::ptrdiff_t s_jstep,
211 float* gi, std::ptrdiff_t gi_istep, std::ptrdiff_t gi_jstep,
212 float* gj, std::ptrdiff_t gj_istep, std::ptrdiff_t gj_jstep,
213 unsigned ni,
unsigned nj)
215 const float* s_data = src;
219 if (ni==0 || nj==0)
return;
223 for (
unsigned j=0;j<nj;++j)
235 for (
unsigned i=0;i<ni;++i)
249 const std::ptrdiff_t o2 = s_jstep;
250 const std::ptrdiff_t o4 = -s_istep;
251 const std::ptrdiff_t o5 = s_istep;
252 const std::ptrdiff_t o7 = -s_jstep;
254 const unsigned ni1 = ni-1;
255 const unsigned nj1 = nj-1;
257 s_data += s_istep + s_jstep;
261 for (
unsigned j=1;j<nj1;++j)
263 const float* s = s_data;
264 float* pgi = gi_data;
265 float* pgj = gj_data;
268 *pgi = 0; pgi+=gi_istep;
269 *pgj = 0; pgj+=gj_istep;
271 for (
unsigned i=1;i<ni1;++i)
274 *pgi = 0.5f*(s[o5]-s[o4]);
276 *pgj = 0.5f*(s[o2]-s[o7]);
294 for (
unsigned i=0;i<ni;++i)
298 *gi_data = 0; gi_data+=gi_istep;
299 *gj_data = 0; gj_data+=gj_istep;
307 std::ptrdiff_t s_istep, std::ptrdiff_t s_jstep,
308 double* gi, std::ptrdiff_t gi_istep, std::ptrdiff_t gi_jstep,
309 double* gj, std::ptrdiff_t gj_istep, std::ptrdiff_t gj_jstep,
310 unsigned ni,
unsigned nj)
312 const double* s_data = src;
313 double *gi_data = gi;
314 double *gj_data = gj;
316 if (ni==0 || nj==0)
return;
320 for (
unsigned j=0;j<nj;++j)
332 for (
unsigned i=0;i<ni;++i)
346 const std::ptrdiff_t o2 = s_jstep;
347 const std::ptrdiff_t o4 = -s_istep;
348 const std::ptrdiff_t o5 = s_istep;
349 const std::ptrdiff_t o7 = -s_jstep;
351 const unsigned ni1 = ni-1;
352 const unsigned nj1 = nj-1;
354 s_data += s_istep + s_jstep;
358 for (
unsigned j=1;j<nj1;++j)
360 const double* s = s_data;
361 double* pgi = gi_data;
362 double* pgj = gj_data;
365 *pgi = 0; pgi+=gi_istep;
366 *pgj = 0; pgj+=gj_istep;
368 for (
unsigned i=1;i<ni1;++i)
371 *pgi = 0.5*(s[o5]-s[o4]);
373 *pgj = 0.5*(s[o2]-s[o7]);
391 for (
unsigned i=0;i<ni;++i)
395 *gi_data = 0; gi_data+=gi_istep;
396 *gj_data = 0; gj_data+=gj_istep;
void vil_sobel_1x3_1plane(const unsigned char *src, std::ptrdiff_t s_istep, std::ptrdiff_t s_jstep, float *gi, std::ptrdiff_t gi_istep, std::ptrdiff_t gi_jstep, float *gj, std::ptrdiff_t gj_istep, std::ptrdiff_t gj_jstep, unsigned ni, unsigned nj)
Compute gradients of single plane of 2D data using 1x3 Sobel filters.
Apply 1x3 sobel operator to image data.