summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/toolbox_basic/affine/grad.m
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/common/toolbox/toolbox_basic/affine/grad.m
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/common/toolbox/toolbox_basic/affine/grad.m')
-rwxr-xr-xSD-VBS/common/toolbox/toolbox_basic/affine/grad.m24
1 files changed, 24 insertions, 0 deletions
diff --git a/SD-VBS/common/toolbox/toolbox_basic/affine/grad.m b/SD-VBS/common/toolbox/toolbox_basic/affine/grad.m
new file mode 100755
index 0000000..53bab55
--- /dev/null
+++ b/SD-VBS/common/toolbox/toolbox_basic/affine/grad.m
@@ -0,0 +1,24 @@
1% gradient of an image
2% coordinates (r, c) follow matrix convention;
3% the gaussian is truncated at x = +- tail, and there are samples samples
4% inbetween, where samples = hsamples * 2 + 1
5
6function[gr,gc] = gradient(image, hsamples)
7
8tail=4;
9samples = hsamples * 2 + 1;
10
11x = linspace(-tail, tail, samples);
12gauss = exp(-x.^2);
13n = gauss * ones(samples,1);
14gauss = gauss/n;
15
16gaussderiv = -x.*gauss;
17n = -gaussderiv*linspace(1,samples,samples)';
18gaussderiv = gaussderiv/n;
19
20gr = conv2(conv2(image, gaussderiv','valid'), gauss,'valid');
21gc = conv2(conv2(image, gaussderiv,'valid'), gauss','valid');
22
23%gr = conv2(conv2(image, gaussderiv','same'), gauss,'same');
24%gc = conv2(conv2(image, gaussderiv,'same'), gauss','same');