卷积,DFT,FFT,图像FFT,FIR 和 IIR 的物理意义

卷积:
 冲击信号会对线性系统产生冲击响应。
 冲击信号可分解为平移度和幅度。其对线性系统的冲击响应可以分解为点点间的经平移和缩放的各个冲击响应的累加,通过卷积的表达式表示。
 所谓的冲击响应,就是线性系统对任何输入信号的响应,描述这种输入输出关系的算数方法就是卷积。

 以上是从输入信号的角度看卷积,每个输入信号上的点都产生一个缩放和平移之后的冲击信号,然后对这些冲击信号进行累加,即卷积。
 也可以从输出信号的角度去看,即每一个输出信号上的点都是由一系列输入信号和冲击信号相互作用产生的。

 一个N点的信号和一个M点的信号相卷积,其输出有N+M-1个点。
 相关是利用卷积来运算的,它能在一个信号中找到目标信号的位置(根据相关值来判断)。


FFT:
 FFT是分为复数DFT变换和实数DFT变换(改进算法)。
  复数DFT:拿一维信号来说N点的时域信号产生N个点的频域信号,都含有实部和虚部。
  实数DFT:拿一维信号来说N点的时域信号产生N/2+1个点的频域信号,都含有实部和虚部。

 FFT只所以快是因为:
  第一步,它将1个N点的信号先分解成N个1点的信号;
  第二步,计算这N个1点信号的频谱,这很好计算,因为复数就是它自己,但现在这N个信号是频谱信号了;
  第三步,再将这N个频谱信号按一定的规律加起来就得到了所需要的频谱。第三步是最复杂的,是按第一步分解的反过程,那些很复杂的蝶形运算就是用于这个反过程的,它们改变信号的位置,
   再通过相加将2个N/2点的信号变成1个N点的信号。


实数DFT(离散傅里叶变换):
 一个离散信号在时域离散但在频域可能周期。
 DFT处理的信号的时域是离散的但又周期,频域是周期性的但又离散。
 实数DFT信号的时域有N点(其实是周期延拓,一个周期N点),可以由N/2+1个正弦信号和N/2+1个余弦信号表示,每个正余弦信号也是N点(也是周期延拓,一个周期N点)。
 上面就是DFT的物理意义,
  N点的实数经DFT之后变成 N/2+1个复数表示的点,复数的实部是正弦信号的幅度,虚部是余弦信号的幅度。复数只是一种数学上的表示方法。
   直角坐标表示法: 将正余弦幅度画出来来表示频谱。每个正余弦信号的幅度可以通过相关的方法求出。
   极坐标表示法:   将上述 N/2+1个复数表示成模(幅度)和相位,并画出来来表示频谱。

 频谱的横坐标:
   用点数来表示的,范围是 0到N/2(N/2+1个数);
   分数表示法,范围是0到0.5;
   自然频率表示法,范围是0到π。

 对DFT信号时域离散,频域周期的物理解释:
  因为离散信号是不连续的采样点,这些采样点可能是一个频率的连续信号上的某些点,可能是比这个频率高的连续信号上的某些点,也可能是比这个频率低的信号上的某些点,这个就呈现出了周期性。

 DFT性质
  如果时域信号是左右对称的,则其DFT变换的相位是线性的,称作线性相位。特别的,如果时域信号关于原点左右对称,则其频域相位为0,称作0相位。
  DFT时域取的点越多(采样频率不变),其频谱分辨率越高。这是因为N增加,则N/2+1越大,而频谱的最高频率不超过1/2的采样频率,所以频谱上的间隔减小,即分辨率提高。
  DFT的时域是周期性的,N个点为周期;频域上通常是看0到N/2-1个点,但它是关于原点对称的,实部和幅度偶对称,虚部和相位寄对称,它的周期也是N个点。
  时域上的平移会造成相位的斜率发生改变。

 时域卷积等于频域相乘。
  一个N点的信号和一个M点的信号(N>M)卷积得到N+M-1个点。
  从频域上看N点信号的频谱N/2+1个点,M点信号的频谱做N点DFT之后也是N/2+1个点,两者相乘在IDFT之后得到输出信号时N个点,这样就比普通卷积少了M-1个点,不要忘记DFT是周期性信号,
  少了M-1点可能会造成前后输出信号的叠加,但也可能不会只要N比有效的信号范围来的大就行了,这种用DFT求的卷积叫圆周卷积。

 

