主要内容

设计频域线性滤波器

介绍频域滤波功能。有关在空间域中设计筛选器的信息,请参阅什么是空间域的图像过滤?

二维有限脉冲响应(FIR)滤波器

图像处理工具箱™ 软件支持一类线性滤波器:二维有限脉冲响应(FIR)滤波器。F金宝appIR滤波器对单点或脉冲具有有限的范围。所有的图像处理工具箱滤波器设计函数都返回FIR滤波器。

FIR滤波器有几个特点,使其非常适合在MATLAB中进行图像处理®环境:

  • FIR滤波器易于表示为系数矩阵。

  • 二维FIR滤波器是一维FIR滤波器的自然扩展。

  • 有几个众所周知的、可靠的FIR滤波器设计方法。

  • FIR滤波器很容易实现。

  • FIR滤波器可以设计成具有线性相位,这有助于防止失真。

另一类滤波器,无限脉冲响应(IIR)滤波器,不太适合图像处理应用。它缺乏FIR滤波器固有的稳定性和易于设计和实现。因此,此工具箱不提供IIR筛选器支持。金宝app

请注意

本节介绍的大多数设计方法都是通过使用信号处理工具箱函数创建的一维滤波器或窗口创建二维滤波器来实现的。虽然不需要此工具箱,但如果没有信号处理工具箱软件,您可能会发现设计滤波器很困难。

将一维FIR滤波器转换为二维FIR滤波器

这个例子展示了如何转换一个一维FIR滤波器到一个二维FIR滤波器使用ftrans2作用此函数非常有用,因为与相应的二维滤波器相比,设计具有特定特性的一维滤波器更容易。频率变换方法保留了一维滤波器的大部分特性,特别是过渡带宽和纹波特性。一维频率响应的形状在二维响应中非常明显。

此函数使用变换矩阵,定义频率变换的一组元素。这个函数的默认变换矩阵产生近似圆形对称的滤波器。通过定义你自己的变换矩阵,你可以得到不同的对称。(见Lim Jae s,二维信号与图像处理详情,1990年。)

使用firpm信号处理工具箱中的函数™.

B = firpm(10,[0 0.4 0.6 1],[1 10 0])
b = column 1 to 9 0.0537 -0.0000 -0.0916 -0.0001 0.3131 0.4999 0.3131 -0.0001 -0.0916

将一维滤波器转换为二维滤波器。

h = ftrans2 (b);
h =第1列到第9列0.0001 0.0005 0.0024 0.0063 0.0110 0.0132 0.0110 0.0063 0.0024 0.0005 0.0031 0.0068 0.0042 -0.0074 -0.0147 -0.0074 0.0042 -0.0001 -0.0191 -0.0251 -0.0213 -0.0251 -0.0191 -0.0001 0.0063 0.0042 -0.0172 0.0128 0.0259 0.0128 -0.0172 0.0924 0.1457 0.0924-0.0251 0.0132 -0.0147 -0.0213 0.1457 0.1457 0.0259 -0.0213 0.0110 -0.0074 -0.0251 0.0128 0.0924 0.1457 0.0924 0.0128 -0.0251 0.0063 0.0042 -0.0191 -0.0172 0.0128 0.0259 0.0172 -0.0191 0.0024 0.0068 -0.0001 -0.0191 -0.0251 -0.0251 -0.0191 -0.0001 0.0031 0.0068 0.0042 -0.0074第10列到第11列0.0005 0.0001 0.0031 0.0005 0.0068 0.0024 0.0042 0.0063 -0.0074 0.0110 -0.0147 0.0132 -0.0074 0.0110 0.0042 0.0063 0.0068 0.0024 0.0031 0.0005 0.0001

查看滤波器的频率响应。

