【发布时间】:2014-09-26 06:38:40
【问题描述】:
我创建了一个具有大小为 5 x 5 的高斯核的过滤器,使得中心具有网格顺序。我希望它应用于图像。我该怎么做?
【问题讨论】:
-
名叫
imfilter的人可能。有时他真的是fspecial。 -
@Divakar - 这让我发笑。谢谢。
我创建了一个具有大小为 5 x 5 的高斯核的过滤器,使得中心具有网格顺序。我希望它应用于图像。我该怎么做?
【问题讨论】:
imfilter 的人可能。有时他真的是fspecial。
正如@Divakar 所说,使用imfilter。您已经使用meshgrid 和其他一些计算创建了高斯核。 imfilter 的调用方式如下:
out = imfilter(in, f);
in 是输入图像,out 是输出图像,f 是您定义的内核。已经定义了一些过滤器,您可以使用fspecial 使用它们。您也可以使用fspecial 中的gaussian 标志为您生成高斯内核,但我假设您自己生成它作为练习/作业。
imfilter 可以使用其他标志,但以上是最基本的调用方式。当内核在执行过滤时超出边界时,或者如果您想要执行卷积或相关等,有一些标志可以处理沿边界发生的情况。我让您查看文档以了解更多详细信息,但上面的代码是您入门的最基本代码。
祝你好运!
【讨论】:
imfilter。图像大小和滤镜大小不必相同。
正如@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)
【讨论】:
fspecial 可用于计算后者。前者需要更多的工作。请使用此信息更新您的问题,以便我们知道您真正想要什么。