summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/toolbox_basic/common/grad.m
diff options
context:
space:
mode:
Diffstat (limited to 'SD-VBS/common/toolbox/toolbox_basic/common/grad.m')
-rwxr-xr-xSD-VBS/common/toolbox/toolbox_basic/common/grad.m28
1 files changed, 28 insertions, 0 deletions
diff --git a/SD-VBS/common/toolbox/toolbox_basic/common/grad.m b/SD-VBS/common/toolbox/toolbox_basic/common/grad.m
new file mode 100755
index 0000000..05fce39
--- /dev/null
+++ b/SD-VBS/common/toolbox/toolbox_basic/common/grad.m
@@ -0,0 +1,28 @@
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,cm)
7
8if nargin <3,
9 cm = 'same';
10end
11
12tail=4;
13samples = hsamples * 2 + 1;
14
15x = linspace(-tail, tail, samples);
16gauss = exp(-x.^2);
17n = gauss * ones(samples,1);
18gauss = gauss/n;
19
20gaussderiv = -x.*gauss;
21n = -gaussderiv*linspace(1,samples,samples)';
22gaussderiv = gaussderiv/n;
23
24%gr = conv2(conv2(image, gaussderiv','valid'), gauss,'valid');
25%gc = conv2(conv2(image, gaussderiv,'valid'), gauss','valid');
26
27gr = conv2(conv2(image, gaussderiv',cm), gauss,cm);
28gc = conv2(conv2(image, gaussderiv,cm), gauss',cm);