This https://stackoverflow.com/questions/9003147/how-to-apply-gabor-wavelets-to-an-image问题很好地描述了 gabor 滤波器系列及其应用。但是,没有任何关于滤波器的波长(空间频率)的描述。 Gabor 小波的创建是在以下 for 循环中完成的:
for v = 0 : 4
for u = 1 : 8
GW = GaborWavelet ( R, C, Kmax, f, u, v, Delt2 ); % Create the Gabor wavelets
figure( 2 );
subplot( 5, 8, v * 8 + u ),imshow ( real( GW ) ,[]); % Show the real part of Gabor wavelets
GW_ALL( v*8+u, :) = GW(:);
end
figure ( 3 );
subplot( 1, 5, v + 1 ),imshow ( abs( GW ),[]); % Show the magnitude of Gabor wavelets
end
我知道第二个循环变量是 pi/8 间隔的方向。不过,我不知道第一个循环变量如何与此代码及其函数中的空间频率(波长)相关联[pixels/cycle]
。有人可以帮忙吗?
我终于找到了答案。 GaborWavelet 函数定义如下:
function GW = GaborWavelet (R, C, Kmax, f, u, v, Delt2)
k = ( Kmax / ( f ^ v ) ) * exp( 1i * u * pi / 8 );% Wave Vector
kn2 = ( abs( k ) ) ^ 2;
GW = zeros ( R , C );
for m = -R/2 + 1 : R/2
for n = -C/2 + 1 : C/2
GW(m+R/2,n+C/2) = ( kn2 / Delt2 ) * exp( -0.5 * kn2 * ( m ^ 2 + n ^ 2 ) / Delt2) * ( exp( 1i * ( real( k ) * m + imag ( k ) * n ) ) - exp ( -0.5 * Delt2 ) );
end
end
The Kmax
是最大频率,f
是间距因子并且v
是分辨率。间距系数f
通常被认为是sqrt(2)
。
基于 paper, k= 2*pi*f*exp(i*ϑ)
并在代码中Kmax=fmax*2*pi
这没有描述,是找到滤光片波长的关键。我也读过this http://in.mathworks.com/matlabcentral/fileexchange/13776-improved-2d-gabor-filter实现并注意到可以使用轻松找到波长f = 1/lambda
其中 lambda 是正弦波的波长。
例如,如果Kmax=pi/2
and v=0
, 所以k=Kmax*exp(1i*u*pi/8)
并考虑上述公式,lambda = 2*pi/Kmax = 4 [pixel/cycle]
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)