Функція для створення маски ідеального фільтру
def Idmask(img, d):
crow,ccol = int(img.shape[1]/2) , int(img.shape[0]/2)
mask = np.zeros((img.shape[0],img.shape[1]),np.uint8)
return cv2.circle(mask, (crow,ccol), d, 255,cv2.FILLED)
Функція для низькочастотного фільтру Баттерворта
def ButLPF(img,d,n):
''' Маска для фільтру Баттерворта
@param d: радіус
@param n: порядок фільтру
'''
(rows,cols)=img.shape[0:2]
#будуємо допоміжний масив із відстаней до центру
u = np.array([i for i in range(cols)])
v = np.array([i for i in range(rows)])
v.shape = rows, 1 # перетворюємо з рядка в стовпчик
duv = np.sqrt((u-cols/2)**2 + (v-rows/2)**2)
# матриця
butterworth_mat = 1 /(1 + np.power(duv/d,2*n))
return butterworth_mat # дивитися plt.imshow
Приклад застосування низькочастотного фільтру Баттерворта при $d=66, n=5$.
Функція для низькочастотного фільтру Гауса
def GaussLPF(img,d):
''' Маска для фільтру Гауса
@param d: радіус
@param img: зображення
'''
(rows,cols)=img.shape[0:2]
#будуємо допоміжний масив із відстаней до центру
u = np.array([i for i in range(cols)])
v = np.array([i for i in range(rows)])
v.shape = rows, 1 # перетворюємо з рядка в стовпчик
duv = np.sqrt((u-cols/2)**2 + (v-rows/2)**2)
# матриця
Gauss_mat = np.exp(-(duv * duv) / (2 * d * d))
return Gauss_mat # дивитися plt.imshow!
Приклад застосування низькочастотного фільтру Гауса при $d=55$
Фільтри застосовувалися до зображення
Немає коментарів:
Дописати коментар