我在频域中读到过高斯滤波器,但有一些我在这里无法理解的点:
高斯滤波器总是一个方阵吗?
如果1的答案是肯定的,如果我的图像是矩形矩阵会发生什么?在Matlab中,我读取了图像,然后使用fft2
将其从空间域转换为频域,然后我使用ffshift
来集中它。我想要的是将图像的频域矩阵乘以高斯滤波器矩阵,然后使用ifft2
将结果转换为空间域,但由于高斯滤波器矩阵的大小和图像的频域矩阵不同,它们可以不会成倍增加。 (我这里没有使用conv2
和fspectial
。
答案 0 :(得分:1)
高斯滤波器实际上是圆形的,因为它是距离其中心的距离的函数。使用矩形矩阵是因为它更方便 为了克服尺寸差异,你可以做的是对滤波器进行零填充:
img = imread( imgFileName ); % read image, use gray-level images here.
IMG = fft2( img ); % Fourier of img
sz = size( img );
h = fspecial( 'gaussian', sz, sigma ); % create a filter with std sigma same size as img
H = fft2( h ); % Fourier of filter
F = IMG.*H; % filter in Fourier space
f = ifft2( F ); % back to spatial domain.