问题描述
我正在使用scikit-image库中的gabor内核方法来检查强度图像的方向。根据官方文档,它具有以下参数:
gabor_kernel(frequency,theta=0,bandwidth=1,sigma_x=None,sigma_y=None,n_stds=3,offset=0)
在我的代码中,我正在使用以下代码,因此内核的大小隐式定义为3。
from skimage.filters import gabor_kernel
frequency = (np.pi) / (2 * np.sqrt(2))
theta = 0
gkernel = gabor_kernel(frequency,theta=theta)
print('theta=%d,\nfrequency=%.2f' % (theta * 180 / np.pi,frequency))
print(gkernel)
当大小设置为3时,我不明白为什么生成的内核是矩阵15x15。
感谢您的帮助, 塞巴斯蒂安
解决方法
带宽选项有点神秘。根据文档,“对于固定带宽,sigma_x 和 sigma_y 将随着频率的增加而减少。如果 sigma_x 和 sigma_y 由用户设置,则该值将被忽略。”我建议指定 sigma_x 和 sigma_y 以进行直接控制。
对我来说另一个问题是频率。它具有逆像素单位。所以以像素为单位指定波长更直接,然后频率=1/波长。例如,如果您的波长为 10,则使用频率 = 1/10 将意味着信号在 10 个像素中完成 1 个完整周期。由于此处定义的方式,您无需担心 pi 因子。