函数 > 图像处理 > 变换域 > 示例:在傅立叶变换域中进行滤波
  
示例:在傅立叶变换域中进行滤波
使用 funconvmatconvfuncdeconvmatdeconv 函数,利用函数 f 或屏蔽 E 对图像进行卷积或去卷积,方法是在空间频率 (傅立叶变换域) 中将二者相乘。在频域中进行滤波可产生各种平滑、边界识别和周期性降噪操作 (这取决于所选的函数或屏蔽)。与在图像域使用卷积相比,通常情况下,在变换域中的滤波从数学上讲会变得更加高效,滤波器的定义也将变得更容易。
有关使用此示例的信息,请参考 关于图像处理示例
funconv
使用此函数,利用空间频率函数对图像 M 进行滤波。实数值函数 f 用于构建屏蔽 N,该屏蔽的大小与 M 相同。对 M 进行傅立叶变换,然后逐项乘以该屏蔽。
该屏蔽是通过将自变量传递到 f 而构建的,这些自变量是距 M 左上角的归一化距离。此过程将延续至屏蔽中心,在该处,会将屏蔽对称地复制于四段中。之所以使用此过程,是因为左上角为 DC (零频率)。
1. 通过定义图像矩阵 M 开始构建屏蔽。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 查找表示图像矩阵中心的像素。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
3. 创建新的值域变量,表示从左上角至图像中心的值。
单击复制此表达式
单击复制此表达式
4. 使用所定义的值域变量及屏蔽函数创建屏蔽的左上四分之一区域。
单击复制此表达式
单击复制此表达式
单击复制此表达式
(0, 0) 条目为 f(0)(r, c) 条目为 f(1)
该屏蔽是通过将自变量 (距 M 左上角的归一化距离) 传递至 f 而构建的。此过程将延续至屏蔽中心,在该处,会将屏蔽对称地复制于四段中。之所以使用此过程,是因为左上角为 DC (零频率)。
5. 使用 funconv 构建屏蔽矩阵的其余部分。
单击复制此表达式
单击复制此表达式
如果卷积扩展了图像的强度等级,您可以将输出矩阵缩放至 [0, 255] 值域。
funcdeconv
此去卷积函数接受频域图像和频域函数,并对其进行去卷积。
funcdeconv 的最后一个自变量 e 是一个小型项,在例程中其被加到所有表达式的分母中。作为起点,为 e 键入值 0。如果显示除数为零错误消息,请键入一个较小的 e 值。
1. 调用 funcdeconv 函数。
单击复制此表达式
2. 计算 DE 以查看 funcdeconv 的结果并将其与原始矩阵进行对比。
单击复制此表达式
单击复制此表达式
matconv
matconv 函数与 funconv 执行相同的频域乘法和变换,但其接受的是屏蔽输入而不是函数。屏蔽的大小必须与原始图像相同。您仅需提供屏蔽的左上四分之一区域。
1. 读入样本图像。
单击复制此表达式
2. 计算图像矩阵中行和列的数量。
单击复制此表达式
单击复制此表达式
3. 定义屏蔽的维数。
单击复制此表达式
单击复制此表达式
4. 定义屏蔽 C
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
* 
您可以对 C 尝试下列高通滤波器:
单击复制此表达式
5. matconv 应用于 RC
单击复制此表达式
单击复制此表达式
R
C
W
(times.bmp)
(matrix_ii_jj.bmp)
(times_mat.bmp)
matdeconv
使用 matdeconv 恢复原始图像。由于去卷积有可能涉及到零强度元素作除数的情况,因此将 e 加到每个除式的分母中以求解此问题。
单击复制此表达式
单击复制此表达式
(matdeconv.bmp)
您可以使用其他滤波器函数进行试验。请记住,屏蔽的左上角对应于低频,而右下角对应于高频。尝试不同的图像。