频率域滤波图像复原之带阻滤波器的python实现——数字图像处理

原理:

带阻滤波器(Band-Stop Filter)是一种在信号处理领域常用的滤波器,它的主要功能是去除(或减弱)信号中特定频率范围内的成分,同时允许其他频率范围的信号通过。这种滤波器在多种应用中都非常有用,比如去除电子设备中的干扰信号、音频处理中的噪声消除等。

频率选择性:带阻滤波器设计用来阻止一个特定的频率带宽内的信号。这个带宽被称为阻带(Stop Band),其外的频率区域则被允许通过,这部分称为通带(Pass Band)。
**滤波过程:**当信号进入带阻滤波器时,滤波器会根据其频率特性分别处理不同的频率成分。在阻带范围内的频率成分会被显著衰减或完全去除。而在通带范围内的频率成分则基本不受影响,可以顺利通过滤波器。
设计参数:
截止频率:决定阻带的上下频率边界。
阻带宽度:阻带的频率范围。
衰减量:阻带内信号的衰减程度。
滤波器阶数:影响滤波器的陡峭程度和性能。
类型
模拟带阻滤波器:使用电阻、电容和电感等元件构建,常用于模拟信号处理。
数字带阻滤波器:通过数字信号处理算法实现,可以精确设定阻带频率和宽度,常用于数字信号处理。
应用
带阻滤波器广泛应用于电子、通信、音频处理等领域,特别是在需要去除特定频率干扰或噪声的情况下。例如,去除电源线产生的50Hz或60Hz的电气噪声,或者在音频编辑中去除特定频率的背景噪音。

python实现下述结果

在这里插入图片描述

提示

结果依次显示了添加周期噪声后的图像及其频谱图,根据所加噪声频率确定的带阻滤波器的频域表示,带阻滤波器对含噪图像滤波后得到的结果图。
第一步为图像添加正弦噪声,其理论说明如下图
在这里插入图片描述

实验中,直接在空间域根据上面一个公式添加正弦噪声,A=50,Bx=By=0,四组噪声,频率分别为u0=v0=50;u1=-50,v1=50;u2=50sqrt(2),v2=0;u3=0,v3=50sqrt(2)。注意:图像在叠加噪声前需转换为浮点数。
第二步计算含噪图像的频谱。
第三步构造带阻滤波器的传递函数(参考数字图像处理这本书),其中参数W=5,D0=50*sqrt(2),n=4
第四步是滤波并将结果转到空间域并显示。

python代码

import cv2
import numpy as np
from matplotlib import pyplot as pltimg = cv2.imread('Fig0427.tif', 0)
rows = img.shape[0]
cols = img.shape[1]Cx = rows//2
Cy = cols//2# 噪声频率
u0 = 50
v0 = 50
u1 = u0*np.sqrt(2)
v1 = v0*np.sqrt(2)# 先将图像转换为浮点数,便于后续添加噪声
img = img.astype(np.float32)
for x in range(rows):for y in range(cols):noise1 = np.sin(2*np.pi*u0*x/rows+2*np.pi*v0*y/cols)noise2 = np.sin(2*np.pi*-u0*x/rows+2*np.pi*v0*y/cols)noise3 = np.sin(2*np.pi*u1*x/rows)noise4 = np.sin(2*np.pi*v1*y/cols)noise = noise1+noise2+noise3+noise4img[x, y] = img[x, y] + 50*noise
# img = 255*(img-img.min())/(img.max()-img.min())# 计算带噪图像的频谱
dft = np.fft.fft2(img)
dft_shift = np.fft.fftshift(dft)
dft_show = np.log1p(np.abs(dft_shift))
# dft_show = 255*(dft_show-dft_show.min())/(dft_show.max()-dft_show.min())
# cv2.imwrite('fft2.jpg', dft_show)img_list = [img, dft_show]
img_name_list = ['original', 'fft']# 带宽,决定了带阻滤波器去除频率分量的多少
W = 5
# 截止频率,决定了去除哪些频率分量
D0 = u1
# 巴特沃斯滤波器的阶数
n = 4# 构造巴特沃斯带阻滤波器
H = np.zeros((rows, cols))
for x in range(rows):for y in range(cols):D = np.sqrt((x - Cx) ** 2 + (y - Cy) ** 2)H[x, y] = 1 / (1 + (D*W / (D**2 - D0**2 + 1e-10)) ** (2 * n))img_list.append(H)
img_name_list.append('bandreject')dft_filtered = np.multiply(dft_shift, H)
img_result = np.abs(np.fft.ifft2(np.fft.fftshift(dft_filtered)))
img_list.append(img_result)
img_name_list.append('result')_, axs = plt.subplots(2, 2)for i in range(2):for j in range(2):axs[i, j].imshow(img_list[i * 2 + j], cmap='gray')axs[i, j].set_title(img_name_list[i * 2 + j])axs[i, j].axis('off')#plt.savefig('bandreject.jpg')
plt.show()

