📌  相关文章
📜  MATLAB –图像处理中的巴特沃斯高通滤波器(1)

📅  最后修改于: 2023-12-03 15:17:34.166000             🧑  作者: Mango

MATLAB – 图像处理中的巴特沃斯高通滤波器

巴特沃斯高通滤波器是一种常见的信号处理滤波器,它可以帮助我们实现图像处理中的高通滤波操作。MATLAB 提供了许多实用的函数来实现不同类型的滤波操作,其中就包括了巴特沃斯高通滤波器。

巴特沃斯高通滤波器的原理

巴特沃斯滤波器是一种基于极点零点设计理论的滤波器,它的传递函数表达式为:

H(s) = 1 / (1 + (s / wc)^2n)

其中,s 是一个实变量,n 表示滤波器顺序,wc 是截止频率。

在图像处理中,我们可以将巴特沃斯滤波器应用于图像的傅里叶变换中,将图像的频域表示进行滤波操作,然后再将滤波后的频域表示进行反傅里叶变换,得到过滤后的图像。

MATLAB 中的巴特沃斯高通滤波器函数

在 MATLAB 中,我们可以使用 butter 函数来实现巴特沃斯高通滤波器的设计。该函数的语法为:

[b, a] = butter(n, wn, 'high')

其中,n 表示滤波器的阶数,wn 是一个长度为 2 的向量,表示滤波器的截止频率,'high' 表示滤波器的类型为高通滤波器。函数的返回值 ba 分别表示滤波器的分子和分母系数。

实现巴特沃斯高通滤波器的步骤

下面介绍一下如何在 MATLAB 中实现巴特沃斯高通滤波器的步骤。假设我们要对一幅图像进行高通滤波操作,步骤如下:

  1. 加载图像并显示
I = imread('image.jpg');
imshow(I);
  1. 对图像进行灰度化处理
I_gray = rgb2gray(I);
imshow(I_gray);
  1. 对灰度图像进行傅里叶变换
F = fft2(double(I_gray));
F_shift = fftshift(F);
  1. 设计巴特沃斯高通滤波器并对频域图像进行滤波
n = 2;      % 滤波器阶数
wc = 0.1;   % 截止频率,可调整
[b, a] = butter(n, wc, 'high');

F_filtered = filter2(b, a, F_shift);
  1. 对滤波后的频域图像进行反傅里叶变换
F_filtered_shift = ifftshift(F_filtered);
I_filtered = ifft2(F_filtered_shift);
I_filtered = uint8(abs(I_filtered));
imshow(I_filtered);
  1. 观察滤波后的图像效果,可以尝试调整截止频率,观察不同的滤波效果
效果展示

下面展示一张经过巴特沃斯高通滤波器处理后的图像:

Filtered Image

可以看到,经过滤波后,图像的边缘信息得到了突出的显示,图像的整体清晰度也有所提高。

参考文献
  1. MATLAB 中的数字滤波器