четвер, 6 травня 2021 р.

Фільтри - ідеальний, Баттерворта, гаусівський

Mathedemo
Функція для створення маски ідеального фільтру
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$
Фільтри застосовувалися до зображення

Немає коментарів:

Дописати коментар