一、引言
巴特沃斯滤波器(Butterworth Filter),是滤波器的一种,其主要特点是通频带的频率响应曲线最平滑。这种滤波器最先由英国工程师斯蒂芬·巴特沃斯(StephenButterworth)在1930年发表在英国《无线电工程》期刊的一篇论文中提出的,也被称作最大平坦滤波器,在于其通频带内的频率响应曲线最大限度平坦,而在阻频带则逐渐下降为零。
一维信号巴特沃斯滤波器的公式由以下公式定义:
H(w)= 1/ (w + (w/Wc)^2N)^0.5
其中,H(w)是滤波器的传递函数,w是频域变量,Wc是截止频率,N是滤波器的阶数。
二维信号巴特沃斯滤波器的公式由以下公式定义:
H(u,v) =(1./(1 + (D/Wc).^(2*n)).^0.5
D =(u.^2 + v.^2).^0.5; 其中,u和v是频率。
其中,H(u,v)是滤波器的传递函数,u、v是频域变量,Wc是截止频率,n是滤波器的阶数。
巴特沃斯滤波器有多种类型,主要包括低通滤波器、高通滤波器、带通滤波器和带阻滤波器。下面分别给出一个采用低通巴特沃斯滤波器对一维原始信号和二维图像进行处理的实例。
二、巴特沃斯滤波器的MATLAB应用
1.采用低通巴特沃斯滤波器对一维原始信号处理实例。
clear all;
close all;
clc;
% 参数设置
fs = 1000; % 采样频率 (Hz)
fc = 100; % 截止频率 (Hz)
n = 4; % 滤波器阶数
Wn = fc / (fs/2); % 归一化截止频率
% 设计低通滤波器
[b, a] = butter(n, Wn, 'low'); %用于根据 ftype
的值和 Wn
的元素数目,设计低通巴特沃斯滤波器。
% 频率响应
freqz(b, a);
title('低通巴特沃斯滤波器的频率响应');
% 应用滤波器(假设有一个信号 x)
x = randn(1, 1000); % 随机信号作为示例
y = filter(b, a, x);
% 绘制信号
figure;
subplot(2, 1, 1);
plot(x);
title('原始信号');
subplot(2, 1, 2);
plot(y);
title('巴特沃斯滤波器滤波后的信号');
2.采用低通巴特沃斯滤波器对二维图像进行处理的实例。
clear all;
close all;
clc;
imageSize = [256, 256]; % 设置图像大小
randomImage = rand(imageSize);% 生成随机二维图像信号
figure,imshow(randomImage, []),title('原始随机图像'); ; % 显示原始图像
colormap(gray);
% 创建高通滤波器
% 定义频率空间的范围
[u, v] = meshgrid(-floor(imageSize(1) / 2) : floor(imageSize(1) / 2) - 1, -floor(imageSize(2) / 2) : floor(imageSize(2) / 2) - 1);
D = sqrt(u.^2 + v.^2); % 计算距离频率中心的距离
D0 = 30; % 可以调整这个值来改变滤波器的效果
n=5;
% 巴特沃斯滤波器的频率响应函数
H = sqrt(1./(1 + (D/D0).^(2*n)));
figure;
surf(u, v, H);
shading interp; % 插值着色
zlabel('H(u, v)');
colorbar;
% 设置视角
view(3);
axis tight;
F = fftshift(fft2(randomImage)); % 将滤波器应用到频率域
G = F .* H;
filteredImage = ifft2(ifftshift(G)); % 逆傅里叶变换得到滤波后的图像
figure,imshow(real(filteredImage), []),title('高通滤波后的图像'); % 显示滤波后的图像
colormap(gray);
三、主要运行结果
1.采用低通巴特沃斯滤波器对一维原始信号处理实例。
2.采用低通巴特沃斯滤波器对二维图像进行处理的实例。
如果你觉得本文对大家学习和研究有所帮助,请关注、点赞和转发。感谢大家的支持!