matlab - 图像处理滤波器的 2D/3D 图

标签 matlab image-processing plot convolution

我试图了解 Matlab 中的 2D 和 3D 绘图功能,关于图像处理过滤器,如箱形图、高斯、墨西哥帽等...

我只得到了过滤器的内核,例如一个 5x5 矩阵,其中包含每个单元格的系数。 ezsurfc 不会工作,我不明白。 冲浪反而有效,但我对网格以及如何使其更细化和平滑一无所知?

我对 surf 的理解是,我需要为每个参数设置相同的维度,那么在不使内核达到 20x20 甚至更大的情况下我应该怎么做呢? 我的想法是,我得到的输出就像我发布的示例一样。我提到了过滤器的 20x20 网格掩码,因为看起来平滑度和扁平化需要比 5x5 更多的系数...我是对还是完全错了?

我已经尝试了以下 matlab 代码,例如拉普拉斯滤波器:

[x,y] = meshgrid(1:1:5); %create a 5x5 matrix for x and y (meshes)
z = [0 1 2 1 0; 1 3 5 3 1;2 5 9 5 2; 1 3 5 3 1;0 1 2 1 0]; % kernel 5x5
surf(x,y,z);

这给了我输出: current output

那么我如何根据 5x5 内核信息生成精细的 2D 和 3D 绘图? 非常感谢!

P.S.:希望我的代码缩进没有搞砸......否则请随意编辑 - 这是我在 StackOverflow 上的第一篇文章。 :-)

我想得到的,就像这两个例子: example no.1 example no.2

最佳答案

您可以使用 interp2为了可视化目的在相同的网格大小上找到中间值

step = 0.1; % granularity
[xn,yn] = meshgrid(1:step:5); % define finer grid
zn = interp2(x,y,z,xn,yn); % get new z values 
surf(xn,yn,zn);

enter image description here

请注意,您将使用默认的线性插值方法获得最接近原始内核的近似值,即 interp2(x,y,z,xn,yn,'linear')。使用其他方法可以使用更平滑的内核,但它们的 3D 形状会有所不同。所以这取决于你的使用和应用。

更新:

您可以通过尝试使用已知内核来近似您的数据,从而绕过上采样到更高分辨率的不适定问题(只有当假设的“下采样遵循奈奎斯特采样率”时,逆重建才有可能) , 然后你可以调整。

例如,由于您给出了对称内核的示例,它围绕最大值各向同性衰减,因此您可以使用高斯函数。 MATLAB 通过 fspecial 函数来做到这一点。

假设底层函数(例如高斯)并使用从当前内核定义的参数(即,将函数拟合到您的数据)

% use max location, amplitude and std from your kernel
max_z = max(z(:));
std_z = std(z(:));

% Set of tunable parameters (size of grid & granularity)
bounds_grid = [30 30]; grid bounds
step = 0.5; % resolution

% Grid
siz = (bounds_grid-1)/2;
[x,y] = meshgrid(-siz(2):step:siz(2),-siz(1):step:siz(1));

% Gaussian parameters
s = std_z; m = 0;

% Analytic function
g = exp(-((x-m).^2 + (y-m).^2)/(2*s*s));
g(g<eps*max(g(:))) = 0;
g = max_z*g./max(g(:));

surf(g);

这样您就可以尊重高斯波瓣中内核的参数,但可以控制最终高斯内核的网格大小和分辨率。

一些例子:

enter image description here

关于matlab - 图像处理滤波器的 2D/3D 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606048/

相关文章:

r - 以位图格式(例如 PNG)将绘图写入标准输出

python - 图例中的 Pandas groupby 对象

java.library.path,类路径 Netbeans 8.0.2

image-processing - 图像质量/分辨率对特征提取的影响

matlab - 实对称向量的 FFT 不是实对称向量

c# - 上传前 MVC 转换图像

c++ - 来自 Mat 图像的 OpenCV 子图像

python - matplotlib 散点图中的标记点

oop - 检查和编辑对象的私有(private)/ protected 属性

matlab - 在 MATLAB 中调整 3D 矩阵(图像)的大小