图像FFT:
 图像的DFT变化也是把图像看成是周期延拓的信号,就像砖瓦一样一块块铺起来,其DFT变换之后的信号也是周期信号,也想砖瓦一样一块块铺起来。假设图像为N*N点阵,其DFT变换也是N*N点阵,
 取行编号为0、列编号为0的点为中心,这就是说图像的DFT变换的编号有正有负。

 在1维信号中,DFT变换把信号分解成多个正弦信号,表示信号包含有多个频率。对图像来说,其像素的灰度变化也是一种频率的反映,一般来说边沿的时候灰度的变化较为明显,或者说灰度变化频率较快;
 而一幅图像的灰度如果比较平均,则表示灰度无明显变换,其变化频率较慢。
 或者说图像频谱的低频部分决定了大体上的灰度变化(比较模糊),而图像频谱的高频部分决定了细节变化(边沿)。
 将图像DFT之后,变化频率较慢的成分就越靠近中心,而频率变化较快的成分就越远离中心。

 图像的频谱也具有对称性,实部和幅度以中心镜像对称;虚部和相位以中心反镜像对称。

 图像频谱的相位决定了图像的样子,如果将另一幅图像的幅度和本幅图像的相位结合,还是能看出本幅的图像,只不过灰度变化不正常。这是因为相位决定了幅度变化的方向。
 拿1维信号来说,如果有一个上升沿,那么在这个上升沿发生的时候,很多正弦信号的相位都是一样的,这样就能堆起一个上升沿,应用在图像里面,也是同样的道理。所以相位是决定信号的样子的。

 如果图像中有一根很细的长条横卧,则其频谱的垂直方向上有更多的分量,而频谱的水平方向上的分量较少。这是因为频谱上的点具有方向性,图像上水平的直线需要更多垂直的分量来组成,
 而图像垂直方向上相对不变,所以也不需要很多水平的分量。

 图像的卷积一般用的PSF较小,比方3*3点阵的算子,常用的算子有平滑滤波和边沿增强算子。图像的卷积和1维信号一样也可以从输入信号看和输出信号看。如果卷积比较复杂,可以用FFT卷积来做。

 


FIR:有限脉冲响应
 通过卷积来求输出,随着脉冲点数的增多,其频谱特性可以做的很好,并且可以做到使线性相位的,但是速度慢,借助FFT卷积可以提高速度。
 常用的有平滑滤波器、sinc窗函数。平滑滤波器主要用于时域平滑,可以用递归来实现;sinc窗函数主要用于频域滤波。

 无反馈,频域上相位线性,在时域上体现为信号固定延时了一个时间t, 波形没有失真,只是时间上滞后了,语音处理,图象处理以及数据传输要求频域线性相位,任意幅度。在语音编码的采样之前会用一个FIR
 做低通滤波,
 由于无反馈,要实现相同的指标,比iir所需的阶数要高很多。
 物理量“相位延迟”Tp(f)=-φ(f)/(2pif); “群延迟”Tg(f)=-dφ/dw.  当Tg(f)为常数时,认为这系统是无畸变的。FIR线性相位正满足了这个要求。

 

 

IIR:无限脉冲响应,
 通过递归方程来求输出,不同的递归系数决定了滤波器的特性,滤波特性没有FIR好,但速度快,参数级数少。由于是根据递归系数来确定,而不像FIR那样是根据频域来确定,
 所以设计时很难确定频域形状,很难确保是线性相位。
 常用的有 单极点滤波器、切比雪夫滤波器。前者用于时域平滑,后者用于频域滤波,切比雪夫的滚降较快,但是有ripple。
 IIR极点一般的理解是:极点越多滤波器的性能越好。
 通过IIR的递归方程进行Z变换,可以求出其频域特性。

 当M>0时,M就是IIR滤波器的阶数,表示系统中反馈环的个数。由于反馈的存在,IIR滤波器的脉冲响应为无限长,因此得名。若M=0,则系统的脉冲响应的长度为N+1,故而被称作FIR滤波器。
 可以直接利用模拟滤波器设计IIR滤波器,因为模拟滤波器本身就是无限长冲激响应的。
 通常IIR滤波器设计的过程如下:
  首先根据滤波器参数要求设计对应的模拟滤波器(如巴特沃斯滤波器、切比雪夫滤波器等等),
  然后通过映射(如脉冲响应不变法、双线性映射等等)将模拟滤波器变换为数字滤波器,从而决定IIR滤波器的参数。
  IIR滤波器的重大缺点在于,由于存在反馈其稳定性不能得到保证,而FIR滤波器由于不存在系统极点,FIR 滤波器是绝对稳定的系统。

 IIR无限长脉冲响应滤波器,结构中有反馈,所以理论上脉冲响应永远不为零。实现相同的指标比fir滤波器需要的阶数较少。非线性相位,用于对相位不太敏感的场合,如语音。
 设计时先设计模拟滤波器原型,再由一定的原则转换为数字滤波器。可参看程乾生编著 “信号数字处理的数学原理” 石油工业出版社
  1.IIR数字滤波器的系统函数可以写成封闭函数的形式。 
  2.IIR数字滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,
     都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。 
  3.IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。
     在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。 
  4.IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。

 在MATLAB下设计IIR滤波器可:
  使用Butterworth函数设计出巴特沃斯滤波器,
  使用Cheby1函数设计出契比雪夫I型滤波器,
  使用Cheby2设计出契比雪夫II型滤波器,
  使用ellipord函数设计出椭圆滤波器。 
   与FIR滤波器的设计不同,IIR滤波器设计时的阶数不是由设计者指定,而是根据设计者输入的各个滤波器参数(截止频率、通带滤纹、阻带衰减等),
   由软件设计出满足这些参数的最低滤波器阶数。在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择。

 iir幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上; 
 fir幅频特性精度较之于iir低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变。这是很好的性质。 
 另外有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。

 在多带滤波的时候,如果采用IIR将会导致各频带输出不同步的问题,在诸如特征提取这样的应用中将会很麻烦
 IIR比FIR具有更好的模型匹配与信号处理能力。但是,如果极点不能控制在单位圆内,将会使系统不稳定。
 IIR滤波器最重要的优点在于与相同系数个数的FIR滤波器相比有更好的性能,要达到相同性能,IIR滤波器所需系数个数一般比FIR滤波器少得多。
 而FIR很容易保证稳定和线性相位,这在有特殊要求的信号处理中是非常重要的,比如实现完全线性相位重构滤波器。

