【问题标题】:Working with Gaussian filter in frequency domain + Matlab在频域中使用高斯滤波器 + Matlab
【发布时间】:2012-12-07 14:59:28
【问题描述】:

我在频域中阅读了高斯滤波器,但这里有些地方我无法理解:

  1. 高斯滤波器总是方阵吗?

  2. 如果 1 的答案是肯定的,如果我的图像是矩形矩阵会发生什么?在 Matlab 中,我读取图像,然后使用fft2 将其从空间域转换为频域,然后使用ffshift 将其集中。我想要的是将图像的频域矩阵乘以高斯滤波矩阵,然后使用ifft2将结果转换为空间域,但是由于高斯滤波矩阵和图像频域矩阵的大小不同,它们不能相乘。 (我这里没有使用conv2fspectial)。

【问题讨论】:

  • 好吧,由于它的各向同性,高斯过滤器通常定义在方形网格中,但没有什么能阻止您将其裁剪为矩形、圆形、星形,应有尽有。现在,更常见的是,您可以定义适当的填充以匹配两个支持区域。
  • 你为什么不用conv2(image,guassian,'same')

标签: matlab image-processing


【解决方案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. 

【讨论】:

    猜你喜欢
    • 2013-03-29
    • 2011-02-15
    • 2023-04-09
    • 1970-01-01
    • 2021-05-22
    • 2014-07-21
    • 2017-04-20
    • 2014-03-20
    • 2013-12-05
    相关资源
    最近更新 更多