【发布时间】:2014-12-02 13:27:42
【问题描述】:
我有一个要在频域中过滤的任务。它为我提供了在部分问题中使用的各种过滤器,但我只是想弄清楚如何添加一个。总的来说,我还在学习 Matlab 和图像处理。
作业问题:使用 index2gray 将“tees.tif”转换为灰度图像。过滤灰度图像 频域使用2D fft(fft2),执行操作后可以使用2D ifft (ifft2) 在空间域中显示过滤后的图像:
a- 使用 (uc=N/8,vc=M/8) 的截止频率的矩形低通滤波器,其中 N 和 M 是图像的行和列大小。
我当前的代码是:
[I,cmap] = imread('trees.tif');
img = ind2gray(I,cmap);
[rows columns] = size(img);
imshow(img);
fftO = fft2(double(img));
shifted = fftshift(fftO);
logged = log(1+abs(shifted));
imshow(logged,[]);
如果我理解正确,我有频域中的灰度图像,现在需要对其进行过滤。我对过滤部分感到困惑。我需要使用截止频率制作一个矩形低通滤波器。 如何添加截止频率?我假设我将使用高斯或巴特沃斯滤波器,并且滤波器大小与图像相同。
弄清楚这个过滤器的事情后,我应该可以做(H是过滤器)
filtered = logged.*H;
invert = real(ifft2(filtered));
imshow(invert);
有人知道我需要如何处理过滤器部分吗?
【问题讨论】:
-
在频域中,我相信矩形低通滤波器对于低于截止频率的频率基本上应该为 1,对于高于截止频率的频率应该为 0,因此您应该能够从中构造 H。既然是作业,那我就到此为止了。
-
我希望使用预定义的 fspecial(),但现在我想我将不得不创建我的矩阵/过滤器,而不是使用带参数预定义的东西。这是正确的吗?