6

我有一个 n 维向量(1xn 数据集,它不是图像数据),我想对其应用高斯滤波器。我有图像处理工具包和其他一些工具包(询问您是否需要列表)。

大概我可以使函数的hsize参数fspecial类似于[1 n]. imfilter作为下一步,我仍然可以将其应用于我的向量,还是应该使用其他东西?

我已经看过很多关于如何在 Matlab 中将高斯滤波器应用于二维图像数据的示例,但我对 Matlab 作为一个平台还比较陌生,所以一个例子会非常好。

注意:我目前无法尝试并看看会发生什么(目前不在安装了 Matlab 的机器上),否则我会先尝试它,然后只询问我是否在使用fspecialand时遇到问题imfilter

4

1 回答 1

19

为什么不自己创建高斯滤波器?您可以查看fspecial(或任何其他高斯定义)中的公式:

sigma = 5;
sz = 30;    % length of gaussFilter vector
x = linspace(-sz / 2, sz / 2, sz);
gaussFilter = exp(-x .^ 2 / (2 * sigma ^ 2));
gaussFilter = gaussFilter / sum (gaussFilter); % normalize

为了应用它,您可以使用filter

y = rand(500,1);
yfilt = filter (gaussFilter,1, y);

并且不要忘记滤波器具有延迟,这意味着与输入信号相比,滤波后的信号发生了偏移。conv由于此过滤器是对称的,您可以通过使用而不是获得非移位输出filter,并使用以下same选项:

yfilt = conv (y, gaussFilter, 'same');
于 2011-08-09T08:30:14.433 回答