matlab中的Gabor滤波器实现和频率响应是否正确?
我试图在matlab中实现Gabor滤波器,就像在 这里也显示了,也绘制了频率响应。我有下面的代码。 此实现和生成的响应是否正确? 如果没有,我们将不胜感激。matlab中的Gabor滤波器实现和频率响应是否正确?,matlab,image-processing,Matlab,Image Processing,我试图在matlab中实现Gabor滤波器,就像在 这里也显示了,也绘制了频率响应。我有下面的代码。 此实现和生成的响应是否正确? 如果没有,我们将不胜感激。 是的,我觉得它们很好。这里有一个三维Gabor滤波器的例子:-这与你的绘图结果相比吗?@rayryeng感谢你的链接,尽管上面你会找到我的绘图结果。我只需要一只眼睛来确认/纠正这一点,或者知道我是否在正确的轨道上。考虑到不同的方向值,我对代码也很挑剔。你可以在matlab中运行代码,没有依赖关系。我觉得它很正确。是的,我觉得它们很好。这
是的,我觉得它们很好。这里有一个三维Gabor滤波器的例子:-这与你的绘图结果相比吗?@rayryeng感谢你的链接,尽管上面你会找到我的绘图结果。我只需要一只眼睛来确认/纠正这一点,或者知道我是否在正确的轨道上。考虑到不同的方向值,我对代码也很挑剔。你可以在matlab中运行代码,没有依赖关系。我觉得它很正确。是的,我觉得它们很好。这里有一个三维Gabor滤波器的例子:-这与你的绘图结果相比吗?@rayryeng感谢你的链接,尽管上面你会找到我的绘图结果。我只需要一只眼睛来确认/纠正这一点,或者知道我是否在正确的轨道上。考虑到不同的方向值,我对代码也很挑剔。你可以在matlab中运行代码,没有依赖关系。我觉得它是正确的。
function gbImg = gaborFilter()
a = 512; b = 512;
delta = 7/3;
yeta = 1;
lambda = 7;
theta.zero = 0; theta.fortyfive = pi/4; theta.ninety = pi/2;
theta.onethirtyfive = (3*pi)/4;
xprime = @(x,y,tetat) ((x * cos(tetat)) + (y* sin(tetat)));
yprime = @(x,y,tetat) (-(x * sin(tetat)) + (y* cos(tetat)));
count = 1;
for th = fieldnames(theta)'
for i=1:19
for j=1:19
h_gb.(th{1})(i,j) = exp(-(xprime(i,j,theta.(th{1}))^2 + (yeta^2 * yprime(i,j,theta.(th{1}))^2))/(2*delta^2) ) * cos(((2*pi*xprime(i,j,theta.(th{1})))/lambda)+pi/2); % + theta.(th{1}));
end
end
[gbImg.(th{1}),fx,fy] = freqz2(h_gb.(th{1}),a,b);
[Fx,Fy] = meshgrid(fx,fy);
figure(count);
mesh(Fx,Fy,abs(gbImg.(th{1})));
count = count +1;
end
end