summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/toolbox_basic/affine/grad.m
blob: 53bab55dd51bc8232093c8291b19ee8f2a18eba7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
% gradient of an image
% coordinates (r, c) follow matrix convention;
% the gaussian is truncated at x = +- tail, and there are samples samples
% inbetween, where samples = hsamples * 2 + 1

function[gr,gc] = gradient(image, hsamples)

tail=4;
samples = hsamples * 2 + 1;

x = linspace(-tail, tail, samples);
gauss = exp(-x.^2);
n = gauss * ones(samples,1);
gauss = gauss/n;

gaussderiv = -x.*gauss;
n = -gaussderiv*linspace(1,samples,samples)';
gaussderiv = gaussderiv/n;

gr = conv2(conv2(image, gaussderiv','valid'), gauss,'valid');
gc = conv2(conv2(image, gaussderiv,'valid'), gauss','valid');

%gr = conv2(conv2(image, gaussderiv','same'), gauss,'same');
%gc = conv2(conv2(image, gaussderiv,'same'), gauss','same');