Как реализовать фильтр Гаусса для ядра размером 3 - PullRequest
0 голосов
/ 10 февраля 2020

Может кто-нибудь помочь мне в вычислении значений фильтра Гаусса? Я видел другие похожие посты, но не смог найти правильное решение. У меня есть двумерное уравнение Гаусса:

def gauss2d(x,y,sigma):
    return (1/(2*math.pi*math.pow(sigma,2)))*math.exp(-0.5*
                           (pow(x,2)+pow(y,2))/pow(sigma,2))  

Я хочу выяснить, как вычислить элементы фильтра Гаусса 3x3 или 5x5 с дискретными значениями

1 Ответ

1 голос
/ 10 февраля 2020

Эта реализация имеет небольшую разницу, когда применяется нормализация, но это незначительная вещь.

def gaussian(sigma,Y,X):
    kernel = np.zeros((Y,X))
    ax = range(X) - np.floor(X/2)
    ay = range(Y) - np.floor(Y/2)
    xx,yy = np.meshgrid(ax,ay)
    kernel = np.exp(-0.5 * (np.square(xx) + np.square(yy)))/np.square(sigma)
    kernel = kernel/np.sum(kernel)
    return kernel 

print(np.sum(gaussian(0.3,5,5)))
...