Python:skimage gabor_kernel大小不符合预期

问题描述

我正在使用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)

enter image description here

当大小设置为3时,我不明白为什么生成的内核是矩阵15x15。

感谢您的帮助, 塞巴斯蒂安

解决方法

带宽选项有点神秘。根据文档,“对于固定带宽,sigma_x 和 sigma_y 将随着频率的增加而减少。如果 sigma_x 和 sigma_y 由用户设置,则该值将被忽略。”我建议指定 sigma_x 和 sigma_y 以进行直接控制。

对我来说另一个问题是频率。它具有逆像素单位。所以以像素为单位指定波长更直接,然后频率=1/波长。例如,如果您的波长为 10,则使用频率 = 1/10 将意味着信号在 10 个像素中完成 1 个完整周期。由于此处定义的方式,您无需担心 pi 因子。