matlab设计高频滤波器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、浅显的思路
- 二、例题
- 三、代码实现
- 四、结果展示
- 总结
前言
最近数字图像处理的老师布置了新的实验内容,是有关不调用函数设计巴特沃斯滤波器和高斯滤波器的,在经过痛苦的挣扎后,我也算是大致理解了设计的具体流程和思路,并把它们记述在这里,方便日后查阅。
因为数字信号处理这门课程没学好,所以很多理论性的知识都是一知半解的,所以在这篇文章我只讲怎么操作应用,能够得到最终的滤波图像。
一、浅显的思路
巴特沃斯滤波器和高斯滤波器进行图像处理归根到底就是将图像从空间域转换到频率域上进行操作。这和《信号与系统》课程中将时域上的信号转换到频域上进行操作的原理大同小异。因为无论是一维还是二维,都满足时域卷积,频域相乘的基本法则。所以我们的切入点非常的简单,就是将图像转换到频域上,根据基础原理公式一步一步操作,最终得出结果。
1.将图像由空间域转换为频域
2.给出后续操作所需要的基础数值(例如中点值、阶次等)
3.设计整个图像矩阵的循环
4.给出巴特沃斯滤波器或高斯滤波器的传递函数
5.将传递函数和当前的矩阵值相乘
6.结束循环
7.将得到的处理结果转换到空间域
二、例题
给出一幅指纹的图像,为了去除指纹图像中的污染,设计高通滤波器进行解决。
三、代码实现
%设计高频滤波器(巴特沃斯滤波器、高斯滤波器)给定阶数为4,截止频率为50
I1=imread('zhiwen.tif');
[len,wed]=size(I1);
g=fft2(I1);%将图像转换到频域
g=fftshift(g);%将零频点移到频谱中间,这对观察图像是有好处的
n1=4;
D0=50;
[M,N]=size(g);
m=fix(M/2);
n=fix(N/2);%m,n后续计算传递函数时需要用
%对图像矩阵中所有的值进行操作
for i=1:Mfor j=1:ND=sqrt((i-m)^2+(j-n)^2);%根据理论知识给出H1=1-exp((-1)*(D^2/(2*D0^2)));%高斯高频率波的传递函数H2=1/(1+(D0/D)^(2*n1));%巴特沃斯滤波器高通滤波传递函数s1(i,j)=H1*g(i,j);s2(i,j)=H2*g(i,j);%频域相乘end
end
%得到图像后先将其位移回原来位置,再转换到空间域上。
%/255是因为在转换时图像变成double型,如果直接转换为uint8型时会有灰度值大于1而让图像大部分区域直接变成白色,因此需要/255
I2=im2uint8(real(ifft2(ifftshift(s1)/255)));
I3=im2uint8(real(ifft2(ifftshift(s2)/255)));
I4=im2bw(I3,0);%对高频图像进行二值化处理可以得到更好的效果
subplot(2,2,1),imshow(I1),title('原图');
subplot(2,2,2),imshow(I2),title('高斯滤波器');
subplot(2,2,3),imshow(I3),title('巴特沃斯滤波器');
subplot(2,2,4),imshow(I4),title('阈值化处理');
四、结果展示
总结
时域卷积频域相乘是滤波器设计时的核心思想,只要掌握了这一点无论是高频还是低频的滤波器都可以实现,区别仅仅在于所用的传递函数不同。
在完成高频滤波之后,可以尝试用二值化的方法处理暗色调的图像,以0为阈值进行分界通常可以得到良好的显示效果。
matlab设计高频滤波器相关推荐
- fir fpga 不同截止频率_用MATLAB设计FIR滤波器的方法
用MATLAB设计FIR滤波器的方法 摘 要 介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计 ...
- 用matlab设计fir高阶滤波器,用matlab设计fir滤波器的三种方法.doc
用matlab设计fir滤波器的三种方法.doc 用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法摘要介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法程序设计法.FDATO ...
- 验证matlab设计的滤波器,一种数字滤波器的设计及验证方法与流程
本发明涉及一种数字滤波器的设计及验证方法,属于数字信号处理技术领域. 背景技术: 当今,数字信号处理技术正飞速的发展,它不但成为一门学科,更是以不同的形式影响和渗透到其他的学科,因此受到人们普遍的关注 ...
- matlab编程设计fir滤波器,用MATLAB设计FIR滤波器
滤波器 滤波器定义 "滤波器(filter),是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的直流电.对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器,其功能就 ...
- matlab凯塞窗设计,转载:用MATLAB设计FIR滤波器的方法解析
介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的 ...
- matlab 设计出滤波器使用,用MATLAB设计FIR滤波器的方法解析
介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的 ...
- matlab fir滤波器程序,使用MATLAB设计FIR滤波器
1. 采用fir1函数设计,fir1函数可以设计低通.带通.高通.带阻等多种类型的具有严格线性相位特性的FIR滤波器.语法形式: b = fir1(n, wn) b = fir1(n, wn ...
- matlab iir滤波器设计 实验报告,基于MATLAB的IIR滤波器设计与实现
由于电力系统中非线性电子元件的大量使用,使得谐波污染问题日益严重,当谐波含量超过一定限度时就可能对电网和用户造成极大的危害,且增加线路损耗,降低线路传输能力,干扰通信信号等.因此,应该积极寻找一种治理 ...
- matlab中滤波器设计与实现,基于MATLAB的IIR滤波器设计与实现
描述 由于电力系统中非线性电子元件的大量使用,使得谐波污染问题日益严重,当谐波含量超过一定限度时就可能对电网和用户造成极大的危害,且增加线路损耗,降低线路传输能力,干扰通信信号等.因此,应该积极寻找一 ...
- matlab的FIR滤波器设计
1.matlab设计fir滤波器的方法 matlab可以使用fir1函数设计低通.高通.低通.带通等具有严格线性相位特性的滤波器. fir1函数的几种语法如下: b=fir1(n,wn);b=fir1 ...
最新文章
- C/C++面试题分享
- Eclipse-Java代码规范和质量检查插件-阿里编码规约
- eureka源码:EurekaTransport类用于client与server进行交互
- rs 实用工具 (rs.exe) (SSRS)SQL server report service
- 浅谈JSP表单中的form传值
- leetcode155. 最小栈
- ssh 免密登录并用脚本群起服务
- maven构建Spring项目
- 二、服务器优化(3)服务器端优化措施
- Use AVAudioPlayer in OperationQueue
- spark 稀疏矩阵存储详细解读
- 失控的京东高管文化:频繁离职背后原因是什么?
- Java开发常见英文单词(带音标翻译)
- java生成word目录_Apache POI自动生成Word文档(带目录)
- Python编辑器你选哪个?我选PyCharm
- 指狗为马,还可骑乘?小鹏快收了你的神通吧...
- 电商浪潮过后,无人零售会引领新零售的爆发吗
- 浏览器兼容性测试怎么做?系统测试工具及方案推荐
- Codeforces Round #405 B. Bear and Friendship Condition a-b,b-c a-c??
- 关键词提取算法TextRank