图像处理 巴特沃斯带通滤波器matlab代码
时间: 2023-05-31 20:05:30 浏览: 118
以下是巴特沃斯带通滤波器的MATLAB代码:
```matlab
% 带通滤波器参数
Fs = 1000; % 采样率
f1 = 20; % 通带下限频率
f2 = 200; % 通带上限频率
Wp = [f1*2/Fs, f2*2/Fs]; % 归一化通带频率
Rp = 1; % 通带最大衰减量(dB)
Rs = 30; % 阻带最小衰减量(dB)
% 计算巴特沃斯滤波器阶数和截止频率
[N, Wn] = buttord(Wp, [f1*0.8*2/Fs, f2*1.2*2/Fs], Rp, Rs);
% 生成巴特沃斯滤波器
[b, a] = butter(N, Wn, 'bandpass');
% 读取图像数据
img = imread('lena.jpg');
img = im2double(img);
% 对图像进行滤波
img_filtered = zeros(size(img));
for i = 1:size(img, 3)
img_filtered(:, :, i) = filter(b, a, img(:, :, i));
end
% 显示原图和滤波后的图像
subplot(1, 2, 1); imshow(img); title('原图');
subplot(1, 2, 2); imshow(img_filtered); title('滤波后的图像');
```
这段代码实现了一个带通滤波器,将20Hz到200Hz之间的信号通过,其余信号进行抑制。其中,Fs为采样率,f1和f2为通带下限频率和上限频率,Wp为归一化通带频率,Rp为通带最大衰减量,Rs为阻带最小衰减量。代码首先计算了巴特沃斯滤波器的阶数和截止频率,然后生成巴特沃斯滤波器。接着,代码读取了一个图像,对图像进行滤波,最后显示原图和滤波后的图像。
阅读全文