文章主要是详细介绍了pythonopencv图像高通滤波和低通滤波器,此文经过案例编码为大家介绍得非常详尽,对大家学习培训和工作具有很强的参照参考意义,必须的小伙伴可以借鉴一下
序言
上一章大家反映了如何把图象机娘傅立叶变换,将图象由时域转换成时域,并把低频率挪动至图象核心。那样将低频率总厅后,就可以把图象的低频率和高频率分离,进而开展低通滤波器跟高通滤波的处理方法。
详细编码
低通滤波
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()
结果展示
改变滤波区域的大小可以改变滤波的程度,可以修改如图所示的代码中的相关部分:
低通滤波
高通滤波
综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130279.html
... 空间域滤波 空间域平滑滤波器(低通滤波器)均值滤波器高斯滤波器中值滤波器 空间域锐化滤波器(高通滤波器)Roberts算子Prewitt算子Sobel算子Laplacian算子(二阶差分)区别 图像平滑通过积分...
...mages 1 2D卷积 与一维信号一样,图像也可以使用各种低通滤波器(LPF),高通滤波器(HPF)等进行滤波.LPF有助于消除噪声,模糊图像等.HPF滤波器有助于找到边缘图片. cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]):将...
...quadFilter() 创建一个 BiquadFilterNode,它代表代表一个双二阶滤波器,可以设置几种不同且常见滤波器类型:高通、低通、带通等。 createOscillator() 创建一个 OscillatorNode, 它表示一个周期性波形,基本上来说创造了一个音调。 音频转...
...quadFilter() 创建一个 BiquadFilterNode,它代表代表一个双二阶滤波器,可以设置几种不同且常见滤波器类型:高通、低通、带通等。 createOscillator() 创建一个 OscillatorNode, 它表示一个周期性波形,基本上来说创造了一个音调。 音频转...
...,除了具有will-change这一CSS属性的内容。 低通和高通二阶滤波器现在支持更多的过滤方式。 --webkit-filter现在是一个无前缀filter属性的别名,表现和filter一样。 --webkit-user-select属性现在支持一个all属性,可以强制选中包括选中元...
阅读 154·2023-01-14 11:38
阅读 96·2023-01-14 11:04
阅读 51·2023-01-14 10:57
阅读 43·2023-01-14 10:48
阅读 57·2023-01-14 10:40
阅读 67·2023-01-14 10:34
阅读 52·2023-01-14 10:24
阅读 53·2023-01-14 10:18