转载于http://blog.csdn.net/tomlingyu/article/details/6858549;

转载于:https://www.cnblogs.com/jian1573/archive/2011/12/09/2282674.html

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

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

相关文章

洛谷P2822 组合数问题

分析&#xff1a; 首先预处理出来&#xff0c;杨辉三角二维前缀和 代码&#xff1a; #include<cstdio> using namespace std; long long f[2005][2005],sum[2005][2005]; int main() {long long T,k;scanf("%lld%lld",&T,&k);for(long long i0;i<20…

es6笔记

es6对象浅复制&#xff1a; 字符串大小比较&#xff1a; 如果是汉字&#xff1a;a.charCodeAt() > b.charCodeAt() //使用carCodeAt将器转为asci码&#xff0c;在进行比较 如果是非汉字的字符串&#xff1a;直接比较或者使用上面的转码比较都可以。 如果是日期比较&#xff…

毕业设计上线啦!----跳蚤部落与基于Comet的WebIM系统开发

我不清楚把我的毕业设计的东西放上来之后&#xff0c;毕业论文答辩的时候会不会说我是在网上抄袭的&#xff0c;不过我还是果断的发上来与大家分享了&#xff01;&#xff01;呵呵&#xff0c;请大家支持&#xff01;高手就绕道吧&#xff01; 现在已经放到公网上&#xff0c;并…

poj2032Square Carpets(IDA* + dancing links)

题目请戳这里 题目大意:给一个H行W列的01矩阵,求最少用多少个正方形框住所有的1. 题目分析:又是一个红果果的重复覆盖模型.DLX搞之! 枚举矩阵所有的子正方形,全1的话建图.判断全1的时候,用了一个递推,dp[i][j][w][h]表示左上角(i,j)的位置开始长h宽w的矩形中1的个数,这样后面可…

使用Spring Security保护REST服务

总览 最近&#xff0c;我正在一个使用REST服务层与客户端应用程序&#xff08;GWT应用程序&#xff09;进行通信的项目中。 因此&#xff0c;我花了很多时间来弄清楚如何使用Spring Security保护REST服务。 本文介绍了我找到的解决方案&#xff0c;并已实现。 我希望此解决方案…

http请求post,返回excel文件,并接收

1.post的方法里要加responseType: arraybuffer参数&#xff0c;不然下载的excel会乱码 2.使用{type: "application/vnd.ms-excel"}的写法&#xff0c;可以保存为xls格式的excel文件&#xff08;兼容老版本&#xff09;。而使用“application/vnd.openxmlformats-off…

linux图形开发工具

请见:http://hi.baidu.com/jjzhang166/blog/item/b8dfb6ecd5fc6e2d62d09f9e.html 转载于:https://www.cnblogs.com/vilyLei/archive/2011/12/12/2284869.html

具有Overlord的WildFly 8.1中的API管理

昨天&#xff0c;我简要介绍了霸王项目家族。 今天该试驾了。 API管理子项目两天前发布了1.0.0.Alpha1&#xff0c;并根据18个月的路线图介绍了第一组功能。 APIMan到底是什么&#xff1f; 它是一个API管理系统&#xff0c;可以嵌入现有框架或应用程序中&#xff0c;甚至可以作…

