我在频域中阅读了有关高斯滤波器的信息,但这里有些地方我无法理解:
高斯滤波器会一直是方阵吗?
如果 1 的答案是肯定的,如果我的图像是矩形矩阵会发生什么?在 Matlab 中,我读取图像,然后
fft2
将其从空间域转换为频域,然后将ffshift
其集中。我想要的是将图像的频域矩阵乘以高斯滤波矩阵,然后使用 将结果转换为空间域ifft2
,但是由于高斯滤波矩阵和图像频域矩阵的大小不同,它们不能相乘. (我没有在这里使用conv2
和fspectial
)。
我在频域中阅读了有关高斯滤波器的信息,但这里有些地方我无法理解:
高斯滤波器会一直是方阵吗?
如果 1 的答案是肯定的,如果我的图像是矩形矩阵会发生什么?在 Matlab 中,我读取图像,然后fft2
将其从空间域转换为频域,然后将ffshift
其集中。我想要的是将图像的频域矩阵乘以高斯滤波矩阵,然后使用 将结果转换为空间域ifft2
,但是由于高斯滤波矩阵和图像频域矩阵的大小不同,它们不能相乘. (我没有在这里使用conv2
和fspectial
)。
高斯滤波器实际上是圆形的,因为它是距中心距离的函数。使用矩形矩阵是因为它更方便。
为了克服尺寸差异,您可以做的是对过滤器进行零填充:
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.