[H,w]=freqz(b,1,64,“整体”); 彩色地图(jet(64))图(w/pi-1,FFT换档(abs(H))图,FREKZ2(H,[32])

一维频率响应

对应二维频率响应

频率抽样法

频率采样方法基于所需的频率响应创建滤波器。给定定义频率响应形状的点矩阵,此方法创建其频率响应通过这些点的滤波器。频率采样对给定点之间的频率响应行为没有任何约束s、 通常,响应在这些区域出现波纹。(波纹是围绕一个恒定值的振荡。实际滤波器的频率响应通常在理想滤波器的频率响应平坦的地方出现波纹。)

工具箱函数fsamp2实现二维FIR滤波器的频率采样设计。fsamp2返回一个过滤器h具有通过输入矩阵中各点的频率响应高清. 下面的示例使用fsamp2并绘制得到的滤波器的频率响应曲线。(freqz2函数在本例中计算滤波器的二维频率响应。看到计算滤波器的频率响应有关更多信息。)

高清= 0(11日11);高清(4:8,4:8)= 1;(f1、f2) = freqspace(11日meshgrid);mesh(f1,f2,Hd), axis([-1 1 -1 1 0 1.2]), colormap(jet(64)) h = fsamp2(Hd);图,freqz2(h,[32 32]),轴([-1 1 -1 1 0 1.2])

期望的二维频响(左)和实际的二维频响(右)

请注意,与期望的频率响应相比,实际频率响应中的涟漪。这些波纹是频率采样设计方法的一个基本问题。它们发生在期望响应中出现急剧转变的地方。

你可以用较大的滤波器来减小波纹的空间范围。然而,较大的滤波器并不会降低纹波的高度,而且滤波需要更多的计算时间。为了更平滑地逼近期望的频率响应,可以考虑使用频率变换方法或加窗方法。

窗口的方法

加窗方法包括将理想脉冲响应与窗函数相乘,生成相应的滤波器,使理想脉冲响应逐渐变细。和频率采样方法一样,加窗方法产生的滤波器的频率响应近似于期望的频率响应。然而,加窗方法往往比频率采样方法产生更好的结果。

工具箱为基于窗口的过滤器设计提供了两个函数,fwind1fwind2fwind1通过使用由您指定的一个或两个一维窗口创建的二维窗口来设计二维筛选器。fwind2直接使用指定的二维窗口设计二维滤波器。

fwind1金宝app支持两种不同的方法来制作它使用的二维窗口:

  • 通过使用类似于旋转的过程,将单个一维窗口转换为几乎是圆形对称的二维窗口

  • 通过计算两个一维窗口的外积,从两个一维窗口创建一个矩形的可分离窗口

下面的示例使用fwind1根据期望的频率响应创建一个11 × 11的滤波器高清.本示例使用信号处理工具箱哈明函数创建一维窗口,其中fwind1然后扩展到二维窗口。

Hd=零(11,11);Hd(4:8,4:8)=1;[f1,f2]=freqspace(11,'meshgrid');网格(f1,f2,Hd),轴([-11-1011.2]),彩色贴图(jet(64))h=fwind1(Hd,hamming(11));图,频率Z2(h,[32]),轴([-11-1011.2])

期望的二维频响(左)和实际的二维频响(右)

创建所需的频率响应矩阵

滤波器设计功能fsamp2fwind1fwind2所有的滤波器都是基于一个期望的频率响应幅度矩阵。频率响应是描述滤波器在不同输入频率下的增益的数学函数。

您可以创建一个合适的期望频率响应矩阵使用freqspace函数。freqspace为任何大小的响应返回正确的、均匀间隔的频率值。如果您使用频率点而不是返回的频率点来创建所需的频率响应矩阵freqspace,您可能会得到意外的结果,例如非线性相位。

例如,要创建一个截断为0.5的圆形理想低通频率响应,请使用

(f1、f2) = freqspace(25日meshgrid);高清= 0(25、25);d =√f1。^2 + f2.^2) < 0.5;高清(d) = 1;网格(f1, f2,高清)

理想圆形低通频率响应

注意,对于这个频率响应,由fsamp2fwind1fwind2是真实的。这一结果是大多数图像处理应用程序所需要的。一般来说,为了达到这一目的,期望的频率响应应该与频率原点(f10f20).

计算滤波器的频率响应

freqz2函数计算二维滤波器的频率响应。如果没有输出参数,freqz2创建频率响应的网格图。例如,考虑这个FIR滤波器,

h=[0.16670.66670.16670.6667-3.33330.66670.16670.66670.1667];

此命令计算并显示设备的64×64点频率响应h

频率Z2(h)

二维滤波器的频率响应

得到频率响应矩阵H频率点向量f1f2,使用输出参数

(H, f1, f2) = freqz2 (H);

freqz2可实现频率f1f2所以1.0对应一半的采样频率,或者说π弧度。

简单来说-借-n响应,如上所示,freqz2使用二维快速傅里叶变换函数fft2.你也可以指定任意频率点的向量,但在这种情况下freqz2使用较慢的算法。

看到傅里叶变换有关快速傅里叶变换及其在线性滤波和滤波器设计中的应用的更多信息。