不同阶数的巴特沃斯低通滤波器的空间域表示——数字图像处理

原理

巴特沃斯低通滤波器(Butterworth Low-Pass Filter)在频率域中的定义是明确的,但它在空间域中的表示不是直观的。这是因为巴特沃斯滤波器的形式是基于频率的,并且其空间域表示涉及到一个复杂的逆傅里叶变换,该变换没有一个封闭形式的解析表达。然而,我们可以通过理解其频率域的特性来间接理解其在空间域的行为。

在频率域,巴特沃斯低通滤波器的函数形式如下:

在这里插入图片描述
不同阶数 n 的巴特沃斯低通滤波器在空间域中的主要影响如下:

阶数 n 对平滑度的影响:

较低阶数(如 n=1)的巴特沃斯滤波器在空间域中提供较为平缓的平滑效果,边缘过渡较为柔和。
较高阶数(如 n>1)的滤波器则提供更加强烈的平滑效果,但过渡可能更为尖锐,接近理想低通滤波器的特性。
频率响应与空间响应的关系:
在频率域中,滤波器的截止频率越低,其在空间域中的作用范围越大,导致图像更加模糊。
在空间域中,滤波器的效果取决于其对图像不同频率成分的衰减方式。
空间域的表示:
理论上,可以通过逆傅里叶变换将巴特沃斯滤波器从频率域转换到空间域,但这通常不会产生一个简单的封闭形式的函数。
在实际应用中,巴特沃斯滤波器通常直接在频率域内操作,并在应用逆傅里叶变换回空间域后观察其效果。
由于巴特沃斯滤波器在空间域中没有简洁的表达式,因此在图像处理中通常在频率域内进行设计和应用,然后将处理后的结果转换回空间域以观察和利用其效果。

python实现下图

在这里插入图片描述

提示

不同阶数巴特沃斯低通滤波器的空间域表示。参数如下设置:阶数分别为1,2,5,20,滤波器大小均为1000×1000,截止频率均为5。仍然和上一个实验一样,生成频域的巴特沃斯低通滤波器。之后直接做傅里叶反变换得到空间域的图像表示。为了便于显示,还需要进行对数变换等,具体代码可为HSpatial =

代码实现

import numpy as np
import pandas as pd
from sklearn.model_selection import KFold
import scipy as sp
import matplotlib.pyplot as pltimg_list=[]
img_name_list=[]H=np.ones((1000,1000))for n in [1,2,5,20]:for i in range(1000):for j in range(1000):Duv=np.sqrt(np.power((i-1000/2),2)+np.power((j-1000/2),2))H[i,j]=1/(1+np.power((i-1000/2),2)+np.power((j-1000/2),2))HSpatital=np.log(0.00005+np.abs(np.fft.fftshift(np.fft.ifft2(H))))img_list.append(HSpatital)img_name_list.append("n="+str(n))_,axs=plt.subplots(1,4)for i in range(4):axs[i].imshow(img_list[i],cmap="gray")axs[i].set_title(img_name_list[i])axs[i].axis('off')plt.show()

结果展示

在这里插入图片描述

总结

阶数高的时候高频衰减快。高于截止频率以后,n阶butterworth衰减速度是20n分贝/10倍频。但是做数字滤波的时候你会发现阶数越高系统响应越慢,如果采样间隔是t,通过一个n阶的butterworth,结果和原信号相比基本会有nt的延迟,随着阶数增大,振铃现象逐渐明显,频域的butterworth滤波器也更加接近理想滤波器。
Butterworth低通滤波器可以通过改变次数n,对过度特性进行调整。过大的n会造成振铃现象

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

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

相关文章

图解算法数据结构-LeetBook-回溯01_机械累加器

请设计一个机械累加器,计算从 1、2… 一直累加到目标数值 target 的总和。注意这是一个只能进行加法操作的程序,不具备乘除、if-else、switch-case、for 循环、while 循环,及条件判断语句等高级功能。 注意:不能用等差数列求和公式…

Leetcode算法系列| 11. 盛最多水的容器

目录 1.题目2.题解C# 解法一:暴力C# 解法二:双指针(左指针大于右指针,left)C# 解法三:双指针优化(左指针小于等于最小高度,left)Java 解法一:双指针Python3 解…

【力扣每日一题】力扣2478从链表中移除节点

题目来源 2478.从链表中移除节点 题目描述 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 示例1: 输入:head [5,2,13,3,8] 输出:[13,8] 解释:需要移除的节点是 5 …

基于ssm毕业设计选题系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本毕业设计选题系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

Xshell 上传文件到服务器

Liunx 上传文件 rz //回车,从本地选择文件上传 ll //查看文件 pwd //查看当前目录 mkdir filename //创建文件如果遇到错误信息“bash: rz: command not found” 安装 lrzsz sudo yum install lrzsz操作 mv //移动文件或目录 tar //解压文件vim //文本编辑器&am…

分布式系统架构设计之分布式事务的概述和面临的挑战

在当今大规模应用和服务的背景下,分布式系统的广泛应用已经成为了一种必然的主流趋势。然后,伴随着分布式系统的应用范围的增长,分布式事务处理成为了一个至关重要的关键话题。在传统的单体系统中,事务处理通常相对简单&#xff0…

C语言注意点(4)

1、void *a是什么意思 答&#xff1a;泛型指针&#xff0c;但不规定其类型(就是地址确定&#xff0c;但数据长度不确定)在动态分配内存时&#xff0c;malloc的返回值就是该类型&#xff0c;方便用户进行强制转换。 2、VS怎么一键规范格式 for(i0;i<10;i)enter后&#xff0c;…

【常用排序算法】快速排序

##快速排序 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高&#xff0c;因此经常被采用&#xff0c;再加上快速排序思想----分治法 先从数列中取出一个数作为基准数pivot。分区过程&#xff0c;将比这个数大的数全放到它的右边&#xff0c;小于或等于它的数全放…

Centos7静态网络配置

在vmware中打开&#xff0c; 点击虚拟网络编辑器&#xff0c;修改以下配置 网关IP最后一位固定为2&#xff0c;这个160根据下图中vmnet8的ip地址来的 打开网络控制面板>打开vmnet8查看 接着打开linux&#xff0c;有桌面版的使用桌面版更加方便 箭头这么乱&#xff0c;但是你…

python统计分析——直方图(df.hist)

使用dataframe.hist()或series.hist()函数绘制直方图 import numpy as np import pandas as pd from matplotlib import pyplot as plt.dfpd.DataFrame(data{type:[A,A,A,A,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B],value:[2,3,3,4,4,4,4,5,5,6,5,6,6,7,7,7,7,8,8,9] }) serpd.Serie…

BUUCTF--hitcontraining_heapcreator1

老规矩上来看保护&#xff1a; 64位架构并且除了PIE全开。接着黑盒测试下场景&#xff1a; 菜单题不用想就是堆。接着我们我们看看IDA中的逻辑&#xff1a; 程序的主要逻辑是增删改查。我们看看创建堆的过程&#xff1a; 注释我已给出&#xff0c;步骤大概如下&#xff1a; 1.…

【DevOps-06】Jenkins实现CI/CD操作

一、简要说明 基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成 基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 二、准备Springboot工程 1、IDEA新建工程 2、填写项目工程信息 3、选择Springboot版本…