【发布时间】:2012-09-18 08:00:53
【问题描述】:
我试图了解 Matlab 中的 2D 和 3D 绘图功能,关于图像处理过滤器,如箱线图、高斯、墨西哥帽等...
我只得到了过滤器的内核,例如一个 5x5 矩阵,其中包含每个单元的系数。 ezsurfc 不起作用,我不明白。 surf 反而有效,但我不知道网格以及如何使其更细化和平滑?
我对 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);
这给了我输出:
那么,如何从 5x5 内核信息中生成精细的 2D 和 3D 图呢? 提前非常感谢!
P.S.:希望我的代码缩进没有弄乱……否则请随意编辑 - 这是我在 StackOverflow 上的第一篇文章。 :-)
我想要得到的,就像这两个例子:
【问题讨论】:
-
您是否要在 20x20 网格上绘制 5x5 内核?是这个主意吗?
-
这个想法是,我得到一个像示例一样的输出,我已经发布了。我提到了过滤器的 20x20 网格掩码,因为看起来平滑度和扁平化需要更多的系数,而不仅仅是 5x5……我是对的还是完全错的?
-
@mchlfchr:除非您知道底层函数(例如它是高斯函数),否则您将无法神奇地对内核进行上采样并揭示更多细节。
-
正如@Jonas 指出的那样,您不能从如此低的速率进行上采样(通过任何插值函数的值插值),这相当于重建在对“所需”进行下采样期间丢失的信息核心。您需要对底层函数做出假设,并近似或拟合您的内核数据。请参阅我对此的回答中的更新。
-
我害怕这个答案......但它绝对有道理,因为奈奎斯特/香农定理......谢谢你们俩
标签: matlab image-processing plot convolution