سلام.
اون طور که متوجه شدم میخواهید یه ماسک فرکانسی تو حوزه فرکانس اعمال کنید. راه ساده اش کد زیر برای ماسک مستطیلی هستش (هرچند استفاده از این ماسک اصلا توصیه نمیشه چون یه سری معایب مثل ایجاد آرتیفکت داره):
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('1.jpg',0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
rows, cols = img.shape
crow,ccol = rows/2 , cols/2
Mask = np.zeros_like(img)
Mask[crow-30:crow+30, ccol-30:ccol+30] = 1
fshift *= Mask
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)
plt.figure()
plt.imshow(img, cmap = 'gray')
plt.show()
توصیه میشه از فیلتر گوسی شکل استفاده بشه که در کتابخانه opencv دستورش به شکل زیر هست:
blur = cv2.GaussianBlur(img,(5,5),1)
در این تابع ورودی دوم سایز پنجره ای که قراره با تصویر کانوالو بشه هستش. ورودی سوم انحراف معیار پنجره گوسی.
مرجع:
https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_transforms/py_fourier_transform/py_fourier_transform.html