【问题标题】:How to apply a Gaussian filter with a kernel of size 5 x 5 and apply it on the image by matlab如何应用内核大小为 5 x 5 的高斯滤波器并通过 matlab 将其应用于图像
【发布时间】:2014-09-26 06:38:40
【问题描述】:

我创建了一个具有大小为 5 x 5 的高斯核的过滤器,使得中心具有网格顺序。我希望它应用于图像。我该怎么做?

【问题讨论】:

  • 名叫imfilter 的人可能。有时他真的是fspecial
  • @Divakar - 这让我发笑。谢谢。

标签: image-processing matlab


【解决方案1】:

正如@Divakar 所说,使用imfilter。您已经使用meshgrid 和其他一些计算创建了高斯核。 imfilter 的调用方式如下:

out = imfilter(in, f);

in 是输入图像,out 是输出图像,f 是您定义的内核。已经定义了一些过滤器,您可以使用fspecial 使用它们。您也可以使用fspecial 中的gaussian 标志为您生成高斯内核,但我假设您自己生成它作为练习/作业。

imfilter 可以使用其他标志,但以上是最基本的调用方式。当内核在执行过滤时超出边界时,或者如果您想要执行卷积或相关等,有一些标志可以处理沿边界发生的情况。我让您查看文档以了解更多详细信息,但上面的代码是您入门的最基本代码。

祝你好运!

【讨论】:

  • 非常感谢,但我得到了导致高斯核的滤波器,结合给定大小形成的正叶和负叶这也为输入图像的卷积创建了一个滤波器,但是我不知道我是如何创建应用于输入图像的过滤器的。
  • @m.golzadeh 这不是你在问题中所说的。您说您有一个高斯滤波器并希望将其应用于图像...您没有说您有一个导致/输出高斯核的滤波器。请更新您的问题,使其包含所有信息。您的评论也与您的问题相冲突。你在你的问题中说你创建了一个高斯内核,但现在你说你不知道你是如何创建它的?请更新您的问题,以便我们了解所有事实。
  • 我使用公式创建了一个过滤器,我希望将此过滤器应用于图像到指定的大小。事实上,我不知道 5 x 5 的滤镜尺寸对 128 x 128 的图像尺寸如何应用。
  • @m.golzadeh:使用imfilter。图像大小和滤镜大小不必相同。
【解决方案2】:

正如@Divakar 已经指出的那样,您可以参考 imfilter 命令。请参考 Gaussian filter in MATLAB。 示例代码是

   %%# Read an image
   I = imread('peppers.png');

   %# Create the gaussian filter with hsize = [5 5] and sigma = 2
   %You have created this. so you can actually skip
   G = fspecial('gaussian',[5 5],2);

   %# Filter it
   Ig = imfilter(I,G,'same');
   %# Display
   imshow(Ig)

【讨论】:

  • 非常感谢,但我想创建自己的给定尺寸 5 x 5 的过滤器作用于图像,但我不知道该怎么做。
  • @m.golzadeh - 现在你说的话与你在评论中告诉我的完全不同。您想知道如何创建高斯核,还是只想知道如何生成它? fspecial 可用于计算后者。前者需要更多的工作。请使用此信息更新您的问题,以便我们知道您真正想要什么。
  • 我使用公式创建了一个过滤器,我希望将此过滤器应用于图像到指定的大小。事实上,我不知道 5 x 5 的滤镜尺寸对 128 x 128 的图像尺寸如何应用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2013-03-29
  • 2012-12-13
  • 1970-01-01
相关资源
最近更新 更多