博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Matlab实现Butterworth滤波器 分类: 图像处理 ...
阅读量:7070 次
发布时间:2019-06-28

本文共 1239 字,大约阅读时间需要 4 分钟。

下面是用Matlab实现的Butterworth高通、低通滤波器。clc;clear all;close all;I=imread('cameraman.tif');subplot(3,2,1);imshow(I);title('原始图');f=double(I);     % 数据类型转换,MATLAB不支持图像的无符号整型的计算g=fft2(f);        % 傅立叶变换g=fftshift(g);     % 转换数据矩阵subplot(3,2,2);imshow(log(1+abs(g)),[]);title('傅里叶频谱'); %低通滤波***************************************************************[M,N]=size(g);nn=2;           % 二阶巴特沃斯(Butterworth)低通滤波器d0=10;m=floor(M/2); n=floor(N/2);for i=1:M       for j=1:N           d=sqrt((i-m)^2+(j-n)^2);           h=1/(1+0.414*(d/d0)^(2*nn));  % 计算低通滤波器传递函数           result(i,j)=h*g(i,j);       endend subplot(3,2,3);imshow(log(1+abs(result)),[]);title('butterworth低通滤波');result=ifftshift(result);J2=ifft2(result);J3=uint8(real(J2));subplot(3,2,4),imshow(J3);                      % 显示滤波处理后的图像title('低通滤波图'); %高通滤波  for i=1:M       for j=1:N        d=sqrt((i-m)^2+(j-n)^2);        h=1/(1+0.414*(d0/d)^(2*nn));% 计算传递函数        result(i,j)=h*g(i,j);       endendsubplot(3,2,5);imshow(log(1+abs(result)),[]);title('butterworth高通滤波');result=ifftshift(result);J2=ifft2(result);J3=uint8(real(J2));subplot(3,2,6),imshow(J3);                      % 显示滤波处理后的图像title('高通滤波图');
效果图:

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/luo-peng/p/4646262.html

你可能感兴趣的文章
PC键盘在Mac下Command/Option键切换
查看>>
数字签名和验签的详细过程
查看>>
漫谈《信号与系统》
查看>>
POJ 1742 Coins(多重背包,优化)
查看>>
内容不随模态框滚动
查看>>
Flume+Kafka+SparkStreaming+Hbase+可视化(二)
查看>>
C语言中的结构体
查看>>
文本框只能输入数字
查看>>
netty实现TCP长连接
查看>>
[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2
查看>>
在Mysql中怎样返回一个数据库的所有表名,列名数据类型备注
查看>>
[转载] 信息系统项目管理师视频教程——12 项目整体管理
查看>>
XAML实例教程系列 - 类型转换器(Type Converter)
查看>>
LeetCode 50. Pow(x, n)
查看>>
Action的创建和配置
查看>>
checkAll全选的一个小例子
查看>>
【转】centos关机与重启命令详解
查看>>
17.元素分类
查看>>
C语言-堆和栈
查看>>
Spring 源码解析(六)创建bean实例
查看>>