Как получить первую и вторую производную матрицу изображения - PullRequest
2 голосов
/ 08 ноября 2019

Я пытаюсь вычислить градиентную ориентацию изображения, в первой части мне нужно вычислить производную первого порядка изображения (как по горизонтали, так и по вертикали), поэтому я применил фильтр Гаусса в модуле scipy вчтобы получить его, но я получил ошибку "AttributeError: у объекта int нет атрибута shape"

Я использую Python версии 3.7.0, а версия opencv - 3.4.2.

Документация по функциям находится здесь: scipy.ndimage.filters.gaussian_filter

g_x = np.zeros(image_new.shape) 
ndimage.filters.gaussian_filter(image_new, 2*np.sqrt(2), (0,1), 1 ,g_x )

Это правильно? или как вычислить первую производную (и вторую производную) изображения.

1 Ответ

1 голос
/ 08 ноября 2019

Чтобы получить первую производную изображения, вы можете применить фильтр Гаусса в scipy следующим образом.

from scipy.ndimage import gaussian_filter, laplace

image_first_derivative = gaussian_filer(image, sigma=3)

Если сигма - одно число, то производная будет рассчитана во всех направлениях. Чтобы указать направление, передайте сигма в виде последовательности.

x-direction with sigma = (11, 0)

Выше - первая производная изображения, полученного в направлении x с sigma=(11,0). Приведенное ниже изображение является производным, полученным в направлении y: sigma=(0, 11)

y-direction with sigma = (0, 11), вы можете выбрать значение сигмы соответственно. Для вычисления второй производной можно использовать оператор Лапласа.

image_sec_derivative = laplace(image)
...