Некоторые функции, которые вы можете использовать для создания двумерного распределения Гаусса:
def gaussian_2d(x, y, mu1, mu2, sig):
return np.exp(- (np.power(x - mu1, 2) + np.power(x - mu2, 2)) / (2 * np.power(sig, 2)))
def gen_gaussian_2d_filter(size, radius):
grid = [[0] * size for _ in range(size)]
for i in range(size):
for j in range(size):
grid[i][j] = gaussian_2d(i, j, size/2, size/2, radius)
return np.array(grid)
Фильтр, который вы хотите на этом изображении, кажется, имеет radius
~ size/10
, но, конечно, вы можете визуализировать фильтр и настроить его. Также может быть полезна функция отсечения, поскольку вы можете хранить всю информацию о низких частотах, см. numpy.clip
.