Введение
Кажется, что вы должны быть в состоянии сделать ny=1
для выполнения одномерной свертки двумерного изображения, но это показывает, что функции кулинарных книг на самом деле используют ядра длины 2 * n + 1
. Это заставило меня подумать, что вы могли бы использовать ny=0
, но это создает 0/0
в определении ядра. Так что тут тоже не повезло. :( Исходя из этого, я считаю, что поваренная книга не подходит для ваших целей, поэтому я предоставил альтернативный метод выполнения того, что вы просите.
Чтобы выполнить сглаживание 2D-массива путем свертки только по одному измерению, все, что вам нужно сделать, это создать 2D-массив (ядро), который имеет форму 1 по одному из измерений,
import numpy as np
kern = np.ones((11, 1)) # This will smooth along columns
И нормализовать его так, чтобы он суммировался с единицей,
kern /= kern.sum()
Затем сверните его с вашим сигналом,
import scipy.signal as signal
X, Y = np.mgrid[-70:70, -70:70]
Z = np.cos((X**2+Y**2)/200.) + np.random.normal(size=X.shape)
Z_smooth = signal.convolve(Z, kern)
Это должно дать вам что-то вроде этого: ![Окно товарного вагона.](https://i.stack.imgur .com/FwfcE.png)
Лучшее ядро
Выше я использовал ядро 'boxcar' (постоянные значения), которое многие люди считают несколько грубым. Люди часто предпочитают использовать более резкие или более плавные фильтры (например, «Ханнинг» или «Гаусс», как в поваренной книге).
kern_hanning = signal.hanning(11)[:, None]
kern_hanning /= kern_hanning.sum()
kern_gauss7 = signal.gaussian(11, 7)[:, None]
kern_gauss7 /= kern_gauss7.sum()
kern_gauss3 = signal.gaussian(11, 3)[:, None]
kern_gauss3 /= kern_gauss3.sum()
Эти разные окна выглядят так,
![«Ядра»](https://i.stack.imgur.com/LnhtV.png)
После применения этих фильтров вы получите что-то вроде
![Ядро Gauss7](https://i.stack.imgur.com/hjBpo.png)
Обратите внимание, что ядро «Gauss7» во многом похоже на коробочный вагон, поэтому на выходе оно дает очень похожие результаты. Окно Ханнинга, с другой стороны, намного тоньше и поэтому обеспечивает более четкую фильтрацию данных (гораздо меньшее размытие по кольцам).
person
farenorth
schedule
22.08.2015