设计模式学习笔记-代理模式

1. 概述 为其它对象提供一种代理以控制对这个对象的访问。 解决的问题&#xff1a;如果直接访问对象比较困难&#xff0c;或直接访问会给使用者或系统带来一系列问题。这样对于客户端&#xff08;调用者&#xff09;来说&#xff0c;就不需要直接与真实对象进行交互&#xff0c…

Tomcat配置自签名https

从JDK中找到keytool.exe&#xff0c;随便复制到一个方便的目录&#xff0c;在命令行中进入这个目录。 第一步&#xff1a;为服务器生成证书 tomcat.keystore&#xff0c;名字就是域名&#xff0c;其他的看着写。 keytool -genkey -v -alias tomcat -keyalg RSA -validity 3650…

MFC学习之路之多媒体 --(1) DirectShow

可以说整个Windows的多媒体编程都是以DirectShow为基础&#xff0c;那好&#xff0c;来吧&#xff0c;我们直接看DirectShow的一段基础代码。 bool Mp3::Load(LPCWSTR szFile) {Cleanup();ready false;if (SUCCEEDED(CoCreateInstance( CLSID_FilterGraph,NULL,CLSCTX_INPROC_…

使用反射处理Java批注

在上一篇有关Java注释的文章中&#xff0c;我概述了一个最近的用例&#xff0c;并为您提供了一些自定义注释的示例以及如何使用它们。 在本文中&#xff0c;我将更进一步&#xff0c;并为您提供一些自定义注释的示例&#xff0c;以及如何使用Java Reflection API处理这些自定义…

Excel 2007 Open XML文件结构(2)

Excel 2007 Open XML文件结构&#xff08;2&#xff09; 在以上文件中&#xff0c;根据<sheet>元素中r:id属性的值可得到工作表数据的XML文件。例如&#xff0c;在workbook.xml文件中名为工作表1的工作表的r:id属性为rld1&#xff0c;在以上文件中根据ID找到以下代码&…

Vue.js最佳实践

Vue.js最佳实践 第一招&#xff1a;化繁为简的Watchers 场景还原&#xff1a; created(){this.fetchPostList() },watch: {searchInputValue(){this.fetchPostList()} } 组件创建的时候我们获取一次列表&#xff0c;同时监听input框&#xff0c;每当发生变化的时候重新获取一…

Api demo源码学习(8)--App/Activity/QuickContactsDemo --获取系统联系人信息

本节通过Content Provider机制获取系统中的联系人信息&#xff0c;注意这个Anctivity直接继承的是ListActivity&#xff0c;所以不再需要setContentView函数来加载布局文件了&#xff08;我自己新建一个项目来跑这个anctivity时在这里卡了半天&#xff09;。 在AndroidManifest…

游戏大厅 从基础开始(6)--绕回来细说聊天室(中)之女仆编年史1

上一篇我们大致的了解了几种聊天室的行为模式 最简单明了的推模式 几乎不需要任何多余的语言来描述它的实现 这一篇我们看看如何实现拉模式更有效。 本图清晰的表现了"拉"模式聊天室的行为。 并发多用户向数据池写数据 并发多用户从数据池读书据 数据最好以时间为…

开发自上而下的Web服务项目

这是从Alessio Soldano编辑的Advanced JAX-WS Web Services手册中摘录的示例章节。 第一章介绍了自底向上创建Web服务端点的方法。 它允许非常快地将现有bean作为Web Service端点公开&#xff1a;在大多数情况下&#xff0c;将类转换为端点只需在代码中添加少量注释即可。 但…

React中ref的使用方法

React中ref的使用方法 在react典型的数据流中&#xff0c; props传递是父子组件交互的唯一方式&#xff1b;通过传递一个新的 props值来使子组件重新 re-render,从而达到父子组件通信。当然&#xff0c;就像react官网所描述的一样&#xff0c;在react典型的数据量之外&#xff…

mediawiki自动生成sitemap

Mediawiki 1.17.0提供了generateSitemap.php生成sitemap文件&#xff0c;可不必再使用扩展。 每次调用generateSitemap.php&#xff0c;生成全部sitemap。一般是通过定时任务(Linux下是cron)调用&#xff0c;定时生成。 generateSitemap.php命令示例&#xff1a; php /wiki/mai…

垃圾收集:提高吞吐量

这篇文章的灵感来自于在内存管理术语中的“ Pig in the Python ”定义。 显然&#xff0c;该术语用于解释GC反复促进大对象世代相传的情况。 据推测&#xff0c;这样做的效果类似于Python吞下整个猎物&#xff0c;只是在消化过程中被固定住了。 在接下来的24小时里&#xff0c…