结果展示

在这里插入图片描述

总结

带阻滤波器可分为窄带阻滤波器和宽带阻滤波器,在实际电路中,常利用无源低通滤波器和高通滤波器并联构成无源带阻滤波电路,然后接相同比例运算电路,从而得到有源带阻滤波电路。它能通过大多数频率分量、但将某些范围的频率分量衰减到极低水平的滤波器。其中点阻滤波器(notch filter)是一种特殊的带阻滤波器,它的阻带范围极小,有着很高的Q值(Q Factor)。
这是分别对应于图像水平方向和垂直方向的正铉噪声。在构建滤波器的时候就需要考虑,尽可能的过滤除这些具有这些亮点对应的正铉噪声,希望尽可能消减细节。N=4.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/325164.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Simply简洁博客主题源码 | EmlogPro主题模版

Simply是一款简约风格的Emlog博客模板,响应式布局、界面简单大方,实用性强! 支持夜间模式,采用localStorage存储配置。IOS系统下支持随系统自动切换浅/深色模式。 文章页支持显示文章字数及阅读时间。 支持http/https 响应式主…

UICollection Compositional Layout全详解

本文字数:8325字 预计阅读时间:45分钟 01 Collection View Layout全详解 UICollectionView在iOS中是构建复杂布局的强大工具。iOS13中引入的 UICollectionViewCompositionalLayout为创建自定义布局提供了全新的可能性。本文将深入探讨Compositional Lay…

04、Kafka ------ CMAK 各个功能的作用解释(Cluster、集群、Broker、位移主题、复制因子、领导者副本、主题)

目录 启动命令:CMAK的用法★ 在CMAK中添加 Cluster★ 在CMAK中查看指定集群★ 在CMAK中查看 Broker★ 位移主题★ 复制因子★ 领导者副本和追随者副本★ 查看主题 启动命令: 1、启动 zookeeper 服务器端 小黑窗输入命令: zkServer 2、启动 …

Python基础知识总结2——python中的字符串

python字符串 字符串基本特点空字符串和len()函数转义字符字符串拼接字符串复制不换行打印从控制台读取字符串replace() 实现字符串替换str()实现数字转型字符串使用[]提取字符字符串切片slice操作split()分割和join()合并字符串驻留机制和字符串比较字符串比较和同一性成员操作…

Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:首期文章 📚订阅专栏:Redis速成 希望文章对你们有所帮助 在此之前,我做过的项目里面也用到了…

Spring Boot依赖版本声明

链接 官网 Spring Boot文档官网:​​​​​​https://docs.spring.io/spring-boot/docs/https://docs.spring.io/spring-boot/docs/ Spring Boot 2.0.7.RELEASE Spring Boot 2.0.7.RELEASE reference相关:https://docs.spring.io/spring-boot/docs/2.…

排序算法——关于快速排序的详解

目录 1.基本思想 2.基本原理 2.1划分思想 2.2排序过程 (1)选择基准值 (2)分割过程(Partition) (3)递归排序 (4)合并过程 2.3具体实例 2.4实现代码 2.5关键要…

从细菌基因组中提取噬菌体变异序列工具PhaseFinder的介绍、安装和使用方法

PhaseFinder ## 概览,不翻译了,大家自己看吧 The PhaseFinder algorithm is designed to detect DNA inversion mediated phase variation in bacterial genomes using genomic or metagenomic sequencing data. It works by identifying regions flank…

windows通过ssh连接Liunx服务器并实现上传下载文件

连接ssh 输入:ssh空格用户名ip地址,然后按Enter 有可能出现下图提示,输入yes 回车即可 输入 password ,注意密码是不显示的,输入完,再按回车就行了 以上是端口默认22情况下ssh连接,有些公司它…

Docker一键极速安装Nacos,并配置数据库!

1 部署方式 1.1 DockerHub javaedgeJavaEdgedeMac-mini ~ % docker run --name nacos \ -e MODEstandalone \ -e JVM_XMS128m \ -e JVM_XMX128m \ -e JVM_XMN64m \ -e JVM_MS64m \ -e JVM_MMS64m \ -p 8848:8848 \ -d nacos/nacos-server:v2.2.3 a624c64a1a25ad2d15908a67316d…

虚拟机快照

1.为什么使用快照 在学习阶段我们无法避免的可能损坏Linux操作系统。 如果损坏的话,重新安装一个Linux操作系统就会十分麻烦。 VMware虚拟机(Workstation和Funsion)支持为虚拟机制作快照。 通过快照将当前虚拟机的状态保存下来,在…

集合-及其各种特征详解

集合 概念:是提供一种存储空间 可变 的存储模型,存储的数据容量可以发生改变。(也就是集合容量不固定) 集合关系图 绿色的代表接口,蓝色的代表接口的实现类 单列集合 Collection(接口) 概述:单列集合的…