在 Matlab 中沿 2 个轴对矩阵进行高斯滤波

Gaussian Filtering a Matrix Along 2 Axes in Matlab

我正在尝试使用高斯过滤矩阵,但对 x 轴和 y 轴使用不同的 sigma。 x轴代表水平坐标,y轴代表时间,因此我想对它们进行不同的过滤。

我可以使用一个 sigma 进行过滤,但我不知道如何使用特定于轴的两个 sigma 进行过滤。我使用 imgaussfilt。

% example values
A = rand(6000,1921);
sigma_x = 10;
sigma_y = 20;
B = imgaussfilt(A,sigma_x);
B = double(B)/ max(B(:));
imshow(B)
colormap(jet)
colorbar

我很乐意提供任何想法。

根据 the documentationimgaussfiltsigma 参数可以是二元向量:

A = rand(6000,1921);
sigma_x = 10;
sigma_y = 20;
B = imgaussfilt(A,[sigma_y,sigma_x]);
B = double(B)/ max(B(:));
imshow(B)
colormap(jet)
colorbar

注意这里的顺序:第一个元素表示过滤器的 height,第二个元素表示 width.