Как я могу создать эту плавную версию фильтра высоких частот в частотной области, как это - PullRequest
0 голосов
/ 31 августа 2018

Я использую np.fft.fft2 для получения частотной области и хочу применить фильтр верхних частот к нему, но маска - это просто круг с номером ноль и другие с номером 1, так что это имеет эффект звонка на полученном изображении при конвертации обратно.

enter image description here

Так, как я могу создать такую ​​сглаженную версию этого фильтра как этот

enter image description here

1 Ответ

0 голосов
/ 01 сентября 2018

Некоторые функции, которые вы можете использовать для создания двумерного распределения Гаусса:

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.

...