MATLAB - 图像处理中的巴特沃斯低通滤波器

2025年3月17日 | 阅读 3 分钟

Butterworth 低通滤波器在图像处理中经常用于去除高频噪声,同时保留低频分量以平滑图像。

由于其在通带和阻带之间的平滑过渡,这有助于消除诸如振铃效应等不需要的伪影,这种频域滤波器特别有用。在此上下文中,我们将探讨创建 Butterworth 所需的 MATLAB 步骤。

低通滤波器,并强调每个步骤的重要性。

步骤 1:首先,通过读取和理解图像来输入图像。

  • 第一步涉及使用 MATLAB 的 imread 函数读取输入图像。进一步的计算需要理解图像的尺寸。

步骤 2:保存图像尺寸。

  • 记录图像的尺寸(M x N),其中 M 代表行数(图像高度),N 代表列数(图像宽度)。不同的滤波器计算会利用这些尺寸。

步骤 3:第三步是输入图像的傅里叶变换。

  • 使用 MATLAB 的 fft2 函数对输入图像进行 2D 快速傅里叶变换 (FFT)。
  • 通过将图像数据从空间域转换到频域,这种变换使得处理频率分量更加容易。

步骤 4:在第四步中设置阶数和截止频率。

  • 指定 Butterworth 滤波器的阶数 (n) 和截止频率 (D0)。这些因素极大地影响滤波器的行为。
  • 更高的阶数会增加过渡的坡度,

步骤 5:设计 Butterworth 滤波器。

  • Butterworth 低通滤波器使用频率坐标 (u, v) 的网格。
  • 该网格使得确定每个频率点到原点的欧几里得距离 (D) 更加容易。
  • 然后使用提供的公式计算滤波器的传递函数。

步骤 6:使用滤波掩码进行卷积。

  • 通过逐元素乘法将滤波掩码 (H) 和傅里叶变换后的输入图像 (FT_img) 结合起来。
  • 频域滤波技术可以有效地减少高频噪声并保留低频数据。

步骤 7:傅里叶逆变换。

  • 傅里叶逆变换将卷积后的图像从频域 (G) 转换回空间域。
  • ifft2 函数使此转换更加容易,从而生成显示

步骤 8:展示结果。

  • 使用 MATLAB 的 subplot 和 imshow 函数,并排显示原始输入图像和处理后的结果图像。
  • 这使得可以直观地比较 Butterworth 低通滤波技术的结果。

在 MATLAB 中实现 Butterworth 低通滤波器需要执行一系列使用频域处理来增强图像的操作。

  • Butterworth 滤波器因其在通带和阻带之间的平滑过渡而从竞争对手中脱颖而出,这使其成为降噪的良好选择,同时最大限度地减少了不需要的伪影。
  • 用户可以通过更改阶数和截止频率来微调滤波器的行为,以获得针对特定图像的最佳结果。

实施

输出

MATLAB - Butterworth Lowpass Filter in Image Processing

在读取输入图像后,此 MATLAB 程序应用 Butterworth 低通滤波器。可以更改滤波器的阶数和截止频率,以实现所需的平滑和降噪水平。

  • 关键过程包括计算滤波器的传递函数、在频域中进行卷积以及执行傅里叶逆变换以生成滤波后的图像。
  • 然后将原始输入图像和输出并排放置以进行比较。