在Matlab中可视化(高斯,拉普拉斯等)滤波器

时间:2014-06-01 15:31:15

标签: matlab image-processing filter matlab-figure

如何在以下网站中显示过滤器的可视化方式:

http://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html

例如,在图1中,最后四个方形子图像可视化四个不同的高斯滤波器。

2 个答案:

答案 0 :(得分:3)

毕竟,它们只是图像,唯一的诀窍是使用正确的比例。幸运的是,这在MATLAB中非常简单。

因此,如果你的过滤器是G,那么你可以直观地看到它

imshow(G,[])

[]将为您设置正确的比例(min_value,max_value)。

例如,对于高斯西格玛30(这里可视化目的很高)这些行:

G1=fspecial('gauss',[round(6*sigma), round(6*sigma)], sigma);
imshow(G1,[]);

导致此图片:

enter image description here

您想要显示的具有不寻常范围的图像(即与[0 255]不同)的原理相同。

要一次显示多个图像,您必须使用subplot

答案 1 :(得分:0)

这只是一点点奖励,但由于滤波器是2D函数,我们也可以在Z方向上映射函数的幅度。您基本上会采用imshow中显示的强度,并将其映射到第三维。换句话说,复制@cifz所做的事情,我们也可以定义2D网格,然后使用meshsurf以3D形式显示它。

因此:

sigma = 30;
G1=fspecial('gauss',[round(6*sigma), round(6*sigma)], sigma);
[X,Y] = meshgrid(1:size(G1,2), 1:size(G1,1));
mesh(X, Y, G1);
xlabel('X'); ylabel('Y'); zlabel('Amplitude');
title('3D visualization of the Gaussian filter');
colorbar;

你会得到:

enter image description here

这显然不是OP想要的,但我认为如果有人好奇,我会加上这个奖金。