vgg_gauss_mask.m
来自「实现了几何多视的功能」· M 代码 · 共 42 行
M
42 行
function Y = vgg_gauss_mask(a,der,X,flag)
%VGG_GAUSS_MASK Univariate Gaussian function or its derivatives.
% Y = vgg_gausmask(sigma,der,X) yields der-th derivative of Gaussian.
% For der==0, plain Gaussian is yielded.
% If X is omitted, X=[-3*sigma:3*sigma] is used, giving reasonably small tail.
% If der is omitted too, der=0 is used.
%
% Try plot(vgg_gauss_mask(10,6,-100:100))
% Tom Werner, Oct 2001
%%
% For computing derivatives, the following recurrent formulas are used:
% gausmask(sigma,0,X) = exp(a*X.^2)/(sigma*sqrt(2*pi)),
% gausmask(sigma,n,X) = 2*a*( (der-1)*gausmask(sigma,der-2,X) + X.*gausmask(sigma,der-1,X) ),
% where
% a = -0.5/(a*a).
%%
if nargin == 4
if der > 0
Y = 2*a*( (der-1)*vgg_gauss_mask(a,der-2,X,0) + X.*vgg_gauss_mask(a,der-1,X,0) );
elseif der == 0
Y = ones(size(X));
else
Y = zeros(size(X));
end
else
if nargin < 3
X = ceil(3*a);
X = -X:X;
end
if nargin < 2
der = 0;
end
aa = -0.5/(a*a);
Y = exp(aa*X.^2)/(a*sqrt(2*pi)) .* vgg_gauss_mask(aa,der,X,0);
end
return
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?