【发布时间】:2023-04-10 07:31:01
【问题描述】:
这是我用于计算图像导数的函数。请帮助我理解这段代码,因为我是这个领域的新手。如果有人能给我一些链接来理解这个概念,我会很感激的。我有一些疑问-
为什么我们在这里使用 ndgrid? 'x', 'y', 'xx', ('xy', 'yx'), 'yy' 这里的方向是什么? 以及这个高斯的公式如何以及为什么会根据方向变化? 为什么最后要使用 imfilter?
function D =calc_image_derivatives(I,sigma,direction)
[x,y]=ndgrid(floor(-3*sigma):ceil(3*sigma),floor(-3*sigma):ceil(3*sigma));
switch(direction)
case 'x'
DGauss=-(x./(2*pi*sigma^4)).*exp(-(x.^2+y.^2)/(2*sigma^2));
case 'y'
DGauss=-(y./(2*pi*sigma^4)).*exp(-(x.^2+y.^2)/(2*sigma^2));
case 'xx'
DGauss = 1/(2*pi*sigma^4) * (x.^2/sigma^2 - 1) .* exp(-(x.^2 + y.^2)/(2*sigma^2));
case {'xy','yx'}
DGauss = 1/(2*pi*sigma^6) * (x .* y) .* exp(-(x.^2 + y.^2)/(2*sigma^2));
case 'yy'
DGauss = 1/(2*pi*sigma^4) * (y.^2/sigma^2 - 1) .* exp(-(x.^2 + y.^2)/(2*sigma^2));
end
D = imfilter(I,DGauss,'conv','replicate');
【问题讨论】:
标签: image-processing signal-processing