matlab对傅里叶矩阵实现巴特沃斯低通和高通滤波
时间: 2023-08-26 21:09:54 浏览: 83
pinyugaotonglvbo.zip_图形图像处理_Others_
在MATLAB中,可以使用`fft2`函数计算二维快速傅里叶变换(FFT),然后将其与巴特沃斯滤波器的频率响应相乘,最后使用`ifft2`函数计算FFT的逆变换来实现巴特沃斯低通和高通滤波。
下面是一个MATLAB示例代码,演示如何使用巴特沃斯滤波器对图像进行低通和高通滤波:
```matlab
% 原始图像
im = imread('lena.png');
% 计算图像的傅里叶变换
F = fft2(im);
% 定义巴特沃斯低通滤波器
D0 = 30; % 截止频率
n = 4; % 阶数
H = 1 ./ (1 + (sqrt(2) - 1) * (freqspace(size(im), 'meshgrid') / D0).^(2*n));
% 应用巴特沃斯低通滤波器
G = H .* F;
% 计算图像的傅里叶逆变换
g = uint8(real(ifft2(G)));
% 显示结果
subplot(1, 2, 1), imshow(im), title('原始图像')
subplot(1, 2, 2), imshow(g), title('巴特沃斯低通滤波后的图像')
% 定义巴特沃斯高通滤波器
D0 = 30; % 截止频率
n = 4; % 阶数
H = 1 ./ (1 + (freqspace(size(im), 'meshgrid') / D0).^(2*n));
% 应用巴特沃斯高通滤波器
G = H .* F;
% 计算图像的傅里叶逆变换
g = uint8(real(ifft2(G)));
% 显示结果
subplot(1, 2, 1), imshow(im), title('原始图像')
subplot(1, 2, 2), imshow(g), title('巴特沃斯高通滤波后的图像')
```
在上面的示例代码中,我们首先加载了一张图像,然后使用`fft2`函数计算了它的二维FFT。接着,我们定义了一个巴特沃斯低通滤波器和一个巴特沃斯高通滤波器,并使用它们来过滤傅里叶变换。最后,我们使用`ifft2`函数计算了FFT的逆变换,并将结果显示出来。
阅读全文