当前位置:   article > 正文

第八章:直方图和傅里叶变换 4-高通和低通滤波_低通滤波 阈值

低通滤波 阈值
import cv2
import numpy as np
from matplotlib import pyplot as plt
img=cv2.imread('lena.jpg',0)
img_float32=np.float32(img)#输入图像先转换成32格式
dft=cv2.dft(img_float32,flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift=np.fft.fftshift(dft)#将低频的值拉到中心

rows,cols=img.shape#中心点位置 再做个掩码 我们需要低频部分,因为图像低频都在中心部分,所以我们用掩码,中心白,其他黑色
crow,ccol=int(rows/2),int(cols/2)

#低通滤波
mask=np.zeros((rows,ccol,2),np.uint8)
print(mask.shape)
#创造一个60*60像素点大小的滤波器,也就是说中心点 +-30像素点
mask[crow-30:crow+30,ccol-30:ccol+30]=1

#IDFT
fshift=mask*dft_shift
#用掩码×
f_shift=np.fft.ifftshift(fshift)#然后把图像进行还原到原来的位置
img_back=cv2.idft(f_shift)#进行逆操作
img_back=cv2.magnitude(img_back[:,:,0],img_back[:,:,1])

plt.subplot(1,2,1),plt.imshow(img,cmap='gray')
plt.title('Imput Image'),plt.xticks([]),plt.yticks([])
plt.subplot(1,2,2),plt.imshow(img_back,cmap='gray')
plt.title(' Result'),plt.xticks([]),plt.yticks([])
plt.show()

#高通滤波器
mask=np.ones((rows,ccol,2),np.uint8)
print(mask.shape)
#创造一个60*60像素点大小的滤波器,也就是说中心点 +-30像素点
mask[crow-30:crow+30,ccol-30:ccol+30]=0

#IDFT
fshift=mask*dft_shift
#用掩码×
f_shift=np.fft.ifftshift(fshift)#然后把图像进行还原到原来的位置
img_back=cv2.idft(f_shift)#进行逆操作
img_back=cv2.magnitude(img_back[:,:,0],img_back[:,:,1])

plt.subplot(1,2,1),plt.imshow(img,cmap='gray')
plt.title('Imput Image'),plt.xticks([]),plt.yticks([])
plt.subplot(1,2,2),plt.imshow(img_back,cmap='gray')
plt.title(' Result'),plt.xticks([]),plt.yticks([])
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/262663
推荐阅读
相关标签
  

闽ICP备14008679号