scipy.signal.

convolve2d#

scipy.signal.convolve2d(in1, in2, mode='full', границе='fill', fillvalue=0)[источник]#

Свёртка двух двумерных массивов.

Свертка in1 и in2 с размером выхода, определяемым mode, и граничные условия, определяемые границе и fillvalue.

Параметры:
in1array_like

Первый вход.

in2array_like

Второй вход. Должен иметь то же количество измерений, что и in1.

modestr {‘full’, ‘valid’, ‘same’}, необязательный

Строка, указывающая размер вывода:

full

Выходные данные — полная дискретная линейная свёртка входных данных. (По умолчанию)

valid

Выходные данные состоят только из тех элементов, которые не зависят от дополнения нулями. В режиме 'valid' либо in1 или in2 должен быть как минимум таким же большим, как другой, по каждому измерению.

same

Выходные данные имеют тот же размер, что и in1, центрированный относительно вывода 'full'.

границеstr {'fill', 'wrap', 'symm'}, опционально

Флаг, указывающий, как обрабатывать границы:

fill

Дополнить входные массивы значением fillvalue. (по умолчанию)

wrap

циклические граничные условия.

symm

симметричные граничные условия.

fillvalueскаляр, опционально

Значение для заполнения дополненных входных массивов. По умолчанию 0.

Возвращает:
выходndarray

Двумерный массив, содержащий подмножество дискретной линейной свёртки in1 с in2.

Примеры

Вычислить градиент изображения с помощью 2D свёртки с комплексным оператором Шарра. (Горизонтальный оператор действительный, вертикальный — мнимый.) Использовать симметричное граничное условие, чтобы избежать создания краёв на границах изображения.

>>> import numpy as np
>>> from scipy import signal
>>> from scipy import datasets
>>> ascent = datasets.ascent()
>>> scharr = np.array([[ -3-3j, 0-10j,  +3 -3j],
...                    [-10+0j, 0+ 0j, +10 +0j],
...                    [ -3+3j, 0+10j,  +3 +3j]]) # Gx + j*Gy
>>> grad = signal.convolve2d(ascent, scharr, boundary='symm', mode='same')
>>> import matplotlib.pyplot as plt
>>> fig, (ax_orig, ax_mag, ax_ang) = plt.subplots(3, 1, figsize=(6, 15))
>>> ax_orig.imshow(ascent, cmap='gray')
>>> ax_orig.set_title('Original')
>>> ax_orig.set_axis_off()
>>> ax_mag.imshow(np.absolute(grad), cmap='gray')
>>> ax_mag.set_title('Gradient magnitude')
>>> ax_mag.set_axis_off()
>>> ax_ang.imshow(np.angle(grad), cmap='hsv') # hsv is cyclic, like angles
>>> ax_ang.set_title('Gradient orientation')
>>> ax_ang.set_axis_off()
>>> fig.show()
../../_images/scipy-signal-convolve2d-1.png