首页 文章

在频域Matlab中使用高斯滤波器

提问于
浏览
4

我在频域中读到了高斯滤波器,但有一点我在这里无法理解:

  • 高斯滤波器总是一个方阵吗?

  • 如果1的答案是肯定的,如果我的图像是矩形矩阵会发生什么?在Matlab中,我读取图像,然后使用 fft2 将其从空间域转换为频域,然后我使用 ffshift 来集中它 . 我想要的是将图像的频域矩阵乘以高斯滤波器矩阵,然后通过使用 ifft2 将结果转换为空间域,但由于高斯滤波器矩阵的大小和图像的频域矩阵不同,它们可以不使用't be multiplied together. (I'm conv2fspectial 这里) .

1 回答

  • 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.
    

相关问题