Filter 询问有关GAbor滤波器的问题';s参数
我试图实现一个2D Gabor滤波器,但我不了解这个滤波器的几个参数。例如,我使用2D Gabor滤波器的一般形式,如 h(x,y,f,θ,sigma_x,sigma_y)=exp(-.5*(x_θ^2/sigma_x^2+y_θ^2/sigma_y^2)*cos(2*pi*f*x_θ), i、 e.均匀对称的Gabor鱼片 问题是sigma_x和sigma_y是什么意思? 在大多数的论文中,所呈现的只是高斯包络线沿x和y的“标准偏差”。好吧,这让我困惑了好几天 我读了一些关于Gabor的代码,这两个参数并没有直接决定滤波器的大小,它们要么被当作Filter 询问有关GAbor滤波器的问题';s参数,filter,Filter,我试图实现一个2D Gabor滤波器,但我不了解这个滤波器的几个参数。例如,我使用2D Gabor滤波器的一般形式,如 h(x,y,f,θ,sigma_x,sigma_y)=exp(-.5*(x_θ^2/sigma_x^2+y_θ^2/sigma_y^2)*cos(2*pi*f*x_θ), i、 e.均匀对称的Gabor鱼片 问题是sigma_x和sigma_y是什么意思? 在大多数的论文中,所呈现的只是高斯包络线沿x和y的“标准偏差”。好吧,这让我困惑了好几天 我读了一些关于Gabor的代码,
if (isnan(SigmaX)==1) | isempty(SigmaX),
SigmaX = (3*sqrt(2*log(2)))/(2*pi*CtrFreq);
end
if (isnan(SigmaY)==1) | isempty(SigmaY),
SigmaY=sqrt(2*log(2))/(2*pi*tan(pi/8)*CtrFreq);
end
xlim=round(nstd*(SigmaX*abs(cos(Angle))+SigmaY*abs(sin(Angle))));
ylim=round(nstd*(SigmaY*abs(cos(Angle))+SigmaX*abs(sin(Angle))));
在这种情况下,nstd被称为脉冲响应的长度。我不知道
或
因此,我只是想知道如何确定过滤器的大小。
正因为如此,我还有几个关于波长和带宽的问题
对于我上面提供的第二种情况,它使用波长乘以kx或ky。
为什么我们不能直接使用sigma_x或sigma_y?
这个波长是什么意思?是Gabor滤波器的大小吗?
带宽意味着什么?是Gabor滤波器的大小吗
我实现了一个简单的程序,但它似乎不正确,如下所示
function [GR, GI, G] = yGabora(f, sigma_x, sigma_y, theta)
the = theta * pi/180; % Angular to degree.
% Rotation matrix
Rot = [ cos(the) sin(the);
-sin(the) cos(the)];
% Calculate gabor filter
for x=-sigma_u:1:sigma_u
for y=-sigma_v:1:sigma_v
% Calculate rotated position of Gaussian function
tmpRet = Rot*[x, y]';
xt = tmpRet(1);
yt = tmpRet(2);
h_even(x+sigma_u+1, y+sigma_v+1) = exp(-0.5* (xt^2/(sigma_u^2) + yt^2/(sigma_v^2))) * cos(2*pi*f*xt);
h_odd(x+sigma_u+1, y+sigma_v+1) = exp(-0.5* (xt^2/(sigma_u^2) + yt^2/(sigma_v^2))) * sin(2*pi*f*xt);
end
end
% Generate a complex unit.
j = sqrt(-1);
% Real part of G
GR = h_even;
% Imaginary part of G
GI = h_odd.*j;
% Gabor filter
G = GR + GI;
有人帮忙吗?如何生成x和y?x和y是什么?
function [GR, GI, G] = yGabora(f, sigma_x, sigma_y, theta)
the = theta * pi/180; % Angular to degree.
% Rotation matrix
Rot = [ cos(the) sin(the);
-sin(the) cos(the)];
% Calculate gabor filter
for x=-sigma_u:1:sigma_u
for y=-sigma_v:1:sigma_v
% Calculate rotated position of Gaussian function
tmpRet = Rot*[x, y]';
xt = tmpRet(1);
yt = tmpRet(2);
h_even(x+sigma_u+1, y+sigma_v+1) = exp(-0.5* (xt^2/(sigma_u^2) + yt^2/(sigma_v^2))) * cos(2*pi*f*xt);
h_odd(x+sigma_u+1, y+sigma_v+1) = exp(-0.5* (xt^2/(sigma_u^2) + yt^2/(sigma_v^2))) * sin(2*pi*f*xt);
end
end
% Generate a complex unit.
j = sqrt(-1);
% Real part of G
GR = h_even;
% Imaginary part of G
GI = h_odd.*j;
% Gabor filter
G = GR + GI;