资讯专栏INFORMATION COLUMN

pythonopencv图象高通滤波和低通滤波器的范例编码

89542767 / 51人阅读

  文章主要是详细介绍了pythonopencv图像高通滤波和低通滤波器,此文经过案例编码为大家介绍得非常详尽,对大家学习培训和工作具有很强的参照参考意义,必须的小伙伴可以借鉴一下


  序言


  上一章大家反映了如何把图象机娘傅立叶变换,将图象由时域转换成时域,并把低频率挪动至图象核心。那样将低频率总厅后,就可以把图象的低频率和高频率分离,进而开展低通滤波器跟高通滤波的处理方法。

01.png

  详细编码


  低通滤波


  import cv2
  import numpy as np
  import matplotlib.pyplot as plt
  #cv2.imread()在读取图像的时候,默认的是读取成RGB图像,cv2.IMREAD_GRAYSCALE将以灰度图的形式读取
  img=cv2.imread('./moon.jpg',flags=cv2.IMREAD_GRAYSCALE)
  #将图像除以255是为了将图像向数字准换成fioat32数据
  img1=img/255
  #进行傅里叶变换,时域——>频域
  dtf=cv2.dft(img1,flags=cv2.DFT_COMPLEX_OUTPUT)
  #移动低频波到中心位置
  dft_shift=np.fft.fftshift(dtf)
  #低通滤波
  h,w=img.shape
  #图像中心点即低频波所在位置
  h2,w2=h//2,w//2
  mask=np.zeros((h,w,2),dtype=np.uint8)
  #选取长宽为100的区域的低频部分为1,其余部分为0
  mask[h2-50:h2+50,w2-50:w2+50]=1
  #低频部分保留,其余部分*0被滤掉
  dft_shift*=mask
  #傅里叶逆变换,频域——>时域
  ifft_shift2=np.fft.ifftshift(dft_shift)
  result=cv2.idft(ifft_shift2)
  #创建显示窗口,显示原图
  plt.figure(figsize=(12,9))
  plt.subplot(121)
  plt.imshow(img,cmap='gray')
  #创建显示窗口,显示低通滤波后的图像
  plt.subplot(122)
  plt.imshow(result[:,:,0],cmap='gray')
  plt.show()


  高通滤波


  高通滤波和低通滤波的主要区别在于,低通滤波是保留中心的低频波去除高频波,高通滤波是去除中心的低频波保留高频波。


  import cv2
  import numpy as np
  import matplotlib.pyplot as plt
  #cv2.imread()在读取图像的时候,默认的是读取成RGB图像,cv2.IMREAD_GRAYSCALE将以灰度图的形式读取
  img=cv2.imread('./moon.jpg',flags=cv2.IMREAD_GRAYSCALE)
  #将图像除以255是为了将图像向数字准换成fioat32数据
  img1=img/255
  #进行傅里叶变换,时域——>频域
  dtf=cv2.dft(img1,flags=cv2.DFT_COMPLEX_OUTPUT)
  #移动低频波到中心位置
  dft_shift=np.fft.fftshift(dtf)
  #高通滤波
  h,w=img.shape
  #图像中心点即低频波所在位置
  h2,w2=h//2,w//2#中心点
  #选取长宽为100的区域的低频部分为0,其余高频部分为1
  dft_shift[h2-5:h2+5,w2-5:w2+5]=0
  #傅里叶逆变换,频域——>时域
  ifft_shift2=np.fft.ifftshift(dft_shift)
  result=cv2.idft(ifft_shift2)
  #创建显示窗口,显示原图
  plt.figure(figsize=(12,9))
  plt.subplot(121)
  plt.imshow(img,cmap='gray')
  #创建显示窗口,显示低通滤波后的图像
  plt.subplot(122)
  plt.imshow(result[:,:,0],cmap='gray')
  plt.show()


  结果展示

02.png

  改变滤波区域的大小可以改变滤波的程度,可以修改如图所示的代码中的相关部分:


  低通滤波

03.png

  高通滤波

04.png

  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130279.html

相关文章

  • 图像增强——空间域滤波

    ... 空间域滤波 空间域平滑滤波器(低通滤波器)均值滤波器高斯滤波器中值滤波器 空间域锐化滤波器(高通滤波器)Roberts算子Prewitt算子Sobel算子Laplacian算子(二阶差分)区别 图像平滑通过积分...

    Cheriselalala 评论0 收藏1
  • opencv python 图像平滑/2D卷积/图像平滑/平均值法/高斯模糊/中值模糊/双边滤波

    ...mages 1 2D卷积 与一维信号一样,图像也可以使用各种低通滤波器(LPF),高通滤波器(HPF)等进行滤波.LPF有助于消除噪声,模糊图像等.HPF滤波器有助于找到边缘图片. cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]):将...

    Little_XM 评论0 收藏0
  • HTML5音频API Web Audio

    ...quadFilter() 创建一个 BiquadFilterNode,它代表代表一个双二阶滤波器,可以设置几种不同且常见滤波器类型:高通低通、带通等。 createOscillator() 创建一个 OscillatorNode, 它表示一个周期性波形,基本上来说创造了一个音调。 音频转...

    Juven 评论0 收藏0
  • HTML5音频API Web Audio

    ...quadFilter() 创建一个 BiquadFilterNode,它代表代表一个双二阶滤波器,可以设置几种不同且常见滤波器类型:高通低通、带通等。 createOscillator() 创建一个 OscillatorNode, 它表示一个周期性波形,基本上来说创造了一个音调。 音频转...

    WelliJhon 评论0 收藏0
  • Chrome 53 Beta一些有意思改动

    ...,除了具有will-change这一CSS属性内容。 低通高通二阶滤波器现在支持更多过滤方式。 --webkit-filter现在是一个无前缀filter属性别名,表现和filter一样。 --webkit-user-select属性现在支持一个all属性,可以强制选中包括选中元...

    galaxy_robot 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<