我有一个n维向量(1xn数据集,它不是图像数据),我想对它应用高斯滤波器。我有Image Processing Toolkit和其他一些(询问你是否需要列表)。
据推测,我可以使hsize
函数的fspecial
参数类似于[1 n]
。
我还可以使用imfilter
将其应用到我的向量中作为下一步,还是应该使用其他内容?
我已经看过很多关于如何在Matlab中将高斯滤波器应用于二维图像数据的例子,但我对Matlab作为一个平台仍然相对较新,所以一个例子真的很好。
注意:我目前无法尝试它,看看会发生什么(当前没有安装Matlab的机器上),否则我会先尝试一下,然后才会问我是否遇到问题{{ 1}}和fspecial
。
答案 0 :(得分:17)
为什么不自己创建高斯滤波器?您可以查看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');