#python #size #gabor-filter
#python #размер #gabor-filter
Вопрос:
Я использую метод ядра gabor из библиотеки scikit-image для проверки ориентации моего изображения интенсивности. Согласно официальной документации, он принимает следующие параметры:
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)
Я не понимаю, почему сгенерированное ядро представляет собой матрицу 15×15, когда размер установлен в 3.
Спасибо за вашу помощь, Себастьян
Ответ №1:
Параметр пропускной способности немного загадочен. Согласно документации, «Для фиксированной пропускной способности sigma_x и sigma_y будут уменьшаться с увеличением частоты. Это значение игнорируется, если sigma_x и sigma_y заданы пользователем.» Я рекомендую указать sigma_x и sigma_y для прямого управления.
Другой проблемой для меня была частота. Он имеет единицы измерения в обратных пикселях. Так что проще указать длину волны в пикселях, а затем частоту = 1 / длина волны. Например, если ваша длина волны равна 10, использование frequency = 1/10 будет означать, что сигнал завершает 1 полный цикл в 10 пикселях. Из-за того, как это определено здесь, вам не нужно беспокоиться о коэффициентах числа pi.