微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python低通滤波如何实现?Python怎么写低通滤波代码

python可以通过很多不同的算法、模块、库方法来实现对图像的处理操作,而使用算法加方法是效率比较高且可以自定义的一种图像处理方式。那么这一篇文章主要介绍的内容就是低通滤波的作用以,以及python该怎么写实现低通滤波的代码

一、低通滤波作用

这里的滤波指的就是图像滤波,是通过对图像噪声进行抑制或者提高来在少破坏图像本身的前提下对其进行修改。那么低通滤波就是将高于某一个点,或者说是阈值的星号给去除掉,这样得出来的效果就是让图像的清晰度降低,添加一种模糊和朦胧的效果

二、python实现低通滤波代码

1.python中编写低通滤波实现代码需要用到opencv、numpy、matplotlib这三个第三方库,首先需要使用opencv之中的imread()方法将待处理的图像读取进来,并且通过参数设置来将其转为灰度图像方便后续操作,代码示例如下:

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('./moon.jpg', flags = cv2.IMREAD_GRAYSCALE)

2.因为图像上的色彩上限为255,在读取完图像之后将其除以这个数就可以把他转为单精度float32的数据。之后调用dft()方法来实现傅里叶变换将低频滤波位置移动到中心,在通过shape属性获取到分辨率并且除以二得到中心点,代码如下:

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)

3.因为低通滤波是需要去掉高于某个点的信号,而现在所要做的事情就是只保留低频部分并且再进行傅里叶变换。这个时候就是已经得到了低通滤波处理过后的图像,调用plt模块创建窗口并且显示图像即可,详细代码如下所示:

mask[h2-50:h2+50,w2-50:w2+50] = 1 
dft_shift*=mask  
ifft_shift2 = np.fft.ifftshift(dft_shift)  
result = cv2.idft(ifft_shift2)
plt.subplot(122)
plt.imshow(result[:,:,0], cmap='gray')
plt.show()

以上就是关于“Python低通滤波如何实现?Python怎么写低通滤波代码”的全部内容了,希望对你有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