• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

python对灰度图进行傅里叶变换和低通滤波

开发技术 开发技术 3小时前 2次浏览
import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('lenaNoise.png', 0) # 直接读为灰度图像

fft2 = np.fft.fft2(img) # FFT快速傅里叶变换
s1 = np.log(np.abs(fft2))
fftShift = np.fft.fftshift(np.fft.fft2(img)) # 将低频部分移动到中间
s2 = np.log(np.abs(fftShift))

plt.subplot(221), plt.imshow(np.abs(img), 'gray'), plt.title('original')
plt.subplot(222), plt.imshow(np.abs(s1), 'gray'), plt.title('fft')
plt.subplot(223), plt.imshow(np.abs(s2), 'gray'), plt.title('fftShift')

#定义掩模:生成的掩模中间为1周围为0
row, col = int(img.shape[0] / 2), int(img.shape[1] / 2) # 求得图像的中心点位置
mask = np.zeros((img.shape[0], img.shape[1]))
mask[row-20:row+20, col-20:col+20] = 1 # 保留了中间40^2个低频部分

#将掩模与傅里叶变化后图像相乘,保留中间部分
mask_img = fftShift * mask

#使用np.fft.ifftshift将低频移动到原来的位置
ifftShift = np.fft.ifftshift(mask_img)
ifft2 = np.fft.ifft2(ifftShift)

plt.subplot(224), plt.imshow(np.abs(ifft2), 'gray'), plt.title('ifft2')

plt.show()


结果如下图

python对灰度图进行傅里叶变换和低通滤波

 


程序员灯塔
转载请注明原文链接:python对灰度图进行傅里叶变换和低通滤波
喜欢 (0)