滤波器_理想高通滤波器python案例

一:高通滤波

简单粗暴理解为将图像中心化后移除中间部分低频信息
new_img=cv2.imread('person.jpg',0)
rows,cols=new_img.shape
crow,ccol=int(rows/2),int(cols/2)
mask1=np.ones((rows,cols),np.uint8)
mask2=np.ones((rows,cols),np.uint8)
mask1[crow-30:crow+30,ccol-30:ccol+30]=0
mask2[crow-10:crow+10,ccol-10:ccol+10]=0

f1=np.fft.fft2(new_img)
f1shift=np.fft.fftshift(f1)
f1shift_1=f1shift*mask1
f1shift_2=f1shift*mask2

f_ishift_1=np.fft.ifftshift(f1shift_1)
f_ishift_2=np.fft.ifftshift(f1shift_2)

img_back_1=np.fft.ifft2(f_ishift_1)
img_back_2=np.fft.ifft2(f_ishift_2)

img_back_1=np.abs(img_back_1)
img_back_2=np.abs(img_back_2)

plt.figure(figsize=(14,14))

plt.subplot(221),plt.imshow(new_img,cmap='gray'),plt.title('input image')
plt.subplot(222),plt.imshow(img_back_1,cmap='gray'),plt.title('output image r=30')
plt.subplot(223),plt.imshow(img_back_2,cmap='gray'),plt.title('output image r=10')

输出结果为:
滤波器_理想高通滤波器python案例_第1张图片

你可能感兴趣的:(图像处理)